/* ==========================================================================
   SAEZ — Documentación de componentes en la ficha de grúa (CD-3)
   La pinta ComponentDocs (js/component-docs.js) en Monitorización > ficha y en el modal de
   «Componentes». Fichero aparte de app.css. Solo tokens (var(--…)) y propiedades lógicas:
   en hebreo/árabe la barra, los chips y los badges se invierten solos.
   ========================================================================== */

:root {
    /* Estado documental (reutiliza los badges del portal) */
    --cd-exact-bg: var(--app-badge-available-bg);
    --cd-exact-text: var(--app-badge-available-text);
    --cd-series-bg: var(--app-badge-saez-bg);
    --cd-series-text: var(--app-badge-saez-text);
    --cd-generic-bg: var(--app-badge-searched-bg);
    --cd-generic-text: var(--app-badge-searched-text);
    --cd-none-bg: var(--app-badge-inactive-bg);
    --cd-none-text: #475569;              /* el #64748b del badge inactivo no llega a AA sobre #f1f5f9 */
    --cd-pending-bg: var(--app-badge-pending-bg);
    --cd-pending-text: var(--app-badge-pending-text);
    --cd-action-bg: #ffedd5;
    --cd-action-text: #9a3412;
    --cd-saez-bg: #ede9fe;
    --cd-saez-text: #5b21b6;
    --cd-missing-bg: #fee2e2;
    --cd-missing-text: #b91c1c;
    /* Barra de cobertura */
    --cd-bar-exact: var(--app-green);
    --cd-bar-series: var(--app-blue-light);
    --cd-bar-none: var(--app-border);
    --cd-bar-track: var(--app-card-bg-alt);
    --cd-bar-gap: var(--app-card-bg);
    /* Filas y enlaces */
    --cd-row-bg: var(--app-card-bg-subtle);
    --cd-row-hover: var(--app-card-bg-alt);
    --cd-link: #1d4ed8;
    --cd-icon: var(--app-saez-red);
    --cd-accent-exact: var(--app-green);
    --cd-accent-series: var(--app-blue-light);
    --cd-accent-none: #94a3b8;
    --cd-chip-on-bg: var(--app-blue);
    --cd-chip-on-text: #fff;
    --cd-research-border: var(--app-border);
}

[data-theme="dark"] {
    --cd-none-text: #94a3b8;
    --cd-generic-text: #cbd5e1;
    --cd-action-bg: #431407;
    --cd-action-text: #fdba74;
    --cd-saez-bg: #2e1065;
    --cd-saez-text: #c4b5fd;
    --cd-missing-bg: #450a0a;
    --cd-missing-text: #fca5a5;
    --cd-bar-none: #475569;
    --cd-bar-track: #0f172a;
    --cd-link: #93c5fd;
    --cd-icon: #f87171;
    --cd-accent-none: #64748b;
    --cd-chip-on-bg: #93c5fd;
    --cd-chip-on-text: #0f172a;
    --cd-research-border: #475569;
}

/* --- Tarjeta --------------------------------------------------------------- */
.cd-card .cd-title {
    margin-block-start: 0;
}
.cd-body {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
}

/* --- Cobertura ------------------------------------------------------------- */
.cd-coverage {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
}
.cd-coverage-label {
    margin: 0;
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--app-text-muted);
}
.cd-bar {
    display: flex;
    block-size: 10px;
    border-radius: 999px;
    overflow: hidden;
    background: var(--cd-bar-track);
}
.cd-bar-seg {
    display: block;
    block-size: 100%;
    transition: inline-size 0.35s var(--app-ease);
}
/* Separación entre tramos: el estado no depende solo del color */
.cd-bar-seg + .cd-bar-seg {
    border-inline-start: 2px solid var(--cd-bar-gap);
}
.cd-bar-exact { background: var(--cd-bar-exact); }
.cd-bar-series,
.cd-swatch-series {
    background-color: var(--cd-bar-series);
    background-image: repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.35) 0 3px, transparent 3px 6px);
}
.cd-bar-none { background: var(--cd-bar-none); }
.cd-legend {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-1) var(--sp-4);
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
}
.cd-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.cd-swatch {
    display: inline-block;
    inline-size: 0.75rem;
    block-size: 0.75rem;
    border-radius: 3px;
    flex: none;
}
.cd-swatch-exact { background: var(--cd-bar-exact); }
.cd-swatch-none {
    background: var(--cd-bar-none);
    box-shadow: inset 0 0 0 1px var(--cd-accent-none);
}
.cd-coverage-line {
    margin: 0;
    font-size: var(--fs-sm);
    color: var(--app-text);
}

/* --- Filtros (chips) ------------------------------------------------------- */
.cd-filters {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-2);
}
.cd-chip {
    display: inline-flex;
    align-items: center;
    min-block-size: 40px;
    padding-block: 0;
    padding-inline: 14px;
    border: 1px solid var(--app-border);
    border-radius: 999px;
    background: var(--app-card-bg);
    color: var(--app-text-muted);
    font: inherit;
    font-size: var(--fs-sm);
    font-weight: 600;
    cursor: pointer;
    transition: background var(--app-dur) var(--app-ease), color var(--app-dur) var(--app-ease),
        border-color var(--app-dur) var(--app-ease);
}
.cd-chip:hover {
    border-color: var(--app-blue-light);
    color: var(--app-text);
}
.cd-chip[aria-pressed="true"] {
    background: var(--cd-chip-on-bg);
    border-color: var(--cd-chip-on-bg);
    color: var(--cd-chip-on-text);
}

/* --- Secciones (acordeón) -------------------------------------------------- */
.cd-sections {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
}
.cd-section-head {
    display: flex;
    align-items: center;
    gap: var(--sp-3);
    inline-size: 100%;
    min-block-size: 44px;
    margin: 0;
    padding-block: 10px;
    padding-inline: 16px;
    border: 0;
    background: var(--app-card-bg-subtle);
    color: var(--app-text);
    font: inherit;
    font-size: var(--fs-base);
    font-weight: 600;
    text-align: start;
    cursor: pointer;
    transition: background var(--app-dur) var(--app-ease);
}
.cd-section-head:hover { background: var(--app-card-bg-alt); }
.cd-section-name {
    flex: 1 1 auto;
    min-inline-size: 0;
    overflow-wrap: anywhere;
}
.cd-section-count {
    flex: none;
    padding-block: 2px;
    padding-inline: 8px;
    border-radius: 999px;
    background: var(--cd-series-bg);
    color: var(--cd-series-text);
    font-size: var(--fs-xs);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.cd-chevron {
    flex: none;
    color: var(--app-text-muted);
    transition: transform 0.2s var(--app-ease);
}
.cd-section.is-open .cd-chevron { transform: rotate(180deg); }
.cd-section:not(.is-open) > .cd-section-body { display: none; }
.cd-section-body {
    padding-block: var(--sp-2) var(--sp-3);
    padding-inline: var(--sp-3);
}

/* --- Componentes ----------------------------------------------------------- */
.cd-comp-list {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
    margin: 0;
    padding: 0;
    list-style: none;
}
.cd-comp {
    padding-block: 10px;
    padding-inline: 12px;
    border: 1px solid var(--app-border);
    border-inline-start: 3px solid var(--cd-accent-none);
    border-radius: var(--app-radius-sm);
    background: var(--app-card-bg);
}
.cd-comp[data-state="exact"] { border-inline-start-color: var(--cd-accent-exact); }
.cd-comp[data-state="series"] { border-inline-start-color: var(--cd-accent-series); }
.cd-comp-main {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--sp-3);
}
.cd-comp-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-inline-size: 0;
}
.cd-comp-type {
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
}
.cd-comp-name {
    font-size: var(--fs-sm);
    color: var(--app-text);
    overflow-wrap: anywhere;
}
.cd-comp-serial {
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
}
.cd-comp-hint {
    margin-block: 6px 0;
    margin-inline: 0;
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
}

/* --- Badges ---------------------------------------------------------------- */
.cd-badge {
    display: inline-flex;
    align-items: center;
    flex: none;
    padding-block: 3px;
    padding-inline: 9px;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.25;
    white-space: nowrap;
}
.cd-badge-exact,
.cd-research-verificado-exacto { background: var(--cd-exact-bg); color: var(--cd-exact-text); }
.cd-badge-series,
.cd-research-solo-serie { background: var(--cd-series-bg); color: var(--cd-series-text); }
.cd-badge-generic { background: var(--cd-generic-bg); color: var(--cd-generic-text); }
.cd-badge-none,
.cd-badge-research {
    background: var(--cd-none-bg);
    color: var(--cd-none-text);
    box-shadow: inset 0 0 0 1px var(--app-border);
}
.cd-research-dato-incompleto,
.cd-badge-years { background: var(--cd-pending-bg); color: var(--cd-pending-text); box-shadow: none; }
.cd-badge-action,
.cd-research-no-publicado-pedir-a-fabricante { background: var(--cd-action-bg); color: var(--cd-action-text); box-shadow: none; }
.cd-badge-saez { background: var(--cd-saez-bg); color: var(--cd-saez-text); }
.cd-badge-missing-file,
.cd-research-no-encontrado { background: var(--cd-missing-bg); color: var(--cd-missing-text); box-shadow: none; }
.cd-research-verificado-exacto,
.cd-research-solo-serie { box-shadow: none; }

/* --- Documentos ------------------------------------------------------------ */
.cd-doc-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-block: var(--sp-2) 0;
    margin-inline: 0;
    padding: 0;
    list-style: none;
}
.cd-doc {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    grid-template-areas:
        "link spec dl"
        "flags flags flags"
        "ev ev ev";
    align-items: center;
    column-gap: var(--sp-2);
    padding: 4px;
    border-radius: var(--app-radius-sm);
    background: var(--cd-row-bg);
}
.cd-doc-link {
    grid-area: link;
    display: flex;
    align-items: center;
    gap: 10px;
    min-inline-size: 0;
    min-block-size: 40px;
    padding-block: 4px;
    padding-inline: 8px;
    border-radius: var(--app-radius-sm);
    color: var(--app-text);
    text-decoration: none;
    transition: background var(--app-dur) var(--app-ease);
}
a.cd-doc-link:hover { background: var(--cd-row-hover); }
a.cd-doc-link:hover .cd-doc-type { text-decoration: underline; }
.cd-doc-link.is-disabled {
    opacity: 0.65;
    cursor: not-allowed;
}
.cd-doc-icon {
    flex: none;
    color: var(--cd-icon);
}
.cd-doc-text {
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-inline-size: 0;
}
.cd-doc-type {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--cd-link);
}
.cd-doc-link.is-disabled .cd-doc-type { color: var(--app-text-muted); }
.cd-doc-title {
    overflow: hidden;
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
    white-space: nowrap;
    text-overflow: ellipsis;
}
.cd-doc-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 2px 6px;
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
}
.cd-langs {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 3px;
}
.cd-lang {
    padding-inline: 5px;
    border: 1px solid var(--app-border);
    border-radius: 4px;
    font-size: 0.68rem;
    font-weight: 700;
    line-height: 1.5;
    letter-spacing: 0.3px;
}
.cd-sep { color: var(--app-text-muted); }
.cd-spec {
    grid-area: spec;
    justify-self: end;
}
.cd-doc-dl {
    grid-area: dl;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    inline-size: 40px;
    block-size: 40px;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-sm);
    background: var(--app-card-bg);
    color: var(--app-text-muted);
    transition: color var(--app-dur) var(--app-ease), border-color var(--app-dur) var(--app-ease);
}
.cd-doc-dl:hover {
    border-color: var(--app-blue-light);
    color: var(--app-text);
}
.cd-doc-flags {
    grid-area: flags;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding-block: 4px 2px;
    padding-inline: 8px;
}

/* --- Solo SAEZ: evidencia y estudio ---------------------------------------- */
.cd-evidence {
    grid-area: ev;
    margin-inline: 8px;
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
}
.cd-evidence > summary {
    display: list-item;
    min-block-size: 32px;
    padding-block: 7px;
    font-weight: 600;
    color: var(--app-text);
    cursor: pointer;
}
.cd-evidence-body {
    padding-block-end: 6px;
}
.cd-evidence-body p {
    margin-block: 3px;
    margin-inline: 0;
}
.cd-ev-url,
.cd-ev-path {
    overflow-wrap: anywhere;
}
.cd-ev-url { color: var(--cd-link); }
.cd-ev-path { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
.cd-ev-list {
    margin-block: 4px;
    margin-inline: 0;
    padding-inline-start: 1.1rem;
}
.cd-ev-list li { margin-block: 2px; }
.cd-ev-page {
    font-weight: 600;
    color: var(--app-text);
}
.cd-orig-note {
    font-style: italic;
    color: var(--app-text-muted);
}
.cd-research {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-block-start: var(--sp-2);
    padding-block: 8px;
    padding-inline: 10px;
    border: 1px dashed var(--cd-research-border);
    border-radius: var(--app-radius-sm);
    background: var(--app-card-bg-subtle);
    font-size: var(--fs-xs);
}
.cd-research-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.cd-ask,
.cd-research .cd-orig-note {
    margin: 0;
    color: var(--app-text);
}
.cd-research .cd-orig-note { color: var(--app-text-muted); }

/* --- Vacío, error y carga -------------------------------------------------- */
.cd-empty {
    margin: 0;
    padding: var(--sp-3);
    border-radius: var(--app-radius-sm);
    background: var(--app-card-bg-subtle);
    color: var(--app-text-muted);
    font-size: var(--fs-sm);
    text-align: center;
}
.cd-error {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    padding: var(--sp-3);
    border-radius: var(--app-radius-sm);
    background: var(--cd-missing-bg);
    color: var(--cd-missing-text);
}
.cd-error p { margin: 0; }
.cd-error-title { font-weight: 600; }
.cd-error-detail { font-size: var(--fs-sm); }
.cd-skeleton {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.cd-skeleton-bar,
.cd-skeleton-line {
    display: block;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--app-card-bg-alt) 0%, var(--app-border) 50%, var(--app-card-bg-alt) 100%);
    background-size: 200% 100%;
    animation: cd-shimmer 1.2s ease-in-out infinite;
}
.cd-skeleton-bar { block-size: 10px; }
.cd-skeleton-line { block-size: 14px; }
.cd-skeleton-short { inline-size: 60%; }
@keyframes cd-shimmer {
    from { background-position: 100% 0; }
    to { background-position: -100% 0; }
}

/* --- Modal de un componente ------------------------------------------------ */
.app-modal.cd-modal {
    inline-size: min(640px, 94vw);
    max-inline-size: 94vw;
}
.cd-modal:focus { outline: none; }
.cd-modal-title { overflow-wrap: anywhere; }
.cd-modal .app-modal-close {
    min-inline-size: 40px;
    min-block-size: 40px;
    border-radius: var(--app-radius-sm);
}

/* --- Móvil (390 px) -------------------------------------------------------- */
@media (max-width: 640px) {
    .cd-comp-main { flex-wrap: wrap; }
    .cd-section-head { padding-inline: 12px; }
    .cd-section-body { padding-inline: var(--sp-2); }
    .cd-comp { padding-inline: 10px; }
    .cd-doc {
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-areas:
            "link dl"
            "spec spec"
            "flags flags"
            "ev ev";
    }
    .cd-spec {
        justify-self: start;
        margin-block-end: 4px;
        margin-inline-start: 34px;
    }
}

/* --- Movimiento reducido --------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    .cd-bar-seg,
    .cd-chevron,
    .cd-chip,
    .cd-section-head,
    .cd-doc-link,
    .cd-doc-dl { transition: none; }
    .cd-skeleton-bar,
    .cd-skeleton-line { animation: none; }
}

/* --- Impresión: todas las secciones abiertas, sin filtros ni descargas ----- */
@media print {
    .cd-filters,
    .cd-doc-dl,
    .cd-retry,
    .cd-chevron { display: none; }
    .cd-section:not(.is-open) > .cd-section-body { display: block; }
    .cd-card { box-shadow: none; }
    .cd-comp,
    .cd-doc { break-inside: avoid; }
}

/* ==========================================================================
   SAEZ — Documentación SAEZ (CD-4): vista del personal SAEZ
   La pinta ComponentDocsAdmin (js/component-docs-admin.js) en #cd-admin-root y el aviso
   .cd-legacy-notice lo pone PortalSections en la lista heredada «Documentación».
   Solo tokens y propiedades lógicas (RTL sin reglas espejo).
   ========================================================================== */

:root {
    --cd-safety-bg: #fee2e2;
    --cd-safety-text: #991b1b;
    --cd-rev-pending-bg: var(--app-badge-pending-bg);
    --cd-rev-pending-text: var(--app-badge-pending-text);
    --cd-rev-done-bg: var(--app-badge-available-bg);
    --cd-rev-done-text: var(--app-badge-available-text);
    --cd-tab-line: var(--app-border);
    --cd-tab-on: var(--app-saez-red);
    --cd-tab-on-text: var(--app-text);
    --cd-count-bg: var(--app-card-bg-alt);
    --cd-count-text: var(--app-text);
    --cd-notice-bg: #eff6ff;
    --cd-notice-border: #bfdbfe;
    --cd-notice-text: #1e3a8a;
    --cd-kind-create: #6d28d9;
    --cd-kind-unreviewed: #92400e;
    --cd-kind-out: #075985;
    --cd-kind-fix: #b91c1c;
}

[data-theme="dark"] {
    --cd-safety-bg: #450a0a;
    --cd-safety-text: #fca5a5;
    --cd-tab-on: #f87171;
    --cd-count-bg: #334155;
    --cd-count-text: #e2e8f0;
    --cd-notice-bg: #172554;
    --cd-notice-border: #1e40af;
    --cd-notice-text: #bfdbfe;
    --cd-kind-create: #c4b5fd;
    --cd-kind-unreviewed: #fcd34d;
    --cd-kind-out: #7dd3fc;
    --cd-kind-fix: #fca5a5;
}

/* --- Aviso en la lista heredada ------------------------------------------- */
.cd-legacy-notice {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--sp-2) var(--sp-3);
    margin-block-end: var(--sp-3);
    padding-block: 10px;
    padding-inline: 14px;
    border: 1px solid var(--cd-notice-border);
    border-radius: var(--app-radius-sm);
    background: var(--cd-notice-bg);
    color: var(--cd-notice-text);
    font-size: var(--fs-sm);
}
.cd-legacy-notice p {
    flex: 1 1 16rem;
    margin: 0;
}

/* --- Cabecera y pestañas --------------------------------------------------- */
.cd-admin {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
    min-inline-size: 0;
}
.cd-admin-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--sp-2) var(--sp-4);
}
.cd-admin-titles { min-inline-size: 0; }
.cd-admin-sub { margin-block-end: 0; max-inline-size: 48rem; }
.cd-verify-btn,
.cd-csv-btn,
.cd-mark-reviewed,
.cd-open-doc {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.cd-verify-btn { min-block-size: 40px; }
.cd-tabs {
    display: flex;
    gap: 2px;
    overflow-x: auto;
    border-block-end: 1px solid var(--cd-tab-line);
    scrollbar-width: thin;
}
.cd-tab {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex: none;
    min-block-size: 44px;
    padding-block: 8px;
    padding-inline: 14px;
    border: 0;
    border-block-end: 3px solid transparent;
    background: none;
    color: var(--app-text-muted);
    font: inherit;
    font-size: var(--fs-sm);
    font-weight: 600;
    white-space: nowrap;
    cursor: pointer;
    transition: color var(--app-dur) var(--app-ease), border-color var(--app-dur) var(--app-ease);
}
.cd-tab:hover { color: var(--app-text); }
.cd-tab[aria-selected="true"] {
    color: var(--cd-tab-on-text);
    border-block-end-color: var(--cd-tab-on);
}
.cd-tab-count {
    min-inline-size: 1.5rem;
    padding-block: 1px;
    padding-inline: 7px;
    border-radius: 999px;
    background: var(--cd-count-bg);
    color: var(--cd-count-text);
    font-size: 0.72rem;
    text-align: center;
}
.cd-tab-count[hidden] { display: none; }
.cd-tabpanel {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
    min-inline-size: 0;
}
.cd-tabpanel[hidden] { display: none; }
.cd-tabpanel:focus { outline: none; }
.cd-tabpanel:focus-visible { outline: 2px solid var(--cd-link); outline-offset: 4px; }
.cd-panel-head {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
}
.cd-panel-head:empty { display: none; }
.cd-panel-body { min-inline-size: 0; }
.cd-panel-body.is-busy {
    opacity: 0.55;
    transition: opacity 0.2s var(--app-ease);
}

/* --- Filtros ---------------------------------------------------------------- */
.cd-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--sp-2) var(--sp-3);
    padding: var(--sp-3);
    border-radius: var(--app-radius);
    background: var(--app-card-bg);
    box-shadow: var(--app-shadow);
}
.cd-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-inline-size: 0;
}
.cd-field-grow { flex: 1 1 14rem; }
.cd-field-label {
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--app-text-muted);
}
.cd-field .app-select,
.cd-field .app-input {
    min-block-size: 40px;
    max-inline-size: 100%;
    color: var(--app-text);
    background: var(--app-card-bg);
}
.cd-toolbar .app-select { max-inline-size: 16rem; }
.cd-search { inline-size: 100%; }
.cd-check {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-block-size: 40px;
    font-size: var(--fs-sm);
    color: var(--app-text);
    cursor: pointer;
}
.cd-check input {
    inline-size: 18px;
    block-size: 18px;
    margin: 0;
    accent-color: var(--app-blue);
}
.cd-toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-2);
    margin-inline-start: auto;
}
.cd-toolbar-actions .app-btn,
.cd-pager .app-btn { min-block-size: 40px; }

/* --- Cobertura ---------------------------------------------------------------- */
.app-kpi-row.cd-kpis {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-block-end: 0;
}
@media (min-width: 1600px) {
    .app-kpi-row.cd-kpis { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
.cd-kpi .app-kpi-value {
    font-size: 1.6rem;
    font-variant-numeric: tabular-nums;
}
.cd-cov-table th,
.cd-cov-table td { vertical-align: middle; }
/* 9 columnas en ~990 px (1280 con menú): cabeceras en dos líneas y relleno compacto */
.app-table.cd-cov-table th,
.app-table.cd-cov-table td { padding-inline: 0.5rem; }
.app-table.cd-cov-table thead th {
    white-space: normal;
    vertical-align: bottom;
}
.cd-cov-table tbody th {
    font-weight: 600;
    text-align: start;
    white-space: nowrap;
}
.cd-cov-table .cd-num {
    text-align: end;
    font-variant-numeric: tabular-nums;
}
.cd-num-warn { color: var(--cd-missing-text); font-weight: 600; }
.cd-client { max-inline-size: 10rem; }
.cd-cov-col { min-inline-size: 7.5rem; }
.cd-pct {
    display: flex;
    align-items: center;
    gap: 8px;
}
.cd-pct .cd-bar {
    flex: 1 1 4rem;
    min-inline-size: 3rem;
}
.cd-pct-value {
    flex: none;
    min-inline-size: 3.2rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    text-align: end;
}
.cd-actions-cell { white-space: nowrap; }
.cd-pager { flex-wrap: wrap; }
.cd-pager-info { font-variant-numeric: tabular-nums; }

/* --- Vacío, resumen y notas ------------------------------------------------ */
.cd-empty-title {
    margin: 0;
    font-weight: 600;
    color: var(--app-text);
}
.cd-empty p + p { margin-block: 4px 0; }
.cd-summary {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--sp-2) var(--sp-3);
}
.cd-summary-main {
    margin: 0;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--app-text);
}
.cd-note {
    margin: 0;
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
}
.cd-panel-head .cd-orig-note { margin: 0; font-size: var(--fs-xs); }
.cd-mono {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    overflow-wrap: anywhere;
}
.cd-k {
    margin-inline-end: 4px;
    font-weight: 600;
    color: var(--app-text-muted);
}
.cd-k:not(:first-child) { margin-inline-start: var(--sp-3); }

/* --- Badges nuevos ----------------------------------------------------------- */
.cd-badge svg { margin-inline-end: 4px; }
.cd-badge-safety { background: var(--cd-safety-bg); color: var(--cd-safety-text); gap: 2px; }
.cd-badge-type { background: var(--cd-none-bg); color: var(--app-text); }
.cd-rev-pendiente { background: var(--cd-rev-pending-bg); color: var(--cd-rev-pending-text); }
.cd-rev-auto { background: var(--cd-none-bg); color: var(--cd-none-text); }
.cd-rev-revisado { background: var(--cd-rev-done-bg); color: var(--cd-rev-done-text); }
.cd-badge-kind {
    background: transparent;
    border: 1px solid currentColor;
}
.cd-kind-crear-propio { color: var(--cd-kind-create); }
.cd-kind-no-revisado { color: var(--cd-kind-unreviewed); }
.cd-kind-fuera-de-familia { color: var(--cd-kind-out); }
.cd-kind-corregir-bd { color: var(--cd-kind-fix); }

/* --- Pendientes por fabricante ----------------------------------------------- */
.cd-groups {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
}
.cd-group {
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-sm);
    background: var(--app-card-bg);
}
.cd-group.has-safety { border-inline-start: 4px solid var(--cd-safety-text); }
.cd-group-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px var(--sp-3);
    min-block-size: 44px;
    padding-block: 8px;
    padding-inline: 14px;
    cursor: pointer;
}
.cd-group-head::-webkit-details-marker { display: none; }
.cd-group-head::before {
    content: "";
    flex: none;
    inline-size: 0.5rem;
    block-size: 0.5rem;
    border-block-end: 2px solid currentColor;
    border-inline-end: 2px solid currentColor;
    transform: rotate(-45deg);
    color: var(--app-text-muted);
    transition: transform var(--app-dur) var(--app-ease);
}
/* chevron: › cerrado y ⌄ abierto; en RTL el borde lógico ya lo invierte (└), así que gira al revés */
.cd-group[open] > .cd-group-head::before { transform: rotate(45deg); }
[dir="rtl"] .cd-group-head::before { transform: rotate(45deg); }
[dir="rtl"] .cd-group[open] > .cd-group-head::before { transform: rotate(-45deg); }
.cd-group-head:hover { background: var(--cd-row-hover); }
.cd-group-name {
    font-weight: 600;
    color: var(--app-text);
    overflow-wrap: anywhere;
}
.cd-group-name.is-unknown { font-style: italic; color: var(--app-text-muted); }
.cd-group-meta {
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
}
.cd-group-body {
    padding-block: 0 var(--sp-3);
    padding-inline: var(--sp-3);
}
.cd-items,
.cd-rdocs,
.cd-links,
.cd-tasks {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
    margin: 0;
    padding: 0;
    list-style: none;
}
.cd-item,
.cd-rdoc,
.cd-task {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding-block: 10px;
    padding-inline: 12px;
    border: 1px solid var(--app-border);
    border-inline-start: 3px solid var(--cd-accent-none);
    border-radius: var(--app-radius-sm);
    background: var(--cd-row-bg);
    min-inline-size: 0;
}
.cd-item.is-safety { border-inline-start-color: var(--cd-safety-text); }
.cd-item-head,
.cd-link-head,
.cd-task-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px var(--sp-2);
}
.cd-item-name {
    font-weight: 600;
    color: var(--app-text);
    overflow-wrap: anywhere;
}
.cd-item-cranes {
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
}
.cd-item-ref,
.cd-item-note,
.cd-item .cd-ask {
    margin: 0;
    font-size: var(--fs-xs);
    color: var(--app-text);
    overflow-wrap: anywhere;
}
.cd-item-note { color: var(--app-text-muted); }
.cd-req {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--sp-2) var(--sp-3);
    padding-block-start: 6px;
    border-block-start: 1px dashed var(--cd-research-border);
}
.cd-req-select { min-inline-size: 11rem; }
.cd-req-info {
    flex-basis: 100%;
    margin: 0;
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
}
.cd-req-info:empty { display: none; }
.cd-more { align-self: flex-start; margin-block-start: var(--sp-2); min-block-size: 40px; }

/* --- Revisión de documentos ------------------------------------------------- */
.cd-rdoc[data-review="pendiente"] { border-inline-start-color: var(--cd-rev-pending-text); }
.cd-rdoc[data-review="revisado"] { border-inline-start-color: var(--cd-accent-exact); }
.cd-rdoc-head {
    display: flex;
    align-items: flex-start;
    gap: 8px;
}
.cd-rdoc-icon { flex: none; margin-block-start: 2px; color: var(--cd-icon); }
.cd-rdoc-title {
    margin: 0;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--app-text);
    overflow-wrap: anywhere;
}
.cd-rdoc-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.cd-rdoc-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 8px;
    margin: 0;
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
}
.cd-rdoc-file {
    margin: 0;
    font-size: var(--fs-xs);
    color: var(--app-text-muted);
    overflow-wrap: anywhere;
}
.cd-rdoc-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--sp-2) var(--sp-3);
}
.cd-rdoc-actions .app-btn { min-block-size: 40px; }
.cd-open-doc { color: var(--cd-link); text-decoration: none; }
.cd-usedby > summary,
.cd-fam-notes > summary {
    display: list-item;
    min-block-size: 36px;
    padding-block: 8px;
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--app-text);
    cursor: pointer;
}
.cd-usedby-body { padding-block-end: 4px; }
.cd-link {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding-block: 8px;
    padding-inline: 10px;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-sm);
    background: var(--app-card-bg);
}
.cd-link-ctl {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--sp-2) var(--sp-3);
}
.cd-field-year .cd-year { inline-size: 6.5rem; }
.cd-unlink { min-block-size: 40px; color: var(--cd-missing-text); }

/* --- Tareas del estudio ------------------------------------------------------ */
.cd-kind-sum {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-2);
    margin: 0;
    padding: 0;
    list-style: none;
}
.cd-kind-chip {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding-block: 8px;
    padding-inline: 12px;
    border-radius: var(--app-radius-sm);
    background: var(--app-card-bg);
    box-shadow: var(--app-shadow);
}
.cd-kind-name { font-size: var(--fs-xs); font-weight: 600; color: var(--app-text); }
.cd-kind-n { font-size: var(--fs-xs); color: var(--app-text-muted); }
.cd-fam {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
    margin-block-end: var(--sp-4);
}
.cd-fam-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 4px var(--sp-3);
}
.cd-fam-title {
    margin: 0;
    font-size: 1rem;
    color: var(--app-text);
}
.cd-fam-date { font-size: var(--fs-xs); color: var(--app-text-muted); }
.cd-kv-list {
    margin-block: 2px;
    margin-inline: 0;
    padding-inline-start: 1.1rem;
    font-size: var(--fs-xs);
    color: var(--app-text);
}
.cd-kv-list li { margin-block: 2px; overflow-wrap: anywhere; }
.cd-task.is-done { border-inline-start-color: var(--cd-accent-exact); }
.cd-task.is-done .cd-task-title { color: var(--app-text-muted); text-decoration: line-through; }
.cd-task-head {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}
.cd-task-check {
    flex: none;
    inline-size: 20px;
    block-size: 20px;
    margin-block: 1px 0;
    margin-inline: 0;
    accent-color: var(--app-green);
    cursor: pointer;
}
.cd-task-title {
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--app-text);
    overflow-wrap: anywhere;
    cursor: pointer;
}
.cd-kv {
    display: grid;
    grid-template-columns: minmax(7rem, max-content) minmax(0, 1fr);
    gap: 4px var(--sp-3);
    margin: 0;
    font-size: var(--fs-xs);
}
.cd-kv dt { font-weight: 600; color: var(--app-text-muted); }
.cd-kv dd { margin: 0; color: var(--app-text); overflow-wrap: anywhere; }
.cd-kv dd .cd-kv-list { margin: 0; }

/* --- Móvil (390 px) ----------------------------------------------------------- */
@media (max-width: 640px) {
    .cd-toolbar { padding: var(--sp-2); }
    .cd-toolbar .cd-field { flex: 1 1 100%; }
    .cd-toolbar .app-select,
    .cd-req-select { inline-size: 100%; max-inline-size: none; min-inline-size: 0; }
    .cd-toolbar-actions { margin-inline-start: 0; }
    .cd-req .cd-field { flex: 1 1 100%; }
    .cd-kv { grid-template-columns: minmax(0, 1fr); }
    .cd-kv dd { margin-block-end: 4px; }
    .app-kpi-row.cd-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-2); }
    .cd-kpi { padding: 0.8rem; }
    .cd-kpi .app-kpi-value { font-size: 1.3rem; }
    .cd-group-body { padding-inline: var(--sp-2); }
    /* Las 4 pestañas no caben en una línea: rejilla 2 × 2 en vez de desplazarse */
    .cd-tabs {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        overflow-x: visible;
    }
    .cd-tab {
        justify-content: center;
        padding-inline: 10px;
        white-space: normal;
        text-align: center;
    }
}

/* --- Movimiento reducido ------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
    .cd-tab,
    .cd-group-head::before,
    .cd-panel-body.is-busy { transition: none; }
}

/* --- Impresión: sin filtros ni controles de edición --------------------------- */
@media print {
    .cd-tabs,
    .cd-toolbar,
    .cd-verify-btn,
    .cd-pager,
    .cd-req,
    .cd-rdoc-actions,
    .cd-link-ctl,
    .cd-actions-cell,
    .cd-more,
    .cd-legacy-notice { display: none; }
    .cd-item,
    .cd-rdoc,
    .cd-task,
    .cd-group { break-inside: avoid; }
}
