/* ── WorkerDocumentGrid.razor ── */
.docrev-grid-body { min-height: 360px; }
.docrev-empty-state { display:flex; flex-direction:column; align-items:center; justify-content:center; padding:3rem 1rem; color:var(--atlas-gray-500); }
.docrev-empty-state i { font-size:3rem; opacity:.25; }
.docrev-grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 14px; }

.docrev-card {
    position: relative;
    background: var(--atlas-white);
    border: 2px solid var(--atlas-gray-200);
    border-radius: 10px;
    padding: 14px;
    min-height: 130px;
    cursor: pointer;
    transition: transform .12s, box-shadow .12s, border-color .12s;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.docrev-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0,0,0,.07); }
.docrev-card .docrev-card-icon {
    width: 36px; height: 36px; border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.2rem;
}
.docrev-card .docrev-card-title { font-weight: 600; font-size: .82rem; color: var(--atlas-gray-900); line-height: 1.25; }
.docrev-card .docrev-card-meta  { font-size: .7rem; color: var(--atlas-gray-500); }
.docrev-card .docrev-card-state {
    font-size: .68rem; text-transform: uppercase; letter-spacing: .04em; font-weight: 700;
    padding: 2px 8px; border-radius: 999px; align-self: flex-start;
}
.docrev-card .docrev-mandatory-badge {
    position: absolute; top: 8px; right: 8px;
    font-size: .6rem; color:var(--atlas-red-600); font-weight:700;
}

.docrev-card.state-empty   { border-style: dashed; border-color: var(--atlas-gray-300); }
.docrev-card.state-empty   .docrev-card-icon  { background:var(--atlas-gray-100); color:var(--atlas-gray-400); }
.docrev-card.state-empty   .docrev-card-state { background:var(--atlas-gray-100); color:var(--atlas-gray-500); }

.docrev-card.state-draft           { border-color:var(--atlas-yellow-400); background:var(--atlas-amber-50); }
.docrev-card.state-draft           .docrev-card-icon  { background:var(--atlas-amber-100); color:var(--atlas-yellow-700); }
.docrev-card.state-draft           .docrev-card-state { background:var(--atlas-amber-100); color:var(--atlas-yellow-800); }

.docrev-card.state-pending_review  { border-color:var(--atlas-orange-500); background:var(--atlas-orange-50); }
.docrev-card.state-pending_review  .docrev-card-icon  { background:var(--atlas-orange-100); color:var(--atlas-orange-800); }
.docrev-card.state-pending_review  .docrev-card-state { background:var(--atlas-orange-100); color:var(--atlas-orange-800); }

.docrev-card.state-validated       { border-color:var(--atlas-emerald-500); background:var(--atlas-emerald-50); }
.docrev-card.state-validated       .docrev-card-icon  { background:var(--atlas-emerald-100); color:var(--atlas-emerald-800); }
.docrev-card.state-validated       .docrev-card-state { background:var(--atlas-emerald-100); color:var(--atlas-emerald-800); }

.docrev-card.state-rejected        { border-color:var(--atlas-red-500); background:var(--atlas-red-50); }
.docrev-card.state-rejected        .docrev-card-icon  { background:var(--atlas-red-100); color:var(--atlas-red-800); }
.docrev-card.state-rejected        .docrev-card-state { background:var(--atlas-red-100); color:var(--atlas-red-800); }

/* .docrev-active-toggle-wrap/.docrev-active-state/.docrev-switch* eliminados: el switch
   Active/Inactive del panel derecho de Documentation Review se retiro (estado ahora solo
   lectura, visible en la columna Status de la tabla). */

/* ── WorkerTableComponent.razor ── */
/* :root/.asset-dashboard/.dashboard-card/.kpi-stat-card/.kpi-icon-wrapper/.kpi-content/.kpi-value/
   .kpi-label/.accent-primary/success/warning/info/.dashboard-banner/.banner-title/.banner-subtitle/
   .master-card/.kpi-clickable/.kpi-active-filter eliminados: cubiertos por
   wwwroot/css/components/kpiDashboard.css (drift puro, mismos valores salvo padding/tamaños ya
   unificados por el canónico). .filter-chip* eliminado sin mover: copia idéntica byte a byte a la
   ya centralizada aquí mismo (sección Credentials.razor). .banner-title NO colisiona con
   AccessControlDashboard.razor.css: ese fichero es Blazor CSS isolation (scoped, no global), la
   preocupación del agente anterior no aplicaba. Selectores propios del componente: */
#workers-tabs .nav-link { border: none; border-bottom: 2px solid transparent; background: none; color: var(--text-secondary); padding: .625rem 1rem; font-weight: 500; }
#workers-tabs .nav-link.active { color: var(--kpi-primary); border-bottom-color: var(--kpi-primary); }
#workers-tabs .nav-link:hover:not(.active) { color: var(--text-primary); }

.diag-result { padding: .5rem .75rem; border-radius: 6px; font-size: .85rem; display: flex; align-items: center; gap: .4rem; margin-top: .5rem; }
.diag-ok    { background: rgba(16,185,129,.08); border: 1px solid rgba(16,185,129,.2); color: var(--atlas-emerald-800); }
.diag-error { background: rgba(239,68,68,.08); border: 1px solid rgba(239,68,68,.2);  color: var(--atlas-red-800); }

/* ── Calendar grid (nota: coincide byte a byte con la CSS que wwwroot/js/shared/atlas-calendar.js
   inyecta en runtime para AccessLogs.razor — implementaciones independientes convergentes, no el
   mismo recurso; duplicación inofensiva, candidata a unificar en un futuro) ── */
.cal-grid-header { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; margin-bottom: 4px; }
.cal-grid-header > div { text-align: center; font-size: .7rem; font-weight: 700; color: var(--text-secondary); padding: 4px 0; text-transform: uppercase; }
.cal-weeks { display: flex; flex-direction: column; gap: 2px; }
.cal-week { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.cal-day { min-height: 56px; border: 1px solid rgba(0,0,0,.07); border-radius: 6px; padding: 3px 4px; background: var(--atlas-white); }
.cal-day.cal-other-month { background: var(--atlas-gray-50); opacity: .5; }
.cal-day.cal-today { border-color: var(--kpi-primary); border-width: 2px; }
.cal-day-num { font-size: .68rem; font-weight: 600; color: var(--text-secondary); margin-bottom: 2px; }
.cal-bar { height: 7px; border-radius: 3px; margin-bottom: 2px; font-size: 0; }
.cal-bar-in  { background: var(--atlas-emerald-500); }
.cal-bar-out { background: var(--atlas-blue-500); }
.cal-bar-other { background: var(--atlas-gray-400); }
.cal-bar-more { height: 7px; border-radius: 3px; margin-bottom: 2px; background: var(--atlas-gray-500); color: var(--atlas-white); font-size: 0.6rem; line-height: 7px; text-align: center; overflow: hidden; padding: 0 2px; }

/* ── Calendar empty state ── */
.cal-empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 3rem 1rem; color: var(--text-secondary); }
.cal-empty-state i { font-size: 3rem; opacity: .25; }

/* ── Timeline workers panel (right) ── */
.timeline-workers-scroll { max-height: 600px; overflow-y: auto; }
.timeline-table-compact td, .timeline-table-compact th { padding: .4rem .6rem !important; font-size: .82rem; }
.timeline-table-compact thead th { position: sticky; top: 0; background: var(--atlas-white); z-index: 1; font-size: .75rem; text-transform: uppercase; letter-spacing: .03em; color: var(--text-secondary); border-bottom: 1px solid rgba(0,0,0,.08); }
.timeline-row-clickable { cursor: pointer; }
.timeline-row-clickable:hover td { background: rgba(37,99,235,.04) !important; }
.timeline-row-active td { background: var(--atlas-color-primary-soft) !important; }
.timeline-row-active .tl-badge { color: var(--kpi-primary); font-weight: 700; }

/* ── Status dot ── */
.tl-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.tl-dot-active   { background: var(--atlas-emerald-500); }
.tl-dot-inactive { background: var(--atlas-gray-400); }

/* ── DocumentViewerModal.razor / DocumentUploadModal.razor ── */
/* Stacking: the viewer AND the upload popup are opened FROM other dialogs (worker Edit /
   approval "Review Worker" / Digital Passport, which are Bootstrap or inline-Blazor modals at
   z-index 1055), so they must always paint on top — otherwise they render behind them, dimmed
   and unclickable (the DOM-order tie at 1055 puts the shared modals, declared earlier in the
   page, underneath). They never stack on each other (Replace hides the viewer before opening
   the upload), so both share the same layer. Their backdrop is lifted to match in globalApp.js
   (delegated shown.bs.modal handler). */
#docrev-viewer-modal,
#docrev-upload-modal { z-index: 1065; }

.docrev-viewer-dialog { max-width: min(1300px, 96vw); }
.docrev-viewer-timeline {
    width: 300px;
    flex-shrink: 0;
    overflow-y: auto;
    height: min(72vh, 720px);
    padding: 1rem;
}
.docrev-timeline-item {
    padding: 0.75rem;
    border: 1px solid var(--atlas-gray-200);
    border-radius: 6px;
    margin-bottom: 0.75rem;
    background: var(--atlas-white);
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.docrev-timeline-item:hover { border-color: var(--atlas-slate-300); box-shadow: var(--atlas-shadow-1); }
.docrev-timeline-item.active { border-color: var(--atlas-blue-500); box-shadow: 0 0 0 1px var(--atlas-blue-500); }
.docrev-timeline-item-meta { font-size: 0.75rem; color: var(--atlas-gray-500); margin-top: 0.25rem; }

.docrev-viewer-surface {
    position: relative;
    background: var(--atlas-gray-800);
    flex-grow: 1;
    overflow: auto;
    display: flex; align-items: center; justify-content: center;
}
.docrev-viewer-img-holder {
    width: 100%; height: 100%;
    display: flex; align-items: center; justify-content: center;
    cursor: grab;
    user-select: none;
}
.docrev-viewer-img-holder:active { cursor: grabbing; }
.docrev-viewer-img-holder img {
    transform-origin: center center;
    transition: transform .08s linear;
    max-width: none; max-height: none;
    will-change: transform;
    background: var(--atlas-white);
    box-shadow: 0 4px 24px rgba(0,0,0,.4);
}
#docrev-viewer-pdf { width: 100%; height: 100%; border: 0; background: var(--atlas-white); }
.docrev-viewer-unsupported {
    display:flex; flex-direction:column; align-items:center; justify-content:center; color:#cbd5f5;
    padding: 3rem 1rem;
}
.docrev-viewer-unsupported i { font-size: 3rem; opacity: .5; }
.docrev-viewer-statusbar {
    display:flex; align-items:center; gap:.75rem;
    padding:.6rem 1rem; background:var(--atlas-gray-50); border-top:1px solid var(--atlas-gray-200);
}
.docrev-viewer-status-pill {
    font-size:.7rem; text-transform: uppercase; letter-spacing:.04em; font-weight:700;
    padding:2px 10px; border-radius: 999px;
    background:var(--atlas-gray-200); color:var(--atlas-gray-700);
}
.docrev-viewer-status-pill.is-validated { background:var(--atlas-emerald-100); color:var(--atlas-emerald-800); }
.docrev-viewer-status-pill.is-rejected  { background:var(--atlas-red-100); color:var(--atlas-red-800); }
.docrev-viewer-status-pill.is-pending   { background:var(--atlas-orange-100); color:var(--atlas-orange-800); }
.docrev-viewer-status-pill.is-draft     { background:var(--atlas-amber-100); color:var(--atlas-yellow-800); }
.docrev-reject-form { background:var(--atlas-red-50); padding:.75rem; border-radius:8px; }
.docrev-edit-form { background:var(--atlas-blue-50); padding:.75rem; border-radius:8px; }

/* Audit timeline styles */
.docrev-timeline-inactive { opacity: 0.65; }
.docrev-audit-events {
    margin-left: 1rem;
    padding-left: 1rem;
    border-left: 2px solid var(--atlas-gray-200);
    margin-bottom: 0.75rem;
}
.docrev-audit-event {
    display: flex;
    gap: 0.5rem;
    padding: 0.35rem 0;
    align-items: flex-start;
}
.docrev-audit-event-icon {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.85rem;
    margin-top: 1px;
}
.docrev-audit-event-body { flex: 1; min-width: 0; }
.docrev-audit-event-meta { font-size: 0.68rem; color: var(--atlas-gray-400); }
.docrev-audit-event-notes {
    font-size: 0.72rem;
    color: var(--atlas-gray-500);
    margin-top: 2px;
    font-style: italic;
    word-break: break-word;
}

/* ── WorkerCredentialsModal.razor ── */
.wcm-modal { background: rgba(15, 23, 42, .55); backdrop-filter: blur(2px); }
.wcm-content { border-radius: 16px; overflow: hidden; }
.wcm-header {
    border-bottom: 1px solid #eef0f4;
    padding: 1rem 1.25rem;
    background: linear-gradient(135deg, rgba(37, 99, 235, .06), rgba(37, 99, 235, 0));
}
.wcm-header-icon {
    width: 40px; height: 40px; border-radius: 10px; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    background: rgba(37, 99, 235, .12); color: var(--atlas-blue-600); font-size: 1.35rem;
}
.wcm-header-sub { color: var(--atlas-gray-500); }
.wcm-body { padding: 1.25rem; }

.wcm-section {
    border: 1px solid var(--atlas-gray-200); border-radius: 12px;
    padding: 1rem 1.1rem; background: #fbfcfe;
}
.wcm-section-title {
    font-size: .72rem; font-weight: 700; letter-spacing: .5px;
    text-transform: uppercase; color: var(--atlas-gray-500); margin-bottom: .65rem;
}

/* Segmented type picker */
.wcm-typegroup { display: flex; gap: 8px; }
.wcm-typebtn {
    flex: 1; display: flex; align-items: center; justify-content: center; gap: 8px;
    padding: 10px 12px; border: 1px solid var(--atlas-gray-200); border-radius: 10px;
    background: var(--atlas-white); color: var(--atlas-gray-500); font-weight: 600; font-size: .85rem;
    cursor: pointer; transition: all .15s;
}
.wcm-typebtn i { font-size: 1.15rem; }
.wcm-typebtn:hover { border-color: var(--atlas-indigo-200); color: var(--atlas-blue-600); }
.wcm-typebtn.active {
    border-color: var(--atlas-blue-600); color: var(--atlas-blue-600);
    background: rgba(37, 99, 235, .08); box-shadow: 0 0 0 1px var(--atlas-blue-600) inset;
}

/* (2026-07-25) .wcm-qr-* removed with the QR preview + "Print badge" button of
   WorkerCredentialsModal — that button printed a bare QR, not a badge. */

/* Registered credentials list */
.wcm-count-badge { background: rgba(37, 99, 235, .12); color: var(--atlas-blue-600); font-weight: 600; }
.wcm-cred-list { display: flex; flex-direction: column; gap: 8px; }
.wcm-cred-item {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 12px; border: 1px solid var(--atlas-gray-200); border-radius: 10px;
    background: var(--atlas-white); transition: border-color .15s, box-shadow .15s;
}
.wcm-cred-item:hover { border-color: var(--atlas-indigo-200); box-shadow: 0 1px 4px var(--atlas-color-primary-soft); }
.wcm-cred-item.is-inactive { background: var(--atlas-gray-50); opacity: .75; }
.wcm-cred-icon {
    width: 38px; height: 38px; border-radius: 9px; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    background: var(--atlas-color-primary-soft); color: var(--atlas-blue-600); font-size: 1.2rem;
}
.wcm-cred-item.is-inactive .wcm-cred-icon { background: #eef0f4; color: var(--atlas-gray-400); }
.wcm-cred-type { font-weight: 600; font-size: .88rem; color: var(--atlas-gray-900); }
.wcm-cred-value {
    font-family: monospace; font-size: .78rem; color: var(--atlas-gray-500);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.wcm-cred-action { line-height: 1; padding: .25rem .5rem; }
.min-w-0 { min-width: 0; }

.wcm-empty {
    display: flex; flex-direction: column; align-items: center; gap: 6px;
    padding: 1.75rem 1rem; color: var(--atlas-gray-400); font-size: .85rem; font-style: italic;
}
.wcm-empty i { font-size: 1.8rem; opacity: .55; }

/* ── TrainingMatrixTab.razor ── */
/* SKIPPED — .matrix-cell choca con wwwroot/css/access-matrix.css (min-width 100px vs 50px, reglas
   distintas), Pages/DevTools/ProjectMatrix.razor y Pages/Components/WeatherWidget.razor, todos
   definen su propio .matrix-cell. #training-matrix-table (con ID) sí sería seguro, pero el bloque
   se deja íntegro inline por la regla "no extraer el fichero si hay selector genérico en conflicto".
   Ver informe. */

/* ── DocAssetsMatrixTab.razor ── */
.doc-section-banner { background: var(--atlas-white); padding: 1rem 1.5rem; border-radius: 10px; box-shadow: var(--atlas-shadow-1); border-left: 4px solid var(--atlas-blue-600); }
.doc-section-title  { font-size: 1.1rem; font-weight: 700; color: var(--atlas-gray-900); }
.doc-section-sub    { font-size: .82rem; color: var(--atlas-gray-500); margin-top: .1rem; }

#doc-vehicle-matrix-table th, #doc-equip-matrix-table th {
    position: sticky;
    top: 0;
    z-index: 2;
    font-size: 0.75rem;
    text-transform: uppercase;
    white-space: nowrap;
}
#doc-vehicle-matrix-table th:first-child, #doc-equip-matrix-table th:first-child {
    position: sticky;
    left: 0;
    z-index: 3;
    background: var(--bs-table-bg, #f8f9fa);
}
#doc-vehicle-matrix-table td:first-child, #doc-equip-matrix-table td:first-child {
    position: sticky;
    left: 0;
    z-index: 1;
    background: var(--atlas-white);
    font-weight: 600;
    white-space: nowrap;
}
.doc-matrix-cell {
    text-align: center;
    cursor: pointer;
    min-width: 50px;
    transition: background-color 0.15s;
}
.doc-matrix-cell:hover {
    background-color: rgba(13, 110, 253, 0.08);
}
.doc-matrix-cell input[type="checkbox"] {
    width: 18px;
    height: 18px;
    cursor: pointer;
}

/* ── DocumentUploadModal.razor ── */
.docrev-dropzone {
    border: 2px dashed var(--atlas-gray-300); border-radius: 10px; padding: 1.5rem; text-align: center;
    cursor: pointer; transition: background-color .15s, border-color .15s;
}
.docrev-dropzone:hover, .docrev-dropzone.dragging {
    background: var(--atlas-blue-50); border-color: var(--atlas-blue-500);
}
.docrev-dropzone-icon { font-size: 2rem; color: var(--atlas-gray-400); display: block; margin-bottom: .5rem; }
.docrev-upload-preview {
    display: flex; align-items: center; gap: .75rem; padding: .75rem; border: 1px solid var(--atlas-gray-200); border-radius: 8px; background:var(--atlas-gray-50);
}
.docrev-upload-preview img { width: 48px; height: 48px; object-fit: cover; border-radius: 6px; background:var(--atlas-white); }
.docrev-upload-preview-meta { flex: 1; min-width: 0; }
.docrev-upload-preview-meta .fw-semibold { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ── TrainingTrackerTable.razor ── */
/* .accent-primary/success/warning/danger/info eliminados: valores idénticos a los ya
   centralizados en wwwroot/css/components/kpiDashboard.css (drift puro: hex directo en vez de
   var(--kpi-*), mismo color computado). .tt-kpi* es namespaced y exclusivo de este componente. */
.tt-kpi       { background: var(--atlas-white); border: 1px solid rgba(0,0,0,.05); border-radius: 12px; box-shadow: var(--atlas-shadow-1); padding: 1.25rem; display: flex; align-items: center; gap: .875rem; position: relative; overflow: hidden; height: 100%; }
.tt-kpi::after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 4px; background: var(--accent-color); }
.tt-kpi-icon  { width: 44px; height: 44px; border-radius: 10px; background: var(--accent-bg); color: var(--accent-color); display: flex; align-items: center; justify-content: center; font-size: 1.35rem; flex-shrink: 0; }
.tt-kpi-body  { flex: 1; }
.tt-kpi-value { font-size: 1.5rem; font-weight: 700; color: var(--atlas-gray-900); line-height: 1.2; }
.tt-kpi-label { font-size: .8rem; color: var(--atlas-gray-500); font-weight: 500; }

/* ── DocWorkersTab.razor ── */
/* SKIPPED — su único bloque <style> (.doc-section-banner/.doc-section-title/.doc-section-sub) es
   duplicado byte a byte del ya extraído arriba en DocAssetsMatrixTab.razor. No se repite aquí;
   el <style> se eliminó del .razor porque las reglas ya cubren la página globalmente. */

/* ── DocCompanyTab.razor ── */
/* SKIPPED — mismo caso que DocWorkersTab.razor: duplicado byte a byte de las reglas
   .doc-section-banner/.doc-section-title/.doc-section-sub ya extraídas en DocAssetsMatrixTab.razor.
   El <style> se eliminó del .razor. */

/* ── BlacklistModal.razor (plan 2026-07-23 F5) ── */
/* Modal compartido por la ficha del worker y por el módulo Blacklist (F4). Namespace .blm-*.
   Espejo estructural de .wcm-* (WorkerCredentialsModal), en rojo: la acción es destructiva y de
   alcance de plataforma, así que la cabecera lo dice antes de leer nada. */
.blm-modal { background: rgba(15, 23, 42, .6); backdrop-filter: blur(2px); }
.blm-content { border-radius: 16px; overflow: hidden; }
.blm-header {
    border-bottom: 1px solid var(--atlas-gray-200);
    padding: 1rem 1.25rem;
    background: linear-gradient(135deg, var(--atlas-red-50), transparent);
}
.blm-header-icon {
    width: 40px; height: 40px; border-radius: 10px; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--atlas-red-100); color: var(--atlas-red-700); font-size: 1.35rem;
}
.blm-header-lift {
    background: linear-gradient(135deg, var(--atlas-amber-50), transparent);
}
.blm-header-lift .blm-header-icon {
    background: var(--atlas-amber-100); color: var(--atlas-amber-800);
}
.blm-header-sub { color: var(--atlas-gray-500); }
.blm-body { padding: 1.25rem; }

.blm-alert { border-radius: 10px; border-left-width: 5px; }
.blm-alert-head {
    display: flex; align-items: center; gap: .5rem;
    font-weight: 700; font-size: .95rem; margin-bottom: .35rem;
}
.blm-alert-head i { font-size: 1.25rem; flex-shrink: 0; }
/* Aviso de "está dentro de la obra ahora mismo": es lo único accionable del resultado. */
.blm-alert-inside { border-left-color: var(--atlas-red-700); }
.blm-session-list { padding-left: 1.25rem; font-size: .85rem; }
.blm-session-list li { margin-top: .2rem; }

.blm-section {
    border: 1px solid var(--atlas-gray-200); border-radius: 12px;
    padding: 1rem 1.1rem; background: var(--atlas-gray-50);
}
.blm-section-title {
    font-size: .72rem; font-weight: 700; letter-spacing: .5px;
    text-transform: uppercase; color: var(--atlas-gray-500); margin-bottom: .65rem;
}
.blm-confirm { border-color: var(--atlas-red-100); }

.blm-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: .6rem 1.25rem; }
.blm-field { display: flex; flex-direction: column; min-width: 0; }
.blm-field-label {
    font-size: .68rem; font-weight: 700; letter-spacing: .4px;
    text-transform: uppercase; color: var(--atlas-gray-400);
}
.blm-field-value {
    font-size: .9rem; font-weight: 600; color: var(--atlas-gray-900);
    overflow: hidden; text-overflow: ellipsis;
}
.blm-required { color: var(--atlas-red-600); }
