@import 'SL.Portal.Web.Client.hb11czzq1d.bundle.scp.css';

/* /Components/Pages/CreateSchedule.razor.rz.scp.css */
.booking-page[b-6ruw0jki93] {
    --booking-blue: #0e7289;
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.booking-heading[b-6ruw0jki93] { padding: 22px 24px; border: 1px solid #dfe8ee; border-radius: 14px; background: #fff; }
.booking-kicker[b-6ruw0jki93] { color: #6f8794; font-size: 10px; font-weight: 750; letter-spacing: .14em; text-transform: uppercase; }
.booking-heading h3[b-6ruw0jki93] { margin: 8px 0 8px; color: #22384c; font-size: 24px; letter-spacing: -.03em; }
.booking-heading p[b-6ruw0jki93] { max-width: 620px; margin: 0; color: #71828f; font-size: 13px; line-height: 1.65; }
.booking-heading strong[b-6ruw0jki93] { color: #3b4d61; }

.booking-message[b-6ruw0jki93] { padding: 12px 16px; border: 1px solid #cbe1e6; border-radius: 10px; background: #f0f9fb; color: #2b5c68; font-size: 12px; }
.booking-message-error[b-6ruw0jki93] { border-color: #f0c6ca; background: #fff5f5; color: #9c3d45; }

.booking-grid[b-6ruw0jki93] { display: grid; grid-template-columns: minmax(0, 320px) minmax(0, 1fr); gap: 18px; align-items: start; }

.booking-calendar[b-6ruw0jki93],
.booking-slots[b-6ruw0jki93] { padding: 20px; border: 1px solid #dfe8ee; border-radius: 14px; background: #fff; }

.booking-calendar h4[b-6ruw0jki93],
.booking-slots h4[b-6ruw0jki93] { margin: 0 0 14px; color: #2c4257; font-size: 13px; font-weight: 700; }

.next-available[b-6ruw0jki93] { width: 100%; margin-top: 14px; padding: 10px 12px; border: 1px solid #bad4db; border-radius: 9px; color: #0e7289; background: #f2fafb; font-size: 11px; font-weight: 700; cursor: pointer; }
.next-available:disabled[b-6ruw0jki93] { opacity: .6; cursor: wait; }
.calendar-note[b-6ruw0jki93] { margin: 10px 0 0; color: #93a2af; font-size: 10px; line-height: 1.5; }

.slot-group + .slot-group[b-6ruw0jki93] { margin-top: 18px; }
.slot-group h5[b-6ruw0jki93] { margin: 0 0 9px; color: #8794a2; font-size: 9px; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }

.slot-buttons[b-6ruw0jki93] { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 8px; }

.slot[b-6ruw0jki93] { min-height: 42px; padding: 10px 8px; border-radius: 9px; border: 1px solid #d6e0e7; background: #fff; color: #2c4257; font-family: ui-monospace, "SF Mono", monospace; font-size: 13px; font-weight: 600; cursor: pointer; transition: border-color .15s, background .15s, color .15s; }
.slot-free:hover[b-6ruw0jki93] { border-color: var(--booking-blue); background: #f2fafb; }
.slot-free:focus-visible[b-6ruw0jki93] { outline: 2px solid var(--booking-blue); outline-offset: 2px; }

.slot-selected[b-6ruw0jki93] { border-color: transparent; color: #fff; background: var(--booking-blue); box-shadow: 0 8px 18px rgba(12, 112, 137, .22); }
.slot-selected:hover[b-6ruw0jki93] { background: #0a5f74; }

/* Unavailable slots stay on screen rather than being filtered out — a gap in the grid
   reads as a bug, a struck-through time reads as "someone has it". */
.slot-taken[b-6ruw0jki93] { border-style: dashed; border-color: #e2c9cc; color: #b08085; background: #fdf7f7; text-decoration: line-through; cursor: not-allowed; }
.slot-past[b-6ruw0jki93],
.slot-beyond[b-6ruw0jki93] { border-color: #e6ecf0; color: #b5c0c9; background: #fafbfc; cursor: not-allowed; }

.slots-loading[b-6ruw0jki93] { display: flex; align-items: center; gap: 10px; padding: 26px 0; color: #7b8998; font-size: 12px; }
.slots-loader[b-6ruw0jki93] { width: 18px; height: 18px; border: 2px solid #d8e4ea; border-top-color: var(--booking-blue); border-radius: 50%; animation: booking-spin-b-6ruw0jki93 .8s linear infinite; }
@keyframes booking-spin-b-6ruw0jki93 { to { transform: rotate(360deg); } }

.slots-empty[b-6ruw0jki93] { padding: 30px 20px; border: 1px dashed #c5d1db; border-radius: 12px; background: #fbfcfd; text-align: center; }
.slots-empty strong[b-6ruw0jki93] { display: block; margin-bottom: 6px; color: #33445a; font-size: 14px; }
.slots-empty p[b-6ruw0jki93] { margin: 0; color: #7a8898; font-size: 12px; line-height: 1.6; }

.booking-footer[b-6ruw0jki93] { position: sticky; bottom: 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; padding: 16px 20px; border: 1px solid #dfe8ee; border-radius: 14px; background: #fff; box-shadow: 0 -6px 24px rgba(15, 42, 60, .06); }
.booking-selection span[b-6ruw0jki93] { display: block; margin-bottom: 3px; color: #8794a2; font-size: 9px; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; }
.booking-selection strong[b-6ruw0jki93] { color: #2c4257; font-size: 14px; }
.booking-selection-empty strong[b-6ruw0jki93] { color: #97a4b0; font-weight: 500; }

.booking-confirm[b-6ruw0jki93] { min-height: 44px; padding: 12px 22px; display: inline-flex; align-items: center; gap: 8px; border: 0; border-radius: 10px; color: #fff; background: var(--booking-blue); font-size: 12px; font-weight: 750; cursor: pointer; box-shadow: 0 10px 22px rgba(12, 112, 137, .22); }
.booking-confirm:hover:not(:disabled)[b-6ruw0jki93] { background: #0a5f74; }
.booking-confirm:disabled[b-6ruw0jki93] { opacity: .5; cursor: not-allowed; box-shadow: none; }

@media (max-width: 900px) {
    .booking-grid[b-6ruw0jki93] { grid-template-columns: minmax(0, 1fr); }
    .booking-footer[b-6ruw0jki93] { flex-direction: column; align-items: stretch; }
    .booking-confirm[b-6ruw0jki93] { justify-content: center; }
}

@media (prefers-color-scheme: dark) {
    .booking-heading[b-6ruw0jki93],
    .booking-calendar[b-6ruw0jki93],
    .booking-slots[b-6ruw0jki93],
    .booking-footer[b-6ruw0jki93] { border-color: #27384a; background: #111d2b; }
    .booking-heading h3[b-6ruw0jki93] { color: #eef4fa; }
    .booking-heading p[b-6ruw0jki93] { color: #95a6b7; }
    .booking-heading strong[b-6ruw0jki93] { color: #d3dde7; }
    .booking-calendar h4[b-6ruw0jki93], .booking-slots h4[b-6ruw0jki93], .booking-selection strong[b-6ruw0jki93] { color: #d3dde7; }
    .next-available[b-6ruw0jki93] { border-color: #2c4d5c; color: #62c9de; background: #14303d; }
    .slot[b-6ruw0jki93] { border-color: #2c3d4f; color: #cbd8e3; background: #16222f; }
    .slot-free:hover[b-6ruw0jki93] { border-color: #4bb6cd; background: #14303d; }
    .slot-taken[b-6ruw0jki93] { border-color: #5a3b40; color: #b3868b; background: #241a1d; }
    .slot-past[b-6ruw0jki93], .slot-beyond[b-6ruw0jki93] { border-color: #26313d; color: #5f6f7d; background: #131c26; }
    .slots-empty[b-6ruw0jki93] { border-color: #34475a; background: #0f1926; }
    .slots-empty strong[b-6ruw0jki93] { color: #e3ebf3; }
    .booking-message[b-6ruw0jki93] { border-color: #24505c; background: #102932; color: #8fcedd; }
    .booking-message-error[b-6ruw0jki93] { border-color: #5c3238; background: #2a171a; color: #eb9aa1; }
}

@media (prefers-reduced-motion: reduce) {
    .slots-loader[b-6ruw0jki93] { animation-duration: .01ms; }
    .slot[b-6ruw0jki93] { transition-duration: .01ms; }
}
/* /Components/Pages/LabReport.razor.rz.scp.css */
/* LabReport.razor.css */

.report-loading[b-z8ew8yjzew], .report-error[b-z8ew8yjzew] {
    min-height: 60vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    color: #475569;
}

.report-loading .spinner[b-z8ew8yjzew] {
    width: 36px;
    height: 36px;
    border: 3px solid #cbd5e1;
    border-top-color: #0284c7;
    border-radius: 50%;
    animation: spin-b-z8ew8yjzew 0.8s linear infinite;
}

@keyframes spin-b-z8ew8yjzew {
    to { transform: rotate(360deg); }
}

/* Toolbar */
.report-toolbar[b-z8ew8yjzew] {
    position: sticky;
    top: 0;
    z-index: 100;
    background: #0f172a;
    color: #f8fafc;
    padding: 10px 16px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.toolbar-container[b-z8ew8yjzew] {
    max-width: 900px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.toolbar-left[b-z8ew8yjzew] {
    display: flex;
    align-items: center;
    gap: 16px;
}

.back-link[b-z8ew8yjzew] {
    display: flex;
    align-items: center;
    gap: 6px;
    color: #94a3b8;
    text-decoration: none;
    font-size: 13px;
    font-weight: 500;
    transition: color 0.15s ease;
}

.back-link:hover[b-z8ew8yjzew] {
    color: #ffffff;
}

.toolbar-title[b-z8ew8yjzew] {
    font-size: 14px;
    font-weight: 600;
    color: #f8fafc;
}

.toolbar-right[b-z8ew8yjzew] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.btn-print[b-z8ew8yjzew], .btn-csv[b-z8ew8yjzew] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 600;
    padding: 6px 14px;
    border-radius: 6px;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.15s ease;
    border: none;
}

.btn-print[b-z8ew8yjzew] {
    background: #0284c7;
    color: #ffffff;
}

.btn-print:hover[b-z8ew8yjzew] {
    background: #0369a1;
}

.btn-csv[b-z8ew8yjzew] {
    background: #1e293b;
    color: #cbd5e1;
    border: 1px solid #334155;
}

.btn-csv:hover[b-z8ew8yjzew] {
    background: #334155;
    color: #ffffff;
}

/* Report Sheet (A4 format) */
.report-sheet[b-z8ew8yjzew] {
    max-width: 850px;
    margin: 24px auto;
    background: #ffffff;
    color: #1e293b;
    padding: 40px;
    border-radius: 8px;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);
    border: 1px solid #e2e8f0;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
    line-height: 1.5;
}

.report-institution-header[b-z8ew8yjzew] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
}

.institution-brand .brand-logo-text[b-z8ew8yjzew] {
    font-size: 20px;
    font-weight: 800;
    letter-spacing: 0.08em;
    color: #0f172a;
}

.institution-brand .brand-sub[b-z8ew8yjzew] {
    font-size: 12px;
    color: #64748b;
    margin-top: 2px;
}

.report-badge[b-z8ew8yjzew] {
    text-align: right;
    display: flex;
    flex-direction: column;
}

.badge-title[b-z8ew8yjzew] {
    font-size: 12px;
    font-weight: 700;
    color: #0284c7;
    letter-spacing: 0.05em;
}

.badge-id[b-z8ew8yjzew] {
    font-size: 11px;
    font-family: ui-monospace, monospace;
    color: #64748b;
}

.report-divider[b-z8ew8yjzew] {
    border: none;
    border-top: 2px solid #0f172a;
    margin: 16px 0 20px;
}

.report-title-section[b-z8ew8yjzew] {
    margin-bottom: 24px;
}

.report-title-section h1[b-z8ew8yjzew] {
    font-size: 24px;
    font-weight: 700;
    color: #0f172a;
    margin: 0 0 4px;
}

.report-subtitle[b-z8ew8yjzew] {
    font-size: 13px;
    color: #475569;
}

/* Meta Table */
.meta-section[b-z8ew8yjzew] {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    padding: 14px;
    margin-bottom: 24px;
}

.meta-table[b-z8ew8yjzew] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.meta-label[b-z8ew8yjzew] {
    width: 130px;
    color: #64748b;
    font-weight: 500;
    padding: 4px 0;
}

.meta-val[b-z8ew8yjzew] {
    color: #0f172a;
    padding: 4px 16px 4px 0;
}

.status-chip[b-z8ew8yjzew] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
}

.status-completed[b-z8ew8yjzew] {
    background: #dcfce7;
    color: #15803d;
}

.status-missed[b-z8ew8yjzew] {
    background: #fee2e2;
    color: #b91c1c;
}

.status-canceled[b-z8ew8yjzew] {
    background: #f1f5f9;
    color: #64748b;
}

/* Sections */
.report-section[b-z8ew8yjzew] {
    margin-bottom: 28px;
    break-inside: avoid;
}

.report-section h2[b-z8ew8yjzew] {
    font-size: 16px;
    font-weight: 700;
    color: #0f172a;
    margin: 0 0 12px;
    padding-bottom: 4px;
    border-bottom: 1px solid #e2e8f0;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.report-section h3[b-z8ew8yjzew] {
    font-size: 14px;
    font-weight: 600;
    color: #334155;
    margin: 14px 0 8px;
}

.objectives-grid[b-z8ew8yjzew] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

.objectives-card[b-z8ew8yjzew] {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    padding: 12px 16px;
}

.objectives-card ul[b-z8ew8yjzew] {
    margin: 6px 0 0;
    padding-left: 18px;
    font-size: 13px;
    color: #334155;
}

.objectives-card li[b-z8ew8yjzew] {
    margin-bottom: 4px;
}

/* Data Tables */
.data-table[b-z8ew8yjzew] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
    margin: 10px 0;
}

.data-table th[b-z8ew8yjzew] {
    background: #f1f5f9;
    color: #334155;
    font-weight: 600;
    text-align: left;
    padding: 8px 10px;
    border: 1px solid #cbd5e1;
}

.data-table td[b-z8ew8yjzew] {
    padding: 8px 10px;
    border: 1px solid #e2e8f0;
    color: #1e293b;
}

.data-table tr.row-done td[b-z8ew8yjzew] {
    background: #ffffff;
}

.type-pill[b-z8ew8yjzew] {
    background: #e2e8f0;
    color: #475569;
    padding: 2px 6px;
    border-radius: 3px;
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
}

.check-done[b-z8ew8yjzew] {
    color: #16a34a;
    font-weight: 600;
}

.check-pending[b-z8ew8yjzew] {
    color: #94a3b8;
}

.step-expectation[b-z8ew8yjzew] {
    font-size: 11px;
    color: #64748b;
    margin-top: 2px;
}

.student-entries-grid[b-z8ew8yjzew] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 8px;
    margin-top: 8px;
}

.entry-item[b-z8ew8yjzew] {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 4px;
    padding: 8px 10px;
    display: flex;
    flex-direction: column;
}

.entry-key[b-z8ew8yjzew] {
    font-size: 11px;
    color: #64748b;
}

.entry-val[b-z8ew8yjzew] {
    font-size: 14px;
    color: #0f172a;
    margin-top: 2px;
}

.empty-readings-notice[b-z8ew8yjzew] {
    padding: 12px;
    background: #f8fafc;
    border: 1px dashed #cbd5e1;
    border-radius: 6px;
    color: #64748b;
    font-size: 12px;
}

/* Declaration & Signature */
.declaration-section[b-z8ew8yjzew] {
    margin-top: 36px;
    padding-top: 16px;
    border-top: 1px solid #e2e8f0;
}

.declaration-text[b-z8ew8yjzew] {
    font-size: 12px;
    color: #475569;
    font-style: italic;
    margin-bottom: 14px;
}

.signature-box[b-z8ew8yjzew] {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    background: #f8fafc;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    padding: 14px 18px;
}

.sig-line[b-z8ew8yjzew] {
    display: flex;
    flex-direction: column;
}

.sig-title[b-z8ew8yjzew] {
    font-size: 11px;
    color: #64748b;
    text-transform: uppercase;
    font-weight: 600;
}

.sig-hash[b-z8ew8yjzew] {
    font-size: 12px;
    font-weight: 700;
    color: #0284c7;
    margin-top: 4px;
}

.sig-date-val[b-z8ew8yjzew] {
    font-size: 12px;
    font-weight: 600;
    color: #334155;
    margin-top: 4px;
}

.report-footer[b-z8ew8yjzew] {
    display: flex;
    justify-content: space-between;
    font-size: 10px;
    color: #94a3b8;
    margin-top: 32px;
    padding-top: 12px;
    border-top: 1px solid #e2e8f0;
}

/* Helpers */
.text-center[b-z8ew8yjzew] { text-align: center; }
.text-right[b-z8ew8yjzew] { text-align: right; }
.font-mono[b-z8ew8yjzew] { font-family: ui-monospace, monospace; }
.font-bold[b-z8ew8yjzew] { font-weight: 600; }
.text-sm[b-z8ew8yjzew] { font-size: 11px; }

/* Print Media Styles */
@media print {
    @page {
        size: A4 portrait;
        margin: 12mm 15mm;
    }

    body[b-z8ew8yjzew], html[b-z8ew8yjzew] {
        background: #ffffff !important;
        color: #000000 !important;
    }

    .no-print[b-z8ew8yjzew] {
        display: none !important;
    }

    .report-sheet[b-z8ew8yjzew] {
        box-shadow: none !important;
        margin: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        padding: 0 !important;
        border: none !important;
    }

    .report-section[b-z8ew8yjzew] {
        break-inside: avoid;
    }

    .meta-section[b-z8ew8yjzew], .objectives-card[b-z8ew8yjzew], .signature-box[b-z8ew8yjzew] {
        background: #ffffff !important;
        border: 1px solid #94a3b8 !important;
    }

    .data-table th[b-z8ew8yjzew] {
        background: #f1f5f9 !important;
        color: #000000 !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }
}
/* /Components/Pages/LabsCatalog.razor.rz.scp.css */
.catalog-page[b-x1isy296l4] {
    --catalog-ink: #132238;
    --catalog-muted: #68778a;
    --catalog-line: #dce4eb;
    --catalog-card: #ffffff;
    --catalog-blue: #198ca8;
    --catalog-blue-dark: #0c7089;
    --catalog-mint: #19aa81;
    max-width: 1240px;
    margin: 0 auto;
    padding: 12px 0 48px;
    color: var(--catalog-ink);
}

.catalog-page *[b-x1isy296l4], .catalog-page *[b-x1isy296l4]::before, .catalog-page *[b-x1isy296l4]::after,
.catalog-modal *[b-x1isy296l4], .catalog-modal *[b-x1isy296l4]::before, .catalog-modal *[b-x1isy296l4]::after { box-sizing: border-box; }

.catalog-heading[b-x1isy296l4] { margin-bottom: 28px; display: flex; align-items: flex-end; justify-content: space-between; gap: 36px; }
.catalog-kicker[b-x1isy296l4] { display: block; color: var(--catalog-blue-dark); font-size: 10px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.catalog-heading h2[b-x1isy296l4] { margin: 7px 0 7px; color: #101e31; font-size: clamp(32px, 4vw, 44px); font-weight: 760; letter-spacing: -.048em; line-height: 1.08; }
.catalog-heading p[b-x1isy296l4] { max-width: 670px; margin: 0; color: var(--catalog-muted); font-size: 14px; line-height: 1.65; }
.catalog-summary[b-x1isy296l4] { min-width: 260px; padding: 15px 19px; display: flex; align-items: center; justify-content: space-between; gap: 17px; border: 1px solid var(--catalog-line); border-radius: 12px; background: #fff; box-shadow: 0 4px 14px rgba(17,39,65,.04); }
.catalog-summary div[b-x1isy296l4] { display: grid; grid-template-columns: auto 1fr; gap: 7px; align-items: baseline; }
.catalog-summary strong[b-x1isy296l4] { color: #14243a; font-size: 22px; line-height: 1; }
.catalog-summary span[b-x1isy296l4] { color: #788798; font-size: 9px; font-weight: 700; text-transform: uppercase; }
.catalog-summary i[b-x1isy296l4] { width: 1px; height: 30px; background: var(--catalog-line); }

.catalog-toolbar[b-x1isy296l4] { margin-bottom: 22px; padding: 12px; display: flex; justify-content: space-between; gap: 16px; border: 1px solid var(--catalog-line); border-radius: 13px; background: #fff; box-shadow: 0 4px 14px rgba(17,39,65,.035); }
.catalog-search[b-x1isy296l4] { position: relative; min-width: 0; flex: 1; }
.catalog-search input[b-x1isy296l4] { width: 100%; height: 42px; padding: 0 42px; border: 1px solid #d5dfe7; border-radius: 9px; outline: none; color: #213247; background: #f8fafb; font-size: 12px; transition: border .2s, box-shadow .2s, background .2s; }
.catalog-search input:focus[b-x1isy296l4] { border-color: rgba(25,140,168,.65); background: #fff; box-shadow: 0 0 0 3px rgba(25,140,168,.09); }
.catalog-search input[b-x1isy296l4]::placeholder { color: #8492a1; }
.search-mark[b-x1isy296l4] { position: absolute; z-index: 1; left: 16px; top: 13px; width: 14px; height: 14px; border: 1.8px solid #738397; border-radius: 50%; }
.search-mark[b-x1isy296l4]::after { content: ""; position: absolute; width: 6px; height: 1.8px; right: -5px; bottom: -3px; border-radius: 2px; background: #738397; transform: rotate(45deg); }
.catalog-search button[b-x1isy296l4] { position: absolute; right: 8px; top: 7px; width: 29px; height: 29px; border: 0; border-radius: 7px; color: #6d7d8e; background: transparent; font-size: 18px; cursor: pointer; }
.catalog-filter-tabs[b-x1isy296l4] { padding: 3px; display: flex; gap: 3px; border-radius: 9px; background: #edf2f5; }
.catalog-filter-tabs button[b-x1isy296l4] { min-width: 118px; padding: 8px 12px; border: 0; border-radius: 7px; color: #657486; background: transparent; font-size: 10px; font-weight: 750; cursor: pointer; }
.catalog-filter-tabs button.active[b-x1isy296l4] { color: #0e6e86; background: #fff; box-shadow: 0 2px 8px rgba(17,39,65,.08); }

.catalog-grid[b-x1isy296l4] { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.catalog-card[b-x1isy296l4] { min-width: 0; display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--catalog-line); border-radius: 15px; background: var(--catalog-card); box-shadow: 0 5px 18px rgba(17,39,65,.05); transition: transform .22s, box-shadow .22s, border-color .22s; }
.catalog-card:hover[b-x1isy296l4] { transform: translateY(-3px); border-color: #b9ced8; box-shadow: 0 13px 28px rgba(17,39,65,.09); }
.catalog-card-visual[b-x1isy296l4] { position: relative; height: 132px; overflow: hidden; border-bottom: 1px solid #183750; color: #52ddc1; background: radial-gradient(circle at 80% 0%, rgba(65,214,186,.16), transparent 30%), #0b1d30; }
.catalog-scope-grid[b-x1isy296l4] { position: absolute; inset: 0; opacity: .4; background-image: linear-gradient(rgba(100,149,190,.17) 1px, transparent 1px), linear-gradient(90deg, rgba(100,149,190,.17) 1px, transparent 1px); background-size: 24px 24px; }
.catalog-trace[b-x1isy296l4] { position: absolute; left: 7%; right: 7%; top: 48px; height: 38px; color: currentColor; background: currentColor; filter: drop-shadow(0 0 7px currentColor); clip-path: polygon(0 50%, 5% 10%, 10% 50%, 15% 90%, 20% 50%, 25% 10%, 30% 50%, 35% 90%, 40% 50%, 45% 10%, 50% 50%, 55% 90%, 60% 50%, 65% 10%, 70% 50%, 75% 90%, 80% 50%, 85% 10%, 90% 50%, 95% 90%, 100% 50%, 100% 57%, 95% 97%, 90% 57%, 85% 17%, 80% 57%, 75% 97%, 70% 57%, 65% 17%, 60% 57%, 55% 97%, 50% 57%, 45% 17%, 40% 57%, 35% 97%, 30% 57%, 25% 17%, 20% 57%, 15% 97%, 10% 57%, 5% 17%, 0 57%); }
.catalog-card-visual > span[b-x1isy296l4] { position: absolute; left: 14px; top: 12px; color: #78a0bd; font-family: ui-monospace, monospace; font-size: 8px; font-weight: 700; letter-spacing: .08em; }
.catalog-card-visual > i[b-x1isy296l4] { position: absolute; right: 14px; top: 12px; color: #4ecfb5; font-size: 7px; font-style: normal; font-weight: 800; letter-spacing: .13em; }
.catalog-card-unavailable .catalog-card-visual[b-x1isy296l4] { color: #7892a7; filter: saturate(.4); }

.catalog-card-body[b-x1isy296l4] { padding: 20px 20px 18px; flex: 1; }
.catalog-card-status[b-x1isy296l4] { margin-bottom: 20px; display: flex; justify-content: space-between; gap: 10px; align-items: center; }
.lab-code[b-x1isy296l4] { padding: 5px 8px; border-radius: 6px; color: #4e5e71; background: #edf1f4; font-family: ui-monospace, monospace; font-size: 9px; font-weight: 750; }
.availability[b-x1isy296l4] { padding: 4px 8px; border-radius: 20px; color: #6e7d8c; background: #eef2f5; font-size: 8px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.availability-active[b-x1isy296l4] { display: inline-flex; align-items: center; gap: 5px; color: #087657; background: #def6ed; }
.availability-active i[b-x1isy296l4] { width: 5px; height: 5px; border-radius: 50%; background: #16a67d; box-shadow: 0 0 7px rgba(22,166,125,.5); }
.catalog-card h3[b-x1isy296l4] { margin: 0 0 9px; color: #16263b; font-size: 20px; font-weight: 740; letter-spacing: -.032em; line-height: 1.2; }
.catalog-card-body > p[b-x1isy296l4] { min-height: 68px; margin: 0 0 20px; display: -webkit-box; overflow: hidden; color: #6b798b; font-size: 12px; line-height: 1.65; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.catalog-meta[b-x1isy296l4] { padding-top: 15px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; border-top: 1px solid #e7ecf0; }
.catalog-meta div[b-x1isy296l4] { display: grid; }
.catalog-meta span[b-x1isy296l4] { color: #8a97a6; font-size: 8px; font-weight: 750; letter-spacing: .07em; text-transform: uppercase; }
.catalog-meta strong[b-x1isy296l4] { margin-top: 2px; color: #394b60; font-size: 10px; }
.catalog-card-actions[b-x1isy296l4] { min-height: 64px; padding: 11px 14px 11px 20px; display: flex; align-items: center; justify-content: space-between; gap: 10px; border-top: 1px solid #e2e9ee; background: #fbfcfd; }
.catalog-card-actions > a[b-x1isy296l4] { color: #4d6075; font-size: 10px; font-weight: 700; text-decoration: none; }
.catalog-card-actions > a:hover[b-x1isy296l4] { color: var(--catalog-blue-dark); }
.manual-unavailable[b-x1isy296l4] { color: #9aa5b0; font-size: 9px; }
.catalog-card-actions button[b-x1isy296l4] { min-height: 36px; padding: 8px 11px; display: inline-flex; align-items: center; gap: 7px; border: 0; border-radius: 8px; color: #fff; background: var(--catalog-blue-dark); font-size: 10px; font-weight: 750; cursor: pointer; transition: background .18s, transform .18s; }
.catalog-card-actions button:hover:not(:disabled)[b-x1isy296l4] { background: #095b70; transform: translateY(-1px); }
.catalog-card-actions button:disabled[b-x1isy296l4] { color: #8996a3; background: #e7ecef; cursor: not-allowed; }

.catalog-pagination[b-x1isy296l4] { margin-top: 22px; min-height: 60px; padding: 10px 12px 10px 18px; display: grid; grid-template-columns: 1fr auto 1fr; gap: 18px; align-items: center; border: 1px solid var(--catalog-line); border-radius: 12px; background: #fff; box-shadow: 0 4px 14px rgba(17,39,65,.035); }
.catalog-pagination p[b-x1isy296l4] { margin: 0; color: #7a8999; font-size: 10px; }
.catalog-pagination p strong[b-x1isy296l4] { color: #405267; }
.catalog-pagination > div[b-x1isy296l4] { display: flex; align-items: center; gap: 5px; }
.catalog-pagination button[b-x1isy296l4] { width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid #d4dee6; border-radius: 8px; color: #536579; background: #fff; font-size: 10px; font-weight: 750; cursor: pointer; transition: border .18s, background .18s, color .18s; }
.catalog-pagination button:hover:not(:disabled):not(.active)[b-x1isy296l4] { border-color: #9cc7d2; color: #0c7089; background: #f1fafb; }
.catalog-pagination button.active[b-x1isy296l4] { border-color: #0c7089; color: #fff; background: #0c7089; }
.catalog-pagination button:disabled[b-x1isy296l4] { color: #b1bbc4; background: #f5f7f8; cursor: not-allowed; }
.catalog-pagination > span[b-x1isy296l4] { justify-self: end; color: #7a8999; font-size: 9px; font-weight: 700; text-transform: uppercase; }

.catalog-loading[b-x1isy296l4] { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.catalog-loading > div[b-x1isy296l4] { height: 390px; padding: 165px 20px 20px; display: grid; align-content: start; gap: 13px; border: 1px solid #e0e6eb; border-radius: 15px; background: linear-gradient(110deg, #eef2f4 8%, #f8fafb 18%, #eef2f4 33%); background-size: 200% 100%; animation: catalog-shimmer-b-x1isy296l4 1.3s linear infinite; }
.catalog-loading span[b-x1isy296l4] { width: 55%; height: 20px; border-radius: 5px; background: rgba(158,174,188,.25); }
.catalog-loading i[b-x1isy296l4] { width: 100%; height: 11px; border-radius: 4px; background: rgba(158,174,188,.18); }
.catalog-loading i:last-child[b-x1isy296l4] { width: 70%; }
@keyframes catalog-shimmer-b-x1isy296l4 { to { background-position-x: -200%; } }
.catalog-empty[b-x1isy296l4] { min-height: 330px; padding: 50px 24px; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 1px dashed #c5d1db; border-radius: 15px; text-align: center; background: #fbfcfd; }
.catalog-empty > span[b-x1isy296l4] { width: 52px; height: 52px; display: grid; place-items: center; margin-bottom: 19px; border: 1px solid #cdd8e1; border-radius: 13px; color: #708195; background: #f2f5f7; font-family: ui-monospace, monospace; font-size: 9px; font-weight: 800; }
.catalog-empty h3[b-x1isy296l4] { margin: 0 0 7px; color: #26374c; font-size: 18px; }
.catalog-empty p[b-x1isy296l4] { margin: 0; color: #7b8998; font-size: 12px; }
.catalog-empty button[b-x1isy296l4] { margin-top: 18px; padding: 9px 13px; border: 1px solid #b9d2da; border-radius: 8px; color: #0b718a; background: #f2fafb; font-size: 10px; font-weight: 750; cursor: pointer; }

.catalog-modal-backdrop[b-x1isy296l4] { position: fixed; z-index: 1000; inset: 0; padding: 24px; display: grid; place-items: center; overflow-y: auto; background: rgba(4,13,24,.67); backdrop-filter: blur(8px); }
.catalog-modal[b-x1isy296l4] { --catalog-blue: #198ca8; --catalog-blue-dark: #0c7089; width: min(620px, 100%); overflow: hidden; border: 1px solid #d8e2e9; border-radius: 17px; color: #17263a; background: #fff; box-shadow: 0 35px 90px rgba(0,0,0,.3); }
.catalog-modal > header[b-x1isy296l4] { padding: 22px 24px; display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; border-bottom: 1px solid #e0e7ec; }
.catalog-modal > header h2[b-x1isy296l4] { margin: 5px 0 0; color: #15253a; font-size: 24px; letter-spacing: -.035em; }
.catalog-modal > header > button[b-x1isy296l4] { width: 34px; height: 34px; flex: 0 0 auto; border: 1px solid #d9e1e7; border-radius: 8px; color: #6b7a8b; background: #f7f9fa; font-size: 20px; cursor: pointer; }
.modal-lab-summary[b-x1isy296l4] { margin: 20px 24px 0; padding: 14px; display: grid; grid-template-columns: auto 1fr; gap: 13px; align-items: start; border-radius: 10px; background: #f0f5f7; }
.modal-lab-summary > span[b-x1isy296l4] { padding: 5px 7px; border-radius: 5px; color: #0d6e86; background: #dceef2; font-family: ui-monospace, monospace; font-size: 8px; font-weight: 800; }
.modal-lab-summary p[b-x1isy296l4] { margin: 0; color: #617184; font-size: 11px; line-height: 1.55; }
.catalog-modal fieldset[b-x1isy296l4] { margin: 0; padding: 22px 24px 24px; border: 0; }
.catalog-modal legend[b-x1isy296l4] { margin-bottom: 12px; color: #35475c; font-size: 11px; font-weight: 750; }
.request-options[b-x1isy296l4] { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.request-option[b-x1isy296l4] { position: relative; min-height: 82px; padding: 12px; display: grid; grid-template-columns: 30px 1fr 13px; gap: 9px; align-items: center; border: 1px solid #dbe3e9; border-radius: 10px; color: #25374c; background: #fff; text-align: left; cursor: pointer; transition: border .18s, background .18s, box-shadow .18s; }
.request-option:hover[b-x1isy296l4] { border-color: #a9cbd4; background: #f9fcfc; }
.request-option.selected[b-x1isy296l4] { border-color: #61b3c5; background: #f0fafb; box-shadow: 0 0 0 3px rgba(25,140,168,.08); }
.request-option > span[b-x1isy296l4] { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 7px; color: #0c7189; background: #e2f1f4; font-family: ui-monospace, monospace; font-size: 8px; font-weight: 800; }
.request-option > div[b-x1isy296l4] { display: grid; }
.request-option strong[b-x1isy296l4] { font-size: 11px; }
.request-option small[b-x1isy296l4] { margin-top: 2px; color: #798899; font-size: 8px; line-height: 1.35; }
.request-option > i[b-x1isy296l4] { width: 12px; height: 12px; border: 1px solid #aab9c6; border-radius: 50%; }
.request-option.selected > i[b-x1isy296l4] { border: 3px solid #fff; background: var(--catalog-blue); box-shadow: 0 0 0 1px var(--catalog-blue); }
.catalog-modal > footer[b-x1isy296l4] { padding: 15px 24px; display: flex; justify-content: flex-end; gap: 9px; border-top: 1px solid #e0e7ec; background: #f8fafb; }
.catalog-modal > footer button[b-x1isy296l4] { min-height: 40px; padding: 9px 15px; border-radius: 8px; font-size: 10px; font-weight: 750; cursor: pointer; }
.modal-cancel[b-x1isy296l4] { border: 1px solid #d5dee6; color: #5c6d7f; background: #fff; }
.modal-submit[b-x1isy296l4] { display: inline-flex; align-items: center; gap: 8px; border: 0; color: #fff; background: var(--catalog-blue-dark, #0c7089); box-shadow: 0 7px 17px rgba(12,112,137,.2); }
.modal-submit:disabled[b-x1isy296l4] { color: #8c99a6; background: #e1e7eb; cursor: not-allowed; }

.dark .catalog-heading h2[b-x1isy296l4], .dark .catalog-summary strong[b-x1isy296l4], .dark .catalog-card h3[b-x1isy296l4] { color: #eef4fa; }
.dark .catalog-heading p[b-x1isy296l4] { color: #96a7b9; }
.dark .catalog-summary[b-x1isy296l4], .dark .catalog-toolbar[b-x1isy296l4], .dark .catalog-card[b-x1isy296l4], .dark .catalog-pagination[b-x1isy296l4] { border-color: #27384a; background: #111d2b; }
.dark .catalog-search input[b-x1isy296l4] { border-color: #304255; color: #e5edf4; background: #152333; }
.dark .catalog-filter-tabs[b-x1isy296l4] { background: #172638; }
.dark .catalog-filter-tabs button.active[b-x1isy296l4] { color: #67cee3; background: #22354a; }
.dark .catalog-card-body > p[b-x1isy296l4] { color: #96a7b8; }
.dark .catalog-meta[b-x1isy296l4], .dark .catalog-card-actions[b-x1isy296l4] { border-color: #27384a; }
.dark .catalog-meta strong[b-x1isy296l4] { color: #cdd7e1; }
.dark .catalog-card-actions[b-x1isy296l4] { background: #101a27; }
.dark .catalog-pagination p strong[b-x1isy296l4] { color: #c6d1dc; }
.dark .catalog-pagination button[b-x1isy296l4] { border-color: #304255; color: #aab9c7; background: #172638; }
.dark .catalog-pagination button.active[b-x1isy296l4] { border-color: #198ca8; color: #fff; background: #198ca8; }
.dark .catalog-empty[b-x1isy296l4] { border-color: #34475a; background: #111d2b; }
.dark .catalog-empty h3[b-x1isy296l4] { color: #e3ebf3; }

@media (max-width: 1050px) {
    .catalog-grid[b-x1isy296l4], .catalog-loading[b-x1isy296l4] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
    .catalog-heading[b-x1isy296l4] { align-items: stretch; flex-direction: column; }
    .catalog-summary[b-x1isy296l4] { width: 100%; }
    .catalog-toolbar[b-x1isy296l4] { flex-direction: column; }
    .catalog-filter-tabs button[b-x1isy296l4] { min-width: 0; flex: 1; }
    .catalog-pagination[b-x1isy296l4] { grid-template-columns: 1fr auto; }
    .catalog-pagination > span[b-x1isy296l4] { display: none; }
}

@media (max-width: 560px) {
    .catalog-grid[b-x1isy296l4], .catalog-loading[b-x1isy296l4] { grid-template-columns: 1fr; }
    .catalog-heading h2[b-x1isy296l4] { font-size: 34px; }
    .catalog-card-body > p[b-x1isy296l4] { min-height: 0; }
    .request-options[b-x1isy296l4] { grid-template-columns: 1fr; }
    .catalog-pagination[b-x1isy296l4] { padding: 12px; display: flex; flex-direction: column; }
    .catalog-pagination p[b-x1isy296l4] { order: 2; }
    .catalog-modal-backdrop[b-x1isy296l4] { padding: 12px; align-items: start; }
    .catalog-modal[b-x1isy296l4] { margin-top: 12px; }
    .catalog-modal > footer[b-x1isy296l4] { display: grid; grid-template-columns: 1fr 1fr; }
}

@media (prefers-reduced-motion: reduce) {
    .catalog-page *[b-x1isy296l4], .catalog-page *[b-x1isy296l4]::before, .catalog-page *[b-x1isy296l4]::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
/* /Components/Pages/MyHistory.razor.rz.scp.css */
.history-page[b-4tjfm5cnwr] { --history-ink:#132238; --history-muted:#68778a; --history-line:#dce4eb; --history-card:#fff; --history-blue:#0c7089; max-width:1180px; margin:0 auto; padding:10px 0 48px; color:var(--history-ink); }
.history-page *[b-4tjfm5cnwr], .history-page *[b-4tjfm5cnwr]::before, .history-page *[b-4tjfm5cnwr]::after, .history-dialog *[b-4tjfm5cnwr], .history-dialog *[b-4tjfm5cnwr]::before, .history-dialog *[b-4tjfm5cnwr]::after { box-sizing:border-box; }
.history-heading[b-4tjfm5cnwr] { margin-bottom:26px; display:flex; align-items:flex-end; justify-content:space-between; gap:32px; }
.history-kicker[b-4tjfm5cnwr] { display:block; color:var(--history-blue); font-size:10px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }
.history-heading h2[b-4tjfm5cnwr] { margin:7px 0 8px; color:#101e31; font-size:clamp(32px,4vw,44px); font-weight:760; letter-spacing:-.048em; line-height:1.08; }
.history-heading p[b-4tjfm5cnwr] { max-width:650px; margin:0; color:var(--history-muted); font-size:14px; line-height:1.65; }
.history-primary-action[b-4tjfm5cnwr] { min-height:42px; padding:10px 15px; display:inline-flex; align-items:center; gap:8px; flex:0 0 auto; border:1px solid #b9d2da; border-radius:9px; color:#0b718a; background:#fff; box-shadow:0 4px 12px rgba(17,39,65,.04); font-size:11px; font-weight:750; text-decoration:none; transition:border .18s,background .18s,transform .18s; }
.history-primary-action:hover[b-4tjfm5cnwr] { border-color:#7fb9c7; background:#f2fafb; transform:translateY(-1px); }
.history-primary-action svg[b-4tjfm5cnwr] { width:17px; height:17px; }

.history-loading[b-4tjfm5cnwr] { min-height:160px; padding:28px; display:flex; align-items:center; justify-content:center; gap:14px; border:1px solid var(--history-line); border-radius:14px; background:#fff; }
.history-loading div[b-4tjfm5cnwr] { display:grid; gap:3px; }
.history-loading strong[b-4tjfm5cnwr] { color:#33445a; font-size:13px; }
.history-loading small[b-4tjfm5cnwr] { color:#7a8999; font-size:10px; }
.history-loader[b-4tjfm5cnwr] { width:28px; height:28px; border:3px solid #dbe8ec; border-top-color:var(--history-blue); border-radius:50%; animation:history-spin-b-4tjfm5cnwr .8s linear infinite; }
@keyframes history-spin-b-4tjfm5cnwr { to { transform:rotate(360deg); } }

.history-stats[b-4tjfm5cnwr] { margin-bottom:18px; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.history-stat[b-4tjfm5cnwr] { min-width:0; min-height:106px; padding:18px; display:grid; grid-template-columns:42px 1fr; gap:4px 13px; align-items:center; border:1px solid var(--history-line); border-radius:13px; background:#fff; box-shadow:0 5px 16px rgba(17,39,65,.04); }
.stat-mark[b-4tjfm5cnwr] { width:42px; height:42px; grid-row:1 / span 2; display:grid; place-items:center; border-radius:11px; font-family:ui-monospace,monospace; font-size:15px; font-weight:800; }
.stat-mark svg[b-4tjfm5cnwr] { width:21px; height:21px; }
.history-stat > div[b-4tjfm5cnwr] { display:flex; align-items:baseline; gap:7px; }
.history-stat strong[b-4tjfm5cnwr] { color:#14243a; font-size:25px; line-height:1; }
.history-stat > div span[b-4tjfm5cnwr] { color:#4b5e73; font-size:11px; font-weight:750; }
.history-stat small[b-4tjfm5cnwr] { color:#8a97a6; font-size:8px; }
.history-stat-complete .stat-mark[b-4tjfm5cnwr] { color:#087657; background:#def6ed; }
.history-stat-missed .stat-mark[b-4tjfm5cnwr] { color:#b14149; background:#fde9ea; }
.history-stat-cancelled .stat-mark[b-4tjfm5cnwr] { color:#5c6b7a; background:#eef2f5; }
.history-stat-total .stat-mark[b-4tjfm5cnwr] { color:#176e9f; background:#e2f0f9; }

.history-card[b-4tjfm5cnwr] { overflow:hidden; border:1px solid var(--history-line); border-radius:15px; background:#fff; box-shadow:0 6px 20px rgba(17,39,65,.05); }
.history-card-header[b-4tjfm5cnwr] { min-height:78px; padding:16px 20px; display:flex; align-items:center; justify-content:space-between; gap:20px; border-bottom:1px solid #e2e9ee; }
.history-card-header h3[b-4tjfm5cnwr] { margin:5px 0 0; color:#17273c; font-size:18px; letter-spacing:-.025em; }
.history-filters[b-4tjfm5cnwr] { padding:3px; display:flex; gap:3px; border-radius:9px; background:#edf2f5; }
.history-filters button[b-4tjfm5cnwr] { min-height:34px; padding:7px 10px; display:inline-flex; align-items:center; gap:6px; border:0; border-radius:7px; color:#657486; background:transparent; font-size:9px; font-weight:750; cursor:pointer; }
.history-filters button span[b-4tjfm5cnwr] { min-width:18px; height:18px; padding:0 5px; display:grid; place-items:center; border-radius:9px; color:#738294; background:rgba(255,255,255,.7); font-size:7px; }
.history-filters button.active[b-4tjfm5cnwr] { color:#0e6e86; background:#fff; box-shadow:0 2px 8px rgba(17,39,65,.08); }

.history-list[b-4tjfm5cnwr] { display:grid; }
.history-row[b-4tjfm5cnwr] { min-width:0; padding:17px 20px; display:grid; grid-template-columns:48px minmax(0,1fr) auto; gap:14px; align-items:center; border-bottom:1px solid #e7edf1; transition:background .16s; }
.history-row:last-child[b-4tjfm5cnwr] { border-bottom:0; }
.history-row:hover[b-4tjfm5cnwr] { background:#fafcfd; }
.history-lab-code[b-4tjfm5cnwr] { width:48px; height:48px; display:grid; place-items:center; overflow:hidden; border:1px solid #cce1e7; border-radius:11px; color:#0e7189; background:#e8f4f6; font-family:ui-monospace,"Roboto Mono",monospace; font-size:8px; font-weight:800; text-align:center; }
.history-row-copy[b-4tjfm5cnwr] { min-width:0; }
.history-row-copy h4[b-4tjfm5cnwr] { margin:0 0 6px; overflow:hidden; color:#26374c; font-size:13px; font-weight:750; text-overflow:ellipsis; white-space:nowrap; }
.history-row-meta[b-4tjfm5cnwr] { display:flex; align-items:center; gap:9px; color:#7c8a9a; font-size:9px; }
.history-row-meta span[b-4tjfm5cnwr] { display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
.history-row-meta svg[b-4tjfm5cnwr] { width:13px; height:13px; }
.history-row-meta > i[b-4tjfm5cnwr] { width:3px; height:3px; border-radius:50%; background:#b5c0c9; }
.history-row-actions[b-4tjfm5cnwr] { display:flex; align-items:center; gap:13px; }
.history-status[b-4tjfm5cnwr] { padding:5px 8px; display:inline-flex; align-items:center; gap:6px; border-radius:20px; font-size:8px; font-weight:800; letter-spacing:.055em; text-transform:uppercase; }
.history-status i[b-4tjfm5cnwr] { width:5px; height:5px; border-radius:50%; }
.history-status-complete[b-4tjfm5cnwr] { color:#087657; background:#def6ed; }
.history-status-complete i[b-4tjfm5cnwr] { background:#16a67d; }
.history-status-missed[b-4tjfm5cnwr] { color:#a43b44; background:#fde9ea; }
.history-status-missed i[b-4tjfm5cnwr] { background:#c84d56; }
/* Neutral grey, not red: a cancelled session is not a failure on the student's part. */
.history-status-cancelled[b-4tjfm5cnwr] { color:#5c6b7a; background:#eef2f5; }
.history-status-cancelled i[b-4tjfm5cnwr] { background:#8494a3; }
.history-row-actions button[b-4tjfm5cnwr] { padding:8px 10px; display:inline-flex; align-items:center; gap:6px; border:1px solid #d4e0e6; border-radius:8px; color:#53677b; background:#fff; font-size:9px; font-weight:750; cursor:pointer; transition:border .16s,color .16s,background .16s; }
.history-row-actions button:hover[b-4tjfm5cnwr] { border-color:#9fc7d1; color:#0c7089; background:#f2fafb; }

.history-filter-empty[b-4tjfm5cnwr] { min-height:190px; padding:35px; display:grid; place-items:center; align-content:center; text-align:center; }
.history-filter-empty strong[b-4tjfm5cnwr] { color:#35475c; font-size:13px; }
.history-filter-empty p[b-4tjfm5cnwr] { margin:5px 0 0; color:#8491a0; font-size:10px; }
.history-empty[b-4tjfm5cnwr] { min-height:390px; padding:52px 24px; display:flex; flex-direction:column; align-items:center; justify-content:center; border:1px dashed #c5d1db; border-radius:15px; text-align:center; background:#fbfcfd; }
.history-empty-icon[b-4tjfm5cnwr] { width:58px; height:58px; margin-bottom:20px; display:grid; place-items:center; border:1px solid #cbd9e1; border-radius:15px; color:#198ca8; background:#eef7f8; }
.history-empty-icon svg[b-4tjfm5cnwr] { width:27px; height:27px; }
.history-empty h3[b-4tjfm5cnwr] { margin:9px 0 8px; color:#26374c; font-size:21px; letter-spacing:-.025em; }
.history-empty p[b-4tjfm5cnwr] { max-width:470px; margin:0; color:#7b8998; font-size:12px; line-height:1.6; }
.history-empty a[b-4tjfm5cnwr] { margin-top:20px; padding:10px 14px; border-radius:8px; color:#fff; background:var(--history-blue); box-shadow:0 8px 18px rgba(12,112,137,.18); font-size:10px; font-weight:750; text-decoration:none; }

.history-download[b-4tjfm5cnwr] { display: inline-flex; align-items: center; gap: 7px; padding: 8px 12px; border: 1px solid #bad4db; border-radius: 8px; color: #0e7289; background: #f2fafb; font-size: 10px; font-weight: 750; text-decoration: none; transition: background .15s, border-color .15s; }
.history-download:hover[b-4tjfm5cnwr] { border-color: #0e7289; background: #e6f5f8; }
.history-download svg[b-4tjfm5cnwr] { width: 14px; height: 14px; }

.history-dialog-backdrop[b-4tjfm5cnwr] { position:fixed; z-index:1000; inset:0; padding:20px; display:grid; place-items:center; overflow-y:auto; background:rgba(4,13,24,.67); backdrop-filter:blur(7px); }
.history-dialog[b-4tjfm5cnwr] { width:min(590px,100%); overflow:hidden; border:1px solid #d8e2e9; border-radius:16px; color:#26374c; background:#fff; box-shadow:0 30px 80px rgba(0,0,0,.28); }
.history-dialog > header[b-4tjfm5cnwr] { padding:22px 24px 18px; display:flex; align-items:flex-start; justify-content:space-between; gap:20px; border-bottom:1px solid #e2e9ee; }
.history-dialog h3[b-4tjfm5cnwr] { margin:6px 0 4px; color:#17273b; font-size:23px; letter-spacing:-.03em; }
.dialog-lab-code[b-4tjfm5cnwr] { color:#718195; font-family:ui-monospace,monospace; font-size:8px; font-weight:800; }
.dialog-close[b-4tjfm5cnwr] { width:34px; height:34px; display:grid; place-items:center; flex:0 0 auto; border:1px solid #d8e1e7; border-radius:8px; color:#6b7a8b; background:#f7f9fa; font-size:20px; cursor:pointer; }
.dialog-session-state[b-4tjfm5cnwr] { padding:15px 24px 0; display:flex; align-items:center; justify-content:space-between; gap:15px; }
.dialog-session-state small[b-4tjfm5cnwr] { color:#8996a4; font-size:8px; }
.dialog-details-grid[b-4tjfm5cnwr] { margin:17px 24px 0; display:grid; grid-template-columns:1.2fr 1fr .7fr; gap:8px; }
.dialog-details-grid > div[b-4tjfm5cnwr] { min-width:0; padding:12px; display:grid; gap:4px; border:1px solid #e0e7ec; border-radius:9px; background:#f8fafb; }
.dialog-details-grid span[b-4tjfm5cnwr], .dialog-description > span[b-4tjfm5cnwr] { color:#8593a2; font-size:7px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.dialog-details-grid strong[b-4tjfm5cnwr] { overflow:hidden; color:#3a4c60; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.dialog-description[b-4tjfm5cnwr] { margin:18px 24px 24px; }
.dialog-description p[b-4tjfm5cnwr] { margin:7px 0 0; padding:13px; border:1px solid #e1e8ed; border-radius:9px; color:#6e7d8e; background:#f8fafb; font-size:10px; line-height:1.65; }
.history-dialog > footer[b-4tjfm5cnwr] { padding:14px 24px; display:flex; justify-content:flex-end; border-top:1px solid #e2e9ee; background:#f8fafb; }
.history-dialog > footer button[b-4tjfm5cnwr] { min-height:38px; padding:9px 14px; border:0; border-radius:8px; color:#fff; background:#0c7089; font-size:9px; font-weight:750; cursor:pointer; }

.dark .history-heading h2[b-4tjfm5cnwr], .dark .history-stat strong[b-4tjfm5cnwr], .dark .history-card-header h3[b-4tjfm5cnwr], .dark .history-row-copy h4[b-4tjfm5cnwr] { color:#eef4fa; }
.dark .history-heading p[b-4tjfm5cnwr] { color:#96a7b9; }
.dark .history-primary-action[b-4tjfm5cnwr], .dark .history-loading[b-4tjfm5cnwr], .dark .history-stat[b-4tjfm5cnwr], .dark .history-card[b-4tjfm5cnwr] { border-color:#27384a; background:#111d2b; }
.dark .history-primary-action[b-4tjfm5cnwr] { color:#6fd1e5; }
.dark .history-loading strong[b-4tjfm5cnwr], .dark .history-stat > div span[b-4tjfm5cnwr] { color:#d3dde7; }
.dark .history-loading small[b-4tjfm5cnwr], .dark .history-stat small[b-4tjfm5cnwr], .dark .history-row-meta[b-4tjfm5cnwr] { color:#91a2b5; }
.dark .history-card-header[b-4tjfm5cnwr], .dark .history-row[b-4tjfm5cnwr] { border-color:#27384a; }
.dark .history-filters[b-4tjfm5cnwr] { background:#172638; }
.dark .history-filters button[b-4tjfm5cnwr] { color:#91a2b5; }
.dark .history-filters button span[b-4tjfm5cnwr] { color:#9aabba; background:#223348; }
.dark .history-filters button.active[b-4tjfm5cnwr] { color:#67cee3; background:#22354a; }
.dark .history-row:hover[b-4tjfm5cnwr] { background:#162535; }
.dark .history-lab-code[b-4tjfm5cnwr] { border-color:#315165; color:#60c9df; background:#153041; }
.dark .history-row-actions button[b-4tjfm5cnwr] { border-color:#304255; color:#adbac7; background:#172638; }
.dark .history-status-complete[b-4tjfm5cnwr] { color:#55d2ad; background:#153b36; }
.dark .history-status-missed[b-4tjfm5cnwr] { color:#ed8c94; background:#39242c; }
.dark .history-status-cancelled[b-4tjfm5cnwr] { color:#a9b8c6; background:#222d38; }
.dark .history-empty[b-4tjfm5cnwr] { border-color:#34475a; background:#111d2b; }
.dark .history-empty h3[b-4tjfm5cnwr], .dark .history-filter-empty strong[b-4tjfm5cnwr] { color:#e3ebf3; }
.dark .history-empty-icon[b-4tjfm5cnwr] { border-color:#315165; color:#60c9df; background:#153041; }
.dark .history-dialog[b-4tjfm5cnwr] { border-color:#314255; color:#d6e0e9; background:#111d2b; }
.dark .history-dialog > header[b-4tjfm5cnwr], .dark .history-dialog > footer[b-4tjfm5cnwr] { border-color:#2d3e50; }
.dark .history-dialog h3[b-4tjfm5cnwr] { color:#f0f5fa; }
.dark .dialog-close[b-4tjfm5cnwr], .dark .dialog-details-grid > div[b-4tjfm5cnwr], .dark .dialog-description p[b-4tjfm5cnwr] { border-color:#304255; color:#cbd6e0; background:#172638; }
.dark .dialog-details-grid strong[b-4tjfm5cnwr] { color:#dbe4ec; }
.dark .history-dialog > footer[b-4tjfm5cnwr] { background:#101a27; }

@media (max-width:1200px) { .history-stats[b-4tjfm5cnwr] { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:640px) { .history-stats[b-4tjfm5cnwr] { grid-template-columns:1fr; } }
@media (max-width:700px) {
    .history-page[b-4tjfm5cnwr] { padding-top:2px; }
    .history-heading[b-4tjfm5cnwr] { margin-bottom:21px; align-items:stretch; flex-direction:column; gap:17px; }
    .history-heading h2[b-4tjfm5cnwr] { font-size:34px; }
    .history-primary-action[b-4tjfm5cnwr] { align-self:flex-start; }
    .history-card-header[b-4tjfm5cnwr] { align-items:stretch; flex-direction:column; }
    .history-filters[b-4tjfm5cnwr] { width:100%; }
    .history-filters button[b-4tjfm5cnwr] { min-width:0; flex:1; justify-content:center; }
    .history-row[b-4tjfm5cnwr] { grid-template-columns:44px minmax(0,1fr); padding:16px; }
    .history-lab-code[b-4tjfm5cnwr] { width:44px; height:44px; }
    .history-row-actions[b-4tjfm5cnwr] { grid-column:2; justify-content:space-between; }
    .dialog-details-grid[b-4tjfm5cnwr] { grid-template-columns:1fr; }
}
@media (max-width:430px) {
    .history-row-meta[b-4tjfm5cnwr] { align-items:flex-start; flex-direction:column; gap:5px; }
    .history-row-meta > i[b-4tjfm5cnwr] { display:none; }
    .history-row-actions[b-4tjfm5cnwr] { align-items:stretch; flex-direction:column; }
    .history-row-actions button[b-4tjfm5cnwr] { justify-content:center; }
    .history-dialog-backdrop[b-4tjfm5cnwr] { padding:10px; align-items:start; }
    .history-dialog[b-4tjfm5cnwr] { margin-top:10px; }
    .dialog-session-state[b-4tjfm5cnwr] { align-items:flex-start; flex-direction:column; }
}
@media (prefers-reduced-motion:reduce) { .history-page *[b-4tjfm5cnwr], .history-page *[b-4tjfm5cnwr]::before, .history-page *[b-4tjfm5cnwr]::after { animation-duration:.01ms!important; transition-duration:.01ms!important; } }
.dark .history-download[b-4tjfm5cnwr] { border-color: #2c4d5c; color: #62c9de; background: #14303d; }
.dark .history-stat-cancelled .stat-mark[b-4tjfm5cnwr] { color:#a9b8c6; background:#222d38; }
/* /Components/Pages/UserFeedback.razor.rz.scp.css */
.feedback-page[b-8m3rp5yrk5] { --feedback-ink:#132238; --feedback-muted:#68778a; --feedback-line:#dce4eb; --feedback-card:#fff; --feedback-blue:#0c7089; max-width:1080px; margin:0 auto; padding:10px 0 104px; color:var(--feedback-ink); }
.feedback-page *[b-8m3rp5yrk5], .feedback-page *[b-8m3rp5yrk5]::before, .feedback-page *[b-8m3rp5yrk5]::after { box-sizing:border-box; }
.feedback-heading[b-8m3rp5yrk5] { margin-bottom:26px; display:flex; align-items:flex-end; justify-content:space-between; gap:32px; }
.feedback-kicker[b-8m3rp5yrk5] { display:block; color:var(--feedback-blue); font-size:10px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }
.feedback-heading h2[b-8m3rp5yrk5] { margin:7px 0 8px; color:#101e31; font-size:clamp(32px,4vw,44px); font-weight:760; letter-spacing:-.048em; line-height:1.08; }
.feedback-heading p[b-8m3rp5yrk5] { max-width:650px; margin:0; color:var(--feedback-muted); font-size:14px; line-height:1.65; }
.feedback-greeting[b-8m3rp5yrk5] { padding:7px 10px; display:inline-flex; align-items:center; gap:7px; flex:0 0 auto; border:1px solid #d6e2e7; border-radius:20px; color:#5e7184; background:#fff; font-size:9px; font-weight:750; }
.feedback-greeting i[b-8m3rp5yrk5] { width:6px; height:6px; border-radius:50%; background:#19a980; box-shadow:0 0 7px rgba(25,169,128,.45); }

.feedback-layout[b-8m3rp5yrk5] { display:grid; grid-template-columns:340px minmax(0,1fr); gap:18px; align-items:stretch; }
.feedback-context-card[b-8m3rp5yrk5] { position:relative; min-height:500px; padding:27px; overflow:hidden; border:1px solid #18384d; border-radius:16px; color:#e8f1f6; background:radial-gradient(circle at 100% 100%,rgba(50,210,174,.18),transparent 36%),linear-gradient(145deg,#0e3146,#102439); box-shadow:0 12px 30px rgba(9,34,51,.12); }
.feedback-context-card[b-8m3rp5yrk5]::after { content:""; position:absolute; width:145px; height:145px; right:-68px; top:-68px; border:1px solid rgba(105,222,199,.2); border-radius:50%; box-shadow:0 0 0 26px rgba(105,222,199,.045),0 0 0 52px rgba(105,222,199,.025); }
.feedback-context-card .feedback-kicker[b-8m3rp5yrk5] { color:#58d9bd; }
.feedback-context-card h3[b-8m3rp5yrk5] { max-width:270px; margin:11px 0; color:#fff; font-size:27px; line-height:1.17; letter-spacing:-.04em; }
.feedback-context-card > p[b-8m3rp5yrk5] { margin:0; color:#a9bdcc; font-size:11px; line-height:1.7; }
.feedback-context-card ul[b-8m3rp5yrk5] { margin:27px 0 0; padding:0; display:grid; gap:12px; list-style:none; }
.feedback-context-card li[b-8m3rp5yrk5] { padding:11px; display:grid; grid-template-columns:30px 1fr; gap:10px; border:1px solid rgba(130,191,205,.16); border-radius:10px; background:rgba(255,255,255,.035); }
.feedback-context-card li > span[b-8m3rp5yrk5] { width:29px; height:29px; display:grid; place-items:center; border:1px solid rgba(88,217,189,.3); border-radius:7px; color:#6be2c8; background:rgba(88,217,189,.07); font-family:ui-monospace,monospace; font-size:7px; }
.feedback-context-card li div[b-8m3rp5yrk5] { display:grid; gap:3px; }
.feedback-context-card li strong[b-8m3rp5yrk5] { color:#dce8ef; font-size:10px; }
.feedback-context-card li small[b-8m3rp5yrk5] { color:#91aabd; font-size:8px; line-height:1.5; }
.feedback-privacy-note[b-8m3rp5yrk5] { position:absolute; right:27px; bottom:25px; left:27px; padding-top:16px; display:flex; align-items:flex-start; gap:8px; border-top:1px solid rgba(152,190,205,.16); color:#8da5b7; font-size:8px; line-height:1.55; }
.feedback-privacy-note svg[b-8m3rp5yrk5] { width:14px; height:14px; flex:0 0 auto; color:#57cdb5; }

.feedback-form-card[b-8m3rp5yrk5] { overflow:hidden; border:1px solid var(--feedback-line); border-radius:16px; background:#fff; box-shadow:0 7px 23px rgba(17,39,65,.055); }
.feedback-form-card > header[b-8m3rp5yrk5] { padding:24px 26px 20px; border-bottom:1px solid #e3e9ee; }
.feedback-form-card > header h3[b-8m3rp5yrk5] { margin:7px 0 6px; color:#17273c; font-size:21px; letter-spacing:-.03em; }
.feedback-form-card > header p[b-8m3rp5yrk5] { margin:0; color:#7a8999; font-size:10px; }
.feedback-form-card form[b-8m3rp5yrk5] { padding:23px 26px 0; }
.feedback-field[b-8m3rp5yrk5] { display:grid; }
.feedback-label-row[b-8m3rp5yrk5] { margin-bottom:8px; display:flex; align-items:center; justify-content:space-between; gap:16px; }
.feedback-label-row label[b-8m3rp5yrk5] { color:#394b60; font-size:10px; font-weight:750; }
.feedback-label-row span[b-8m3rp5yrk5] { color:#8c99a7; font-family:ui-monospace,monospace; font-size:8px; }
.feedback-field[b-8m3rp5yrk5]  textarea { width:100%; min-height:210px; padding:14px; resize:vertical; border:1px solid #d4dee6; border-radius:10px; outline:none; color:#26384d; background:#f9fbfc; font-family:inherit; font-size:12px; line-height:1.65; transition:border .18s,background .18s,box-shadow .18s; }
.feedback-field[b-8m3rp5yrk5]  textarea:focus { border-color:rgba(25,140,168,.65); background:#fff; box-shadow:0 0 0 3px rgba(25,140,168,.09); }
.feedback-field[b-8m3rp5yrk5]  textarea::placeholder { color:#93a0ae; }
.feedback-field-footer[b-8m3rp5yrk5] { min-height:31px; padding-top:7px; display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.feedback-field-footer small[b-8m3rp5yrk5] { color:#909da9; font-size:8px; }
.feedback-field-footer[b-8m3rp5yrk5]  .validation-message { color:#b63f48; font-size:8px; font-weight:700; text-align:right; }
.feedback-alert[b-8m3rp5yrk5] { margin:8px 0 0; padding:12px; display:flex; align-items:flex-start; gap:10px; border:1px solid; border-radius:9px; }
.feedback-alert > span[b-8m3rp5yrk5] { width:26px; height:26px; display:grid; place-items:center; flex:0 0 auto; border-radius:7px; }
.feedback-alert svg[b-8m3rp5yrk5] { width:15px; height:15px; }
.feedback-alert div[b-8m3rp5yrk5] { display:grid; gap:3px; }
.feedback-alert strong[b-8m3rp5yrk5] { font-size:9px; }
.feedback-alert p[b-8m3rp5yrk5] { margin:0; font-size:9px; line-height:1.5; }
.feedback-alert-success[b-8m3rp5yrk5] { border-color:#bde5d8; color:#087657; background:#edf9f5; }
.feedback-alert-success > span[b-8m3rp5yrk5] { background:#d9f3ea; }
.feedback-alert-error[b-8m3rp5yrk5] { border-color:#efcfd1; color:#a33d45; background:#fff3f3; }
.feedback-alert-error > span[b-8m3rp5yrk5] { background:#fde3e5; }
.feedback-form-footer[b-8m3rp5yrk5] { min-height:75px; margin:13px -26px 0; padding:14px 26px; display:flex; align-items:center; justify-content:space-between; gap:18px; border-top:1px solid #e2e9ee; background:#fbfcfd; }
.feedback-form-footer > span[b-8m3rp5yrk5] { max-width:220px; color:#8794a2; font-size:8px; line-height:1.5; }
.feedback-form-footer button[b-8m3rp5yrk5] { min-height:40px; padding:9px 14px; display:inline-flex; align-items:center; justify-content:center; gap:8px; border:0; border-radius:8px; color:#fff; background:#0c7089; box-shadow:0 7px 17px rgba(12,112,137,.2); font-size:10px; font-weight:750; cursor:pointer; transition:background .18s,transform .18s; }
.feedback-form-footer button:hover:not(:disabled)[b-8m3rp5yrk5] { background:#095b70; transform:translateY(-1px); }
.feedback-form-footer button:disabled[b-8m3rp5yrk5] { opacity:.65; cursor:wait; }
.feedback-form-footer button svg[b-8m3rp5yrk5] { width:15px; height:15px; }
.feedback-submit-spinner[b-8m3rp5yrk5] { width:14px; height:14px; border:2px solid rgba(255,255,255,.4); border-top-color:#fff; border-radius:50%; animation:feedback-spin-b-8m3rp5yrk5 .75s linear infinite; }
@keyframes feedback-spin-b-8m3rp5yrk5 { to { transform:rotate(360deg); } }

.dark .feedback-heading h2[b-8m3rp5yrk5], .dark .feedback-form-card > header h3[b-8m3rp5yrk5] { color:#eef4fa; }
.dark .feedback-heading p[b-8m3rp5yrk5] { color:#96a7b9; }
.dark .feedback-greeting[b-8m3rp5yrk5], .dark .feedback-form-card[b-8m3rp5yrk5] { border-color:#27384a; background:#111d2b; }
.dark .feedback-greeting[b-8m3rp5yrk5] { color:#b0bdc9; }
.dark .feedback-form-card > header[b-8m3rp5yrk5], .dark .feedback-form-footer[b-8m3rp5yrk5] { border-color:#27384a; }
.dark .feedback-form-card > header p[b-8m3rp5yrk5], .dark .feedback-form-footer > span[b-8m3rp5yrk5] { color:#91a2b5; }
.dark .feedback-label-row label[b-8m3rp5yrk5] { color:#ccd7e1; }
.dark .feedback-field[b-8m3rp5yrk5]  textarea { border-color:#304255; color:#e5edf4; background:#152333; }
.dark .feedback-field[b-8m3rp5yrk5]  textarea:focus { border-color:#398ca1; background:#172638; }
.dark .feedback-form-footer[b-8m3rp5yrk5] { background:#101a27; }
.dark .feedback-alert-success[b-8m3rp5yrk5] { border-color:#24594d; color:#5bd5b1; background:#14372f; }
.dark .feedback-alert-success > span[b-8m3rp5yrk5] { background:#1b4a3f; }
.dark .feedback-alert-error[b-8m3rp5yrk5] { border-color:#593b43; color:#ef9299; background:#281b23; }
.dark .feedback-alert-error > span[b-8m3rp5yrk5] { background:#3a252d; }

@media (max-width:900px) { .feedback-layout[b-8m3rp5yrk5] { grid-template-columns:300px minmax(0,1fr); } }
@media (max-width:760px) {
    .feedback-page[b-8m3rp5yrk5] { padding-top:2px; }
    .feedback-heading[b-8m3rp5yrk5] { margin-bottom:21px; align-items:flex-start; flex-direction:column; gap:14px; }
    .feedback-heading h2[b-8m3rp5yrk5] { font-size:34px; }
    .feedback-layout[b-8m3rp5yrk5] { grid-template-columns:1fr; }
    .feedback-context-card[b-8m3rp5yrk5] { min-height:auto; }
    .feedback-privacy-note[b-8m3rp5yrk5] { position:static; margin-top:24px; }
}
@media (max-width:480px) {
    .feedback-context-card[b-8m3rp5yrk5], .feedback-form-card > header[b-8m3rp5yrk5] { padding:21px; }
    .feedback-form-card form[b-8m3rp5yrk5] { padding:20px 18px 0; }
    .feedback-form-footer[b-8m3rp5yrk5] { margin-right:-18px; margin-left:-18px; padding:14px 18px; align-items:stretch; flex-direction:column; }
    .feedback-form-footer > span[b-8m3rp5yrk5] { max-width:none; }
    .feedback-field[b-8m3rp5yrk5]  textarea { min-height:190px; }
}
@media (prefers-reduced-motion:reduce) { .feedback-page *[b-8m3rp5yrk5], .feedback-page *[b-8m3rp5yrk5]::before, .feedback-page *[b-8m3rp5yrk5]::after { animation-duration:.01ms!important; transition-duration:.01ms!important; } }
/* /Components/Shared/Dashboard.razor.rz.scp.css */
.dashboard-page[b-8t40ipmagb] {
    --dash-ink: #132238;
    --dash-muted: #68778a;
    --dash-line: #dde5ec;
    --dash-card: #ffffff;
    --dash-page: #f5f7f9;
    --dash-blue: #198ca8;
    --dash-blue-dark: #0d6e87;
    --dash-mint: #16a67d;
    --dash-red: #dc4250;
    max-width: 1240px;
    margin: 0 auto;
    padding: 12px 0 42px;
    color: var(--dash-ink);
}

.dashboard-page *[b-8t40ipmagb], .dashboard-page *[b-8t40ipmagb]::before, .dashboard-page *[b-8t40ipmagb]::after { box-sizing: border-box; }
.dashboard-heading[b-8t40ipmagb] { margin-bottom: 28px; display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; }
.dashboard-kicker[b-8t40ipmagb], .card-eyebrow[b-8t40ipmagb] { display: block; color: var(--dash-blue-dark); font-size: 10px; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.dashboard-heading h2[b-8t40ipmagb] { margin: 7px 0 4px; color: #101e31; font-size: clamp(28px, 3vw, 40px); font-weight: 760; letter-spacing: -.045em; line-height: 1.1; }
.dashboard-heading p[b-8t40ipmagb] { margin: 0; color: var(--dash-muted); font-size: 14px; }
.dashboard-primary-action[b-8t40ipmagb] { min-height: 44px; padding: 11px 18px; display: inline-flex; align-items: center; gap: 9px; border: 0; border-radius: 9px; color: #fff; background: linear-gradient(135deg, var(--dash-blue-dark), var(--dash-blue)); box-shadow: 0 10px 24px rgba(25,140,168,.2); font-size: 13px; font-weight: 750; cursor: pointer; transition: transform .2s, box-shadow .2s; }
.dashboard-primary-action:hover[b-8t40ipmagb] { transform: translateY(-1px); box-shadow: 0 13px 28px rgba(25,140,168,.28); }

.dashboard-loading[b-8t40ipmagb] { min-height: 240px; display: flex; align-items: center; justify-content: center; gap: 16px; border: 1px solid var(--dash-line); border-radius: 14px; background: var(--dash-card); }
.dashboard-loading div[b-8t40ipmagb] { display: grid; }
.dashboard-loading strong[b-8t40ipmagb] { font-size: 14px; }
.dashboard-loading small[b-8t40ipmagb] { color: var(--dash-muted); }
.dashboard-loader[b-8t40ipmagb] { width: 34px; height: 34px; border: 3px solid #dce7eb; border-top-color: var(--dash-blue); border-radius: 50%; animation: dashboard-spin-b-8t40ipmagb .8s linear infinite; }
@keyframes dashboard-spin-b-8t40ipmagb { to { transform: rotate(360deg); } }

.dashboard-stats[b-8t40ipmagb] { margin-bottom: 22px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.stat-card[b-8t40ipmagb] { position: relative; min-height: 112px; padding: 19px; display: grid; grid-template-columns: 44px 1fr; gap: 14px; align-items: center; overflow: hidden; border: 1px solid var(--dash-line); border-radius: 13px; background: var(--dash-card); box-shadow: 0 4px 12px rgba(17,39,65,.04); }
.stat-card[b-8t40ipmagb]::after { content: ""; position: absolute; width: 90px; height: 90px; right: -43px; bottom: -48px; border: 14px solid currentColor; border-radius: 50%; opacity: .055; }
.stat-icon[b-8t40ipmagb] { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 11px; color: #fff; background: var(--dash-blue); font-family: ui-monospace, monospace; font-size: 9px; font-weight: 800; }
.stat-card > div[b-8t40ipmagb] { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: baseline; }
.stat-card > div strong[b-8t40ipmagb] { color: #101e31; font-size: 31px; font-weight: 760; line-height: 1; }
.stat-card > div span[b-8t40ipmagb] { color: #34465c; font-size: 13px; font-weight: 700; }
.stat-card > small[b-8t40ipmagb] { grid-column: 2; margin-top: -22px; color: #8390a0; font-size: 10px; }
.stat-completed[b-8t40ipmagb] { color: var(--dash-mint); }
.stat-completed .stat-icon[b-8t40ipmagb] { background: var(--dash-mint); }
.stat-missed[b-8t40ipmagb] { color: var(--dash-red); }
.stat-missed .stat-icon[b-8t40ipmagb] { background: var(--dash-red); font-size: 16px; }

.dashboard-content-grid[b-8t40ipmagb] { margin-bottom: 18px; display: grid; grid-template-columns: minmax(0, 1fr) 310px; gap: 18px; align-items: stretch; }
.dashboard-lower-grid[b-8t40ipmagb] { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; }
.dashboard-card[b-8t40ipmagb] { min-width: 0; overflow: hidden; border: 1px solid var(--dash-line); border-radius: 14px; background: var(--dash-card); box-shadow: 0 5px 18px rgba(17,39,65,.045); }
.dashboard-card-header[b-8t40ipmagb] { min-height: 76px; padding: 17px 20px; display: flex; align-items: center; justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--dash-line); }
.dashboard-card-header h3[b-8t40ipmagb] { margin: 3px 0 0; color: #14243a; font-size: 19px; font-weight: 740; letter-spacing: -.025em; }
.dashboard-card-header > a[b-8t40ipmagb] { color: var(--dash-blue-dark); font-size: 11px; font-weight: 750; text-decoration: none; }
.count-pill[b-8t40ipmagb] { min-width: 28px; height: 28px; padding: 0 8px; display: grid; place-items: center; border-radius: 20px; color: #9a620f; background: #fff1d8; font-size: 11px; font-weight: 800; }
.count-pill-green[b-8t40ipmagb] { color: #087354; background: #dff6ee; }

.dashboard-list[b-8t40ipmagb] { display: grid; }
.dashboard-list-item[b-8t40ipmagb] { min-height: 94px; padding: 16px 20px; display: flex; align-items: center; gap: 14px; border-bottom: 1px solid #e8edf1; transition: background .18s; }
.dashboard-list-item:last-child[b-8t40ipmagb] { border-bottom: 0; }
.dashboard-list-item:hover[b-8t40ipmagb] { background: #f8fafb; }
.lab-code[b-8t40ipmagb] { width: 48px; height: 48px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 12px; color: #fff; background: linear-gradient(145deg, #157f9b, #21a1ba); font-family: ui-monospace, monospace; font-size: 10px; font-weight: 800; letter-spacing: -.02em; }
.lab-code-request[b-8t40ipmagb] { color: #9a620f; background: #fff1d8; }
.lab-code-access[b-8t40ipmagb] { color: #087354; background: #dff6ee; }
.item-copy[b-8t40ipmagb] { min-width: 0; flex: 1; }
.item-copy h4[b-8t40ipmagb] { margin: 0 0 6px; overflow: hidden; color: #1c2c41; font-size: 14px; font-weight: 740; text-overflow: ellipsis; white-space: nowrap; }
.item-meta[b-8t40ipmagb] { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; color: #7a8898; font-size: 10px; }
.item-meta i[b-8t40ipmagb] { width: 3px; height: 3px; border-radius: 50%; background: #9aa6b3; }
.status-text[b-8t40ipmagb] { padding: 3px 7px; border-radius: 20px; font-size: 8px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.status-pending[b-8t40ipmagb] { color: #9a620f; background: #fff1d8; }
.status-active[b-8t40ipmagb] { color: #087354; background: #dff6ee; }
.item-action[b-8t40ipmagb] { min-height: 34px; padding: 8px 11px; border-radius: 8px; background: transparent; font-size: 10px; font-weight: 750; cursor: pointer; transition: background .18s, color .18s; }
.item-action-danger[b-8t40ipmagb] { color: #bd3340; border: 1px solid #f0c6ca; }
.item-action-danger:hover[b-8t40ipmagb] { color: #fff; background: var(--dash-red); }
.item-action-primary[b-8t40ipmagb] { color: #08708a; border: 1px solid #acd5df; }
.item-action-primary:hover[b-8t40ipmagb] { color: #fff; background: var(--dash-blue-dark); }
.schedule-countdown[b-8t40ipmagb] { flex: 0 0 auto; }

/* The one action on this page with hardware waiting behind it, so it is the one thing
   that reads as solid rather than outlined. */
.item-action-launch[b-8t40ipmagb] { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; border: 1px solid transparent; color: #fff; background: var(--dash-blue-dark); text-decoration: none; box-shadow: 0 8px 18px rgba(12,112,137,.22); }
.item-action-launch:hover[b-8t40ipmagb] { background: #0a5f74; }

.dashboard-empty[b-8t40ipmagb] { min-height: 122px; padding: 24px 20px; display: flex; align-items: center; gap: 14px; }
.dashboard-empty-wide[b-8t40ipmagb] { min-height: 160px; }
.empty-mark[b-8t40ipmagb] { width: 48px; height: 48px; flex: 0 0 auto; display: grid; place-items: center; border: 1px dashed #b9c7d3; border-radius: 12px; color: #77899b; background: #f7f9fb; font-family: ui-monospace, monospace; font-size: 9px; font-weight: 800; }
.dashboard-empty div[b-8t40ipmagb] { min-width: 0; flex: 1; }
.dashboard-empty strong[b-8t40ipmagb] { display: block; margin-bottom: 3px; color: #33445a; font-size: 13px; }
.dashboard-empty p[b-8t40ipmagb] { margin: 0; color: #7a8898; font-size: 11px; }
.dashboard-empty button[b-8t40ipmagb] { padding: 9px 12px; border: 1px solid #bad4db; border-radius: 8px; color: #0e7289; background: #f2fafb; font-size: 10px; font-weight: 750; cursor: pointer; }

.getting-started-card[b-8t40ipmagb] { position: relative; padding: 24px; overflow: hidden; color: #eef6fb; background: radial-gradient(circle at 100% 100%, rgba(50,210,174,.2), transparent 36%), linear-gradient(145deg, #0e3146, #102439); }
.getting-started-card[b-8t40ipmagb]::after { content: ""; position: absolute; width: 135px; height: 135px; right: -65px; top: -65px; border: 1px solid rgba(105,222,199,.2); border-radius: 50%; box-shadow: 0 0 0 24px rgba(105,222,199,.045), 0 0 0 48px rgba(105,222,199,.025); }
.getting-started-card .card-eyebrow[b-8t40ipmagb] { color: #58d9bd; }
.getting-started-card h3[b-8t40ipmagb] { max-width: 240px; margin: 10px 0; color: #fff; font-size: 24px; line-height: 1.17; letter-spacing: -.035em; }
.getting-started-card > p[b-8t40ipmagb] { margin-bottom: 20px; color: #a9bdcc; font-size: 12px; }
.getting-started-card ol[b-8t40ipmagb] { margin: 0 0 23px; padding: 0; display: grid; gap: 10px; list-style: none; }
.getting-started-card li[b-8t40ipmagb] { display: flex; align-items: center; gap: 9px; color: #d8e5ee; font-size: 11px; }
.getting-started-card li span[b-8t40ipmagb] { width: 24px; height: 24px; display: grid; place-items: center; border: 1px solid rgba(88,217,189,.3); border-radius: 7px; color: #6be2c8; background: rgba(88,217,189,.07); font-family: ui-monospace, monospace; font-size: 8px; }
.getting-started-card > a[b-8t40ipmagb] { color: #67e0c5; font-size: 10px; font-weight: 750; text-decoration: none; }

.dark .dashboard-page[b-8t40ipmagb] { color: #e6edf4; }
.dark .dashboard-heading h2[b-8t40ipmagb], .dark .stat-card > div strong[b-8t40ipmagb], .dark .dashboard-card-header h3[b-8t40ipmagb], .dark .item-copy h4[b-8t40ipmagb] { color: #edf4fa; }
.dark .dashboard-heading p[b-8t40ipmagb], .dark .item-meta[b-8t40ipmagb] { color: #91a2b5; }
.dark .stat-card[b-8t40ipmagb], .dark .dashboard-card[b-8t40ipmagb], .dark .dashboard-loading[b-8t40ipmagb] { border-color: #27384a; background: #111d2b; }
.dark .stat-card > div span[b-8t40ipmagb] { color: #c3cfdb; }
.dark .dashboard-card-header[b-8t40ipmagb], .dark .dashboard-list-item[b-8t40ipmagb] { border-color: #27384a; }
.dark .dashboard-list-item:hover[b-8t40ipmagb] { background: #162535; }
.dark .dashboard-empty strong[b-8t40ipmagb] { color: #d8e2ec; }
.dark .dashboard-empty p[b-8t40ipmagb] { color: #8fa0b2; }
.dark .empty-mark[b-8t40ipmagb] { border-color: #3a4d60; color: #93a5b7; background: #172636; }

@media (max-width: 1050px) {
    .dashboard-content-grid[b-8t40ipmagb] { grid-template-columns: minmax(0, 1fr) 270px; }
    .dashboard-lower-grid[b-8t40ipmagb] { grid-template-columns: 1fr; }
}

@media (max-width: 820px) {
    .dashboard-stats[b-8t40ipmagb] { grid-template-columns: 1fr; }
    .dashboard-content-grid[b-8t40ipmagb] { grid-template-columns: 1fr; }
    .getting-started-card[b-8t40ipmagb] { min-height: 300px; }
}

@media (max-width: 600px) {
    .dashboard-page[b-8t40ipmagb] { padding-top: 4px; }
    .dashboard-heading[b-8t40ipmagb] { align-items: stretch; flex-direction: column; }
    .dashboard-primary-action[b-8t40ipmagb] { width: 100%; }
    .dashboard-list-item[b-8t40ipmagb] { align-items: flex-start; flex-wrap: wrap; }
    .item-copy[b-8t40ipmagb] { width: calc(100% - 64px); }
    .item-action[b-8t40ipmagb], .schedule-countdown[b-8t40ipmagb] { margin-left: 62px; }
    .dashboard-empty[b-8t40ipmagb] { align-items: flex-start; flex-wrap: wrap; }
    .dashboard-empty button[b-8t40ipmagb] { margin-left: 62px; }
}

@media (prefers-reduced-motion: reduce) {
    .dashboard-page *[b-8t40ipmagb], .dashboard-page *[b-8t40ipmagb]::before, .dashboard-page *[b-8t40ipmagb]::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
/* /Components/Shared/LabAssistantPanel.razor.rz.scp.css */
/*
    Sits under the manual in the workbench sidebar and follows its visual language, with a
    violet header so the two panels are never mistaken for each other at a glance.
    Collapsed by default, so the manual keeps the vertical space unless the student asks for help.
*/

.assistant-panel[b-jjrdxenm9i] {
    display: flex;
    flex-direction: column;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    overflow: hidden;
    font-size: 0.875rem;
    margin-top: 0.75rem;
    flex-shrink: 0;
    max-height: 55%;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    transition: all 0.2s ease-in-out;
}

.assistant-panel.collapsed[b-jjrdxenm9i] {
    max-height: none;
}

/* header */

.assistant-header[b-jjrdxenm9i] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.65rem 0.9rem;
    background: #7c3aed;
    color: #fff;
    cursor: pointer;
    user-select: none;
    transition: background-color 0.15s ease;
    flex-shrink: 0;
}

.assistant-header:hover[b-jjrdxenm9i] {
    background: #6d28d9;
}

.assistant-title[b-jjrdxenm9i] {
    font-weight: 600;
    flex: 1;
}

.assistant-quota[b-jjrdxenm9i] {
    font-size: 0.8rem;
    background: rgba(255, 255, 255, 0.22);
    border-radius: 10px;
    padding: 0.1rem 0.5rem;
}

.assistant-chevron[b-jjrdxenm9i] {
    font-size: 0.8rem;
    opacity: 0.9;
}

/* transcript */

.assistant-transcript[b-jjrdxenm9i] {
    flex: 1;
    overflow-y: auto;
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-height: 8rem;
}

.assistant-hint[b-jjrdxenm9i] {
    color: #64748b;
    font-size: 0.8rem;
    line-height: 1.45;
}

.lab-assistant-message[b-jjrdxenm9i] {
    padding: 0.5rem 0.7rem;
    border-radius: 10px;
    line-height: 1.5;
    white-space: pre-wrap;
    word-break: break-word;
    max-width: 92%;
}

.lab-assistant-message.from-student[b-jjrdxenm9i] {
    align-self: flex-end;
    background: #ede9fe;
    color: #4c1d95;
    border-bottom-right-radius: 3px;
}

.lab-assistant-message.from-assistant[b-jjrdxenm9i] {
    align-self: flex-start;
    background: #f1f5f9;
    color: #0f172a;
    border-bottom-left-radius: 3px;
}

.lab-assistant-message.is-error[b-jjrdxenm9i] {
    background: #fef2f2;
    color: #991b1b;
}

/* rendered replies — Markdown plus KaTeX, in a panel only a few hundred pixels wide */

.lab-assistant-message.markdown-body[b-jjrdxenm9i] {
    /* pre-wrap is for raw streaming text; rendered blocks bring their own spacing. */
    white-space: normal;
}

[b-jjrdxenm9i] .markdown-body p {
    margin: 0.4rem 0;
}

[b-jjrdxenm9i] .markdown-body p:first-child {
    margin-top: 0;
}

[b-jjrdxenm9i] .markdown-body p:last-child {
    margin-bottom: 0;
}

[b-jjrdxenm9i] .markdown-body ul,
[b-jjrdxenm9i] .markdown-body ol {
    margin: 0.35rem 0;
    padding-left: 1.15rem;
}

[b-jjrdxenm9i] .markdown-body li {
    margin: 0.15rem 0;
}

[b-jjrdxenm9i] .markdown-body code {
    background: rgba(148, 163, 184, 0.22);
    padding: 0.05rem 0.25rem;
    border-radius: 3px;
    font-size: 0.92em;
}

/* KaTeX has not run yet (or is unavailable) — keep raw math legible rather than
   letting it render as an undifferentiated run of symbols. */
[b-jjrdxenm9i] .markdown-body .math {
    font-family: "Cambria Math", Cambria, Georgia, serif;
    font-size: 1.02em;
}

/* Display math is the one thing that will not fit: let it scroll rather than
   stretch the bubble past the sidebar. */
[b-jjrdxenm9i] .markdown-body div.math,
[b-jjrdxenm9i] .markdown-body .katex-display {
    display: block;
    overflow-x: auto;
    overflow-y: hidden;
    padding: 0.3rem 0;
    text-align: center;
}

[b-jjrdxenm9i] .markdown-body .katex {
    font-size: 1.02em;
}

.assistant-typing[b-jjrdxenm9i] {
    color: #64748b;
    font-style: italic;
}

.assistant-unavailable[b-jjrdxenm9i] {
    padding: 0.75rem 0.9rem;
    color: #64748b;
    font-size: 0.8rem;
}

/* composer */

.assistant-composer[b-jjrdxenm9i] {
    display: flex;
    gap: 0.5rem;
    padding: 0.6rem;
    border-top: 1px solid #e2e8f0;
    flex-shrink: 0;
}

.assistant-composer textarea[b-jjrdxenm9i] {
    flex: 1;
    resize: none;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    padding: 0.4rem 0.55rem;
    font: inherit;
    line-height: 1.4;
}

.assistant-composer textarea:focus[b-jjrdxenm9i] {
    outline: none;
    border-color: #7c3aed;
    box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.15);
}

.assistant-composer textarea:disabled[b-jjrdxenm9i] {
    background: #f8fafc;
    color: #94a3b8;
}

.assistant-send[b-jjrdxenm9i] {
    align-self: flex-end;
    padding: 0.45rem 0.9rem;
    border: none;
    border-radius: 6px;
    background: #7c3aed;
    color: #fff;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.15s ease;
}

.assistant-send:hover:not(:disabled)[b-jjrdxenm9i] {
    background: #6d28d9;
}

.assistant-send:disabled[b-jjrdxenm9i] {
    background: #cbd5e1;
    cursor: not-allowed;
}

/* dark mode, matching the manual panel's treatment */

.dark .assistant-panel[b-jjrdxenm9i] {
    background: #1e293b;
    border-color: #334155;
}

.dark .lab-assistant-message.from-assistant[b-jjrdxenm9i] {
    background: #0f172a;
    color: #e2e8f0;
}

.dark .lab-assistant-message.from-student[b-jjrdxenm9i] {
    background: #4c1d95;
    color: #ede9fe;
}

.dark .assistant-composer[b-jjrdxenm9i] {
    border-top-color: #334155;
}

.dark .assistant-composer textarea[b-jjrdxenm9i] {
    background: #0f172a;
    border-color: #334155;
    color: #e2e8f0;
}

.dark .lab-assistant-message.markdown-body[b-jjrdxenm9i]  code {
    background: rgba(148, 163, 184, 0.28);
    color: #e2e8f0;
}
/* /Components/Shared/LabManualPanel.razor.rz.scp.css */
.lab-manual-panel[b-829bjd9fw1] {
    display: flex;
    flex-direction: column;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    overflow: hidden;
    font-size: 0.875rem;
    height: 100%;
    max-height: 100%;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    transition: all 0.2s ease-in-out;
}

.lab-manual-panel.collapsed[b-829bjd9fw1] {
    height: auto;
}

/* header */

.manual-header[b-829bjd9fw1] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.65rem 0.9rem;
    background: #0284c7;
    color: #fff;
    cursor: pointer;
    user-select: none;
    transition: background-color 0.15s ease;
    flex-shrink: 0;
}

.manual-header:hover[b-829bjd9fw1] {
    background: #0369a1;
}

.header-left[b-829bjd9fw1] {
    flex: 1;
    min-width: 0;
}

.header-right[b-829bjd9fw1] {
    flex-shrink: 0;
    white-space: nowrap;
}

.manual-title[b-829bjd9fw1] {
    font-weight: 600;
    font-size: 0.9rem;
    line-height: 1.35;
}

.manual-progress[b-829bjd9fw1] {
    font-size: 0.8rem;
    font-weight: 600;
    background: rgba(255, 255, 255, 0.22);
    border-radius: 10px;
    padding: 0.15rem 0.55rem;
    white-space: nowrap;
    display: inline-block;
}

.manual-chevron[b-829bjd9fw1] {
    font-size: 0.8rem;
    opacity: 0.9;
}

.manual-body[b-829bjd9fw1] {
    overflow-y: auto;
    padding: 0.75rem 0.9rem 1rem;
}

.manual-draft-note[b-829bjd9fw1] {
    background: #fff4e5;
    border: 1px solid #ffd8a8;
    color: #8a5300;
    border-radius: 4px;
    padding: 0.35rem 0.6rem;
    font-size: 0.8rem;
    margin-bottom: 0.75rem;
}

/* intro */

.manual-meta-title[b-829bjd9fw1] {
    font-weight: 600;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #666;
    margin-top: 0.5rem;
}

.manual-meta ul[b-829bjd9fw1] {
    margin: 0.25rem 0 0.5rem 1.1rem;
    padding: 0;
}

.manual-theory[b-829bjd9fw1] {
    margin: 0.5rem 0 1rem;
    border-top: 1px solid #eee;
    padding-top: 0.5rem;
}

.manual-theory summary[b-829bjd9fw1] {
    cursor: pointer;
    font-weight: 600;
    color: #0078D4;
}

/* steps */

.manual-steps[b-829bjd9fw1] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.manual-step[b-829bjd9fw1] {
    border-top: 1px solid #eee;
    padding: 0.8rem 0;
}

.manual-step.done[b-829bjd9fw1] {
    opacity: 0.85;
}

.step-head[b-829bjd9fw1] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.35rem;
}

.step-number[b-829bjd9fw1] {
    flex: 0 0 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    background: #e8e8e8;
    color: #333;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.78rem;
    font-weight: 700;
}

.manual-step.done .step-number[b-829bjd9fw1] {
    background: #107C10;
    color: #fff;
}

.step-title[b-829bjd9fw1] {
    font-weight: 600;
    flex: 1;
}

.step-check[b-829bjd9fw1] {
    color: #107C10;
    font-weight: 700;
}

/* action */

.step-action[b-829bjd9fw1] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.5rem 0 0.25rem;
    flex-wrap: wrap;
}

.step-hint[b-829bjd9fw1] {
    font-size: 0.78rem;
    color: #888;
    font-style: italic;
}

/* table */

.step-table[b-829bjd9fw1] {
    width: 100%;
    border-collapse: collapse;
    margin: 0.5rem 0;
    font-size: 0.83rem;
}

.step-table th[b-829bjd9fw1],
.step-table td[b-829bjd9fw1] {
    border: 1px solid #e4e4e4;
    padding: 0.25rem 0.4rem;
    text-align: left;
}

.step-table th[b-829bjd9fw1] {
    background: #fafafa;
    font-weight: 600;
}

.row-label[b-829bjd9fw1] {
    white-space: nowrap;
}

.row-input[b-829bjd9fw1] {
    width: 100%;
    border: 1px solid #ddd;
    border-radius: 3px;
    padding: 0.15rem 0.3rem;
    font-size: 0.83rem;
}

.row-apply[b-829bjd9fw1] {
    width: 1%;
    white-space: nowrap;
}

/* questions */

.step-question[b-829bjd9fw1] {
    margin: 0.5rem 0;
}

.step-question label[b-829bjd9fw1] {
    display: block;
    font-size: 0.84rem;
    color: #333;
    margin-bottom: 0.2rem;
}

.step-question textarea[b-829bjd9fw1] {
    width: 100%;
    border: 1px solid #ddd;
    border-radius: 3px;
    padding: 0.3rem;
    font-family: inherit;
    font-size: 0.85rem;
    resize: vertical;
}

/* capture / expectation */

.step-capture[b-829bjd9fw1] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: baseline;
    background: #f3f9f3;
    border: 1px solid #d6ecd6;
    border-radius: 4px;
    padding: 0.3rem 0.5rem;
    margin-top: 0.5rem;
    font-size: 0.8rem;
}

.capture-title[b-829bjd9fw1] {
    font-weight: 700;
    color: #107C10;
    text-transform: uppercase;
    font-size: 0.7rem;
    letter-spacing: 0.04em;
}

.capture-item b[b-829bjd9fw1] {
    font-weight: 600;
    color: #444;
}

.step-expect[b-829bjd9fw1] {
    margin-top: 0.35rem;
    font-size: 0.8rem;
    color: #555;
    font-style: italic;
}

/* done controls */

.step-done-row[b-829bjd9fw1] {
    margin-top: 0.5rem;
}

.step-done-btn[b-829bjd9fw1],
.step-undo-btn[b-829bjd9fw1] {
    background: none;
    border: 1px solid #ccc;
    border-radius: 3px;
    padding: 0.2rem 0.6rem;
    font-size: 0.78rem;
    cursor: pointer;
    color: #444;
}

.step-done-btn:hover[b-829bjd9fw1] {
    border-color: #107C10;
    color: #107C10;
}

.manual-footer[b-829bjd9fw1] {
    margin-top: 0.9rem;
    padding-top: 0.5rem;
    border-top: 1px solid #eee;
    font-size: 0.76rem;
    color: #888;
}

/* markdown body — figures must never overflow the panel */

[b-829bjd9fw1] .markdown-body img {
    max-width: 100%;
    height: auto;
    display: block;
    margin: 0.5rem auto;
    border: 1px solid #eee;
    border-radius: 4px;
}

[b-829bjd9fw1] .markdown-body table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
    margin: 0.5rem 0;
}

[b-829bjd9fw1] .markdown-body th,
[b-829bjd9fw1] .markdown-body td {
    border: 1px solid #e4e4e4;
    padding: 0.25rem 0.4rem;
}

[b-829bjd9fw1] .markdown-body blockquote {
    margin: 0.5rem 0;
    padding: 0.35rem 0.7rem;
    border-left: 3px solid #0078D4;
    background: #f5f9fd;
    color: #33475b;
}

[b-829bjd9fw1] .markdown-body p {
    margin: 0.4rem 0;
}

[b-829bjd9fw1] .markdown-body code {
    background: #f4f4f4;
    padding: 0.05rem 0.25rem;
    border-radius: 3px;
}

/* KaTeX has not run yet (or is unavailable) — keep raw math legible rather than
   letting it render as an undifferentiated run of symbols. */
[b-829bjd9fw1] .markdown-body .math {
    font-family: "Cambria Math", Cambria, Georgia, serif;
    font-size: 1.02em;
}

[b-829bjd9fw1] .markdown-body div.math {
    display: block;
    overflow-x: auto;
    padding: 0.35rem 0;
    text-align: center;
}


/* ---------------------------------------------------------------------------
   Dark mode.

   This panel had no dark treatment at all: on a dark workbench its white card and
   #333 body text were the most obviously broken thing on the page. Every surface
   and text colour stated above gets a counterpart here, on the app's slate tokens.

   ::deep is written after a scoped element (.manual-body) on purpose — leading with
   `.dark` would put the scope attribute on <html>, which never carries it.
   --------------------------------------------------------------------------- */

.dark .lab-manual-panel[b-829bjd9fw1] {
    background: #0f172a;
    border-color: #1e293b;
}

.dark .manual-draft-note[b-829bjd9fw1] {
    background: rgba(234, 179, 8, 0.14);
    border-color: rgba(234, 179, 8, 0.35);
    color: #fde68a;
}

.dark .manual-meta-title[b-829bjd9fw1],
.dark .step-hint[b-829bjd9fw1],
.dark .manual-footer[b-829bjd9fw1] {
    color: #94a3b8;
}

.dark .manual-theory[b-829bjd9fw1] {
    border-top-color: #1e293b;
}

.dark .manual-theory summary[b-829bjd9fw1],
.dark .capture-title[b-829bjd9fw1],
.dark .step-check[b-829bjd9fw1] {
    color: #38bdf8;
}

.dark .manual-step[b-829bjd9fw1] {
    border-top-color: #1e293b;
}

.dark .step-number[b-829bjd9fw1] {
    background: #1e293b;
    color: #e2e8f0;
}

.dark .manual-step.done .step-number[b-829bjd9fw1] {
    background: #15803d;
    color: #f0fdf4;
}

.dark .step-check[b-829bjd9fw1] {
    color: #4ade80;
}

.dark .step-table th[b-829bjd9fw1],
.dark .step-table td[b-829bjd9fw1] {
    border-color: #1e293b;
}

.dark .step-table th[b-829bjd9fw1] {
    background: #0b1220;
}

/* Form controls do not inherit the page's colours: left alone they stay white
   fields with black text, which is the one bright rectangle in a dark panel. */
.dark .row-input[b-829bjd9fw1],
.dark .step-question textarea[b-829bjd9fw1] {
    background: #0b1220;
    border-color: #334155;
    color: #e2e8f0;
}

.dark .row-input:focus[b-829bjd9fw1],
.dark .step-question textarea:focus[b-829bjd9fw1] {
    border-color: #38bdf8;
    outline: none;
}

.dark .step-question label[b-829bjd9fw1] {
    color: #cbd5e1;
}

.dark .step-capture[b-829bjd9fw1] {
    background: rgba(22, 163, 74, 0.14);
    border-color: rgba(22, 163, 74, 0.35);
}

.dark .capture-item b[b-829bjd9fw1] {
    color: #e2e8f0;
}

.dark .step-expect[b-829bjd9fw1] {
    color: #94a3b8;
}

.dark .step-done-btn[b-829bjd9fw1],
.dark .step-undo-btn[b-829bjd9fw1] {
    border-color: #334155;
    color: #cbd5e1;
}

.dark .step-done-btn:hover[b-829bjd9fw1] {
    border-color: #4ade80;
    color: #4ade80;
}

.dark .manual-footer[b-829bjd9fw1] {
    border-top-color: #1e293b;
}

/* markdown body */

.dark .manual-body[b-829bjd9fw1]  .markdown-body img {
    border-color: #1e293b;
    background: #f8fafc;
}

.dark .manual-body[b-829bjd9fw1]  .markdown-body th,
.dark .manual-body[b-829bjd9fw1]  .markdown-body td {
    border-color: #1e293b;
}

.dark .manual-body[b-829bjd9fw1]  .markdown-body blockquote {
    border-left-color: #38bdf8;
    background: rgba(56, 189, 248, 0.1);
    color: #cbd5e1;
}

.dark .manual-body[b-829bjd9fw1]  .markdown-body code {
    background: rgba(148, 163, 184, 0.22);
    color: #e2e8f0;
}
/* /Components/Shared/LabSessionReleased.razor.rz.scp.css */
.released-backdrop[b-lkchqbu27l] {
    position: fixed;
    z-index: 1200;
    inset: 0;
    padding: 20px;
    display: grid;
    place-items: center;
    background: rgba(4, 13, 24, .68);
    backdrop-filter: blur(6px);
}

.lab-session-released[b-lkchqbu27l] {
    max-width: 520px;
    margin: 2rem auto;
    padding: 2.5rem 2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    border: 1px solid #dbe6ec;
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 18px 44px rgba(15, 42, 60, .07);
}

.released-modal[b-lkchqbu27l] {
    margin: 0;
    width: min(520px, 100%);
    box-shadow: 0 30px 80px rgba(0, 0, 0, .3);
}

.released-mark[b-lkchqbu27l] {
    width: 54px;
    height: 54px;
    display: grid;
    place-items: center;
    border: 1px solid #f0dfc4;
    border-radius: 15px;
    color: #b4761f;
    background: #fff8ed;
}

.released-mark svg[b-lkchqbu27l] { width: 26px; height: 26px; }

.released-kicker[b-lkchqbu27l] {
    margin-top: 18px;
    color: #6f8794;
    font-size: 10px;
    font-weight: 750;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.lab-session-released h3[b-lkchqbu27l] {
    margin: 8px 0 10px;
    color: #22384c;
    font-size: 22px;
    letter-spacing: -.03em;
}

.released-lead[b-lkchqbu27l] {
    max-width: 420px;
    margin: 0;
    color: #71828f;
    font-size: 13px;
    line-height: 1.6;
}

.released-slot[b-lkchqbu27l] {
    width: 100%;
    margin: 20px 0 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.released-slot > div[b-lkchqbu27l] {
    padding: 12px 14px;
    border: 1px solid #e2e9ee;
    border-radius: 10px;
    background: #fafcfd;
    text-align: left;
}

.released-slot dt[b-lkchqbu27l] {
    margin-bottom: 4px;
    color: #8794a2;
    font-size: 9px;
    font-weight: 750;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.released-slot dd[b-lkchqbu27l] {
    margin: 0;
    color: #2c4257;
    font-size: 13px;
    font-weight: 600;
}

/* The reassurance is the part that changes a student's afternoon, so it is styled to be
   read rather than skimmed past. */
.released-reassurance[b-lkchqbu27l] {
    margin: 18px 0 0;
    padding: 13px 16px;
    border: 1px solid #cfe4ea;
    border-radius: 10px;
    background: #f1f9fb;
    color: #2b5c68;
    font-size: 12px;
    line-height: 1.6;
}

.released-reassurance strong[b-lkchqbu27l] { display: block; color: #1d4b56; }

.released-actions[b-lkchqbu27l] {
    margin-top: 20px;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
}

.released-actions a[b-lkchqbu27l] {
    padding: 10px 16px;
    border: 1px solid transparent;
    border-radius: 9px;
    color: #fff;
    background: #0e7289;
    font-size: 10px;
    font-weight: 750;
    text-decoration: none;
}

.released-actions .released-secondary[b-lkchqbu27l] {
    color: #4d6577;
    background: #fff;
    border-color: #d6e0e7;
}

@media (prefers-color-scheme: dark) {
    .lab-session-released[b-lkchqbu27l] { border-color: #27384a; background: #111d2b; }
    .lab-session-released h3[b-lkchqbu27l] { color: #eef4fa; }
    .released-lead[b-lkchqbu27l] { color: #95a6b7; }
    .released-mark[b-lkchqbu27l] { border-color: #5a4523; color: #e0a34e; background: #2a2114; }
    .released-slot > div[b-lkchqbu27l] { border-color: #27384a; background: #0f1926; }
    .released-slot dd[b-lkchqbu27l] { color: #d4dfe9; }
    .released-reassurance[b-lkchqbu27l] { border-color: #24505c; background: #102932; color: #8fcedd; }
    .released-reassurance strong[b-lkchqbu27l] { color: #b7e4ee; }
    .released-actions .released-secondary[b-lkchqbu27l] { color: #9fb0bf; background: #16222f; border-color: #2c3d4f; }
}
/* /Components/Shared/LabWaitingRoom.razor.rz.scp.css */
.lab-waiting-room[b-dxt5ua41qp] {
    max-width: 520px;
    margin: 2rem auto;
    padding: 2.5rem 2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    border: 1px solid #dbe6ec;
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 18px 44px rgba(15, 42, 60, .07);
}

.waiting-mark[b-dxt5ua41qp] {
    width: 54px;
    height: 54px;
    display: grid;
    place-items: center;
    border: 1px solid #cbe1e6;
    border-radius: 15px;
    color: #0e7289;
    background: #eef8fa;
}

.waiting-mark svg[b-dxt5ua41qp] { width: 26px; height: 26px; }

.waiting-kicker[b-dxt5ua41qp] {
    margin-top: 18px;
    color: #6f8794;
    font-size: 10px;
    font-weight: 750;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.lab-waiting-room h3[b-dxt5ua41qp] {
    margin: 8px 0 10px;
    color: #22384c;
    font-size: 22px;
    letter-spacing: -.03em;
}

.waiting-lead[b-dxt5ua41qp] {
    max-width: 400px;
    margin: 0;
    color: #71828f;
    font-size: 13px;
    line-height: 1.6;
}

.waiting-slot[b-dxt5ua41qp] {
    width: 100%;
    margin: 22px 0 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.waiting-slot > div[b-dxt5ua41qp] {
    padding: 12px 14px;
    border: 1px solid #e2e9ee;
    border-radius: 10px;
    background: #fafcfd;
    text-align: left;
}

.waiting-slot dt[b-dxt5ua41qp] {
    margin-bottom: 4px;
    color: #8794a2;
    font-size: 9px;
    font-weight: 750;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.waiting-slot dd[b-dxt5ua41qp] {
    margin: 0;
    color: #2c4257;
    font-size: 13px;
    font-weight: 600;
}

.waiting-countdown[b-dxt5ua41qp] {
    margin-top: 20px;
    padding: 14px 22px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    border-radius: 12px;
    background: #0e3146;
    color: #e9f5f9;
}

.waiting-countdown span[b-dxt5ua41qp] {
    font-size: 9px;
    font-weight: 750;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: #7fc4d6;
}

.waiting-countdown strong[b-dxt5ua41qp] {
    font-family: ui-monospace, "SF Mono", monospace;
    font-size: 22px;
    letter-spacing: -.02em;
}

.waiting-timezone[b-dxt5ua41qp] {
    margin: 14px 0 0;
    color: #93a2af;
    font-size: 10px;
}

.waiting-actions[b-dxt5ua41qp] {
    margin-top: 20px;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
}

.waiting-actions a[b-dxt5ua41qp] {
    padding: 10px 16px;
    border-radius: 9px;
    border: 1px solid transparent;
    color: #fff;
    background: #0e7289;
    font-size: 10px;
    font-weight: 750;
    text-decoration: none;
}

.waiting-actions .waiting-secondary[b-dxt5ua41qp] {
    color: #4d6577;
    background: #fff;
    border-color: #d6e0e7;
}

@media (prefers-color-scheme: dark) {
    .lab-waiting-room[b-dxt5ua41qp] { border-color: #27384a; background: #111d2b; }
    .lab-waiting-room h3[b-dxt5ua41qp] { color: #eef4fa; }
    .waiting-lead[b-dxt5ua41qp] { color: #95a6b7; }
    .waiting-mark[b-dxt5ua41qp] { border-color: #2c4d5c; color: #62c9de; background: #14303d; }
    .waiting-slot > div[b-dxt5ua41qp] { border-color: #27384a; background: #0f1926; }
    .waiting-slot dd[b-dxt5ua41qp] { color: #d4dfe9; }
    .waiting-actions .waiting-secondary[b-dxt5ua41qp] { color: #9fb0bf; background: #16222f; border-color: #2c3d4f; }
}
/* /Components/Shared/MySchedules.razor.rz.scp.css */
.schedules-page[b-fk179inr12] {
    --schedule-ink: #132238;
    --schedule-muted: #68778a;
    --schedule-line: #dce4eb;
    --schedule-card: #fff;
    --schedule-blue: #0c7089;
    max-width: 1180px;
    margin: 0 auto;
    padding: 10px 0 48px;
    color: var(--schedule-ink);
}

.schedules-page *[b-fk179inr12], .schedules-page *[b-fk179inr12]::before, .schedules-page *[b-fk179inr12]::after,
.cancel-dialog *[b-fk179inr12], .cancel-dialog *[b-fk179inr12]::before, .cancel-dialog *[b-fk179inr12]::after { box-sizing: border-box; }

.schedules-heading[b-fk179inr12] { margin-bottom: 26px; display: flex; align-items: flex-end; justify-content: space-between; gap: 32px; }
.schedules-kicker[b-fk179inr12] { display: block; color: var(--schedule-blue); font-size: 10px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.schedules-heading h2[b-fk179inr12] { margin: 7px 0 8px; color: #101e31; font-size: clamp(32px, 4vw, 44px); font-weight: 760; letter-spacing: -.048em; line-height: 1.08; }
.schedules-heading p[b-fk179inr12] { max-width: 650px; margin: 0; color: var(--schedule-muted); font-size: 14px; line-height: 1.65; }
.browse-labs-action[b-fk179inr12] { min-height: 42px; padding: 10px 15px; display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; border: 1px solid #b9d2da; border-radius: 9px; color: #0b718a; background: #fff; box-shadow: 0 4px 12px rgba(17,39,65,.04); font-size: 11px; font-weight: 750; text-decoration: none; transition: border .18s, background .18s, transform .18s; }
.browse-labs-action:hover[b-fk179inr12] { border-color: #7fb9c7; background: #f2fafb; transform: translateY(-1px); }
.browse-labs-action svg[b-fk179inr12] { width: 17px; height: 17px; }

.schedule-loading[b-fk179inr12] { min-height: 130px; padding: 28px; display: flex; align-items: center; justify-content: center; gap: 14px; border: 1px solid var(--schedule-line); border-radius: 14px; background: #fff; }
.schedule-loading div[b-fk179inr12] { display: grid; gap: 3px; }
.schedule-loading strong[b-fk179inr12] { color: #33445a; font-size: 13px; }
.schedule-loading small[b-fk179inr12] { color: #7a8999; font-size: 10px; }
.schedule-loader[b-fk179inr12] { width: 28px; height: 28px; border: 3px solid #dbe8ec; border-top-color: var(--schedule-blue); border-radius: 50%; animation: schedule-spin-b-fk179inr12 .8s linear infinite; }
@keyframes schedule-spin-b-fk179inr12 { to { transform: rotate(360deg); } }

.schedule-summary[b-fk179inr12] { min-height: 62px; margin-bottom: 18px; padding: 12px 17px; display: flex; align-items: center; justify-content: space-between; gap: 18px; border: 1px solid var(--schedule-line); border-radius: 12px; background: #fff; box-shadow: 0 4px 14px rgba(17,39,65,.035); }
.schedule-summary div[b-fk179inr12] { display: flex; align-items: baseline; gap: 8px; }
.schedule-summary strong[b-fk179inr12] { color: #14243a; font-size: 22px; line-height: 1; }
.schedule-summary span[b-fk179inr12] { color: #738295; font-size: 9px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.schedule-summary p[b-fk179inr12] { margin: 0; color: #7d8b9b; font-size: 10px; }
.schedule-summary p span[b-fk179inr12] { padding: 0 4px; color: #a1acb7; }

.schedule-grid[b-fk179inr12] { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.schedule-card[b-fk179inr12] { position: relative; min-width: 0; overflow: hidden; border: 1px solid var(--schedule-line); border-radius: 15px; background: var(--schedule-card); box-shadow: 0 6px 20px rgba(17,39,65,.055); transition: border .2s, box-shadow .2s, transform .2s; }
.schedule-card:hover[b-fk179inr12] { border-color: #b8ccd6; box-shadow: 0 14px 30px rgba(17,39,65,.09); transform: translateY(-2px); }
.schedule-card-accent[b-fk179inr12] { position: absolute; inset: 0 auto 0 0; width: 3px; background: linear-gradient(#1a96b2, #2ebd99); }
.schedule-card-active .schedule-card-accent[b-fk179inr12] { background: #15a67c; box-shadow: 0 0 15px rgba(21,166,124,.4); }
.schedule-card-header[b-fk179inr12] { padding: 21px 22px 17px; }
.schedule-card-status[b-fk179inr12] { margin-bottom: 14px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.lab-code[b-fk179inr12] { max-width: 62%; overflow: hidden; padding: 5px 8px; border-radius: 6px; color: #0e6f87; background: #e2f1f4; font-family: ui-monospace, "Roboto Mono", monospace; font-size: 9px; font-weight: 800; letter-spacing: .035em; text-overflow: ellipsis; white-space: nowrap; }
.session-state[b-fk179inr12] { padding: 5px 8px; display: inline-flex; align-items: center; gap: 6px; border-radius: 20px; color: #596b7e; background: #eef2f5; font-size: 8px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.session-state i[b-fk179inr12] { width: 5px; height: 5px; border-radius: 50%; background: #7c8c9d; }
.session-state-live[b-fk179inr12] { color: #087657; background: #def6ed; }
.session-state-live i[b-fk179inr12] { background: #16a67d; box-shadow: 0 0 7px rgba(22,166,125,.55); }
.schedule-card h3[b-fk179inr12] { margin: 0; overflow: hidden; color: #16263b; font-size: 21px; font-weight: 740; letter-spacing: -.032em; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }

.schedule-details[b-fk179inr12] { padding: 0 22px 19px; display: grid; grid-template-columns: 1.2fr 1fr; gap: 14px; }
.schedule-detail[b-fk179inr12] { min-width: 0; display: flex; align-items: center; gap: 10px; }
.detail-icon[b-fk179inr12] { width: 34px; height: 34px; display: grid; place-items: center; flex: 0 0 auto; border: 1px solid #dbe4ea; border-radius: 8px; color: #587084; background: #f7f9fa; }
.detail-icon svg[b-fk179inr12] { width: 16px; height: 16px; }
.schedule-detail div[b-fk179inr12] { min-width: 0; display: grid; gap: 2px; }
.schedule-detail div > span[b-fk179inr12] { color: #8a97a6; font-size: 8px; font-weight: 750; letter-spacing: .07em; text-transform: uppercase; }
.schedule-detail strong[b-fk179inr12] { overflow: hidden; color: #3d4e62; font-size: 10px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }

.countdown-panel[b-fk179inr12] { margin: 0 22px 20px; padding: 16px; border: 1px solid #dce7eb; border-radius: 11px; background: #f4f8f9; }
.countdown-panel > span[b-fk179inr12] { display: block; margin-bottom: 11px; color: #728294; font-size: 8px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.countdown-panel[b-fk179inr12]  .countdown-shell { display: block; }

.schedule-card-footer[b-fk179inr12] { min-height: 69px; padding: 13px 15px 13px 22px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border-top: 1px solid #e2e9ee; background: #fbfcfd; }
.schedule-card-footer p[b-fk179inr12] { max-width: 265px; margin: 0; color: #8794a2; font-size: 9px; line-height: 1.45; }
.schedule-card-footer button[b-fk179inr12] { min-height: 38px; padding: 9px 11px; display: inline-flex; align-items: center; gap: 7px; flex: 0 0 auto; border: 1px solid #e1c9ca; border-radius: 8px; color: #a3464c; background: #fff8f8; font-size: 9px; font-weight: 750; cursor: pointer; transition: border .18s, color .18s, background .18s; }
.schedule-card-footer button:hover[b-fk179inr12] { border-color: #d9a9ad; color: #8f3038; background: #fff1f1; }
.schedule-card-footer button svg[b-fk179inr12] { width: 14px; height: 14px; }

/* Live-session launch. Sits above the footer so it is the last thing read before the
   card ends, and is the only filled control on the card. */
.schedule-launch[b-fk179inr12] { padding: 15px 22px; display: flex; align-items: center; gap: 14px; border-top: 1px solid #d3e7ea; background: #f2fbfc; }
.schedule-launch p[b-fk179inr12] { margin: 0; color: #5e8791; font-size: 9px; line-height: 1.45; }
.schedule-launch-action[b-fk179inr12] { min-height: 40px; padding: 10px 16px; display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; border-radius: 9px; color: #fff; background: var(--schedule-blue); box-shadow: 0 8px 18px rgba(12,112,137,.22); font-size: 10px; font-weight: 750; text-decoration: none; transition: background .18s; }
.schedule-launch-action:hover[b-fk179inr12] { background: #0a5f74; }
.schedule-launch-action svg[b-fk179inr12] { width: 15px; height: 15px; }
.schedule-launch-unavailable[b-fk179inr12] { background: #f8fafb; border-top-color: #e2e9ee; }

.schedule-empty[b-fk179inr12] { min-height: 390px; padding: 52px 24px; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 1px dashed #c5d1db; border-radius: 15px; text-align: center; background: #fbfcfd; }
.empty-calendar[b-fk179inr12] { width: 58px; height: 58px; margin-bottom: 20px; display: grid; place-items: center; border: 1px solid #cbd9e1; border-radius: 15px; color: #198ca8; background: #eef7f8; }
.empty-calendar svg[b-fk179inr12] { width: 27px; height: 27px; }
.schedule-empty h3[b-fk179inr12] { margin: 9px 0 8px; color: #26374c; font-size: 21px; letter-spacing: -.025em; }
.schedule-empty p[b-fk179inr12] { max-width: 470px; margin: 0; color: #7b8998; font-size: 12px; line-height: 1.6; }
.schedule-empty a[b-fk179inr12] { margin-top: 20px; padding: 10px 14px; border-radius: 8px; color: #fff; background: var(--schedule-blue); box-shadow: 0 8px 18px rgba(12,112,137,.18); font-size: 10px; font-weight: 750; text-decoration: none; }

.cancel-dialog-backdrop[b-fk179inr12] { position: fixed; z-index: 1000; inset: 0; padding: 20px; display: grid; place-items: center; background: rgba(4,13,24,.67); backdrop-filter: blur(7px); }
.cancel-dialog[b-fk179inr12] { width: min(430px, 100%); padding: 27px; border: 1px solid #d8e2e9; border-radius: 16px; color: #26374c; background: #fff; box-shadow: 0 30px 80px rgba(0,0,0,.28); }
.cancel-dialog-icon[b-fk179inr12] { width: 46px; height: 46px; margin-bottom: 19px; display: grid; place-items: center; border-radius: 12px; color: #b54a52; background: #fff0f1; }
.cancel-dialog-icon svg[b-fk179inr12] { width: 23px; height: 23px; }
.cancel-dialog h3[b-fk179inr12] { margin: 8px 0; color: #17273b; font-size: 22px; letter-spacing: -.03em; }
.cancel-dialog p[b-fk179inr12] { margin: 0; color: #6f7e8e; font-size: 12px; line-height: 1.65; }
.cancel-dialog p strong[b-fk179inr12] { color: #3b4d61; }
.cancel-dialog-actions[b-fk179inr12] { margin-top: 23px; display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.cancel-dialog-actions button[b-fk179inr12] { min-height: 42px; padding: 9px 12px; border-radius: 8px; font-size: 10px; font-weight: 750; cursor: pointer; }
.cancel-dialog-actions button:disabled[b-fk179inr12] { opacity: .65; cursor: wait; }
.dialog-keep[b-fk179inr12] { border: 1px solid #d5dee6; color: #596b7e; background: #fff; }
.dialog-confirm[b-fk179inr12] { border: 0; color: #fff; background: #a9444b; }

.dark .schedules-heading h2[b-fk179inr12], .dark .schedule-summary strong[b-fk179inr12], .dark .schedule-card h3[b-fk179inr12] { color: #eef4fa; }
.dark .schedules-heading p[b-fk179inr12] { color: #96a7b9; }
.dark .browse-labs-action[b-fk179inr12], .dark .schedule-summary[b-fk179inr12], .dark .schedule-card[b-fk179inr12], .dark .schedule-loading[b-fk179inr12] { border-color: #27384a; background: #111d2b; }
.dark .browse-labs-action[b-fk179inr12] { color: #6fd1e5; }
.dark .schedule-summary p[b-fk179inr12], .dark .schedule-loading small[b-fk179inr12] { color: #91a2b5; }
.dark .schedule-loading strong[b-fk179inr12], .dark .schedule-detail strong[b-fk179inr12] { color: #d3dde7; }
.dark .lab-code[b-fk179inr12] { color: #66cadf; background: #183747; }
.dark .session-state[b-fk179inr12] { color: #a9b6c4; background: #1b2b3c; }
.dark .session-state-live[b-fk179inr12] { color: #55d2ad; background: #153b36; }
.dark .detail-icon[b-fk179inr12] { border-color: #304255; color: #9fb3c4; background: #172638; }
.dark .countdown-panel[b-fk179inr12] { border-color: #2b4051; background: #0d1825; }
.dark .schedule-card-footer[b-fk179inr12] { border-color: #27384a; background: #101a27; }
.dark .schedule-card-footer button[b-fk179inr12] { border-color: #593b43; color: #ef9299; background: #281b23; }
.dark .schedule-launch[b-fk179inr12] { border-color: #1d4450; background: #0e2630; }
.dark .schedule-launch p[b-fk179inr12] { color: #85a9b3; }
.dark .schedule-launch-unavailable[b-fk179inr12] { border-color: #27384a; background: #101a27; }
.dark .schedule-empty[b-fk179inr12] { border-color: #34475a; background: #111d2b; }
.dark .schedule-empty h3[b-fk179inr12] { color: #e3ebf3; }
.dark .empty-calendar[b-fk179inr12] { border-color: #315165; color: #60c9df; background: #153041; }
.dark .cancel-dialog[b-fk179inr12] { border-color: #314255; color: #d6e0e9; background: #111d2b; }
.dark .cancel-dialog h3[b-fk179inr12] { color: #f0f5fa; }
.dark .cancel-dialog p[b-fk179inr12] { color: #9aaabc; }
.dark .cancel-dialog p strong[b-fk179inr12] { color: #dbe4ec; }
.dark .dialog-keep[b-fk179inr12] { border-color: #384a5d; color: #b3c0cc; background: #172638; }

@media (max-width: 920px) {
    .schedule-grid[b-fk179inr12] { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
    .schedules-page[b-fk179inr12] { padding-top: 2px; }
    .schedules-heading[b-fk179inr12] { margin-bottom: 21px; align-items: stretch; flex-direction: column; gap: 17px; }
    .schedules-heading h2[b-fk179inr12] { font-size: 34px; }
    .browse-labs-action[b-fk179inr12] { align-self: flex-start; }
    .schedule-summary[b-fk179inr12] { align-items: flex-start; flex-direction: column; gap: 7px; }
    .schedule-card-header[b-fk179inr12] { padding: 19px 18px 15px; }
    .schedule-details[b-fk179inr12] { padding: 0 18px 17px; grid-template-columns: 1fr; }
    .countdown-panel[b-fk179inr12] { margin: 0 18px 18px; }
    .schedule-card-footer[b-fk179inr12] { padding: 14px 18px; align-items: stretch; flex-direction: column; }
    .schedule-card-footer p[b-fk179inr12] { max-width: none; }
    .schedule-card-footer button[b-fk179inr12] { justify-content: center; }
}

@media (max-width: 390px) {
    .countdown-panel[b-fk179inr12] { padding: 13px; }
    .cancel-dialog-actions[b-fk179inr12] { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
    .schedules-page *[b-fk179inr12], .schedules-page *[b-fk179inr12]::before, .schedules-page *[b-fk179inr12]::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
/* /Components/Shared/ScheduleCountDown.razor.rz.scp.css */
.countdown-shell[b-ko46ne8heq] { display: inline-block; max-width: 100%; }
.countdown-units[b-ko46ne8heq] { display: flex; align-items: center; gap: 7px; }
.countdown-unit[b-ko46ne8heq] { width: 55px; min-height: 53px; padding: 7px 5px 6px; display: grid; place-items: center; align-content: center; gap: 3px; border: 1px solid #dce5ea; border-radius: 8px; background: #fff; }
.countdown-unit strong[b-ko46ne8heq] { color: #1b3046; font-family: ui-monospace, "Roboto Mono", monospace; font-size: 19px; line-height: 1; letter-spacing: -.04em; }
.countdown-unit span[b-ko46ne8heq] { color: #7e8d9e; font-size: 7px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.countdown-separator[b-ko46ne8heq] { color: #94a3b2; font-family: ui-monospace, monospace; font-size: 15px; font-weight: 800; }
.active-session[b-ko46ne8heq] { min-height: 44px; padding: 9px 12px; display: flex; align-items: center; gap: 8px; border: 1px solid #bde5d8; border-radius: 9px; color: #087657; background: #e9f8f3; font-size: 10px; font-weight: 750; }
.active-session strong[b-ko46ne8heq] { margin-left: 4px; color: #286a59; font-family: ui-monospace, monospace; font-size: 9px; font-weight: 700; }
.active-indicator[b-ko46ne8heq] { position: relative; width: 8px; height: 8px; flex: 0 0 auto; }
.active-indicator span[b-ko46ne8heq], .active-indicator i[b-ko46ne8heq] { position: absolute; inset: 0; border-radius: 50%; background: #16a67d; }
.active-indicator span[b-ko46ne8heq] { animation: active-ping-b-ko46ne8heq 1.5s cubic-bezier(0,0,.2,1) infinite; }
@keyframes active-ping-b-ko46ne8heq { 75%, 100% { transform: scale(2); opacity: 0; } }
.countdown-expired[b-ko46ne8heq] { color: #7d8b99; font-size: 10px; font-style: italic; }

.dark .countdown-unit[b-ko46ne8heq] { border-color: #304255; background: #172638; }
.dark .countdown-unit strong[b-ko46ne8heq] { color: #e5edf4; }
.dark .countdown-unit span[b-ko46ne8heq] { color: #90a1b3; }
.dark .countdown-separator[b-ko46ne8heq] { color: #65788a; }
.dark .active-session[b-ko46ne8heq] { border-color: #24594d; color: #5bd5b1; background: #14372f; }
.dark .active-session strong[b-ko46ne8heq] { color: #a3e6d2; }
.dark .countdown-expired[b-ko46ne8heq] { color: #91a2b5; }

@media (max-width: 390px) {
    .countdown-units[b-ko46ne8heq] { gap: 4px; }
    .countdown-unit[b-ko46ne8heq] { width: 48px; }
    .countdown-separator[b-ko46ne8heq] { font-size: 12px; }
    .active-session[b-ko46ne8heq] { align-items: flex-start; flex-wrap: wrap; }
    .active-session strong[b-ko46ne8heq] { width: 100%; margin-left: 16px; }
}

@media (prefers-reduced-motion: reduce) {
    .active-indicator span[b-ko46ne8heq] { animation: none; }
}
/* /LabClients/Common/ScopeCursorOverlay.razor.rz.scp.css */
/* ScopeCursorOverlay.razor.css */

.scope-cursor-manager[b-nirjm03s8e] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 6px;
}

/* Toolbar */
.cursor-toolbar[b-nirjm03s8e] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    background: #f1f5f9;
    padding: 6px 10px;
    border-radius: 6px;
    border: 1px solid #e2e8f0;
    font-size: 13px;
}

.cursor-mode-group[b-nirjm03s8e], .cursor-actions-group[b-nirjm03s8e] {
    display: flex;
    align-items: center;
    gap: 4px;
}

.toolbar-label[b-nirjm03s8e] {
    font-weight: 600;
    color: #475569;
    margin-right: 2px;
}

.cursor-btn[b-nirjm03s8e] {
    border: 1px solid #cbd5e1;
    background: #ffffff;
    color: #334155;
    padding: 3px 9px;
    border-radius: 4px;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease;
}

.cursor-btn:hover[b-nirjm03s8e] {
    background: #f8fafc;
    border-color: #94a3b8;
}

.cursor-btn.active[b-nirjm03s8e] {
    background: #0284c7;
    border-color: #0284c7;
    color: #ffffff;
    box-shadow: 0 1px 2px rgba(2, 132, 199, 0.2);
}

.cursor-action-btn[b-nirjm03s8e] {
    border: 1px solid #e2e8f0;
    background: #ffffff;
    color: #475569;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease;
}

.cursor-action-btn:hover[b-nirjm03s8e] {
    background: #f8fafc;
    color: #0f172a;
    border-color: #cbd5e1;
}

/* Readouts strip */
.scope-cursor-readouts[b-nirjm03s8e] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    background: #0f172a;
    color: #f8fafc;
    padding: 6px 12px;
    border-radius: 6px;
    font-size: 12px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

.readout-block[b-nirjm03s8e] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.readout-tag[b-nirjm03s8e] {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    padding: 1px 5px;
    border-radius: 3px;
    letter-spacing: 0.04em;
}

.time-tag[b-nirjm03s8e] {
    background: rgba(14, 165, 233, 0.25);
    color: #38bdf8;
    border: 1px solid rgba(56, 189, 248, 0.4);
}

.volt-tag[b-nirjm03s8e] {
    background: rgba(245, 158, 11, 0.25);
    color: #fbbf24;
    border: 1px solid rgba(251, 191, 36, 0.4);
}

.readout-item[b-nirjm03s8e] {
    color: #94a3b8;
}

.readout-item strong[b-nirjm03s8e] {
    color: #f8fafc;
    font-weight: 600;
}

.readout-item.highlight strong[b-nirjm03s8e] {
    color: #38bdf8;
}

.volt-block .readout-item.highlight strong[b-nirjm03s8e] {
    color: #fbbf24;
}

.copy-val-btn[b-nirjm03s8e] {
    border: 1px solid rgba(255, 255, 255, 0.2);
    background: rgba(255, 255, 255, 0.08);
    color: #cbd5e1;
    font-size: 11px;
    padding: 2px 7px;
    border-radius: 4px;
    cursor: pointer;
    transition: all 0.15s ease;
    font-family: inherit;
}

.copy-val-btn:hover[b-nirjm03s8e] {
    background: rgba(255, 255, 255, 0.18);
    color: #ffffff;
}

.copied-toast[b-nirjm03s8e] {
    margin-left: auto;
    font-size: 11px;
    color: #4ade80;
    font-weight: 500;
    animation: fadeInOut-b-nirjm03s8e 2.5s ease-in-out;
}

@keyframes fadeInOut-b-nirjm03s8e {
    0% { opacity: 0; transform: translateY(-2px); }
    15% { opacity: 1; transform: translateY(0); }
    85% { opacity: 1; transform: translateY(0); }
    100% { opacity: 0; }
}

/* SVG Overlay */
.scope-cursor-svg[b-nirjm03s8e] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 15;
    overflow: visible;
}

.scope-cursor-svg.active[b-nirjm03s8e] {
    pointer-events: none;
}

.cursor-line[b-nirjm03s8e] {
    stroke-width: 1.5;
    stroke-dasharray: 4, 3;
    pointer-events: stroke;
    transition: stroke-width 0.1s ease;
}

.cursor-line-x1[b-nirjm03s8e], .cursor-line-x2[b-nirjm03s8e] {
    stroke: #0284c7;
    cursor: ew-resize;
}

.cursor-line-y1[b-nirjm03s8e], .cursor-line-y2[b-nirjm03s8e] {
    stroke: #d97706;
    cursor: ns-resize;
}

.cursor-line:hover[b-nirjm03s8e] {
    stroke-width: 2.5;
}

/* Grab handles */
.cursor-handle[b-nirjm03s8e] {
    pointer-events: all;
    user-select: none;
    cursor: grab;
    filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.25));
}

.cursor-handle:active[b-nirjm03s8e] {
    cursor: grabbing;
}

.cursor-handle-x1[b-nirjm03s8e], .cursor-handle-x2[b-nirjm03s8e] {
    cursor: ew-resize;
}

.cursor-handle-y1[b-nirjm03s8e], .cursor-handle-y2[b-nirjm03s8e] {
    cursor: ns-resize;
}

.handle-bg[b-nirjm03s8e] {
    transition: all 0.1s ease;
}

.handle-x1-bg[b-nirjm03s8e], .handle-x2-bg[b-nirjm03s8e] {
    fill: #0284c7;
}

.handle-y1-bg[b-nirjm03s8e], .handle-y2-bg[b-nirjm03s8e] {
    fill: #d97706;
}

.cursor-handle:hover .handle-bg[b-nirjm03s8e] {
    filter: brightness(1.2);
}

.handle-text[b-nirjm03s8e] {
    fill: #ffffff;
    font-size: 10px;
    font-weight: 700;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
/* /LabClients/Common/ScopeMeasurementsHud.razor.rz.scp.css */
/* ScopeMeasurementsHud.razor.css */

.scope-measurements-hud[b-ygw45ukyny] {
    background: #0f172a;
    border: 1px solid #1e293b;
    border-radius: 8px;
    padding: 10px 14px;
    color: #f8fafc;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
}

.hud-header[b-ygw45ukyny] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
    padding-bottom: 6px;
    border-bottom: 1px solid #1e293b;
}

.hud-title-group[b-ygw45ukyny] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.hud-dot[b-ygw45ukyny] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #64748b;
    transition: all 0.3s ease;
}

.hud-dot.active[b-ygw45ukyny] {
    background: #22c55e;
    box-shadow: 0 0 8px #22c55e;
}

.hud-title[b-ygw45ukyny] {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #94a3b8;
}

.hud-actions[b-ygw45ukyny] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.hud-action-btn[b-ygw45ukyny] {
    background: #1e293b;
    border: 1px solid #334155;
    color: #cbd5e1;
    font-size: 11px;
    font-weight: 500;
    padding: 2px 8px;
    border-radius: 4px;
    cursor: pointer;
    transition: all 0.15s ease;
}

.hud-action-btn:hover[b-ygw45ukyny] {
    background: #334155;
    color: #ffffff;
}

.hud-toast[b-ygw45ukyny] {
    font-size: 11px;
    color: #4ade80;
    font-weight: 600;
    margin-left: 4px;
}

/* Cards Grid */
.hud-cards-grid[b-ygw45ukyny] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
}

.hud-card[b-ygw45ukyny] {
    background: #182234;
    border-radius: 6px;
    padding: 8px 10px;
    border: 1px solid #334155;
    transition: opacity 0.2s ease;
}

.hud-card.inactive[b-ygw45ukyny] {
    opacity: 0.55;
}

.ch-a-card[b-ygw45ukyny] {
    border-left: 3px solid #0284c7;
}

.ch-b-card[b-ygw45ukyny] {
    border-left: 3px solid #16a34a;
}

.math-card[b-ygw45ukyny] {
    border-left: 3px solid #d97706;
}

.theory-card[b-ygw45ukyny] {
    border-left: 3px solid #ea580c;
    background: #192338;
}

.card-header[b-ygw45ukyny] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 4px;
}

.channel-pill[b-ygw45ukyny] {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    padding: 1px 6px;
    border-radius: 3px;
    letter-spacing: 0.04em;
}

.pill-a[b-ygw45ukyny] {
    background: rgba(2, 132, 199, 0.2);
    color: #38bdf8;
}

.pill-b[b-ygw45ukyny] {
    background: rgba(22, 163, 74, 0.2);
    color: #4ade80;
}

.pill-math[b-ygw45ukyny] {
    background: rgba(217, 119, 6, 0.2);
    color: #fbbf24;
}

.pill-theory[b-ygw45ukyny] {
    background: rgba(234, 88, 12, 0.2);
    color: #fb923c;
    border: 1px dashed rgba(251, 146, 60, 0.5);
}

.freq-badge[b-ygw45ukyny] {
    font-size: 11px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-weight: 600;
    color: #cbd5e1;
}

.db-badge[b-ygw45ukyny] {
    color: #fbbf24;
}

.theory-badge[b-ygw45ukyny] {
    color: #fb923c;
}

.primary-metric[b-ygw45ukyny] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin: 2px 0 6px;
}

.metric-label[b-ygw45ukyny] {
    font-size: 11px;
    color: #94a3b8;
    font-weight: 500;
}

.metric-value[b-ygw45ukyny] {
    font-size: 18px;
    font-weight: 700;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    color: #ffffff;
}

.metric-value small[b-ygw45ukyny] {
    font-size: 12px;
    font-weight: 400;
    color: #94a3b8;
}

.sub-metrics-grid[b-ygw45ukyny] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px 8px;
    padding-top: 4px;
    border-top: 1px solid rgba(255, 255, 255, 0.07);
}

.sub-metric[b-ygw45ukyny] {
    display: flex;
    flex-direction: column;
}

.sub-label[b-ygw45ukyny] {
    font-size: 9px;
    color: #64748b;
    text-transform: uppercase;
    font-weight: 600;
}

.sub-val[b-ygw45ukyny] {
    font-size: 11px;
    font-weight: 600;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    color: #e2e8f0;
}

.highlight-phase[b-ygw45ukyny] {
    color: #fbbf24;
}

.theory-diff[b-ygw45ukyny] {
    font-size: 11px;
    font-weight: 700;
    padding: 1px 5px;
    border-radius: 4px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

.theory-diff.good[b-ygw45ukyny] {
    background: rgba(34, 197, 94, 0.15);
    color: #4ade80;
}

.theory-diff.warning[b-ygw45ukyny] {
    background: rgba(234, 179, 8, 0.15);
    color: #facc15;
}

.theory-diff.bad[b-ygw45ukyny] {
    background: rgba(239, 68, 68, 0.15);
    color: #f87171;
}

.full-span[b-ygw45ukyny] {
    grid-column: 1 / -1;
}

.formula-val[b-ygw45ukyny] {
    font-size: 10px;
    color: #cbd5e1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.card-empty[b-ygw45ukyny] {
    font-size: 12px;
    color: #64748b;
    padding: 12px 0;
    text-align: center;
    font-style: italic;
}

/* Responsive */
@media (max-width: 640px) {
    .hud-cards-grid[b-ygw45ukyny] {
        grid-template-columns: 1fr;
    }
}
/* /LabClients/HalfWave/HalfWave.razor.rz.scp.css */
/* HalfWave Rectification Lab Styles */

/* Schedule access gate */
.lab-access-gate[b-b8mb47v11r] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    gap: 16px;
    color: #64748b;
}

.lab-access-gate.no-access[b-b8mb47v11r] {
    text-align: center;
    padding: 3rem;
    background: #f8fafc;
    border-radius: 12px;
    border: 2px dashed #e2e8f0;
    margin: 2rem auto;
    max-width: 480px;
}

.lab-access-gate .gate-icon[b-b8mb47v11r] { font-size: 3rem; margin-bottom: 0.5rem; }
.lab-access-gate h3[b-b8mb47v11r] { color: #334155; margin: 0.5rem 0; }
.lab-access-gate p[b-b8mb47v11r] { color: #64748b; margin-bottom: 1.5rem; }

.lab-container[b-b8mb47v11r] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    padding: 1rem;
    background: #f5f6f7;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

.lab-header[b-b8mb47v11r] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: white;
    padding: 0.75rem 1.25rem;
    border-radius: 8px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.1);
    margin-bottom: 0.75rem;
}

.lab-header h2[b-b8mb47v11r] {
    margin: 0;
    color: #1e3a8a;
    font-size: 1.35rem;
}

.connection-status[b-b8mb47v11r] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.9rem;
    border-radius: 16px;
    font-weight: 500;
    font-size: 0.8rem;
}

.connection-status.connected[b-b8mb47v11r] {
    background: #d1fae5;
    color: #059669;
}

.connection-status.disconnected[b-b8mb47v11r] {
    background: #fee2e2;
    color: #dc2626;
}

.status-dot[b-b8mb47v11r] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: currentColor;
}

.data-quality-panel[b-b8mb47v11r] {
    display: flex;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}

.indicator[b-b8mb47v11r] {
    padding: 0.25rem 0.6rem;
    border-radius: 4px;
    font-size: 0.7rem;
    font-weight: 500;
}

.indicator.fresh[b-b8mb47v11r] {
    background: #d1fae5;
    color: #059669;
}

.indicator.stale[b-b8mb47v11r] {
    background: #fef3c7;
    color: #d97706;
}

.indicator.very-stale[b-b8mb47v11r] {
    background: #fee2e2;
    color: #dc2626;
}

.indicator.warning[b-b8mb47v11r] {
    background: #fee2e2;
    color: #dc2626;
}

.indicator.pending[b-b8mb47v11r] {
    background: #dbeafe;
    color: #1d4ed8;
}

/* Main content grid: 2 columns, 2 rows */
.lab-content[b-b8mb47v11r] {
    display: grid;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.4fr);
    grid-template-areas:
        "scope circuit"
        "display generator";
    gap: 0.75rem;
    margin-bottom: 0.75rem;
    align-items: start;
}

.oscilloscope-section[b-b8mb47v11r] { grid-area: scope; }
.display-controls-section[b-b8mb47v11r] { grid-area: display; }
.circuit-section[b-b8mb47v11r] { grid-area: circuit; }
.function-generator-section[b-b8mb47v11r] { grid-area: generator; }

.oscilloscope-section[b-b8mb47v11r],
.display-controls-section[b-b8mb47v11r],
.circuit-section[b-b8mb47v11r],
.function-generator-section[b-b8mb47v11r] {
    min-width: 0;
    background: white;
    border-radius: 10px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    padding: 1rem;
    display: flex;
    flex-direction: column;
}

/* Modern Blue Badge Header */
.section-header[b-b8mb47v11r] {
    background: #0078D4;
    color: white;
    padding: 6px 12px;
    border-radius: 4px;
    font-size: 0.9rem;
    font-weight: 600;
    margin-bottom: 12px;
    display: inline-block;
    align-self: flex-start;
}

/* Oscilloscope viewport */
.scope-viewport[b-b8mb47v11r] {
    position: relative;
    width: 100%;
    min-height: 350px;
}

.circuit-section .circuit-image[b-b8mb47v11r] {
    height: 350px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 0.25rem;
    overflow: hidden;
}

/* Preloaded Circuit Image Stack */
.circuit-image-stack[b-b8mb47v11r] {
    position: relative;
    width: 100%;
    height: 100%;
}

.circuit-frame[b-b8mb47v11r] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    opacity: 0;
    transition: opacity 0.12s ease;
    pointer-events: none;
}

.circuit-frame.active[b-b8mb47v11r] {
    opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
    .circuit-frame[b-b8mb47v11r] {
        transition: none;
    }
}

/* Display Controls */
.display-controls-section .display-row[b-b8mb47v11r] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.display-controls-section .control-group[b-b8mb47v11r] {
    margin-bottom: 0.5rem;
}

.display-controls-section label[b-b8mb47v11r] {
    display: block;
    font-size: 0.8rem;
    color: #334155;
    font-weight: 600;
    margin-bottom: 0.25rem;
}

.channels-group[b-b8mb47v11r] {
    grid-column: 1 / -1;
    display: flex;
    gap: 1rem;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    padding: 0.6rem 0.8rem;
    margin-top: 0.25rem;
    flex-wrap: wrap;
}

/* Function Generator Controls */
.fg-controls[b-b8mb47v11r] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 16px 12px;
    align-items: start;
}

.fg-control:nth-child(1)[b-b8mb47v11r],
.fg-control:nth-child(2)[b-b8mb47v11r] {
    grid-column: 1 / -1;
}

.fg-control[b-b8mb47v11r] {
    display: flex;
    flex-direction: column;
}

.fg-control label[b-b8mb47v11r] {
    font-size: 0.8rem;
    font-weight: 600;
    color: #333;
    margin-bottom: 8px;
    text-align: center;
}

.fg-control .value-display[b-b8mb47v11r] {
    text-align: center;
    font-size: 0.9rem;
    font-weight: 600;
    color: #0078D4;
    margin-top: 8px;
}

.fg-control.wave-type[b-b8mb47v11r] {
    display: flex;
    flex-direction: column;
}

.radio-group[b-b8mb47v11r] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px 10px;
}

.fg-button[b-b8mb47v11r] {
    display: flex;
    justify-content: center;
    align-items: center;
    padding-top: 14px;
}

.apply-btn[b-b8mb47v11r] {
    height: 38px;
    padding: 0 1.5rem;
}

/* Bottom Row: Session Controls & System Info */
.bottom-controls[b-b8mb47v11r] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
}

.switches-section[b-b8mb47v11r],
.system-info-section[b-b8mb47v11r] {
    background: white;
    border-radius: 10px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    padding: 0.75rem;
}

.switches-grid[b-b8mb47v11r] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.switch-row[b-b8mb47v11r] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.4rem 0.6rem;
    background: #f8fafc;
    border-radius: 4px;
    border: 1px solid #e2e8f0;
}

.switch-label[b-b8mb47v11r] {
    font-size: 0.8rem;
    font-weight: 500;
    color: #334155;
}

.action-buttons[b-b8mb47v11r] {
    display: flex;
    gap: 0.5rem;
    justify-content: center;
}

.action-buttons .e-btn[b-b8mb47v11r] {
    min-width: 110px;
}

/* System Info / Diagnostics */
.message-box[b-b8mb47v11r] {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    padding: 0.5rem;
    min-height: 55px;
    max-height: 75px;
    overflow-y: auto;
    margin-bottom: 0.5rem;
    font-size: 0.75rem;
}

.message-box.has-error[b-b8mb47v11r] {
    background: #fee2e2;
    border-color: #fca5a5;
}

.message-box p[b-b8mb47v11r] {
    margin: 0;
    font-family: 'Consolas', monospace;
}

.status-text[b-b8mb47v11r] {
    color: #059669;
}

.error-text[b-b8mb47v11r] {
    color: #dc2626;
}

.status-row[b-b8mb47v11r] {
    font-size: 0.75rem;
    color: #64748b;
}

.status-row strong[b-b8mb47v11r] {
    color: #334155;
}

/* Waiting-for-new-waveform overlay */
.scope-overlay[b-b8mb47v11r] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.78);
    border-radius: 6px;
    z-index: 2;
    pointer-events: none;
}

.scope-overlay-card[b-b8mb47v11r] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    max-width: 280px;
    padding: 16px 20px;
    text-align: center;
    background: #fff;
    border: 1px solid #bcd9f5;
    border-radius: 8px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);
}

.scope-overlay-title[b-b8mb47v11r] {
    font-size: 0.9rem;
    font-weight: 600;
    color: #0b4f8a;
}

.scope-overlay-detail[b-b8mb47v11r] {
    font-size: 0.75rem;
    line-height: 1.35;
    color: #5a6b7b;
}

.scope-spinner[b-b8mb47v11r] {
    width: 22px;
    height: 22px;
    border: 3px solid #d7e6f5;
    border-top-color: #0078D4;
    border-radius: 50%;
    animation: scope-spin-b-b8mb47v11r 0.8s linear infinite;
}

@keyframes scope-spin-b-b8mb47v11r {
    to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
    .scope-spinner[b-b8mb47v11r] { animation: none; }
}

/* Responsive adjustments */
@media (max-width: 1200px) {
    .lab-content[b-b8mb47v11r] {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas:
            "scope"
            "display"
            "circuit"
            "generator";
    }

    .bottom-controls[b-b8mb47v11r] {
        grid-template-columns: 1fr;
    }
}

/* Dark Mode */
.dark .lab-container[b-b8mb47v11r] {
    background: #020617;
}

.dark .lab-access-gate[b-b8mb47v11r] {
    color: #94a3b8;
}

.dark .lab-access-gate.no-access[b-b8mb47v11r] {
    background: #0f172a;
    border-color: #334155;
}

.dark .lab-access-gate h3[b-b8mb47v11r] {
    color: #e2e8f0;
}

.dark .lab-access-gate p[b-b8mb47v11r] {
    color: #94a3b8;
}

.dark .lab-header[b-b8mb47v11r] {
    background: #0f172a;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}

.dark .lab-header h2[b-b8mb47v11r] {
    color: #60a5fa;
}

.dark .oscilloscope-section[b-b8mb47v11r],
.dark .circuit-section[b-b8mb47v11r],
.dark .function-generator-section[b-b8mb47v11r],
.dark .display-controls-section[b-b8mb47v11r],
.dark .switches-section[b-b8mb47v11r],
.dark .system-info-section[b-b8mb47v11r] {
    background: #0f172a;
    border-color: #1e293b;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}

.dark .circuit-section .circuit-image[b-b8mb47v11r],
.dark .switch-row[b-b8mb47v11r],
.dark .channels-group[b-b8mb47v11r],
.dark .message-box[b-b8mb47v11r] {
    background: #0b1220;
    border-color: #1e293b;
}

.dark .message-box.has-error[b-b8mb47v11r] {
    background: rgba(239, 68, 68, 0.16);
    border-color: rgba(239, 68, 68, 0.45);
}

.dark .fg-control label[b-b8mb47v11r],
.dark .control-group label[b-b8mb47v11r],
.dark .switch-label[b-b8mb47v11r],
.dark .status-row strong[b-b8mb47v11r] {
    color: #cbd5e1;
}

.dark .status-row[b-b8mb47v11r] {
    color: #94a3b8;
}

.dark .status-text[b-b8mb47v11r] {
    color: #4ade80;
}

.dark .error-text[b-b8mb47v11r] {
    color: #f87171;
}

.dark .connection-status.connected[b-b8mb47v11r] {
    background: rgba(16, 185, 129, 0.16);
    color: #6ee7b7;
}

.dark .connection-status.disconnected[b-b8mb47v11r] {
    background: rgba(239, 68, 68, 0.16);
    color: #fca5a5;
}

.dark .indicator.fresh[b-b8mb47v11r] {
    background: rgba(16, 185, 129, 0.16);
    color: #6ee7b7;
}

.dark .indicator.stale[b-b8mb47v11r] {
    background: rgba(234, 179, 8, 0.16);
    color: #fde68a;
}

.dark .indicator.very-stale[b-b8mb47v11r],
.dark .indicator.warning[b-b8mb47v11r] {
    background: rgba(239, 68, 68, 0.16);
    color: #fca5a5;
}

.dark .indicator.pending[b-b8mb47v11r] {
    background: rgba(56, 189, 248, 0.14);
    color: #7dd3fc;
}

.dark .oscilloscope-section[b-b8mb47v11r]  .e-chart {
    border-color: #1e293b;
}

.dark .scope-overlay[b-b8mb47v11r] {
    background: rgba(2, 6, 23, 0.82);
}

.dark .scope-overlay-card[b-b8mb47v11r] {
    background: #0f172a;
    border-color: #1e40af;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.5);
}

.dark .scope-overlay-title[b-b8mb47v11r] {
    color: #7dd3fc;
}

.dark .scope-overlay-detail[b-b8mb47v11r] {
    color: #94a3b8;
}

.dark .scope-spinner[b-b8mb47v11r] {
    border-color: #1e293b;
    border-top-color: #38bdf8;
}
/* /LabClients/LowPassFilter/LowPassFilter.razor.rz.scp.css */
/* Low Pass Filter Lab - Scoped Styles */

/* Schedule access gate */
.lab-access-gate[b-f3el8cs7nn] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    gap: 16px;
    color: #64748b;
    font-size: 1rem;
}

.lab-access-gate.no-access[b-f3el8cs7nn] {
    text-align: center;
    padding: 3rem;
    background: #f8fafc;
    border-radius: 12px;
    border: 2px dashed #e2e8f0;
    margin: 2rem auto;
    max-width: 480px;
}

.lab-access-gate .gate-icon[b-f3el8cs7nn] {
    font-size: 3rem;
    margin-bottom: 0.5rem;
}

.lab-access-gate h3[b-f3el8cs7nn] {
    color: #334155;
    margin: 0.5rem 0;
}

.lab-access-gate p[b-f3el8cs7nn] {
    color: #64748b;
    margin-bottom: 1.5rem;
}

/* Main container */
.lab-container[b-f3el8cs7nn] {
    padding: 16px;
    background-color: #f5f5f5;
    min-height: 100vh;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

/* Header */
.lab-header[b-f3el8cs7nn] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 2px solid #0078D4;
}

.lab-header h2[b-f3el8cs7nn] {
    margin: 0;
    color: #333;
    font-size: 1.5rem;
    font-weight: 600;
}

.connection-status[b-f3el8cs7nn] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.875rem;
    font-weight: 500;
}

.connection-status.connected[b-f3el8cs7nn] {
    color: #107C10;
}

.connection-status.disconnected[b-f3el8cs7nn] {
    color: #E81123;
}

.status-dot[b-f3el8cs7nn] {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    animation: pulse-b-f3el8cs7nn 2s infinite;
}

.connected .status-dot[b-f3el8cs7nn] {
    background-color: #107C10;
}

.disconnected .status-dot[b-f3el8cs7nn] {
    background-color: #E81123;
}

@keyframes pulse-b-f3el8cs7nn {
    0% { opacity: 1; }
    50% { opacity: 0.5; }
    100% { opacity: 1; }
}

/* Data Quality Panel */
.data-quality-panel[b-f3el8cs7nn] {
    display: flex;
    gap: 12px;
    margin-bottom: 12px;
}

.indicator[b-f3el8cs7nn] {
    padding: 6px 12px;
    border-radius: 6px;
    font-size: 0.8rem;
    font-weight: 500;
}

.indicator.fresh[b-f3el8cs7nn] {
    background-color: #d4edda;
    color: #155724;
    border: 1px solid #c3e6cb;
}

.indicator.warning[b-f3el8cs7nn] {
    background-color: #fff3cd;
    color: #856404;
    border: 1px solid #ffeaa7;
}

.indicator.stale[b-f3el8cs7nn] {
    background-color: #f8d7da;
    color: #721c24;
    border: 1px solid #f5c6cb;
}

/* Instrument grid: each instrument's controls sit directly below it. */
.lab-content[b-f3el8cs7nn] {
    display: grid;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.4fr);
    grid-template-areas:
        "scope circuit"
        "display generator";
    gap: 12px;
    margin-bottom: 12px;
    align-items: start;
}

.oscilloscope-section[b-f3el8cs7nn] {
    grid-area: scope;
}

.display-controls-section[b-f3el8cs7nn] {
    grid-area: display;
}

.circuit-diagram-section[b-f3el8cs7nn] {
    grid-area: circuit;
}

.function-generator-section[b-f3el8cs7nn] {
    grid-area: generator;
}

/* Section styling */
.oscilloscope-section[b-f3el8cs7nn],
.display-controls-section[b-f3el8cs7nn],
.circuit-diagram-section[b-f3el8cs7nn],
.function-generator-section[b-f3el8cs7nn],
.control-panel-section[b-f3el8cs7nn],
.status-panel-section[b-f3el8cs7nn] {
    min-width: 0;
    background: #fff;
    border: 1px solid #d1d1d1;
    border-radius: 8px;
    padding: 12px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.display-controls-section[b-f3el8cs7nn] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.display-controls-section > .section-header[b-f3el8cs7nn] {
    grid-column: 1 / -1;
    justify-self: start;
    margin-bottom: 0;
}

.display-controls-section .control-group[b-f3el8cs7nn],
.display-controls-section .channel-controls[b-f3el8cs7nn],
.display-controls-section .frequency-display[b-f3el8cs7nn] {
    margin: 0;
}

.section-header[b-f3el8cs7nn] {
    background: #0078D4;
    color: white;
    padding: 6px 12px;
    border-radius: 4px;
    font-size: 0.9rem;
    font-weight: 600;
    margin-bottom: 12px;
    display: inline-block;
}

.control-subheader[b-f3el8cs7nn] {
    font-size: 0.8rem;
    font-weight: 600;
    color: #0078D4;
    margin: 12px 0 8px;
    text-align: center;
}

/* Display controls */
.control-group[b-f3el8cs7nn] {
    margin-bottom: 12px;
}

.control-group label[b-f3el8cs7nn] {
    display: block;
    font-size: 0.8rem;
    font-weight: 600;
    color: #333;
    margin-bottom: 4px;
}

.channel-controls[b-f3el8cs7nn],
.cursor-controls[b-f3el8cs7nn] {
    background: #fafafa;
    border: 1px solid #e0e0e0;
    border-radius: 6px;
    padding: 10px;
    margin-top: 10px;
}

.channel-controls[b-f3el8cs7nn]  .e-checkbox-wrapper,
.cursor-controls[b-f3el8cs7nn]  .e-checkbox-wrapper {
    margin-bottom: 6px;
    display: block;
}

/* Frequency display */
.frequency-display[b-f3el8cs7nn] {
    background: #fafafa;
    border: 1px solid #e0e0e0;
    border-radius: 6px;
    padding: 10px;
    margin-top: 10px;
    text-align: center;
}

.freq-value[b-f3el8cs7nn] {
    font-size: 1.2rem;
    font-weight: bold;
    color: #0078D4;
}

/* Circuit diagram */
.circuit-image[b-f3el8cs7nn] {
    background: #fafafa;
    border: 1px solid #e0e0e0;
    border-radius: 6px;
    padding: 10px;
    text-align: center;
    height: 350px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.circuit-image img[b-f3el8cs7nn] {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

/* Session controls row */
.bottom-controls[b-f3el8cs7nn] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

/* Function Generator */
.fgen-controls[b-f3el8cs7nn] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 16px 12px;
    align-items: start;
}

.fgen-control:nth-child(1)[b-f3el8cs7nn],
.fgen-control:nth-child(2)[b-f3el8cs7nn] {
    grid-column: 1 / -1;
}

.fgen-control[b-f3el8cs7nn] {
    display: flex;
    flex-direction: column;
}

.fgen-control label[b-f3el8cs7nn] {
    font-size: 0.8rem;
    font-weight: 600;
    color: #333;
    margin-bottom: 8px;
    text-align: center;
}

.fgen-control .value-display[b-f3el8cs7nn] {
    text-align: center;
    font-size: 0.9rem;
    font-weight: 600;
    color: #0078D4;
    margin-top: 8px;
}

.wave-type-buttons[b-f3el8cs7nn] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px 10px;
}

.wave-type-buttons[b-f3el8cs7nn]  .e-radio-wrapper {
    margin: 3px 0;
}

.fgen-apply[b-f3el8cs7nn] {
    display: flex;
    justify-content: center;
    align-items: center;
    padding-top: 20px;
}

/* Control buttons */
.control-buttons[b-f3el8cs7nn] {
    display: flex;
    gap: 10px;
    justify-content: center;
    margin-top: 10px;
}

.control-buttons[b-f3el8cs7nn]  .e-btn {
    min-width: 80px;
    height: 36px;
    font-weight: 600;
}

.start-btn[b-f3el8cs7nn]  .e-btn {
    background-color: #107C10;
}

.stop-btn[b-f3el8cs7nn]  .e-btn {
    background-color: #E81123;
}

/* Status panel */
.status-info[b-f3el8cs7nn] {
    font-size: 0.85rem;
}

.status-row[b-f3el8cs7nn] {
    display: flex;
    justify-content: space-between;
    padding: 6px 0;
    border-bottom: 1px solid #f0f0f0;
}

.status-row:last-child[b-f3el8cs7nn] {
    border-bottom: none;
}

.status-label[b-f3el8cs7nn] {
    color: #666;
}

.status-value[b-f3el8cs7nn] {
    font-weight: 600;
}

.status-value.online[b-f3el8cs7nn] {
    color: #107C10;
}

.status-value.offline[b-f3el8cs7nn] {
    color: #E81123;
}

/* Progress overlay */
.progress-overlay[b-f3el8cs7nn] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.4);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    z-index: 1000;
    color: white;
    font-weight: 600;
}

.spinner[b-f3el8cs7nn] {
    width: 40px;
    height: 40px;
    border: 4px solid rgba(255, 255, 255, 0.3);
    border-top-color: white;
    border-radius: 50%;
    animation: spin-b-f3el8cs7nn 1s linear infinite;
}

@keyframes spin-b-f3el8cs7nn {
    to { transform: rotate(360deg); }
}

/* Error banner */
.error-banner[b-f3el8cs7nn] {
    position: fixed;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    background: #E81123;
    color: white;
    padding: 12px 20px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    gap: 12px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
    z-index: 1001;
}

.dismiss-btn[b-f3el8cs7nn] {
    background: transparent;
    border: none;
    color: white;
    font-size: 1.2rem;
    cursor: pointer;
    padding: 0 4px;
}

.dismiss-btn:hover[b-f3el8cs7nn] {
    opacity: 0.8;
}

/* Status banner */
.status-banner[b-f3el8cs7nn] {
    position: fixed;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    background: #0078D4;
    color: white;
    padding: 12px 20px;
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
    z-index: 1000;
}

@media (max-width: 768px) {
    .fgen-controls[b-f3el8cs7nn] {
        grid-template-columns: 1fr;
    }

    .lab-header[b-f3el8cs7nn] {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
}

/* Syncfusion component overrides */
[b-f3el8cs7nn] .e-slider-container {
    margin: 8px 0;
}

[b-f3el8cs7nn] .e-ddl .e-input-group {
    border-radius: 4px;
}

[b-f3el8cs7nn] .e-checkbox-wrapper .e-label {
    font-size: 0.8rem;
}

[b-f3el8cs7nn] .e-radio-wrapper .e-label {
    font-size: 0.8rem;
}

/* Chart styling */
[b-f3el8cs7nn] .e-chart {
    border: 1px solid #e0e0e0;
    border-radius: 6px;
}

/* Workbench split layout: instruments on the left, collapsible guidance on the right. */
.lab-workbench[b-f3el8cs7nn] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 400px;
    height: calc(100vh - 49px);
    width: 100%;
    overflow: hidden;
    background-color: #f8fafc;
    transition: grid-template-columns 0.25s ease-in-out;
}

.lab-workbench.sidebar-collapsed[b-f3el8cs7nn] {
    grid-template-columns: minmax(0, 1fr) 260px;
}

.dark .lab-workbench[b-f3el8cs7nn] {
    background-color: #020617;
}

.workbench-sidebar[b-f3el8cs7nn] {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
    height: 100%;
    padding: 12px;
    border-left: 1px solid #e2e8f0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    gap: 12px;
    box-sizing: border-box;
}

.dark .workbench-sidebar[b-f3el8cs7nn] {
    border-color: #1e293b;
}

.workbench-sidebar.collapsed[b-f3el8cs7nn] {
    padding: 12px 8px;
}

.manual-slot[b-f3el8cs7nn],
.assistant-slot[b-f3el8cs7nn] {
    min-height: 0;
}

.manual-slot[b-f3el8cs7nn] {
    flex: 1 1 58%;
}

.assistant-slot[b-f3el8cs7nn] {
    flex: 1 1 42%;
}

.manual-slot.collapsed[b-f3el8cs7nn],
.assistant-slot.collapsed[b-f3el8cs7nn] {
    flex: 0 0 auto;
}

.manual-slot[b-f3el8cs7nn]  .lab-manual-panel,
.assistant-slot[b-f3el8cs7nn]  .assistant-panel {
    height: 100%;
    max-height: none;
    margin-top: 0;
}

.assistant-slot[b-f3el8cs7nn]  .assistant-transcript {
    min-height: 0;
}

.manual-slot.collapsed[b-f3el8cs7nn]  .lab-manual-panel,
.assistant-slot.collapsed[b-f3el8cs7nn]  .assistant-panel {
    height: auto;
}

.workbench-main[b-f3el8cs7nn] {
    grid-column: 1;
    grid-row: 1;
    min-width: 0;
    height: 100%;
    overflow-y: auto;
    padding: 16px;
    box-sizing: border-box;
    container: lab-main / inline-size;
}

@container lab-main (max-width: 700px) {
    .lab-content[b-f3el8cs7nn] {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas:
            "scope"
            "display"
            "circuit"
            "generator";
    }

    .bottom-controls[b-f3el8cs7nn],
    .fgen-controls[b-f3el8cs7nn],
    .display-controls-section[b-f3el8cs7nn] {
        grid-template-columns: minmax(0, 1fr);
    }

    .display-controls-section > .section-header[b-f3el8cs7nn] {
        grid-column: 1;
    }
}

@media (max-width: 900px) {
    .lab-workbench[b-f3el8cs7nn],
    .lab-workbench.sidebar-collapsed[b-f3el8cs7nn] {
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: auto auto;
        height: auto;
        overflow-y: auto;
    }

    .workbench-sidebar[b-f3el8cs7nn],
    .workbench-sidebar.collapsed[b-f3el8cs7nn] {
        grid-column: 1;
        grid-row: 2;
        width: 100%;
        min-width: 0;
        height: min(70vh, 720px);
        border-left: none;
        border-top: 1px solid #e2e8f0;
    }

    .workbench-sidebar.collapsed[b-f3el8cs7nn] {
        height: auto;
    }

    .workbench-main[b-f3el8cs7nn] {
        grid-column: 1;
        grid-row: 1;
        width: 100%;
        height: auto;
        overflow: visible;
    }
}

.indicator.pending[b-f3el8cs7nn] {
    background-color: #e7f1fb;
    color: #0b4f8a;
    border: 1px solid #bcd9f5;
}

/* Waiting-for-new-waveform overlay.
   Applying a signal discards the frames still in flight from the previous one,
   so the plot is genuinely empty until a frame captured at the new settings
   arrives. This covers that gap rather than leaving a blank chart, which reads
   as a fault. pointer-events: none so the scope controls stay usable. */
.scope-viewport[b-f3el8cs7nn] {
    position: relative;
    flex: 1;
    min-height: 0;
}

.scope-overlay[b-f3el8cs7nn] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.78);
    border-radius: 6px;
    z-index: 2;
    pointer-events: none;
}

.scope-overlay-card[b-f3el8cs7nn] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    max-width: 280px;
    padding: 16px 20px;
    text-align: center;
    background: #fff;
    border: 1px solid #bcd9f5;
    border-radius: 8px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);
}

.scope-overlay-title[b-f3el8cs7nn] {
    font-size: 0.9rem;
    font-weight: 600;
    color: #0b4f8a;
}

.scope-overlay-detail[b-f3el8cs7nn] {
    font-size: 0.75rem;
    line-height: 1.35;
    color: #5a6b7b;
}

.scope-spinner[b-f3el8cs7nn] {
    width: 22px;
    height: 22px;
    border: 3px solid #d7e6f5;
    border-top-color: #0078D4;
    border-radius: 50%;
    animation: scope-spin-b-f3el8cs7nn 0.8s linear infinite;
}

@keyframes scope-spin-b-f3el8cs7nn {
    to { transform: rotate(360deg); }
}

/* Honours a reduced-motion preference: the overlay still communicates the wait
   through its text, so the spin is decoration we can drop. */
@media (prefers-reduced-motion: reduce) {
    .scope-spinner[b-f3el8cs7nn] { animation: none; }
}


/* ---------------------------------------------------------------------------
   Dark mode.

   The layout flips the page to the app's dark tokens on its own, but every rule
   above that states its own colour keeps it — which is how a heading ends up
   near-black on near-black. Each hardcoded light surface and dark text colour
   therefore needs a counterpart here.

   Palette follows the tokens in tailwind-output.css (slate: --background #020617,
   --surface #0f172a) rather than introducing a second dark scheme.
   --------------------------------------------------------------------------- */

.dark .lab-container[b-f3el8cs7nn] {
    background-color: #020617;
}

.dark .lab-access-gate[b-f3el8cs7nn] {
    color: #94a3b8;
}

.dark .lab-access-gate.no-access[b-f3el8cs7nn] {
    background: #0f172a;
    border-color: #334155;
}

.dark .lab-access-gate h3[b-f3el8cs7nn] {
    color: #e2e8f0;
}

.dark .lab-access-gate p[b-f3el8cs7nn] {
    color: #94a3b8;
}

.dark .lab-header h2[b-f3el8cs7nn] {
    color: #f1f5f9;
}

.dark .oscilloscope-section[b-f3el8cs7nn],
.dark .display-controls-section[b-f3el8cs7nn],
.dark .circuit-diagram-section[b-f3el8cs7nn],
.dark .function-generator-section[b-f3el8cs7nn],
.dark .control-panel-section[b-f3el8cs7nn],
.dark .status-panel-section[b-f3el8cs7nn] {
    background: #0f172a;
    border-color: #1e293b;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45);
}

/* Inset surfaces sit below the panel they live in, as they do in light mode. */
.dark .channel-controls[b-f3el8cs7nn],
.dark .cursor-controls[b-f3el8cs7nn],
.dark .frequency-display[b-f3el8cs7nn],
.dark .circuit-image[b-f3el8cs7nn] {
    background: #0b1220;
    border-color: #1e293b;
}

.dark .control-group label[b-f3el8cs7nn],
.dark .fgen-control label[b-f3el8cs7nn] {
    color: #cbd5e1;
}

/* #0078D4 is a light-mode accent: on #0f172a it is too dark to read as emphasis. */
.dark .control-subheader[b-f3el8cs7nn],
.dark .freq-value[b-f3el8cs7nn],
.dark .fgen-control .value-display[b-f3el8cs7nn] {
    color: #38bdf8;
}

.dark .status-row[b-f3el8cs7nn] {
    border-bottom-color: #1e293b;
}

/* The light-mode green and red are chosen against white; on #0f172a they sit close to
   the ground, so the status they carry stops reading at a glance. */
.dark .connection-status.connected[b-f3el8cs7nn],
.dark .status-value.online[b-f3el8cs7nn] {
    color: #4ade80;
}

.dark .connected .status-dot[b-f3el8cs7nn] {
    background-color: #4ade80;
}

.dark .connection-status.disconnected[b-f3el8cs7nn],
.dark .status-value.offline[b-f3el8cs7nn] {
    color: #f87171;
}

.dark .disconnected .status-dot[b-f3el8cs7nn] {
    background-color: #f87171;
}

.dark .status-label[b-f3el8cs7nn] {
    color: #94a3b8;
}

/* Tinted state chips: the light pastels turn to washes over the dark ground so the
   text carries the meaning rather than the fill. */
.dark .indicator.fresh[b-f3el8cs7nn] {
    background-color: rgba(22, 163, 74, 0.16);
    color: #86efac;
    border-color: rgba(22, 163, 74, 0.35);
}

.dark .indicator.warning[b-f3el8cs7nn] {
    background-color: rgba(234, 179, 8, 0.16);
    color: #fde68a;
    border-color: rgba(234, 179, 8, 0.35);
}

.dark .indicator.stale[b-f3el8cs7nn] {
    background-color: rgba(239, 68, 68, 0.16);
    color: #fca5a5;
    border-color: rgba(239, 68, 68, 0.4);
}

.dark .indicator.pending[b-f3el8cs7nn] {
    background-color: rgba(56, 189, 248, 0.14);
    color: #7dd3fc;
    border-color: rgba(56, 189, 248, 0.35);
}

/* ::deep needs a scoped element ahead of it — with `.dark` alone the scope attribute
   lands on the <html> element, which never carries it, and the rule dies. */
.dark .oscilloscope-section[b-f3el8cs7nn]  .e-chart {
    border-color: #1e293b;
}

.dark .scope-overlay[b-f3el8cs7nn] {
    background: rgba(2, 6, 23, 0.82);
}

.dark .scope-overlay-card[b-f3el8cs7nn] {
    background: #0f172a;
    border-color: #1e40af;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.5);
}

.dark .scope-overlay-title[b-f3el8cs7nn] {
    color: #7dd3fc;
}

.dark .scope-overlay-detail[b-f3el8cs7nn] {
    color: #94a3b8;
}

.dark .scope-spinner[b-f3el8cs7nn] {
    border-color: #1e293b;
    border-top-color: #38bdf8;
}
/* /LabClients/OpampInvAndNonInv/OpampInvAndNonInv.razor.rz.scp.css */
/* OpampInvAndNonInv.razor.css - Responsive styles for Opamp Inverting & Non-Inverting Lab */

/* Schedule access gate */
.lab-access-gate[b-uffua4kgj1] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    gap: 16px;
    color: #64748b;
}

.lab-access-gate.no-access[b-uffua4kgj1] {
    text-align: center;
    padding: 3rem;
    background: #f8fafc;
    border-radius: 12px;
    border: 2px dashed #e2e8f0;
    margin: 2rem auto;
    max-width: 480px;
}

.lab-access-gate .gate-icon[b-uffua4kgj1] { font-size: 3rem; margin-bottom: 0.5rem; }
.lab-access-gate h3[b-uffua4kgj1] { color: #334155; margin: 0.5rem 0; }
.lab-access-gate p[b-uffua4kgj1] { color: #64748b; margin-bottom: 1.5rem; }

/* In-progress command overlay */
.progress-overlay[b-uffua4kgj1] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    z-index: 1000;
    color: white;
    font-weight: 500;
}

.progress-overlay .spinner[b-uffua4kgj1] {
    width: 36px;
    height: 36px;
    border: 3px solid rgba(255,255,255,0.3);
    border-top-color: white;
    border-radius: 50%;
    animation: spin-b-uffua4kgj1 0.8s linear infinite;
}

@keyframes spin-b-uffua4kgj1 {
    to { transform: rotate(360deg); }
}

/* Workbench split layout: instruments scroll independently while guidance stays
   docked at the right edge of the lab, matching the Low Pass Filter lab. */
.lab-workbench[b-uffua4kgj1] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 400px;
    height: calc(100vh - 49px);
    width: 100%;
    overflow: hidden;
    background: #f8fafc;
    transition: grid-template-columns 0.25s ease-in-out;
}

.lab-workbench.sidebar-collapsed[b-uffua4kgj1] {
    grid-template-columns: minmax(0, 1fr) 260px;
}

.workbench-main[b-uffua4kgj1] {
    grid-column: 1;
    grid-row: 1;
    min-width: 0;
    height: 100%;
    overflow-y: auto;
    padding: 16px;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    gap: 12px;
    container: opamp-main / inline-size;
}

.workbench-sidebar[b-uffua4kgj1] {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
    height: 100%;
    padding: 12px;
    border-left: 1px solid #e2e8f0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    gap: 12px;
    box-sizing: border-box;
}

.workbench-sidebar.collapsed[b-uffua4kgj1] {
    padding: 12px 8px;
}

.manual-slot[b-uffua4kgj1],
.assistant-slot[b-uffua4kgj1] {
    min-height: 0;
}

.manual-slot[b-uffua4kgj1] {
    flex: 1 1 58%;
}

.assistant-slot[b-uffua4kgj1] {
    flex: 1 1 42%;
}

.manual-slot.collapsed[b-uffua4kgj1],
.assistant-slot.collapsed[b-uffua4kgj1] {
    flex: 0 0 auto;
}

.manual-slot[b-uffua4kgj1]  .lab-manual-panel,
.assistant-slot[b-uffua4kgj1]  .assistant-panel {
    height: 100%;
    max-height: none;
    margin-top: 0;
}

.assistant-slot[b-uffua4kgj1]  .assistant-transcript {
    min-height: 0;
}

.manual-slot.collapsed[b-uffua4kgj1]  .lab-manual-panel,
.assistant-slot.collapsed[b-uffua4kgj1]  .assistant-panel {
    height: auto;
}

.lab-header[b-uffua4kgj1] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: white;
    padding: 0.75rem 1.25rem;
    border-radius: 8px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.1);
}

.lab-header h2[b-uffua4kgj1] {
    margin: 0;
    color: #1e3a8a;
    font-size: 1.35rem;
}

.connection-status[b-uffua4kgj1] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.9rem;
    border-radius: 16px;
    font-weight: 500;
    font-size: 0.8rem;
}

.connection-status.connected[b-uffua4kgj1] {
    background: #d1fae5;
    color: #059669;
}

.connection-status.disconnected[b-uffua4kgj1] {
    background: #fee2e2;
    color: #dc2626;
}

.status-dot[b-uffua4kgj1] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: currentColor;
}

.data-quality-panel[b-uffua4kgj1] {
    display: flex;
    gap: 0.75rem;
}

.indicator[b-uffua4kgj1] {
    padding: 0.25rem 0.6rem;
    border-radius: 4px;
    font-size: 0.7rem;
    font-weight: 500;
}

.indicator.fresh[b-uffua4kgj1] {
    background: #d1fae5;
    color: #059669;
}

.indicator.stale[b-uffua4kgj1] {
    background: #fef3c7;
    color: #d97706;
}

.indicator.very-stale[b-uffua4kgj1] {
    background: #fee2e2;
    color: #dc2626;
}

.indicator.warning[b-uffua4kgj1] {
    background: #fee2e2;
    color: #dc2626;
}

/* Main Content Grid: Balanced 2-column layout */
.lab-content[b-uffua4kgj1] {
    display: grid;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.4fr);
    gap: 0.75rem;
    margin-bottom: 0.75rem;
    align-items: start;
}

.lab-column[b-uffua4kgj1] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-width: 0;
}

.oscilloscope-section[b-uffua4kgj1],
.display-controls-section[b-uffua4kgj1],
.circuit-section[b-uffua4kgj1],
.function-generator-section[b-uffua4kgj1] {
    min-width: 0;
    background: white;
    border-radius: 10px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    padding: 1rem;
    display: flex;
    flex-direction: column;
}

.section-header[b-uffua4kgj1] {
    background: #0078D4;
    color: white;
    padding: 6px 12px;
    border-radius: 4px;
    font-size: 0.9rem;
    font-weight: 600;
    margin-bottom: 12px;
    display: inline-block;
    align-self: flex-start;
}

/* Display & DMM Section */
.display-controls-grid[b-uffua4kgj1] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.display-controls-grid .control-group[b-uffua4kgj1] {
    margin-bottom: 0.5rem;
}

.display-controls-grid label[b-uffua4kgj1] {
    display: block;
    font-size: 0.8rem;
    color: #334155;
    font-weight: 600;
    margin-bottom: 0.25rem;
}

.channels-section[b-uffua4kgj1],
.dmm-section[b-uffua4kgj1] {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    padding: 0.5rem;
}

.channels-toggles[b-uffua4kgj1] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.section-label[b-uffua4kgj1] {
    font-size: 0.75rem;
    font-weight: 600;
    color: #0078D4;
    margin-bottom: 0.35rem;
    text-align: center;
}

.dmm-display[b-uffua4kgj1] {
    background: #0f172a;
    color: #22d3ee;
    font-family: 'Consolas', monospace;
    font-size: 0.95rem;
    padding: 0.35rem;
    border-radius: 4px;
    text-align: center;
    margin-bottom: 0.35rem;
}

.dmm-btn[b-uffua4kgj1] {
    width: 100%;
    height: 32px;
    font-size: 0.8rem;
}

/* Circuit Schematic */
.circuit-section .circuit-image[b-uffua4kgj1] {
    height: 350px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 0.25rem;
    overflow: hidden;
}

.circuit-image-stack[b-uffua4kgj1] {
    position: relative;
    width: 100%;
    height: 100%;
}

.circuit-frame[b-uffua4kgj1] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    opacity: 0;
    transition: opacity 0.12s ease;
    pointer-events: none;
}

.circuit-frame.active[b-uffua4kgj1] {
    opacity: 1;
}

.circuit-caption[b-uffua4kgj1] {
    font-size: 0.75rem;
    color: #64748b;
    text-align: center;
    margin-top: 6px;
    font-weight: 500;
}

/* Circuit Switches immediately below circuit schematic */
.circuit-switches[b-uffua4kgj1] {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 1.5rem;
    margin-top: 10px;
    padding: 8px 12px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    flex-wrap: wrap;
}

.switch-row[b-uffua4kgj1] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0;
    background: transparent;
    border: none;
}

.switch-label[b-uffua4kgj1] {
    font-size: 0.82rem;
    font-weight: 600;
    color: #334155;
    min-width: 28px;
    text-align: right;
}

/* Function Generator Controls (extended full width) */
.generator-controls-wrapper[b-uffua4kgj1] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    width: 100%;
}

.fg-control[b-uffua4kgj1] {
    display: flex;
    flex-direction: column;
    width: 100%;
}

.fg-control label[b-uffua4kgj1] {
    font-size: 0.8rem;
    font-weight: 600;
    color: #333;
    margin-bottom: 4px;
    text-align: center;
}

.fg-control .value-display[b-uffua4kgj1] {
    text-align: center;
    font-size: 0.85rem;
    font-weight: 600;
    color: #0078D4;
    margin-top: 4px;
}

.radio-group[b-uffua4kgj1] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 4px 8px;
}

.fg-button[b-uffua4kgj1] {
    display: flex;
    justify-content: center;
    margin-top: 4px;
}

.apply-btn[b-uffua4kgj1] {
    height: 34px;
    padding: 0 1.25rem;
}

/* Bottom controls row */
.bottom-controls[b-uffua4kgj1] {
    display: grid;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.4fr);
    gap: 0.75rem;
    align-items: center;
}

.action-buttons-card[b-uffua4kgj1],
.system-info-card[b-uffua4kgj1] {
    background: white;
    border-radius: 8px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.08);
    padding: 0.6rem 1rem;
}

.action-buttons[b-uffua4kgj1] {
    display: flex;
    gap: 0.75rem;
    justify-content: stretch;
}

.action-buttons .e-btn[b-uffua4kgj1] {
    flex: 1;
    height: 38px;
    font-size: 0.85rem;
    font-weight: 600;
}

.system-info-card .status-row[b-uffua4kgj1] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 0.8rem;
}

.status-text[b-uffua4kgj1] {
    color: #059669;
    font-weight: 500;
}

.error-text[b-uffua4kgj1] {
    color: #dc2626;
    font-weight: 500;
}

.server-status[b-uffua4kgj1] {
    color: #64748b;
}

/* Scope viewport & overlay */
.scope-viewport[b-uffua4kgj1] {
    position: relative;
    width: 100%;
    min-height: 350px;
}

.scope-overlay[b-uffua4kgj1] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.78);
    border-radius: 6px;
    z-index: 2;
    pointer-events: none;
}

.scope-overlay-card[b-uffua4kgj1] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    max-width: 280px;
    padding: 16px 20px;
    text-align: center;
    background: #fff;
    border: 1px solid #bcd9f5;
    border-radius: 8px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);
}

.scope-overlay-title[b-uffua4kgj1] {
    font-size: 0.9rem;
    font-weight: 600;
    color: #0b4f8a;
}

.scope-overlay-detail[b-uffua4kgj1] {
    font-size: 0.75rem;
    line-height: 1.35;
    color: #5a6b7b;
}

.scope-spinner[b-uffua4kgj1] {
    width: 22px;
    height: 22px;
    border: 3px solid #d7e6f5;
    border-top-color: #0078D4;
    border-radius: 50%;
    animation: scope-spin-b-uffua4kgj1 0.8s linear infinite;
}

@keyframes scope-spin-b-uffua4kgj1 {
    to { transform: rotate(360deg); }
}

/* Adapt the instrument grid to the space left after the dock, not the viewport. */
@container opamp-main (max-width: 700px) {
    .lab-content[b-uffua4kgj1] {
        grid-template-columns: minmax(0, 1fr);
    }

    .bottom-controls[b-uffua4kgj1],
    .display-controls-grid[b-uffua4kgj1] {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 900px) {
    .lab-workbench[b-uffua4kgj1],
    .lab-workbench.sidebar-collapsed[b-uffua4kgj1] {
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: auto auto;
        height: auto;
        overflow-y: auto;
    }

    .workbench-sidebar[b-uffua4kgj1],
    .workbench-sidebar.collapsed[b-uffua4kgj1] {
        grid-column: 1;
        grid-row: 2;
        width: 100%;
        min-width: 0;
        height: min(70vh, 720px);
        border-left: none;
        border-top: 1px solid #e2e8f0;
    }

    .workbench-sidebar.collapsed[b-uffua4kgj1] {
        height: auto;
    }

    .workbench-main[b-uffua4kgj1] {
        grid-column: 1;
        grid-row: 1;
        width: 100%;
        height: auto;
        overflow: visible;
    }
}

/* Dark Mode */
.dark .lab-workbench[b-uffua4kgj1] {
    background: #020617;
}

.dark .workbench-sidebar[b-uffua4kgj1] {
    border-color: #1e293b;
}

.dark .lab-header[b-uffua4kgj1] {
    background: #0f172a;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}

.dark .lab-header h2[b-uffua4kgj1] {
    color: #60a5fa;
}

.dark .oscilloscope-section[b-uffua4kgj1],
.dark .circuit-section[b-uffua4kgj1],
.dark .function-generator-section[b-uffua4kgj1],
.dark .display-controls-section[b-uffua4kgj1] {
    background: #0f172a;
    border-color: #1e293b;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}

.dark .circuit-section .circuit-image[b-uffua4kgj1],
.dark .circuit-switches[b-uffua4kgj1],
.dark .switch-row[b-uffua4kgj1],
.dark .channels-section[b-uffua4kgj1],
.dark .dmm-section[b-uffua4kgj1],
.dark .status-box[b-uffua4kgj1] {
    background: #0b1220;
    border-color: #1e293b;
}

.dark .status-box.has-error[b-uffua4kgj1] {
    background: rgba(239, 68, 68, 0.16);
    border-color: rgba(239, 68, 68, 0.45);
}

.dark .fg-control label[b-uffua4kgj1],
.dark .display-controls-grid label[b-uffua4kgj1],
.dark .switch-label[b-uffua4kgj1] {
    color: #cbd5e1;
}

.dark .connection-status.connected[b-uffua4kgj1] {
    background: rgba(16, 185, 129, 0.16);
    color: #6ee7b7;
}

.dark .connection-status.disconnected[b-uffua4kgj1] {
    background: rgba(239, 68, 68, 0.16);
    color: #fca5a5;
}

.dark .indicator.fresh[b-uffua4kgj1] {
    background: rgba(16, 185, 129, 0.16);
    color: #6ee7b7;
}

.dark .indicator.stale[b-uffua4kgj1] {
    background: rgba(234, 179, 8, 0.16);
    color: #fde68a;
}

.dark .indicator.very-stale[b-uffua4kgj1],
.dark .indicator.warning[b-uffua4kgj1] {
    background: rgba(239, 68, 68, 0.16);
    color: #fca5a5;
}

.dark .scope-overlay[b-uffua4kgj1] {
    background: rgba(2, 6, 23, 0.82);
}

.dark .scope-overlay-card[b-uffua4kgj1] {
    background: #0f172a;
    border-color: #1e40af;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.5);
}

.dark .scope-overlay-title[b-uffua4kgj1] {
    color: #7dd3fc;
}

.dark .scope-overlay-detail[b-uffua4kgj1] {
    color: #94a3b8;
}

.dark .scope-spinner[b-uffua4kgj1] {
    border-color: #1e293b;
    border-top-color: #38bdf8;
}
