/* ════════════════════════════════════════════════════════════════════
   Dashboard de Selección de Personal (PER v4)
   Reutiliza tokens --mt-* de materio-theme.css. Cero colores hardcoded.
   ═══════════════════════════════════════════════════════════════════ */

.sel-dash {
    padding: 1.5rem;
    max-width: 1400px;
    margin: 0 auto;
}

.sel-dash__head {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.sel-dash__title {
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--mt-heading-color);
    margin: 0 0 .25rem 0;
}

.sel-dash__subtitle {
    color: var(--mt-body-color);
    margin: 0;
    font-size: .9rem;
}

.sel-dash__actions { display: inline-flex; gap: .5rem; }

.sel-dash__btn {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .55rem .9rem;
    background: var(--mt-paper-bg);
    border: 1px solid var(--mt-border-color);
    border-radius: var(--mt-radius, 6px);
    color: var(--mt-heading-color);
    font-size: .85rem;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    transition: border-color .15s ease, transform .15s ease;
}
.sel-dash__btn:hover { border-color: var(--mt-primary); transform: translateY(-1px); }
.sel-dash__btn--primary {
    background: var(--mt-primary);
    border-color: var(--mt-primary);
    color: #fff;
}
.sel-dash__btn--primary:hover { filter: brightness(1.08); }
.sel-dash__btn-icon { font-weight: 700; }

.sel-dash__loading,
.sel-dash__error {
    padding: 3rem;
    text-align: center;
    background: var(--mt-paper-bg);
    border: 1px solid var(--mt-border-color);
    border-radius: var(--mt-radius, 6px);
    color: var(--mt-muted-color);
}

/* ── Grid de bloques ───────────────────────────────────────────────── */
.sel-dash__grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 1rem;
}
.sel-dash__cell--pipeline   { grid-column: span 8; }
.sel-dash__cell--interviews { grid-column: span 4; }
.sel-dash__cell--stats      { grid-column: span 8; }
.sel-dash__cell--sources    { grid-column: span 4; }
.sel-dash__cell--jobstatus,
.sel-dash__cell--applicants,
.sel-dash__cell--openjobs   { grid-column: span 4; }

@media (max-width: 1100px) {
    .sel-dash__cell--pipeline,
    .sel-dash__cell--interviews,
    .sel-dash__cell--stats,
    .sel-dash__cell--sources,
    .sel-dash__cell--jobstatus,
    .sel-dash__cell--applicants,
    .sel-dash__cell--openjobs { grid-column: span 12; }
}

/* ── Card base ─────────────────────────────────────────────────────── */
.sel-card {
    background: var(--mt-paper-bg);
    border: 1px solid var(--mt-border-color);
    border-radius: var(--mt-radius, 6px);
    padding: 1.25rem;
    height: 100%;
    box-shadow: var(--mt-shadow-xs, 0 2px 8px rgba(0,0,0,.06));
}

.sel-card__head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1rem;
}
.sel-card__title {
    font-size: 1rem;
    font-weight: 700;
    color: var(--mt-heading-color);
    margin: 0;
}
.sel-card__link {
    color: var(--mt-primary);
    text-decoration: none;
    font-size: .82rem;
    font-weight: 600;
}
.sel-card__link:hover { text-decoration: underline; }
.sel-card__count {
    background: color-mix(in srgb, var(--mt-primary) 18%, transparent);
    color: var(--mt-primary);
    border-radius: 999px;
    padding: 2px 10px;
    font-size: .75rem;
    font-weight: 700;
}
.sel-card__empty {
    text-align: center;
    color: var(--mt-muted-color);
    padding: 2rem 0;
    font-size: .85rem;
}

/* ── Pipeline ──────────────────────────────────────────────────────── */
.sel-pipeline__legend {
    display: flex;
    flex-wrap: wrap;
    gap: .8rem;
    padding: .5rem 0 .8rem 0;
    border-bottom: 1px solid var(--mt-border-color);
    margin-bottom: .75rem;
}
.sel-pipeline__legend-item {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    font-size: .72rem;
    color: var(--mt-muted-color);
    text-transform: uppercase;
    letter-spacing: .04em;
}
.sel-pipeline__dot {
    width: 8px;
    height: 8px;
    border-radius: 2px;
    display: inline-block;
}
.sel-pipeline__list { display: flex; flex-direction: column; gap: .8rem; }
.sel-pipeline__row {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 1rem;
    align-items: center;
}
.sel-pipeline__label { min-width: 0; }
.sel-pipeline__vacante {
    font-weight: 600;
    color: var(--mt-heading-color);
    font-size: .88rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.sel-pipeline__meta {
    font-size: .72rem;
    color: var(--mt-muted-color);
    text-transform: uppercase;
    letter-spacing: .04em;
}
/* Chevron pipeline (SVG + números HTML superpuestos) */
.sel-pipe-row {
    position: relative;
    width: 100%;
    height: 44px;
    overflow: visible;
}
.sel-pipe-svg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;
}
.sel-pipe-seg {
    transition: filter .15s ease, opacity .15s ease;
}
.sel-pipe-seg--filled:hover {
    filter: brightness(1.12);
}
.sel-pipe-seg--empty {
    fill: var(--mt-gray-50);
    stroke: var(--mt-border-color);
    stroke-width: 1;
    stroke-dasharray: 3 2;
}
.sel-pipe-nums {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    pointer-events: none;
}
.sel-pipe-num {
    flex: 1;
    text-align: center;
    font-size: .98rem;
    font-weight: 700;
    line-height: 1;
    pointer-events: auto;
    cursor: default;
}
.sel-pipe-num--filled {
    color: #fff;
    text-shadow: 0 1px 2px rgba(0,0,0,.18);
}
.sel-pipe-num--empty {
    color: var(--mt-muted-color);
    font-weight: 500;
}

/* ── Próximas entrevistas ──────────────────────────────────────────── */
.sel-iv__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 1rem; }
.sel-iv__row {
    display: grid;
    grid-template-columns: 52px 1fr auto;
    gap: 1rem;
    align-items: center;
    padding: .75rem;
    background: var(--mt-gray-50);
    border-radius: var(--mt-radius, 6px);
    border: 1px solid var(--mt-border-color);
}
.sel-iv__date {
    text-align: center;
    padding: .35rem 0;
    background: var(--mt-paper-bg);
    border-radius: var(--mt-radius, 6px);
    border: 1px solid var(--mt-border-color);
}
.sel-iv__day { font-size: 1.2rem; font-weight: 700; color: var(--mt-heading-color); line-height: 1; }
.sel-iv__month {
    font-size: .65rem;
    text-transform: uppercase;
    color: var(--mt-primary);
    font-weight: 700;
    letter-spacing: .05em;
}
.sel-iv__title { font-weight: 600; color: var(--mt-heading-color); font-size: .9rem; }
.sel-iv__meta { font-size: .78rem; color: var(--mt-body-color); margin-top: 2px; }
.sel-iv__sep { margin: 0 .35rem; color: var(--mt-muted-color); }
.sel-iv__time {
    font-size: .76rem;
    color: var(--mt-muted-color);
    margin-top: 4px;
    display: flex;
    align-items: center;
    gap: .35rem;
}
.sel-iv__countdown {
    color: var(--mt-primary);
    font-weight: 600;
    margin-left: .35rem;
}
.sel-iv__join {
    padding: .35rem .75rem;
    background: var(--mt-primary);
    color: #fff;
    text-decoration: none;
    border-radius: 4px;
    font-size: .75rem;
    font-weight: 600;
    transition: filter .15s;
}
.sel-iv__join:hover { filter: brightness(1.1); }

/* ── Stat cards ────────────────────────────────────────────────────── */
.sel-stat-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 1rem;
    height: 100%;
}
.sel-stat {
    display: flex;
    flex-direction: column;
    gap: .35rem;
    position: relative;
    overflow: hidden;
}
.sel-stat__head {
    display: flex;
    align-items: center;
    gap: .5rem;
    color: var(--mt-muted-color);
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    font-weight: 700;
}
.sel-stat__icon { font-size: 1rem; }
.sel-stat__body { display: flex; align-items: baseline; gap: .5rem; }
.sel-stat__value {
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--mt-heading-color);
    line-height: 1.1;
}
.sel-stat__delta {
    font-size: .82rem;
    font-weight: 700;
    color: var(--mt-muted-color);
}
.sel-stat__delta--up { color: var(--mt-success); }
.sel-stat__delta--down { color: var(--mt-danger); }
.sel-stat__meta {
    font-size: .7rem;
    color: var(--mt-muted-color);
    text-transform: uppercase;
}
.sel-stat__spark {
    display: flex;
    align-items: flex-end;
    gap: 3px;
    height: 36px;
    margin-top: .5rem;
}
.sel-stat__bar {
    flex: 1;
    background: color-mix(in srgb, var(--mt-primary) 80%, transparent);
    border-radius: 2px 2px 0 0;
    min-height: 6px;
    transition: filter .15s;
}
.sel-stat__bar:hover { filter: brightness(1.15); }

/* ── Donut fuentes ─────────────────────────────────────────────────── */
.sel-sources__wrap {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
    justify-content: center;
}
.sel-donut {
    position: relative;
    width: 140px;
    height: 140px;
    border-radius: 50%;
    -webkit-mask: radial-gradient(circle, transparent 58%, black 59%);
    mask: radial-gradient(circle, transparent 58%, black 59%);
    flex-shrink: 0;
}
.sel-donut__center {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    -webkit-mask: none;
    mask: none;
}
.sel-donut__num {
    font-size: 1.7rem;
    font-weight: 700;
    color: var(--mt-heading-color);
    line-height: 1;
}
.sel-donut__lbl {
    font-size: .65rem;
    color: var(--mt-muted-color);
    text-transform: uppercase;
    letter-spacing: .05em;
    margin-top: 2px;
}
.sel-sources__legend {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: .5rem;
    flex: 1;
    min-width: 140px;
}
.sel-sources__item {
    display: grid;
    grid-template-columns: 12px 1fr auto;
    gap: .5rem;
    align-items: center;
    font-size: .82rem;
    color: var(--mt-body-color);
}
.sel-sources__dot { width: 10px; height: 10px; border-radius: 2px; }
.sel-sources__name { color: var(--mt-heading-color); }
.sel-sources__count { font-weight: 700; color: var(--mt-heading-color); }

/* ── Job status ────────────────────────────────────────────────────── */
.sel-jobstatus__bar {
    display: flex;
    height: 12px;
    border-radius: 6px;
    overflow: hidden;
    background: var(--mt-gray-50);
    margin-bottom: 1rem;
}
.sel-jobstatus__seg {
    height: 100%;
    transition: filter .15s;
}
.sel-jobstatus__seg:hover { filter: brightness(1.1); }
.sel-jobstatus__list { list-style: none; padding: 0; margin: 0; }
.sel-jobstatus__row {
    display: grid;
    grid-template-columns: 12px 1fr auto;
    gap: .5rem;
    align-items: center;
    padding: .35rem 0;
    font-size: .85rem;
    color: var(--mt-body-color);
    border-bottom: 1px solid var(--mt-border-color);
}
.sel-jobstatus__row:last-child { border-bottom: none; }
.sel-jobstatus__row--total {
    grid-template-columns: 1fr auto;
    font-weight: 700;
    padding-bottom: .65rem;
}
.sel-jobstatus__dot { width: 10px; height: 10px; border-radius: 2px; }
.sel-jobstatus__label { color: var(--mt-heading-color); }
.sel-jobstatus__value { font-weight: 700; color: var(--mt-heading-color); }

/* ── Nuevos postulantes ────────────────────────────────────────────── */
.sel-applicants__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .8rem; }
.sel-applicants__row {
    display: grid;
    grid-template-columns: 36px 1fr auto;
    gap: .75rem;
    align-items: center;
}
.sel-applicants__avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--mt-primary);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .78rem;
    font-weight: 700;
    overflow: hidden;
}
.sel-applicants__avatar img { width: 100%; height: 100%; object-fit: cover; }
.sel-applicants__name { font-weight: 600; color: var(--mt-heading-color); font-size: .88rem; }
.sel-applicants__pos { font-size: .76rem; color: var(--mt-body-color); }
.sel-applicants__time { font-size: .72rem; color: var(--mt-muted-color); white-space: nowrap; }

/* ── Vacantes abiertas ─────────────────────────────────────────────── */
.sel-openjobs__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 1rem; }
.sel-openjobs__row { display: flex; flex-direction: column; gap: .25rem; }
.sel-openjobs__title {
    color: var(--mt-heading-color);
    font-weight: 600;
    font-size: .9rem;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: .5rem;
}
.sel-openjobs__title:hover { color: var(--mt-primary); }
.sel-openjobs__badge {
    background: color-mix(in srgb, var(--mt-success) 18%, transparent);
    color: var(--mt-success);
    border-radius: 999px;
    padding: 2px 10px;
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.sel-openjobs__meta { font-size: .75rem; color: var(--mt-muted-color); }
.sel-openjobs__sep { margin: 0 .35rem; }
.sel-openjobs__stats { display: flex; gap: 1rem; margin-top: .25rem; }
.sel-openjobs__stat { font-size: .75rem; color: var(--mt-body-color); }
.sel-openjobs__stat strong { color: var(--mt-primary); font-weight: 700; }
.sel-openjobs__stat--alt strong { color: var(--mt-warning); }

/* ── Etapas: página de gestión ─────────────────────────────────────── */
.sel-etapas {
    padding: 1.5rem;
    max-width: 900px;
    margin: 0 auto;
}
.sel-etapas__head {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1.5rem;
}
.sel-etapas__title {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--mt-heading-color);
    margin: 0 0 .25rem 0;
}
.sel-etapas__subtitle {
    color: var(--mt-body-color);
    font-size: .85rem;
    margin: 0;
}
.sel-etapas__list { display: flex; flex-direction: column; gap: .5rem; }
.sel-etapas__row {
    display: grid;
    grid-template-columns: 28px 32px 28px 1fr auto;
    gap: .75rem;
    align-items: center;
    padding: .75rem 1rem;
    background: var(--mt-paper-bg);
    border: 1px solid var(--mt-border-color);
    border-radius: var(--mt-radius, 6px);
}
.sel-etapas__row--inactiva { opacity: .55; }
.sel-etapas__handle {
    cursor: grab;
    color: var(--mt-muted-color);
    text-align: center;
    user-select: none;
}
.sel-etapas__orden {
    font-weight: 700;
    color: var(--mt-muted-color);
    text-align: center;
    font-size: .82rem;
}
.sel-etapas__color {
    width: 24px;
    height: 24px;
    border-radius: 4px;
    border: 1px solid var(--mt-border-color);
}
.sel-etapas__nombre {
    font-weight: 600;
    color: var(--mt-heading-color);
    display: inline-flex;
    align-items: center;
    gap: .5rem;
}
.sel-etapas__badge {
    background: var(--mt-gray-50);
    color: var(--mt-muted-color);
    border-radius: 999px;
    padding: 1px 8px;
    font-size: .65rem;
    text-transform: uppercase;
    font-weight: 700;
    letter-spacing: .05em;
}
.sel-etapas__actions { display: inline-flex; gap: .35rem; }
.sel-etapas__btn {
    background: transparent;
    border: 1px solid var(--mt-border-color);
    color: var(--mt-heading-color);
    padding: .35rem .75rem;
    border-radius: 4px;
    cursor: pointer;
    font-size: .78rem;
    transition: border-color .15s;
}
.sel-etapas__btn:hover { border-color: var(--mt-primary); }
.sel-etapas__btn--danger:hover { border-color: var(--mt-danger); color: var(--mt-danger); }
.sel-etapas__color-input { display: flex; gap: .5rem; align-items: center; }
.sel-etapas__color-input .cdlg-color {
    width: 38px;
    height: 38px;
    padding: 2px;
    border: 1px solid var(--mt-border-color);
    border-radius: 4px;
    cursor: pointer;
    background: transparent;
}

/* ── Responsive móvil (≤640px): Etapas ─────────────────────────────── */
/* La fila de 5 columnas (handle/orden/color/nombre/acciones) desborda en
   pantallas angostas porque la columna de acciones (auto) no encoge. Se
   reduce a 3 columnas y los botones de acción saltan a una segunda línea
   ocupando todo el ancho disponible sin recorte horizontal. */
@media (max-width: 640px) {
    .sel-etapas { padding: 1rem; }

    .sel-etapas__row {
        grid-template-columns: 24px 24px 1fr;
        gap: .5rem;
        padding: .75rem;
    }
    /* Oculta el número de orden para ganar espacio; el orden ya es visible
       por la posición de la fila en la lista. */
    .sel-etapas__orden { display: none; }
    /* Las acciones bajan a fila completa debajo del nombre. */
    .sel-etapas__actions {
        grid-column: 1 / -1;
        justify-content: flex-end;
        flex-wrap: wrap;
    }
}

/* Las clases .vac-card-*, .vac-badge-* viven en BandejaVacantesPage.razor.css
   (scoped) para que el aislamiento de Blazor las aplique correctamente. */
