/* Vilcanota · sistema visual institucional. Estilos limitados al portal. */
.vbl-wrap {
    --vbl-petrol: #0e3a66;
    --vbl-deep: #0a2342;
    --vbl-green: #08728b;
    --vbl-ink: #16324a;
    --vbl-muted: #4b6379;
    --vbl-line: #cee2ee;
    --vbl-surface: #f8fcff;
    --vbl-canvas: #eaf6fb;
    --vbl-danger: #a12e35;
    --vbl-turquoise: #16c2d5;
    --vbl-accent: #12b981;
    --vbl-gold: #f4b942;
    --vbl-shadow: 0 8px 24px rgb(14 58 102 / 8%);
    --vbl-layout-width: 1200px;
    box-sizing: border-box;
    width: 100%;
    max-width: var(--vbl-layout-width);
    margin: 24px auto 48px;
    padding: 0;
    color: var(--vbl-ink);
    font-family: Manrope, system-ui, sans-serif;
    font-size: 16px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    overflow-wrap: anywhere;
    accent-color: var(--vbl-green);
    caret-color: var(--vbl-green);
}
.vbl-wrap *, .vbl-wrap *::before, .vbl-wrap *::after { box-sizing: border-box; min-width: 0; }
.vbl-wrap ::selection { background: #c4eff7; color: #0a2342; }
.vbl-wrap [hidden] { display: none !important; } /* El estado hidden debe prevalecer sobre las cuadrículas. */
.vbl-wrap :where(h1,h2,h3,h4,p,ul,dl) { margin: 0; }
.vbl-wrap :is(h1,h2,h3,h4) { color: var(--vbl-deep); font-family: inherit; font-weight: 700; line-height: 1.2; letter-spacing: -.025em; text-wrap: balance; }
.vbl-wrap h1 { font-size: clamp(28px, 3.2vw, 38px); }
.vbl-wrap h2 { font-size: 24px; }
.vbl-wrap h3 { font-size: 21px; }
.vbl-wrap a { color: #0e5680; text-decoration: none; text-underline-offset: .2em; }
.vbl-wrap a:hover { color: #0a3a66; }
.vbl-wrap :focus-visible { outline: 3px solid var(--vbl-green); outline-offset: 4px; }
.vbl-wrap :is(img,svg) { max-width: 100%; }
.vbl-icon { display: inline-block; flex: 0 0 auto; vertical-align: -.18em; }
.vbl-sr, .vbl-honeypot { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.vbl-muted { color: var(--vbl-muted); font-weight: 400; }
/* Integración: resuelve el ancho de lectura y el espacio del tema sin editarlo. */
body.vbl-portal-page { background: #f8fcff; }
body.vbl-portal-page main:has(.vbl-wrap) { --wp--preset--spacing--60: 0px; }
body.vbl-portal-page .wp-block-post-content:has(> .vbl-wrap) { margin-block: 0; }
body.vbl-portal-page .vbl-wrap.alignwide { width: 100%; max-width: var(--vbl-layout-width); margin: 24px auto 48px; }
body.vbl-portal-page :is(.wp-block-post-title,.entry-header,.page-header) { display: none; }
body.vbl-offer-page :is(.wp-block-post-author-name,.wp-block-post-date,.wp-block-post-terms,.wp-block-post-navigation-link,.wp-block-query),
body.vbl-offer-page .wp-block-group:has(> .wp-block-post-author-name),
body.vbl-offer-page .wp-block-group:has(> .wp-block-query),
body.vbl-offer-page main > .wp-block-separator { display: none; }
.vbl-panel-wrap { container: vbl-panel / inline-size; }
/* Marca y acciones */
.vbl-brand { display: inline-flex; align-items: center; gap: 12px; line-height: 1.25; }
.vbl-brand-mark { width: 44px; height: 44px; flex: 0 0 auto; display: grid; place-items: center; background: var(--vbl-turquoise); color: var(--vbl-deep); border-radius: 12px; }
.vbl-brand-text { display: flex; flex-direction: column; gap: 4px; }
.vbl-brand-text strong { color: var(--vbl-deep); font-size: 15px; font-weight: 800; }
.vbl-brand-text small { color: var(--vbl-muted); font-size: 12px; }
.vbl-wrap .vbl-brand.is-light { color: white; }
.vbl-brand.is-light .vbl-brand-text strong { color: white; }
.vbl-brand.is-light .vbl-brand-text small { color: #d7eefb; }
.vbl-brand.is-light .vbl-brand-mark { background: var(--vbl-turquoise); color: var(--vbl-deep); }
.vbl-wrap .vbl-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 11px 18px; border: 1px solid transparent; border-radius: 8px; font-family: inherit; font-size: 14px; font-weight: 700; line-height: 1.4; text-align: center; cursor: pointer; text-decoration: none; transition: background-color .15s, border-color .15s, color .15s; }
.vbl-wrap .vbl-btn-primary { background: var(--vbl-petrol); color: white; box-shadow: 0 5px 12px rgb(14 58 102 / 18%); }
.vbl-wrap .vbl-btn-primary:hover { background: #0a2342; color: white; }
.vbl-wrap .vbl-btn-secondary { background: white; border-color: var(--vbl-line); color: var(--vbl-deep); }
.vbl-wrap .vbl-btn-secondary:hover { background: #e2f3fa; border-color: #8bb6cf; }
.vbl-wrap .vbl-btn-ghost { color: #0e5680; background: transparent; }
.vbl-wrap .vbl-btn-ghost:hover { background: #e2f3fa; }
.vbl-wrap .vbl-btn-sm { padding: 9px 12px; }
.vbl-btn-block { width: 100%; }
.vbl-icon-btn, .vbl-nav-toggle { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 44px; min-height: 44px; padding: 10px; border: 0; border-radius: 8px; background: transparent; color: var(--vbl-petrol); font: inherit; cursor: pointer; }
.vbl-icon-btn:hover, .vbl-nav-toggle:hover { background: #e2f3fa; }
.vbl-icon-btn.is-danger { color: var(--vbl-danger); }
.vbl-icon-btn.is-danger:hover { background: #fbe9e9; }
.vbl-inline-form, .vbl-logout-form { display: inline-flex; margin: 0; }
.vbl-back-link { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; margin-bottom: 16px; font-size: 14px; font-weight: 700; }
/* Avisos, estados y metadatos */
.vbl-alert { display: flex; align-items: flex-start; gap: 12px; margin: 20px 0; padding: 16px 20px; border-radius: 10px; background: #dcf8ec; color: #07523d; }
.vbl-alert .vbl-icon { margin-top: 3px; }
.vbl-alert.is-error { background: #fbe9e9; color: #8b2731; }
.vbl-badge, .vbl-count-pill { display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px; border-radius: 6px; background: #cbf6e8; color: #07523d; font-size: 12px; font-weight: 700; line-height: 1.4; }
.vbl-badge.is-closing, .vbl-badge.is-new { background: #fff0d6; color: #794700; }
.vbl-badge.is-expired, .vbl-badge.is-closed, .vbl-badge.is-draft { background: #e7ecee; color: #45545b; }
.vbl-badge.is-pending { background: #fff0d6; color: #794700; }
.vbl-byline, .vbl-job-date, .vbl-hint, .vbl-counter { color: var(--vbl-muted); font-size: 13px; }
.vbl-job-date { display: inline-flex; align-items: center; gap: 5px; }
.vbl-section-head, .vbl-research-results-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 32px 0 20px; }
.vbl-section-head p, .vbl-research-results-head p { color: var(--vbl-muted); font-size: 14px; margin-top: 8px; }
.vbl-empty, .vbl-closed-card { padding: 48px 24px; text-align: center; background: var(--vbl-surface); border-radius: 16px; }
.vbl-empty-icon { display: inline-grid; place-items: center; width: 56px; height: 56px; margin-bottom: 16px; color: var(--vbl-green); background: #e2f3fa; border-radius: 12px; }
.vbl-empty p, .vbl-closed-card p { max-width: 52ch; margin: 12px auto 24px; color: var(--vbl-muted); }
/* Barra privada: crece en altura, nunca recorta su contenido. */
.vbl-appbar { box-shadow: var(--vbl-shadow); border-bottom: 3px solid var(--vbl-turquoise); display: grid; grid-template-columns: auto minmax(0,1fr) auto; grid-template-areas: 'brand nav user'; align-items: center; gap: 20px; padding: 20px 24px; background: var(--vbl-surface); border-radius: 16px; }
.vbl-appbar > .vbl-brand { grid-area: brand; }
.vbl-appnav { grid-area: nav; display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 4px; }
.vbl-appnav a { display: flex; align-items: center; gap: 7px; min-height: 44px; padding: 10px 12px; border-radius: 8px; color: var(--vbl-muted); font-size: 13px; font-weight: 700; }
.vbl-appnav a:hover, .vbl-appnav a.is-active { color: #0e5680; background: #e2f3fa; }
.vbl-appbar-user { grid-area: user; display: flex; align-items: center; gap: 12px; }
.vbl-avatar { display: inline-grid; place-items: center; width: 42px; height: 42px; flex: 0 0 auto; background: #d6f4fa; color: #0e5680; border-radius: 50%; font-size: 14px; font-weight: 800; }
.vbl-user-text { display: flex; flex-direction: column; max-width: 190px; }
.vbl-user-text strong { font-size: 14px; }
.vbl-user-text small { color: var(--vbl-muted); font-size: 12px; }
.vbl-logout-form .vbl-icon-btn { font-size: 13px; }
.vbl-nav-toggle { grid-area: toggle; display: none; }
.vbl-panel-intro { padding: 28px 32px; border-radius: 18px; background: linear-gradient(110deg,#0a2342,#0e3a66 65%,#086e86); color: white; display: flex; align-items: center; justify-content: space-between; gap: 24px; margin: 40px 0 24px; }
.vbl-panel-intro h1 { color: white; }
.vbl-panel-intro p { color: #d7eefb; margin-top: 12px; max-width: 65ch; }
.vbl-panel-intro > .vbl-btn-primary { background: #16c2d5; color: #0a2342; box-shadow: none; }
.vbl-panel-intro > .vbl-btn-primary:hover { background: #83e9f4; color: #0a2342; }
.vbl-page-head p { color: var(--vbl-muted); margin-top: 12px; max-width: 65ch; }
.vbl-stats, .vbl-research-stats { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 16px; background: transparent; border-radius: 16px; padding: 0; margin-bottom: 32px; }
.vbl-research-stats { grid-template-columns: repeat(3,minmax(0,1fr)); }
.vbl-stat { display: flex; align-items: flex-start; gap: 16px; padding: 24px; border: 2px solid transparent; border-radius: 16px; background: #e1f0ff; box-shadow: 0 6px 18px rgb(14 58 102 / 7%); color: inherit; text-decoration: none; cursor: pointer; position: relative; transition: box-shadow .16s, transform .16s, border-color .16s, background-color .16s; }
.vbl-stat:nth-child(2) { background: #d7f5fa; }
.vbl-stat:nth-child(3) { background: #dcf8ec; }
.vbl-stat:nth-child(4) { background: #fff1d4; }
.vbl-stat:hover { box-shadow: 0 12px 26px rgb(14 58 102 / 15%); }
.vbl-stat:hover .vbl-stat-action { text-decoration: underline; }
.vbl-stat:active { transform: translateY(1px); box-shadow: 0 4px 12px rgb(14 58 102 / 12%); }
.vbl-stat.is-active { border-color: var(--vbl-petrol); box-shadow: inset 0 0 0 1px var(--vbl-petrol), 0 10px 24px rgb(14 58 102 / 14%); }
.vbl-stat > .vbl-stat-icon { display: inline-grid; place-items: center; flex: 0 0 42px; width: 42px; height: 42px; margin: 0; border-radius: 12px; background: #0e3a66; color: white; }
.vbl-stat:nth-child(2) > .vbl-stat-icon { background: #16c2d5; color: #0a2342; }
.vbl-stat:nth-child(3) > .vbl-stat-icon { background: var(--vbl-accent); color: #063b2a; }
.vbl-stat:nth-child(4) > .vbl-stat-icon { background: var(--vbl-gold); color: #493000; }
.vbl-stat-body { display: flex; flex-direction: column; }
.vbl-stat-body strong { display: block; color: var(--vbl-deep); font-size: 32px; line-height: 1.15; font-variant-numeric: tabular-nums; }
.vbl-stat-body > span { display: block; margin-top: 8px; color: var(--vbl-muted); font-size: 14px; }
.vbl-stat-action { display: block; margin-top: 10px; color: #0e5680; font-size: 12px; font-weight: 700; }
.vbl-stat.is-active .vbl-stat-action { color: #07523d; }
/* Objetos: auto-fit permite que uno o dos registros aprovechen toda la fila. */
.vbl-job-grid, .vbl-research-grid, .vbl-applicant-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,300px),1fr)); gap: 20px; }
.vbl-job-card, .vbl-research-card, .vbl-applicant-card { display: flex; flex-direction: column; gap: 16px; padding: 24px; background: linear-gradient(155deg,#ffffff,#f0f9ff); border: 0; border-radius: 16px; box-shadow: var(--vbl-shadow); transition: box-shadow .18s, transform .18s; }
.vbl-job-card-top, .vbl-research-card-top { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
.vbl-job-card h3 a { color: var(--vbl-deep); }
.vbl-job-card h3 a:hover { text-decoration: underline; }
.vbl-company { display: flex; align-items: flex-start; gap: 7px; color: #0e5680; font-size: 14px; font-weight: 700; }
.vbl-company svg { margin-top: 3px; }
.vbl-meta-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; list-style: none; padding: 0; color: var(--vbl-muted); font-size: 14px; }
.vbl-meta-list li { display: flex; align-items: flex-start; gap: 8px; }
.vbl-meta-list svg { margin-top: 3px; color: #08728b; }
.vbl-card-excerpt { color: var(--vbl-muted); font-size: 14px; line-height: 1.7; }
.vbl-card-link { padding: 10px 16px; border-radius: 8px; background: #d7f5fa; display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; min-height: 44px; margin-top: auto; font-size: 14px; font-weight: 700; }
.vbl-job-card-foot { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; border-top: 1px solid var(--vbl-line); padding-top: 16px; margin-top: auto; }
.vbl-card-actions, .vbl-research-panel-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.vbl-card-link:hover { background: #bceff6; }
.vbl-count-link { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; font-size: 13px; font-weight: 700; }
.vbl-count { font-variant-numeric: tabular-nums; }
/* Cabeceras públicas y búsqueda */
.vbl-public-hero, .vbl-research-hero { padding: clamp(20px,2.4vw,30px); border-radius: 18px; background: linear-gradient(115deg,#0a2342 0%,#0e3a66 48%,#086e86 100%); border-bottom: 3px solid var(--vbl-turquoise); box-shadow: 0 16px 36px rgb(14 58 102 / 16%); color: white; } /* taste-skill-ignore: degradado institucional solicitado por el usuario. */
.vbl-public-hero :focus-visible, .vbl-research-hero :focus-visible, .vbl-login-brand :focus-visible { outline-color: #83e9f4; }
.vbl-public-masthead { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 20px; }
.vbl-wrap .vbl-public-masthead > a:not(.vbl-brand) { color: #d7eefb; font-size: 14px; text-decoration: underline; }
.vbl-public-hero h1, .vbl-research-hero h1 { color: white; font-size: clamp(28px,3vw,38px); max-width: 22ch; }
.vbl-public-hero-copy > p, .vbl-research-hero > p { max-width: 75ch; color: #d7eefb; margin-top: 10px; }
.vbl-public-stat { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: 8px; background: #16c2d5; color: #0a2342; font-size: 14px; font-weight: 600; margin-top: 14px; }
.vbl-public-stat strong { color: #0a2342; font-size: 20px; font-variant-numeric: tabular-nums; }
.vbl-public-search { position: relative; margin-top: 18px; max-width: 720px; }
.vbl-public-search-icon { position: absolute; top: 15px; left: 16px; color: var(--vbl-muted); }
.vbl-wrap .vbl-public-search input[type=search] { padding-left: 48px; }
.vbl-offer-filters { display: flex; flex-wrap: wrap; align-items: end; gap: 16px; margin: 24px 0; padding: 20px 24px; background: #eaf6fb; border-radius: 16px; box-shadow: 0 4px 16px rgb(14 58 102 / 5%); }
.vbl-offer-filters label { display: grid; gap: 8px; flex: 1 1 220px; font-size: 14px; font-weight: 700; }
.vbl-results-count { align-self: center; color: var(--vbl-muted); font-size: 14px; }
/* Investigaciones */
.vbl-research-hero-meta { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 16px; margin-top: 14px; }
.vbl-research-hero-meta .vbl-public-stat { margin: 0; }
.vbl-wrap .vbl-research-crosslink { color: #d7eefb; font-size: 14px; text-decoration: underline; }
.vbl-research-filters { display: flex; flex-wrap: wrap; align-items: end; gap: 16px; margin: 24px 0; padding: 24px; border-radius: 16px; background: #eaf6fb; box-shadow: 0 4px 16px rgb(14 58 102 / 5%); }
.vbl-research-filter { display: flex; flex-direction: column; gap: 8px; flex: 1 1 180px; font-size: 14px; font-weight: 700; }
.vbl-research-filter-search { flex: 2 1 260px; }
.vbl-research-input { position: relative; }
.vbl-research-input > svg { position: absolute; left: 14px; top: 15px; color: var(--vbl-muted); }
.vbl-wrap .vbl-research-input input[type=search] { padding-left: 44px; }
.vbl-research-filter-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; }
.vbl-research-type { background: #ddf2fb; color: var(--vbl-petrol); }
.vbl-research-year { color: var(--vbl-muted); font-size: 14px; font-variant-numeric: tabular-nums; }
.vbl-research-authors { font-size: 14px; font-weight: 700; }
.vbl-research-career { color: #0e5680; font-size: 13px; }
.vbl-research-summary { color: var(--vbl-muted); line-height: 1.75; max-width: 70ch; }
.vbl-research-card-foot { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; border-top: 1px solid var(--vbl-line); padding-top: 20px; margin-top: auto; }
.vbl-research-file-meta, .vbl-research-file-row { color: var(--vbl-muted); font-size: 13px; }
.vbl-research-file-row { display: flex; align-items: center; gap: 8px; }
.vbl-research-current-file { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 12px; background: #e2f3fa; border-radius: 8px; font-size: 13px; }
.vbl-research-grid:not(.vbl-research-public-grid):has(> article:only-child) .vbl-research-card { padding: 32px; }
.vbl-research-panel-actions { padding-top: 16px; margin-top: auto; border-top: 1px solid var(--vbl-line); }

/* Portadas y detalle del portal de Investigaciones */
.vbl-research-public-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; align-items: stretch; }
.vbl-research-public-card { padding: 0; gap: 0; overflow: hidden; background: #ffffff; border: 1px solid #dceaf2; border-radius: 18px; box-shadow: 0 10px 30px rgb(14 58 102 / 8%); }
.vbl-research-card-cover { display: block; aspect-ratio: 16 / 10; overflow: hidden; background: linear-gradient(135deg, #0a2342, #08728b); }
.vbl-research-card-cover img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.vbl-research-card-body { display: flex; flex: 1; flex-direction: column; gap: 12px; padding: 22px 22px 0; }
.vbl-research-card-body h3 { margin: 0; font-size: 20px; line-height: 1.3; }
.vbl-research-card-body h3 a { color: var(--vbl-deep); text-decoration: none; }
.vbl-research-card-body h3 a:hover { color: #086e86; text-decoration: underline; }
.vbl-research-card-meta { display: flex; flex-direction: column; gap: 4px; }
.vbl-research-card-meta p { margin: 0; }
.vbl-research-public-card .vbl-research-summary { display: -webkit-box; margin: 0; overflow: hidden; font-size: 14px; line-height: 1.65; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.vbl-research-public-card .vbl-research-card-foot { flex-direction: column; align-items: stretch; gap: 8px; margin-top: auto; padding: 14px 22px 18px; justify-content: flex-start; border-top: 1px solid #e6f0f6; }
.vbl-research-card-actions { display: flex; flex-wrap: wrap; align-items: center; align-content: flex-start; gap: 8px; }
.vbl-wrap .vbl-research-card-actions .vbl-btn { flex: 0 1 auto; align-self: flex-start; min-height: 40px; height: auto; padding: 8px 12px; font-size: 13px; line-height: 1.4; justify-content: center; }
.vbl-research-cover-current { display: flex; align-items: center; gap: 14px; padding: 12px; border-radius: 10px; background: #e2f3fa; font-size: 13px; }
.vbl-research-cover-current img { flex: 0 0 auto; width: 176px; height: 110px; border-radius: 8px; object-fit: cover; box-shadow: 0 4px 12px rgb(14 58 102 / 15%); }
.vbl-research-detail-nav { margin: 4px 0 18px; }
.vbl-research-detail { display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr); overflow: hidden; border: 1px solid #dceaf2; border-radius: 20px; background: #ffffff; box-shadow: 0 18px 48px rgb(14 58 102 / 12%); }
.vbl-research-detail-cover { min-height: 100%; margin: 0; background: #0a2342; }
.vbl-research-detail-cover img { display: block; width: 100%; height: 100%; min-height: 420px; max-height: 620px; object-fit: cover; }
.vbl-research-detail-body { display: flex; flex-direction: column; gap: 18px; padding: clamp(28px, 3vw, 48px); }
.vbl-research-detail-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.vbl-research-detail-body h1 { margin: 0; color: var(--vbl-deep); font-size: clamp(28px, 3vw, 42px); line-height: 1.15; }
.vbl-research-detail-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin: 0; padding: 18px; border-radius: 12px; background: #eef8fd; }
.vbl-research-detail-meta > div { display: flex; flex-direction: column; gap: 4px; }
.vbl-research-detail-meta dt { color: #08728b; font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.vbl-research-detail-meta dd { display: flex; align-items: center; gap: 6px; margin: 0; color: var(--vbl-ink); font-size: 14px; font-weight: 700; }
.vbl-research-detail-summary { padding-top: 18px; border-top: 1px solid #e2eef5; }
.vbl-research-detail-summary h2 { margin-bottom: 8px; font-size: 18px; }
.vbl-research-detail-summary p { margin: 0; color: #3b556b; line-height: 1.8; }
.vbl-research-detail-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin-top: auto; padding-top: 8px; }
@media (max-width: 1024px) {
    .vbl-research-public-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
    .vbl-research-detail { grid-template-columns: minmax(0, 1fr); }
    .vbl-research-detail-cover img { min-height: 280px; max-height: 400px; }
}
@media (max-width: 640px) {
    .vbl-research-public-grid { grid-template-columns: minmax(0, 1fr); }
    .vbl-research-detail-body { padding: 24px; }
    .vbl-research-detail-meta { grid-template-columns: minmax(0, 1fr); }
    .vbl-research-cover-current { flex-direction: column; align-items: flex-start; }
    .vbl-research-cover-current img { width: 100%; height: auto; aspect-ratio: 16 / 10; }
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
    .vbl-research-public-card:hover .vbl-research-card-cover img { transform: scale(1.045); }
}
/* Formularios */
.vbl-page-head { margin: 32px 0 24px; }
.vbl-form-layout { display: grid; grid-template-columns: minmax(0,1fr) 280px; align-items: start; gap: 24px; }
.vbl-form { background: #f8fcff; padding: 32px; border-radius: 16px; box-shadow: var(--vbl-shadow); }
.vbl-form-section + .vbl-form-section { border-top: 1px solid var(--vbl-line); padding-top: 32px; margin-top: 32px; }
.vbl-form-section-head { margin-bottom: 24px; padding: 18px 20px; border-radius: 12px; background: #eaf6fb; }
.vbl-form-section-head h2 { font-size: 22px; }
.vbl-form-section-head p { color: var(--vbl-muted); font-size: 14px; margin-top: 8px; }
.vbl-field-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 24px; }
.vbl-field { display: flex; flex-direction: column; gap: 8px; margin: 0; }
.vbl-span-2 { grid-column: 1 / -1; }
.vbl-field-label { color: var(--vbl-ink); font-size: 14px; font-weight: 700; }
.vbl-req { color: #a12e35; }
.vbl-wrap :where(input:not([type=checkbox]):not([type=hidden]),select,textarea) { width: 100%; max-width: 100%; min-width: 0; min-height: 48px; padding: 12px 14px; border: 1px solid #738da2; border-radius: 8px; background: white; color: var(--vbl-ink); font: inherit; font-size: 16px; font-weight: 400; line-height: 1.5; }
.vbl-wrap textarea { display: block; resize: vertical; min-height: 120px; }
.vbl-wrap input::placeholder, .vbl-wrap textarea::placeholder { color: #4b6379; opacity: 1; }
.vbl-wrap :is(input,select,textarea):focus { border-color: var(--vbl-green); background-color: #f4fcff; }
.vbl-wrap :is(input,select,textarea):user-invalid { border-color: var(--vbl-danger); }
.vbl-wrap :is(input,select,textarea,button):disabled { opacity: .6; cursor: not-allowed; }
.vbl-wrap input[type=file] { padding: 10px; font-size: 14px; }
.vbl-wrap input[type=file]::file-selector-button { border: 0; border-radius: 5px; padding: 9px 12px; margin-right: 10px; color: #0a2342; background: #e2f3fa; font: inherit; cursor: pointer; }
.vbl-field-foot { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
.vbl-counter { white-space: nowrap; font-variant-numeric: tabular-nums; }
.vbl-form-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 32px; border-top: 1px solid var(--vbl-line); padding-top: 24px; }
.vbl-form-aside { display: grid; gap: 20px; }
.vbl-tip-card { padding: 24px; border-radius: 16px; background: #e2f3fa; }
.vbl-tip-card h3 { font-size: 17px; margin-bottom: 12px; }
.vbl-tip-card p, .vbl-tip-card li { color: var(--vbl-muted); font-size: 14px; }
.vbl-tip-card ul { padding-left: 20px; }
.vbl-tip-card li + li { margin-top: 8px; }
.vbl-tip-icon { display: block; color: var(--vbl-green); margin-bottom: 16px; }
.vbl-input-group { position: relative; }
.vbl-input-icon { position: absolute; left: 14px; top: 15px; color: var(--vbl-muted); }
.vbl-wrap .vbl-input-group input { padding-left: 44px; padding-right: 48px; }
.vbl-input-action { position: absolute; right: 2px; top: 2px; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 6px; background: transparent; color: var(--vbl-muted); cursor: pointer; }
.vbl-eye-off, .vbl-input-action.is-visible .vbl-eye-on { display: none; }
.vbl-input-action.is-visible .vbl-eye-off { display: block; }
.vbl-checkbox { display: flex; align-items: flex-start; gap: 12px; font-size: 14px; cursor: pointer; }
.vbl-checkbox input { flex: 0 0 20px; width: 20px; height: 20px; margin: 2px 0 0; }
.vbl-consent { margin-top: 24px; color: var(--vbl-muted); }
/* Acceso: una sola superficie, el formulario es prioritario en móvil. */
.vbl-login { box-shadow: 0 16px 40px rgb(14 58 102 / 12%); display: grid; grid-template-columns: 1fr 1fr; background: var(--vbl-surface); border-radius: 20px; overflow: clip; }
.vbl-login-brand { display: flex; flex-direction: column; justify-content: space-between; padding: 48px; color: white; background: linear-gradient(145deg,#0a2342,#0e3a66 55%,#086e86); } /* taste-skill-ignore: degradado institucional solicitado por el usuario. */
.vbl-login-copy { margin: 48px 0; }
.vbl-login-copy .vbl-login-statement { color: white; font-size: clamp(28px,3vw,40px); font-weight: 700; line-height: 1.2; letter-spacing: -.025em; margin-bottom: 20px; }
.vbl-login-copy > p:not(.vbl-login-statement) { color: #d7eefb; }
.vbl-login-points { display: grid; list-style: none; padding: 0; gap: 16px; margin-top: 32px; }
.vbl-login-points li { display: flex; align-items: flex-start; gap: 10px; color: #d7eefb; font-size: 14px; }
.vbl-login-points svg { margin-top: 3px; }
.vbl-login-foot { color: #d7eefb; font-size: 13px; }
.vbl-login-panel { display: flex; flex-direction: column; justify-content: center; padding: 48px; }
.vbl-login-head h1 { font-size: 32px; }
.vbl-login-head p { margin: 16px 0 28px; color: var(--vbl-muted); font-size: 14px; }
.vbl-login-form { display: flex; flex-direction: column; gap: 24px; padding: 0; border-radius: 0; background: transparent; box-shadow: none; }
.vbl-login-help { color: var(--vbl-muted); text-align: center; font-size: 13px; margin-top: 24px; }
.vbl-login-public { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; margin-top: 16px; font-size: 14px; font-weight: 700; }
/* Convocatoria y postulación */
.vbl-offer-hero { display: grid; grid-template-columns: minmax(0,1fr) 300px; gap: 32px; padding: 32px; border-radius: 20px; background: linear-gradient(120deg,#e0f1ff,#d7f5fa); }
.vbl-offer-hero h1 { margin-bottom: 20px; }
.vbl-offer-company { display: flex; align-items: center; gap: 8px; color: #0e5680; font-weight: 700; }
.vbl-offer-chips { display: flex; flex-wrap: wrap; gap: 12px 24px; list-style: none; padding: 0; margin-top: 24px; color: var(--vbl-muted); font-size: 14px; }
.vbl-offer-chips li { display: flex; align-items: flex-start; gap: 8px; }
.vbl-offer-status-card { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }
.vbl-offer-status-card strong { font-size: 24px; color: var(--vbl-deep); }
.vbl-offer-status-card small { color: var(--vbl-muted); font-size: 13px; }
.vbl-offer-layout { display: grid; grid-template-columns: minmax(0,1fr) 320px; gap: 24px; margin-top: 24px; align-items: start; }
.vbl-offer-main, .vbl-offer-side { display: grid; gap: 24px; }
.vbl-panel-card, .vbl-side-card { padding: 32px; background: #ffffff; border-radius: 16px; box-shadow: var(--vbl-shadow); }
.vbl-panel-card h2, .vbl-side-card h2 { margin-bottom: 24px; font-size: 22px; }
.vbl-prose { max-width: 70ch; line-height: 1.8; }
.vbl-prose :is(p,ul,ol) + :is(p,ul,ol) { margin-top: 16px; }
.vbl-prose :is(ul,ol) { padding-left: 24px; }
.vbl-detail-list > div { display: grid; grid-template-columns: minmax(100px,1fr) minmax(0,2fr); gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--vbl-line); font-size: 14px; }
.vbl-detail-list dt { color: var(--vbl-muted); }
.vbl-detail-list dd { margin: 0; font-weight: 700; }
.vbl-side-list { display: grid; gap: 16px; list-style: none; padding: 0; margin-bottom: 24px; }
.vbl-side-list li { display: flex; flex-direction: column; gap: 4px; font-size: 14px; }
.vbl-side-list span { color: var(--vbl-muted); font-size: 13px; }
.vbl-side-card.is-note { background: #e0f1fa; color: var(--vbl-muted); font-size: 14px; }
.vbl-side-card.is-note svg { color: var(--vbl-green); margin-bottom: 12px; }
.vbl-contact-value { font-size: 14px; }
.vbl-apply-section { margin-top: 32px; scroll-margin-top: 24px; }
.vbl-apply-form { padding: 0; background: transparent; border-radius: 0; box-shadow: none; }
.vbl-apply-card > .vbl-form-section-head h2 { margin-bottom: 0; }
.vbl-apply-form > .vbl-btn { margin-top: 24px; }
.vbl-apply-form .vbl-field-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
/* Postulantes */
.vbl-app-toolbar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 20px; margin-bottom: 24px; }
.vbl-filter-group { display: flex; flex-wrap: wrap; gap: 6px; }
.vbl-app-filter { min-height: 44px; padding: 10px 14px; border: 1px solid var(--vbl-line); border-radius: 8px; background: var(--vbl-surface); color: var(--vbl-muted); font: inherit; font-size: 14px; cursor: pointer; }
.vbl-app-filter.is-active { background: var(--vbl-green); color: white; border-color: var(--vbl-green); background-color: #f4fcff; }
.vbl-search-field { display: flex; align-items: center; position: relative; flex: 1 1 240px; max-width: 360px; }
.vbl-search-field > svg { position: absolute; left: 14px; color: var(--vbl-muted); }
.vbl-wrap .vbl-search-field input { padding-left: 44px; }
.vbl-applicant-head { display: flex; align-items: flex-start; gap: 12px; }
.vbl-applicant-id { flex: 1; }
.vbl-applicant-id h2 { font-size: 20px; margin-bottom: 6px; }
.vbl-applicant-id p, .vbl-applicant-date { color: var(--vbl-muted); font-size: 13px; }
.vbl-applicant-contact { display: grid; gap: 12px; font-size: 14px; }
.vbl-applicant-contact a { display: flex; align-items: flex-start; gap: 8px; min-height: 24px; }
.vbl-applicant-message { color: var(--vbl-muted); font-size: 14px; padding: 16px; border-radius: 8px; background: #eaf6fb; }
.vbl-applicant-foot { display: flex; flex-direction: column; gap: 16px; border-top: 1px solid var(--vbl-line); padding-top: 16px; margin-top: auto; }
.vbl-eyebrow { display: inline-block; margin-bottom: 8px; color: #08728b; font-size: 12px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.vbl-applications-head p { max-width: 75ch; }
.vbl-app-filters { display: flex; flex-wrap: wrap; align-items: end; gap: 16px; margin: 0 0 28px; padding: 20px 24px; border-radius: 16px; background: #eaf6fb; box-shadow: 0 4px 16px rgb(14 58 102 / 5%); }
.vbl-filter-field { display: flex; flex-direction: column; gap: 8px; flex: 1 1 190px; margin: 0; color: var(--vbl-ink); font-size: 14px; font-weight: 700; }
.vbl-filter-search { flex: 2 1 300px; }
.vbl-filter-field .vbl-search-field { width: 100%; max-width: none; flex: 0 0 auto; }
.vbl-filter-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.vbl-app-filters .vbl-results-count { flex-basis: 100%; margin: 0; }
.vbl-app-groups { display: grid; gap: 32px; }
.vbl-app-group-head { display: flex; align-items: end; justify-content: space-between; flex-wrap: wrap; gap: 12px 20px; margin-bottom: 16px; padding-bottom: 12px; border-bottom: 2px solid #d7f5fa; }
.vbl-app-group-label { display: block; color: #08728b; font-size: 12px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.vbl-app-group-head h2 { margin-top: 4px; font-size: 22px; }
.vbl-app-group-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; font-size: 13px; font-weight: 700; }
.vbl-no-cv { display: inline-flex; align-items: center; min-height: 44px; color: var(--vbl-muted); font-size: 13px; }
.vbl-applicant-id p { display: flex; align-items: center; gap: 5px; }
.vbl-applicant-id h2, .vbl-applicant-id h3 { font-size: 20px; margin-bottom: 6px; }
.vbl-panel-view { scroll-margin-top: 24px; }
.vbl-panel-view:has(.vbl-applications) { margin-top: 24px; }
.vbl-panel-view:focus { outline: none; }
.vbl-active-filter { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 6px; margin-top: 10px !important; color: var(--vbl-muted); font-size: 13px; }
.vbl-active-filter strong { color: var(--vbl-deep); }
.vbl-active-filter a { font-weight: 700; text-decoration: underline; }
html.vbl-view-loading [data-vbl-panel-view] { opacity: .55; pointer-events: none; }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
    .vbl-stat:hover { transform: translateY(-2px); }
}
/* Pie institucional exclusivo de las tres páginas del módulo. */
.vbl-closing { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 32px; padding: 28px 32px; background: linear-gradient(110deg,#e1f0ff,#d7f5fa); border-radius: 16px; }
.vbl-closing h2 { font-size: 24px; }
.vbl-closing p { color: var(--vbl-muted); max-width: 64ch; margin-top: 10px; font-size: 15px; }
.vbl-closing > .vbl-btn { flex: 0 0 auto; }
@media (max-width: 800px) {
    .vbl-closing { align-items: flex-start; flex-direction: column; }
}
@media (max-width: 600px) {
    .vbl-wrap .vbl-research-card-actions .vbl-btn { min-height: 44px; }
    .vbl-closing { padding: 24px; gap: 20px; }
    .vbl-closing h2 { font-size: 22px; }
    .vbl-closing > .vbl-btn { width: 100%; }
}
@media (max-width: 360px) {
}

/* Ajustes por espacio real del panel, incluso dentro de contenedores del tema. */
@container vbl-panel (max-width: 1100px) {
    .vbl-appbar { grid-template-columns: minmax(0,1fr) auto; grid-template-areas: 'brand user' 'nav nav'; gap: 16px; }
    .vbl-appnav { justify-content: flex-start; border-top: 1px solid var(--vbl-line); padding-top: 12px; }
}
@container vbl-panel (max-width: 640px) {
    .vbl-appbar { grid-template-columns: minmax(0,1fr) 44px; grid-template-areas: 'brand toggle' 'user user' 'nav nav'; padding: 16px; gap: 12px; }
    .vbl-nav-toggle { display: inline-flex; }
    .vbl-appbar-user { border-top: 1px solid var(--vbl-line); padding-top: 12px; }
    .vbl-user-text { flex: 1; max-width: none; }
    .vbl-appnav { display: none; }
    .vbl-appnav.is-open { display: flex; flex-direction: column; align-items: stretch; }
    .vbl-appnav a { font-size: 14px; }
}
@media (max-width: 1024px) {
    .vbl-form-layout { grid-template-columns: minmax(0,1fr) 240px; }
    .vbl-form, .vbl-panel-card, .vbl-side-card { padding: 24px; }
    .vbl-login-brand, .vbl-login-panel { padding: 32px; }
    .vbl-offer-hero { grid-template-columns: minmax(0,1fr) 240px; gap: 24px; }
    .vbl-offer-layout { grid-template-columns: minmax(0,1fr) 280px; }
}
@media (max-width: 800px) {
    .vbl-form-layout, .vbl-offer-layout { grid-template-columns: minmax(0,1fr); }
    .vbl-form-aside, .vbl-offer-side { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .vbl-offer-side > :only-child { grid-column: 1 / -1; }
    .vbl-login { grid-template-columns: minmax(0,1fr); }
    .vbl-login-brand { padding: 24px 32px; }
    .vbl-login-copy, .vbl-login-foot { display: none; }
    .vbl-login-panel { padding: 32px; }
    .vbl-stats:not(.vbl-research-stats) { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 600px) {
    body.vbl-portal-page { --wp--style--root--padding-left: 16px; --wp--style--root--padding-right: 16px; }
    body.vbl-portal-page .vbl-wrap.alignwide { margin: 16px auto 32px; }
    .vbl-public-masthead { align-items: flex-start; flex-direction: column; gap: 12px; margin-bottom: 18px; }
    .vbl-public-hero, .vbl-research-hero, .vbl-offer-hero { padding: 24px; border-radius: 16px; }
    .vbl-public-hero h1, .vbl-research-hero h1 { font-size: 30px; }
    .vbl-public-hero-copy > p, .vbl-research-hero > p { font-size: 15px; }
    .vbl-public-search { margin-top: 16px; }
    .vbl-wrap .vbl-public-search input[type=search] { padding-left: 44px; font-size: 16px; }
    .vbl-public-search-icon { left: 14px; }
    .vbl-panel-intro { padding: 24px; align-items: flex-start; flex-direction: column; margin-top: 28px; }
    .vbl-section-head, .vbl-research-results-head { align-items: flex-start; margin-top: 28px; }
    .vbl-stat { padding: 16px; gap: 10px; flex-wrap: wrap; }
    .vbl-stat-body strong { font-size: 28px; }
    .vbl-stat-body > span { font-size: 13px; }
    .vbl-app-filters { padding: 20px; }
    .vbl-filter-field, .vbl-filter-search { flex-basis: 100%; }
    .vbl-filter-actions { width: 100%; }
    .vbl-filter-actions .vbl-btn { flex: 1 1 auto; }
    .vbl-research-stats { grid-template-columns: minmax(0,1fr); padding: 0; }
    .vbl-research-stats .vbl-stat { align-items: center; flex-wrap: nowrap; }
    .vbl-research-stats .vbl-stat > div { display: flex; align-items: center; gap: 16px; }
    .vbl-research-stats .vbl-stat span { margin: 0; }
    .vbl-job-card, .vbl-research-card:not(.vbl-research-public-card), .vbl-applicant-card, .vbl-research-grid:not(.vbl-research-public-grid):has(> article:only-child) .vbl-research-card { padding: 20px; }
    .vbl-meta-list, .vbl-field-grid, .vbl-apply-form .vbl-field-grid, .vbl-form-aside, .vbl-offer-side, .vbl-offer-hero { grid-template-columns: minmax(0,1fr); }
    .vbl-meta-list { gap: 10px; }
    .vbl-span-2 { grid-column: auto; }
    .vbl-form, .vbl-panel-card, .vbl-side-card { padding: 20px; }
    .vbl-login-brand { padding: 24px; }
    .vbl-login-panel { padding: 28px 24px; }
    .vbl-login-head h1 { font-size: 28px; }
    .vbl-login-form, .vbl-apply-form { padding: 0; }
    .vbl-offer-hero-side { border-top: 1px solid #bedbe9; padding-top: 24px; }
    .vbl-detail-list > div { grid-template-columns: minmax(0,1fr); gap: 4px; }
    .vbl-research-filters, .vbl-offer-filters { padding: 20px; }
    .vbl-research-filter, .vbl-research-filter-search, .vbl-offer-filters label { flex-basis: 100%; }
    .vbl-form-actions > .vbl-btn { flex: 1 1 180px; }
    .vbl-applicant-head { flex-wrap: wrap; }
    .vbl-applicant-head > .vbl-badge { margin-left: 54px; }
    .vbl-research-card-foot { align-items: flex-start; flex-direction: column; }
    .vbl-research-results-head { align-items: flex-start; flex-direction: column; gap: 8px; }
}
@media (max-width: 480px) {
    .vbl-stats:not(.vbl-research-stats) { grid-template-columns: minmax(0,1fr); }
    .vbl-stat { align-items: center; }
    .vbl-app-group-head { align-items: flex-start; flex-direction: column; }
    .vbl-app-group-meta { width: 100%; }
}
@media (max-width: 400px) {
    .vbl-public-hero h1, .vbl-research-hero h1 { font-size: 28px; }
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
    .vbl-job-card:hover, .vbl-research-card:hover, .vbl-applicant-card:hover { box-shadow: 0 14px 32px rgb(14 58 102 / 14%); transform: translateY(-3px); }
}
@media (prefers-reduced-motion: reduce) {
    .vbl-wrap :is(.vbl-btn,.vbl-job-card,.vbl-research-card,.vbl-applicant-card) { transition: none; }
    .vbl-wrap *, .vbl-wrap *::before, .vbl-wrap *::after { animation: none; transition: none; scroll-behavior: auto; transform: none; }
}

/* -------------------------------------------------------------------------
 * Optimización 2026-10-29: detalle compacto, postulación y candidatos
 * ---------------------------------------------------------------------- */

/* Detalle de convocatoria: una cabecera, sin bloques duplicados. */
.vbl-offer-hero-compact { display: block; padding: 28px 32px; }
.vbl-offer-topline { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; margin-bottom: 10px; }
.vbl-offer-published { color: var(--vbl-muted); font-size: 13px; }
.vbl-offer-hero-compact h1 { margin: 6px 0 12px; font-size: clamp(28px, 3vw, 38px); }
.vbl-offer-hero-compact .vbl-offer-chips { margin-top: 16px; gap: 10px 22px; }
.vbl-offer-layout-compact { margin-top: 20px; gap: 20px; }
.vbl-offer-content h2 { margin-bottom: 14px; }
.vbl-offer-content .vbl-subhead { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--vbl-line); }
.vbl-offer-action h2 { margin-bottom: 10px; }
.vbl-offer-action-status { color: var(--vbl-deep); font-size: 22px; font-weight: 800; line-height: 1.25; }
.vbl-offer-action-note { margin: 8px 0 18px; color: var(--vbl-muted); font-size: 14px; }
.vbl-apply-section { margin-top: 24px; }

/* Formulario de postulación: zona de CV clara y errores accesibles. */
.vbl-file-drop {
    position: relative;
    display: flex;
    align-items: center;
    gap: 16px;
    min-height: 96px;
    padding: 18px 20px;
    border: 2px dashed #8bb6cf;
    border-radius: 12px;
    background: #f4fcff;
    cursor: pointer;
    transition: border-color .16s, background-color .16s, box-shadow .16s;
}
.vbl-file-drop:hover,
.vbl-file-drop:focus-within,
.vbl-file-drop.is-dragover { border-color: var(--vbl-green); background: #eaf6fb; box-shadow: 0 0 0 3px rgb(8 114 139 / 12%); }
.vbl-file-drop.has-file { border-style: solid; border-color: var(--vbl-accent); background: #f0fdf8; }
.vbl-file-drop.has-error { border-color: var(--vbl-danger); background: #fdf1f1; }
.vbl-wrap .vbl-file-input { position: static; order: 3; flex-basis: 100%; width: 100%; height: auto; opacity: 1; }
.vbl-file-drop:not(.is-enhanced) { flex-wrap: wrap; }
.vbl-file-drop:not(.is-enhanced) .vbl-file-drop-name { display: none; }
.vbl-wrap .vbl-file-drop.is-enhanced .vbl-file-input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 0;
    padding: 0;
    border: 0;
    opacity: 0;
    cursor: pointer;
}
.vbl-file-drop-icon {
    display: grid;
    place-items: center;
    flex: 0 0 48px;
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: #d7f5fa;
    color: #0e5680;
}
.vbl-file-drop.has-file .vbl-file-drop-icon { background: #cbf6e8; color: #07523d; }
.vbl-file-drop-copy { display: flex; flex-direction: column; gap: 2px; }
.vbl-file-drop-copy strong { color: var(--vbl-deep); font-size: 15px; }
.vbl-file-drop-copy small { color: var(--vbl-muted); font-size: 13px; }
.vbl-file-drop-name {
    margin-left: auto;
    max-width: 280px;
    overflow: hidden;
    color: var(--vbl-muted);
    font-size: 13px;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.vbl-file-drop.has-file .vbl-file-drop-name { color: #07523d; }
.vbl-field-error { display: block; color: #8b2731; font-size: 13px; font-weight: 700; line-height: 1.5; }
.vbl-field-error[hidden] { display: none !important; }
.vbl-wrap :is(input,textarea)[aria-invalid="true"] { border-color: var(--vbl-danger); background-color: #fff8f8; }

/* Panel de candidatos: tarjetas compactas y detalles desplegables. */
.vbl-applications-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin: 4px 0 20px; }
.vbl-applications-head h1 { font-size: clamp(26px, 2.6vw, 34px); }
.vbl-applications-head p { max-width: 82ch; margin-top: 8px; color: var(--vbl-muted); font-size: 14px; }
.vbl-app-state-pills { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.vbl-state-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 38px;
    padding: 7px 13px;
    border: 1px solid var(--vbl-line);
    border-radius: 999px;
    background: #ffffff;
    color: var(--vbl-muted);
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    transition: border-color .15s, background-color .15s, color .15s;
}
.vbl-state-pill::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: #a9bccb; }
.vbl-state-pill.is-nuevo::before { background: var(--vbl-gold); }
.vbl-state-pill.is-revisado::before { background: #2f7fbf; }
.vbl-state-pill.is-seleccionado::before { background: var(--vbl-accent); }
.vbl-state-pill.is-descartado::before { background: var(--vbl-danger); }
.vbl-state-pill strong { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px; background: #eaf6fb; color: var(--vbl-deep); font-size: 12px; font-variant-numeric: tabular-nums; }
.vbl-state-pill:hover { border-color: #8bb6cf; background: #f4fcff; color: var(--vbl-deep); }
.vbl-state-pill.is-active { border-color: var(--vbl-petrol); background: var(--vbl-petrol); color: #ffffff; }
.vbl-state-pill.is-active strong { background: rgb(255 255 255 / 18%); color: #ffffff; }
.vbl-state-pill.is-active::before { box-shadow: 0 0 0 2px rgb(255 255 255 / 55%); }
.vbl-candidate-filters { margin-bottom: 16px; padding: 16px 20px; gap: 12px 16px; }
.vbl-candidate-filters .vbl-filter-field { flex: 1 1 170px; }
.vbl-candidate-filters .vbl-filter-search { flex: 2 1 240px; }
.vbl-candidate-filters .vbl-filter-actions { flex: 0 1 auto; }
.vbl-candidate-pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 16px; margin-top: 20px; font-size: 14px; }
.vbl-candidate-list { display: grid; gap: 12px; }
.vbl-candidate {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 18px 20px;
    border: 1px solid #dceaf2;
    border-radius: 14px;
    background: #ffffff;
    box-shadow: 0 4px 14px rgb(14 58 102 / 6%);
    transition: border-color .16s, box-shadow .16s;
}
.vbl-candidate:hover { border-color: #b7d8e8; box-shadow: 0 8px 22px rgb(14 58 102 / 10%); }
.vbl-candidate-top { display: flex; align-items: flex-start; gap: 14px; }
.vbl-avatar-lg { width: 46px; height: 46px; font-size: 15px; }
.vbl-candidate-id { flex: 1; min-width: 0; }
.vbl-candidate-id h3 { margin: 0 0 4px; font-size: 18px; line-height: 1.3; }
.vbl-candidate-career,
.vbl-candidate-offer { display: flex; align-items: center; gap: 6px; margin: 0; color: var(--vbl-muted); font-size: 13px; }
.vbl-candidate-offer { color: #0e5680; font-weight: 600; }
.vbl-candidate-offer span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vbl-candidate-side { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; text-align: right; }
.vbl-candidate-date { display: inline-flex; align-items: center; gap: 5px; color: var(--vbl-muted); font-size: 12px; white-space: nowrap; }
.vbl-candidate-bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px 14px; padding-top: 12px; border-top: 1px solid #e6f0f6; }
.vbl-candidate-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.vbl-candidate-state-form { display: flex; align-items: center; gap: 8px; margin: 0; }
.vbl-wrap .vbl-candidate-state-form select { width: auto; min-width: 140px; min-height: 40px; padding: 8px 10px; font-size: 14px; }
.vbl-candidate-details { padding-top: 2px; border-top: 1px dashed var(--vbl-line); }
.vbl-candidate-details > summary {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 36px;
    color: #0e5680;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    list-style: none;
}
.vbl-candidate-details > summary::-webkit-details-marker { display: none; }
.vbl-candidate-details > summary::after { content: '+'; margin-left: 2px; font-size: 16px; line-height: 1; }
.vbl-candidate-details[open] > summary::after { content: '−'; }
.vbl-candidate-details > summary:hover { text-decoration: underline; }
.vbl-candidate-detail-body { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.5fr); gap: 14px; padding: 10px 0 4px; }
.vbl-candidate-contact { display: grid; align-content: start; gap: 6px; font-size: 14px; }
.vbl-candidate-contact a { display: flex; align-items: center; gap: 8px; min-height: 34px; }
.vbl-candidate-message { padding: 12px 14px; border-radius: 8px; background: #eaf6fb; color: #3b556b; font-size: 14px; line-height: 1.65; }
.vbl-badge.is-reviewed { background: #dbeafe; color: #0e3a66; }
.vbl-badge.is-selected { background: #cbf6e8; color: #07523d; }
.vbl-badge.is-rejected { background: #fbe9e9; color: #8b2731; }

/* Vista previa del CV en diálogo nativo. */
.vbl-cv-dialog {
    width: min(920px, calc(100vw - 32px));
    height: min(820px, calc(100vh - 32px));
    height: min(820px, calc(100dvh - 32px));
    max-height: calc(100dvh - 32px);
    padding: 0;
    border: 0;
    border-radius: 16px;
    background: #ffffff;
    box-shadow: 0 30px 80px rgb(10 35 66 / 35%);
    overflow: hidden;
}
.vbl-cv-dialog[open] { display: flex; flex-direction: column; }
.vbl-cv-dialog::backdrop { background: rgb(10 35 66 / 66%); }
.vbl-cv-dialog-head { flex: 0 0 auto; display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 18px 20px; border-bottom: 1px solid var(--vbl-line); }
.vbl-cv-dialog-head h2 { margin: 0; font-size: 19px; }
.vbl-cv-dialog-head .vbl-eyebrow { margin-bottom: 2px; }
.vbl-cv-frame-wrap { flex: 1 1 auto; min-height: 0; background: #eef3f7; }
.vbl-cv-frame-wrap iframe { display: block; width: 100%; height: 100%; border: 0; background: #ffffff; }
.vbl-cv-unavailable { display: grid; align-content: center; gap: 16px; min-height: 100%; padding: 24px; text-align: center; }
.vbl-cv-unavailable p { color: var(--vbl-muted); max-width: 52ch; margin-inline: auto; }
.vbl-cv-dialog-foot { flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 14px 20px; border-top: 1px solid var(--vbl-line); }
.vbl-cv-dialog-foot p { color: var(--vbl-muted); font-size: 13px; }

@media (max-width: 800px) {
    .vbl-offer-hero-compact { padding: 24px; }
    .vbl-offer-layout-compact { gap: 16px; }
    .vbl-applications-head { flex-direction: column; gap: 12px; }
}
@media (max-width: 640px) {
    .vbl-candidate { padding: 16px; }
    .vbl-candidate-top { flex-wrap: wrap; }
    .vbl-candidate-side { flex-direction: row; align-items: center; width: 100%; justify-content: flex-start; padding-left: 60px; text-align: left; }
    .vbl-candidate-bar { align-items: stretch; }
    .vbl-candidate-actions { width: 100%; }
    .vbl-candidate-actions .vbl-btn { flex: 1 1 150px; }
    .vbl-candidate-state-form { width: 100%; }
    .vbl-wrap .vbl-candidate-state-form select { flex: 1; min-width: 0; }
    .vbl-candidate-state-form .vbl-btn { flex: 0 0 auto; }
    .vbl-candidate-detail-body { grid-template-columns: minmax(0, 1fr); }
    .vbl-file-drop { flex-wrap: wrap; padding: 16px; }
    .vbl-file-drop-name { width: 100%; max-width: none; margin-left: 0; white-space: normal; }
    .vbl-cv-frame-wrap { height: 62vh; }
    .vbl-cv-dialog-foot { flex-direction: column; align-items: flex-start; }
    .vbl-cv-dialog-foot .vbl-btn { width: 100%; }
}
@media (max-width: 400px) {
    .vbl-candidate-side { padding-left: 0; }
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
    .vbl-candidate:hover { transform: none; }
}

/* Visor PDF local: la página se dibuja en memoria sin depender del visor nativo. */
.vbl-pdf-viewer { height: 100%; overflow: auto; padding: 0 16px 16px; text-align: center; }
.vbl-pdf-toolbar { position: sticky; top: 0; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 0; background: #eef3f7; font-size: 12px; }
.vbl-pdf-viewer canvas { display: block; max-width: 100%; margin: 0 auto; background: white; box-shadow: 0 2px 12px #16324a22; }
.vbl-pdf-toolbar button:disabled { opacity: .55; cursor: default; }
