:root{--navy:#143f70;--navy2:#263b72;--green:#a7b52a;--bg:#eef4f8;--card:#fff;--text:#17243b;--muted:#8798b0;--line:#dfe7ef;--success:#07966c;--warning:#f49a0a;--danger:#c23d4b;--violet:#625df5}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--text);background:var(--bg)}a{color:var(--navy);text-decoration:none}input,select,textarea{width:100%;border:1px solid #cad6e1;border-radius:9px;padding:11px 12px;font:inherit;background:#fff;color:var(--text)}textarea{min-height:100px}label{display:block;font-size:14px;font-weight:600;margin-bottom:12px}label input,label select,label textarea{margin-top:6px}.app-body{display:flex;min-height:100vh;background-image:linear-gradient(rgba(30,83,112,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(30,83,112,.035) 1px,transparent 1px);background-size:64px 64px}.sidebar{width:260px;background:#fff;border-right:1px solid var(--line);position:fixed;inset:0 auto 0 0;overflow:auto}.brand{height:112px;display:flex;align-items:center;gap:10px;padding:22px;border-bottom:1px solid var(--line)}.brand img{width:155px;height:auto}.brand strong{font-size:12px;color:var(--navy)}nav{padding:12px}nav a{display:flex;gap:12px;align-items:center;padding:11px 13px;border-radius:10px;color:#3c5069;font-size:14px;margin:2px 0}nav a:hover,nav a.active{background:#e9eef4;color:var(--navy);font-weight:700}.nav-label{font-size:10px;color:#a0afc2;padding:18px 13px 6px;font-weight:800;letter-spacing:.08em}.main{margin-left:260px;min-width:0;flex:1}.topbar{height:112px;background:#fff;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:20px 42px;position:sticky;top:0;z-index:10}.topbar h1{font-size:21px;margin:0}.topbar small{display:block;color:var(--muted);margin-top:4px}.user-menu{display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;border-radius:50%;background:#0e7e78;color:#fff;display:grid;place-items:center;font-weight:700}.user-menu b{font-size:13px}.user-menu small{font-size:11px}.link-button{border:0;background:none;color:var(--navy);cursor:pointer}.content{padding:28px 42px;max-width:1450px;margin:auto}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:18px;margin-bottom:20px}.stat,.card{background:rgba(255,255,255,.96);border:1px solid #e5ebf0;border-radius:16px;box-shadow:0 10px 30px rgba(30,64,93,.04)}.stat{padding:22px}.stat span{display:block;color:var(--muted);font-size:13px}.stat b{display:block;font-size:29px;margin-top:8px;color:var(--navy)}.card{padding:22px;margin-bottom:20px}.card h2{font-size:16px;margin:0 0 18px}.grid.two{display:grid;grid-template-columns:1fr 1fr;gap:20px}.toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.toolbar form{display:flex;gap:8px;max-width:520px;flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #cbd7e1;background:#fff;color:var(--navy);border-radius:9px;padding:10px 15px;font-weight:700;cursor:pointer}.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn.success{background:var(--success);border-color:var(--success);color:#fff}.btn.small{padding:7px 10px;font-size:12px}.btn.full{width:100%;padding:14px}.inline{display:inline-flex;gap:8px;align-items:center;margin-top:12px}.alert{padding:12px 15px;border-radius:10px;margin-bottom:16px}.alert.success{background:#e5f7f1;color:#087158}.alert.error{background:#feecef;color:#9c2436}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:#8091a7;font-weight:600;border-bottom:1px solid var(--line);padding:12px 10px}td{padding:13px 10px;border-bottom:1px solid #edf1f5;vertical-align:middle}.badge{display:inline-block;padding:5px 9px;border-radius:8px;background:#eaf0f7;color:var(--navy);font-size:11px;font-weight:700}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px 18px}.form-grid .wide{grid-column:1/-1}.checks,.permission-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.checks label,.permission-grid label,.check{font-weight:400}.checks input,.permission-grid input,.check input{width:auto}.flow{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.flow span{background:#eef3f8;border-radius:10px;padding:9px 12px;font-size:12px;font-weight:700;color:#5b6e84}.flow.big{background:#fff;padding:16px;border-radius:14px;margin-bottom:20px}.flow .done{background:#e5f7f1;color:var(--success)}.timeline{border-left:2px solid #dae4ee;margin-left:8px;padding-left:20px}.timeline>div{position:relative;margin-bottom:20px}.timeline>div:before{content:'';width:10px;height:10px;background:var(--navy);border-radius:50%;position:absolute;left:-26px;top:4px}.timeline small{display:block;color:var(--muted);margin:4px 0}.chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}.chip{background:#eef3f8;border-radius:20px;padding:7px 11px;font-size:12px}.login-page,.public-page.center{min-height:100vh;display:grid;place-items:center;background-color:#f4f8fb;background-image:linear-gradient(rgba(31,79,108,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(31,79,108,.05) 1px,transparent 1px);background-size:64px 64px}.login-card{width:min(430px,92vw);background:#fff;border-radius:18px;padding:38px;box-shadow:0 18px 55px rgba(34,63,90,.12);border:1px solid #e4eaf0;text-align:center}.login-logo{width:330px;max-width:100%;height:auto}.login-card h1{font-size:26px;color:var(--navy);margin:12px 0 4px}.login-card>p{color:#687b94;margin-bottom:28px}.login-card form{text-align:left}.login-card footer{margin-top:30px;color:#98a9bd;font-size:12px}.public-page{min-height:100vh;background:#f4f8fb}.public-header{background:#fff;border-bottom:1px solid var(--line);padding:20px max(5vw,30px);display:flex;align-items:center;gap:35px}.public-header img{width:240px}.public-header h1{margin:0;color:var(--navy)}.public-header p{margin:5px 0;color:var(--muted)}.public-content{max-width:1180px;margin:35px auto;padding:0 22px}.public-content.narrow{max-width:820px}.offer-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.offer-card{background:#fff;padding:24px;border-radius:16px;border:1px solid var(--line)}.offer-card h2{color:var(--navy)}code{font-size:11px;word-break:break-all}@media(max-width:1100px){.stats{grid-template-columns:repeat(2,1fr)}.offer-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.sidebar{width:78px}.brand{padding:12px}.brand img{width:54px}.brand strong,.sidebar nav span,.nav-label{display:none}.sidebar nav a{justify-content:center;font-size:20px}.main{margin-left:78px}.topbar{padding:14px 18px;height:88px}.user-menu>div:not(.avatar){display:none}.content{padding:18px}.stats,.grid.two,.form-grid,.offer-grid{grid-template-columns:1fr}.checks,.permission-grid{grid-template-columns:1fr}.public-header{flex-direction:column;align-items:flex-start}.public-header img{width:200px}}

/* COLVATALENT v0.2 - Portal público de ofertas */
.jobs-page{background:#fff;color:#17243b}.jobs-header{background:#fff;border-bottom:1px solid #d8dee5}.jobs-header-inner{max-width:1420px;margin:0 auto;padding:24px 28px;display:flex;align-items:center;gap:38px}.jobs-header-detail{justify-content:space-between}.jobs-logo{width:300px;max-width:34vw;height:auto}.jobs-header h1{margin:0;color:#124477;font-size:36px;line-height:1.1}.jobs-header p{margin:8px 0 0;color:#8091ad;font-size:18px}.jobs-back{font-weight:700}.jobs-content{max-width:1420px;margin:26px auto;padding:0 28px 10px}.jobs-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.job-card{border:1px solid #cfd5dc;background:#fff;border-radius:9px;overflow:hidden;display:flex;flex-direction:column;min-height:350px}.job-image-link{display:block}.job-image{width:100%;height:170px;display:block;object-fit:cover}.job-image-placeholder{background:linear-gradient(135deg,#eef3f7,#dce8f1);display:flex;align-items:center;justify-content:center}.job-image-placeholder img{width:55%;height:auto;opacity:.85}.job-card-body{padding:18px 16px 16px;display:flex;flex-direction:column;flex:1}.job-card h2{font-size:18px;line-height:1.35;margin:0 0 24px;color:#111;font-weight:700}.job-meta{color:#4f5d6c;margin:0 0 14px;font-size:14px;display:flex;gap:5px;flex-wrap:wrap}.job-row{display:flex;justify-content:space-between;gap:14px;color:#4c5968;font-size:14px;margin-top:auto;margin-bottom:16px}.jobs-button{display:inline-flex;align-items:center;justify-content:center;background:#1671f9;color:#fff!important;border:0;border-radius:4px;padding:9px 13px;font-weight:600;width:max-content}.jobs-button:hover{background:#0e5fd7}.jobs-button-large{font-size:16px;padding:13px 22px}.jobs-empty{grid-column:1/-1;text-align:center;padding:70px 20px;color:#52667e}.jobs-pagination{margin:24px 0}.jobs-footer{border-top:1px solid #d8dee5;text-align:center;padding:20px 16px 26px;color:#4c5968;font-size:14px;line-height:1.7}.jobs-footer a{color:#0665dc;text-decoration:underline}.job-detail-wrap{max-width:1180px;margin:30px auto;padding:0 24px 30px;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(360px,.8fr);gap:24px}.job-detail-card,.job-apply-card,.privacy-card{background:#fff;border:1px solid #d8dee5;border-radius:12px;overflow:hidden}.job-detail-image{width:100%;height:300px;object-fit:cover;display:block}.job-detail-body{padding:28px}.job-detail-kicker{color:#1671f9;font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.06em}.job-detail-body h1{font-size:32px;color:#123f70;margin:8px 0 14px}.job-detail-meta{display:flex;flex-wrap:wrap;gap:8px 18px;color:#627087;margin-bottom:28px}.job-detail-body h3{color:#173f70;margin-top:24px}.job-detail-body p{line-height:1.65;color:#35445a}.job-apply-card{padding:28px;height:max-content;position:sticky;top:20px}.job-apply-card h2{color:#123f70;margin-top:0}.apply-intro{color:#687b94;line-height:1.5}.public-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px}.public-form-grid .wide{grid-column:1/-1}.public-form-grid label{font-size:13px}.public-form-grid label small{display:block;font-weight:400;color:#8091ad;margin-top:3px}.public-consent{display:flex!important;gap:10px;align-items:flex-start;font-weight:400!important;line-height:1.45;background:#f4f8fc;border:1px solid #dfe8f1;padding:13px;border-radius:8px}.public-consent input{width:auto!important;margin-top:3px!important;flex:0 0 auto}.public-consent a{text-decoration:underline;color:#075fce}.public-alert-error{background:#fff0f1;border:1px solid #f4c2c7;color:#8c2530;padding:12px 15px;border-radius:8px;margin-bottom:14px}.privacy-wrap{max-width:1000px;margin:32px auto;padding:0 24px 40px}.privacy-card{padding:38px}.privacy-card h1{color:#123f70;font-size:32px;margin-top:0}.privacy-card h2{color:#123f70;font-size:19px;margin-top:28px}.privacy-card p{line-height:1.7;color:#35445a}.privacy-version{color:#8091ad!important}.privacy-note{margin-top:30px;padding:15px;border-left:4px solid #a7b52a;background:#f7f9ec;color:#465227;line-height:1.55}.vacancy-image-preview{display:flex;align-items:center;gap:12px;margin:4px 0 14px}.vacancy-image-preview img{width:180px;height:90px;object-fit:cover;border-radius:8px;border:1px solid #dce5ee}.vacancy-image-preview span{color:#8190a4;font-size:12px}.actions-cell{display:flex;gap:12px;align-items:center;white-space:nowrap}.inline-action{display:inline;margin:0}.publish-link{font:inherit;padding:0;color:#07805f;font-weight:700}.publish-link:hover{text-decoration:underline}
@media(max-width:1000px){.jobs-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.job-detail-wrap{grid-template-columns:1fr}.job-apply-card{position:static}.jobs-logo{width:245px}.jobs-header h1{font-size:30px}}
@media(max-width:680px){.jobs-header-inner{padding:18px;gap:18px;flex-direction:column;align-items:flex-start}.jobs-header-detail{flex-direction:row;align-items:center}.jobs-logo{width:210px;max-width:65vw}.jobs-header h1{font-size:27px}.jobs-header p{font-size:15px}.jobs-content{padding:0 14px}.jobs-grid{grid-template-columns:1fr}.job-card{min-height:0}.job-image{height:190px}.job-detail-wrap,.privacy-wrap{padding-left:14px;padding-right:14px}.job-detail-body,.job-apply-card,.privacy-card{padding:20px}.public-form-grid{grid-template-columns:1fr}.public-form-grid .wide{grid-column:auto}.jobs-footer{font-size:13px}}

/* COLVATALENT v0.3 - Detalle completo de vacante y formulario ampliado */
.job-detail-full-wrap{max-width:1320px;margin:24px auto;padding:0 24px 40px}.job-detail-reference{border-radius:8px}.job-detail-reference-head{padding:18px 18px 4px}.job-detail-reference-head h1{font-size:26px;color:#111;margin:0}.job-detail-hero{width:calc(100% - 36px);height:360px;object-fit:cover;margin:0 18px;border-radius:12px;display:block}.job-detail-hero-empty{background:#edf3f7;display:flex;align-items:center;justify-content:center}.job-detail-hero-empty img{width:310px;max-width:55%;height:auto}.job-detail-reference-body{padding:18px}.job-reference-meta{font-size:14px;color:#4d5968;margin:2px 0 20px}.job-detail-reference-body h3{font-size:16px;color:#111;margin:18px 0 9px}.job-detail-reference-body p,.job-rich-text{font-size:15px;line-height:1.65;color:#17243b}.job-rich-text{white-space:normal;margin-bottom:12px}.job-apply-full{position:static;margin-top:22px}.public-form-grid-3{grid-template-columns:repeat(3,1fr);gap:8px 16px}.public-form-grid-3 .span2{grid-column:span 2}.public-form-grid-3 .wide{grid-column:1/-1}
@media(max-width:980px){.public-form-grid-3{grid-template-columns:repeat(2,1fr)}.public-form-grid-3 .span2{grid-column:span 2}.job-detail-hero{height:300px}}
@media(max-width:680px){.job-detail-full-wrap{padding:0 12px 28px}.job-detail-reference-head{padding:16px 14px 4px}.job-detail-reference-head h1{font-size:22px}.job-detail-hero{width:calc(100% - 24px);margin:0 12px;height:220px}.job-detail-reference-body{padding:16px}.public-form-grid-3{grid-template-columns:1fr}.public-form-grid-3 .span2,.public-form-grid-3 .wide{grid-column:auto}}


/* COLVATALENT v0.4 - Home pública de ofertas, filtros y Banco de Hojas de Vida */
.jobs-modern{background:#fff}
.talent-public-topbar{
    min-height:68px;
    background:linear-gradient(90deg,#147596,#09627f);
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:0 50px;
    box-shadow:0 2px 8px rgba(9,64,89,.15);
}
.talent-public-brand{display:flex;align-items:center}
.talent-public-brand img{
    width:205px;
    max-height:48px;
    object-fit:contain;
    filter:brightness(0) invert(1);
}
.talent-public-topbar strong,.talent-top-link{
    color:#fff;
    font-size:16px;
    font-weight:700;
}
.talent-public-main{
    max-width:1360px;
    margin:24px auto 0;
    padding:0 28px 32px;
}
.talent-intro{
    background:#fff;
    border:1px solid #d8dee5;
    border-radius:5px;
    text-align:center;
    padding:18px 30px 20px;
    margin-bottom:24px;
}
.talent-intro h1{
    margin:0 0 8px;
    font-size:21px;
    font-weight:500;
    color:#28394e;
}
.talent-intro p{
    margin:7px auto;
    max-width:1240px;
    line-height:1.45;
    color:#2d3f56;
    font-size:15px;
}
.talent-bank-banner{
    background:linear-gradient(90deg,#066491,#0b82bd);
    color:#fff;
    border-radius:13px;
    padding:19px 20px;
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:24px;
    box-shadow:0 9px 24px rgba(9,102,147,.15);
    margin:0 12px 18px;
}
.talent-bank-banner h2{
    margin:0 0 5px;
    font-size:18px;
    color:#fff;
}
.talent-bank-banner p{
    margin:0;
    color:#fff;
    font-size:15px;
}
.talent-bank-button{
    flex:0 0 auto;
    background:#fff;
    color:#07547d!important;
    border-radius:11px;
    padding:13px 20px;
    min-width:205px;
    display:inline-flex;
    justify-content:center;
    align-items:center;
    gap:9px;
    font-weight:800;
    box-shadow:0 2px 6px rgba(0,0,0,.05);
}
.talent-vacancies>h2{
    margin:10px 0 12px;
    font-size:24px;
    color:#17243b;
    font-weight:500;
}
.talent-filter-form{margin-bottom:20px}
.talent-filter-grid{
    display:grid;
    grid-template-columns:2fr 1fr 1fr;
    gap:8px;
}
.talent-filter-grid input,.talent-filter-grid select{
    border-radius:5px;
    min-height:39px;
    padding:8px 12px;
    background:#fff;
}
.talent-filter-actions{
    display:flex;
    gap:6px;
    margin-top:8px;
}
.talent-filter-primary,.talent-filter-clear{
    min-height:38px;
    border-radius:5px;
    padding:8px 14px;
    font:inherit;
    cursor:pointer;
    display:inline-flex;
    align-items:center;
    justify-content:center;
}
.talent-filter-primary{
    background:#176ef5;
    border:1px solid #176ef5;
    color:#fff;
}
.talent-filter-clear{
    background:#fff;
    border:1px solid #7b8795;
    color:#47566a;
}
.talent-jobs-grid{margin-top:4px}
.talent-jobs-grid .job-card h3{
    font-size:17px;
    line-height:1.4;
    margin:0 0 22px;
    color:#111;
}
.talent-empty{
    border:1px solid #d9e1e8;
    border-radius:8px;
    background:#f8fbfd;
}
.talent-footer{background:#fff}
.talent-pool-wrap{
    max-width:1080px;
    margin:26px auto;
    padding:0 24px 35px;
}
.talent-back-link{
    display:inline-block;
    margin-bottom:12px;
    color:#0967bc;
    text-decoration:underline;
}
.talent-pool-card{
    background:#fff;
    border:1px solid #d8dee5;
    border-radius:10px;
    padding:30px;
}
.talent-pool-head{
    border-bottom:1px solid #e2e8ee;
    padding-bottom:16px;
    margin-bottom:20px;
}
.talent-pool-head h1{
    margin:0 0 8px;
    color:#0c557e;
    font-size:28px;
}
.talent-pool-head p{
    margin:0;
    color:#64758b;
    line-height:1.55;
}
.talent-success{
    background:#e7f8ef;
    border:1px solid #bfe9d1;
    color:#087a4d;
    padding:13px 15px;
    border-radius:7px;
    margin-bottom:16px;
}

@media(max-width:900px){
    .talent-filter-grid{grid-template-columns:1fr 1fr}
    .talent-filter-grid input{grid-column:1/-1}
}
@media(max-width:680px){
    .talent-public-topbar{padding:0 18px;min-height:62px}
    .talent-public-brand img{width:160px}
    .talent-public-topbar strong,.talent-top-link{font-size:14px}
    .talent-public-main{padding:0 14px 24px;margin-top:16px}
    .talent-intro{padding:16px 14px}
    .talent-intro h1{font-size:20px}
    .talent-bank-banner{
        margin-left:0;
        margin-right:0;
        flex-direction:column;
        align-items:flex-start;
    }
    .talent-bank-button{width:100%}
    .talent-filter-grid{grid-template-columns:1fr}
    .talent-filter-grid input{grid-column:auto}
    .talent-pool-wrap{padding:0 12px 28px}
    .talent-pool-card{padding:20px}
}


/* COLVATALENT v0.5 - Carga interna de hojas de vida por reclutadores */
.applications-toolbar{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:18px;
    margin-bottom:14px;
}
.applications-filters{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    align-items:center;
    flex:1;
}
.applications-filters input,
.applications-filters select{
    min-height:40px;
    border:1px solid #d5dee7;
    border-radius:7px;
    padding:8px 11px;
    background:#fff;
}
.applications-filters input{min-width:260px}
.applications-upload-btn{
    white-space:nowrap;
    min-height:41px;
}
.applications-help-card{
    background:#edf7fb;
    border:1px solid #cde6f0;
    border-left:4px solid #0b7fad;
    border-radius:8px;
    padding:13px 16px;
    margin-bottom:15px;
}
.applications-help-card strong{
    display:block;
    color:#075a80;
    margin-bottom:3px;
}
.applications-help-card span{
    color:#5c7083;
    font-size:13px;
}
.table-subtext{
    color:#8a9aad;
    font-size:12px;
    margin-top:3px;
}
.badge-internal{
    background:#e7f6f2!important;
    color:#08775f!important;
}
.empty-table{
    text-align:center;
    color:#8795a6;
    padding:30px!important;
}

.manual-application-wrap{
    max-width:1150px;
    margin:0 auto;
}
.manual-application-intro{
    display:flex;
    justify-content:space-between;
    gap:20px;
    align-items:flex-start;
    margin-bottom:16px;
}
.manual-application-intro h2{
    margin:0 0 5px;
    color:#14243c;
}
.manual-application-intro p{
    margin:0;
    max-width:790px;
    color:#718198;
    line-height:1.5;
}
.manual-application-form{
    padding:0!important;
    overflow:hidden;
}
.manual-form-section{
    padding:22px 26px;
    border-bottom:1px solid #e9eef3;
}
.manual-form-section h3{
    margin:0 0 17px;
    color:#124f7c;
    font-size:17px;
}
.manual-form-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:15px 17px;
}
.manual-form-grid-3{
    grid-template-columns:repeat(3,1fr);
}
.manual-form-grid label{
    display:flex;
    flex-direction:column;
    gap:6px;
    color:#384a60;
    font-size:13px;
    font-weight:600;
}
.manual-form-grid input,
.manual-form-grid select,
.manual-form-grid textarea{
    width:100%;
    border:1px solid #ccd7e2;
    border-radius:7px;
    padding:10px 11px;
    background:#fff;
    font:inherit;
    color:#1d2d42;
}
.manual-form-grid textarea{resize:vertical}
.manual-form-grid small{
    color:#8a98a9;
    font-weight:400;
}
.manual-form-grid .wide{
    grid-column:1/-1;
}
.manual-form-grid .span2{
    grid-column:span 2;
}
.manual-file-field input{
    padding:10px;
    background:#f8fafc;
}
.manual-privacy-section{
    background:#f7fafc;
}
.manual-confirmation{
    display:flex;
    align-items:flex-start;
    gap:11px;
    font-size:13px;
    line-height:1.5;
    color:#52657a;
}
.manual-confirmation input{
    margin-top:3px;
    flex:0 0 auto;
}
.manual-confirmation a{
    color:#075f9e;
    text-decoration:underline;
}
.manual-form-actions{
    display:flex;
    justify-content:flex-end;
    gap:9px;
    padding:18px 26px;
    background:#fbfcfd;
}

@media(max-width:900px){
    .applications-toolbar{align-items:stretch;flex-direction:column}
    .applications-upload-btn{align-self:flex-start}
    .manual-form-grid-3{grid-template-columns:1fr 1fr}
}
@media(max-width:650px){
    .applications-filters{flex-direction:column;align-items:stretch}
    .applications-filters input{min-width:0;width:100%}
    .manual-application-intro{flex-direction:column}
    .manual-form-grid,
    .manual-form-grid-3{grid-template-columns:1fr}
    .manual-form-grid .span2{grid-column:auto}
    .manual-form-section{padding:18px}
    .manual-form-actions{padding:16px 18px}
}


/* COLVATALENT v0.6 */
.manual-form-grid-2{grid-template-columns:repeat(2,1fr)}
@media(max-width:650px){
    .manual-form-grid-2{grid-template-columns:1fr}
}


/* ==========================================================
   COLVATALENT v0.7
   Portal de Preselección + Responsive global
   ========================================================== */

/* ---------- Responsive global de la aplicación administrativa ---------- */
.mobile-menu-button,
.mobile-sidebar-close,
.mobile-sidebar-overlay{
    display:none;
}

.table-card{
    max-width:100%;
}

.preselection-admin-form{
    display:grid;
    grid-template-columns:minmax(150px,1fr) minmax(180px,1.5fr) auto;
    gap:7px;
    align-items:center;
    min-width:520px;
}

.badge-complete{
    background:#e4f7ef!important;
    color:#08765b!important;
}

.badge-pending{
    background:#fff4dc!important;
    color:#996100!important;
}

/* ---------- Portal candidato ---------- */
.candidate-portal-page{
    min-height:100vh;
    margin:0;
    background:
        linear-gradient(rgba(20,76,108,.035) 1px,transparent 1px),
        linear-gradient(90deg,rgba(20,76,108,.035) 1px,transparent 1px),
        #f4f8fb;
    background-size:48px 48px;
    color:#17243b;
}

.candidate-portal-header{
    min-height:72px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    padding:12px max(18px,5vw);
    background:linear-gradient(90deg,#147596,#07617f);
    color:#fff;
    box-shadow:0 3px 14px rgba(6,77,107,.13);
    z-index:40;
}

.candidate-portal-header-sticky{
    position:sticky;
    top:0;
}

.candidate-portal-header img{
    width:205px;
    max-height:46px;
    object-fit:contain;
    filter:brightness(0) invert(1);
}

.candidate-portal-header>span,
.candidate-portal-header strong{
    color:#fff;
    font-size:16px;
}

.candidate-portal-header small{
    display:block;
    color:rgba(255,255,255,.82);
    margin-top:3px;
}

.candidate-access-wrap{
    min-height:calc(100vh - 150px);
    display:flex;
    align-items:center;
    justify-content:center;
    padding:38px 18px;
}

.candidate-access-card{
    width:min(520px,100%);
    background:#fff;
    border:1px solid #dce5ec;
    border-radius:18px;
    padding:34px;
    box-shadow:0 18px 55px rgba(30,69,98,.11);
}

.candidate-access-card h1{
    margin:12px 0 10px;
    color:#124777;
    font-size:27px;
    line-height:1.2;
}

.candidate-access-card>p{
    color:#687c92;
    line-height:1.6;
    margin-bottom:22px;
}

.candidate-access-form{
    display:grid;
    gap:13px;
}

.candidate-access-form label{
    margin:0;
}

.candidate-step-badge{
    display:inline-flex;
    align-items:center;
    width:max-content;
    background:#e8f4f8;
    color:#087292;
    font-size:12px;
    font-weight:800;
    border-radius:999px;
    padding:7px 10px;
}

.candidate-primary-button{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:46px;
    border:0;
    border-radius:9px;
    background:#124a7b;
    color:#fff!important;
    padding:11px 20px;
    font:inherit;
    font-weight:800;
    cursor:pointer;
    text-align:center;
}

.candidate-primary-button:hover{
    background:#0d3b65;
}

.candidate-security-note{
    margin-top:18px;
    padding:12px;
    border-radius:9px;
    background:#f5f8fb;
    color:#8291a3;
    font-size:12px;
    line-height:1.5;
}

.candidate-portal-footer{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:8px 18px;
    padding:18px;
    color:#78899c;
    font-size:12px;
    text-align:center;
}

.candidate-portal-footer a{
    text-decoration:underline;
}

.candidate-preselection-wrap{
    max-width:1080px;
    margin:24px auto 40px;
    padding:0 18px;
}

.candidate-form-heading{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:22px;
    margin-bottom:18px;
    background:#fff;
    border:1px solid #dce5ed;
    border-radius:14px;
    padding:22px 24px;
}

.candidate-form-heading h1{
    margin:9px 0 6px;
    color:#143f70;
    font-size:27px;
}

.candidate-form-heading p{
    margin:0;
    max-width:760px;
    color:#6d7f94;
    line-height:1.55;
}

.candidate-progress-box{
    flex:0 0 auto;
    border-left:3px solid #0a809f;
    background:#edf7fa;
    padding:10px 14px;
    border-radius:8px;
}

.candidate-progress-box span{
    display:block;
    color:#7890a4;
    font-size:11px;
}

.candidate-progress-box strong{
    display:block;
    color:#086987;
    margin-top:3px;
}

.candidate-errors{
    margin-bottom:18px;
}

.candidate-errors ul{
    margin:8px 0 0 18px;
    padding:0;
}

.candidate-preselection-form{
    background:#fff;
    border:1px solid #dae4ec;
    border-radius:16px;
    overflow:hidden;
    box-shadow:0 12px 35px rgba(31,72,102,.05);
}

.candidate-form-section{
    padding:25px;
    border-bottom:1px solid #e7edf2;
}

.candidate-form-section-title{
    display:flex;
    gap:12px;
    align-items:flex-start;
    margin-bottom:19px;
}

.candidate-form-section-title>span{
    width:30px;
    height:30px;
    flex:0 0 30px;
    border-radius:50%;
    background:#124a7b;
    color:#fff;
    display:grid;
    place-items:center;
    font-weight:800;
}

.candidate-form-section-title h2{
    margin:2px 0 3px;
    font-size:18px;
    color:#123f70;
}

.candidate-form-section-title p{
    margin:0;
    color:#8796a8;
    font-size:13px;
}

.candidate-mobile-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:14px 18px;
}

.candidate-mobile-grid label{
    margin:0;
    min-width:0;
    font-size:13px;
    color:#364b62;
}

.candidate-mobile-grid label small{
    display:block;
    color:#8b9aac;
    margin:4px 0 0;
    font-weight:400;
}

.candidate-mobile-grid input,
.candidate-mobile-grid select{
    min-height:45px;
    border-radius:8px;
    font-size:16px; /* evita zoom automático en iOS */
}

.candidate-span-2{
    grid-column:1/-1;
}

.readonly-input{
    background:#f1f5f8!important;
    color:#65788c!important;
}

.candidate-form-confirmation{
    padding:20px 25px;
    background:#f7fafc;
}

.candidate-form-confirmation label{
    display:flex;
    align-items:flex-start;
    gap:11px;
    margin:0;
    font-weight:400;
    line-height:1.55;
}

.candidate-form-confirmation input{
    width:18px;
    height:18px;
    margin:2px 0 0;
    flex:0 0 auto;
}

.candidate-form-confirmation a{
    text-decoration:underline;
}

.candidate-form-actions{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:18px;
    padding:18px 25px;
    background:#fff;
}

.candidate-form-actions small{
    color:#8796a8;
}

.candidate-success-card{
    text-align:center;
}

.candidate-success-icon{
    width:66px;
    height:66px;
    margin:0 auto 15px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:#e3f7ef;
    color:#08785a;
    font-size:31px;
    font-weight:900;
}

.candidate-muted{
    color:#8493a5!important;
}

/* ---------- Tablet ---------- */
@media(max-width:1100px){
    .content{
        padding-left:24px;
        padding-right:24px;
    }

    .stats{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }

    .checks,
    .permission-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}

/* ---------- Móvil para toda la aplicación administrativa ---------- */
@media(max-width:900px){

    html,
    body{
        max-width:100%;
        overflow-x:hidden;
    }

    .app-body{
        display:block;
    }

    .main{
        margin-left:0!important;
        width:100%;
        min-width:0;
    }

    .sidebar{
        width:min(300px,86vw)!important;
        transform:translateX(-105%);
        transition:transform .22s ease;
        z-index:1000;
        box-shadow:12px 0 35px rgba(10,40,65,.18);
    }

    .sidebar .brand{
        height:85px;
        padding:16px 18px;
    }

    .sidebar .brand img{
        width:160px;
    }

    .sidebar .brand strong,
    .sidebar nav span,
    .sidebar .nav-label{
        display:initial!important;
    }

    .sidebar nav a{
        justify-content:flex-start!important;
        font-size:14px!important;
    }

    .sidebar-mobile-open .sidebar{
        transform:translateX(0);
    }

    .mobile-menu-button{
        display:grid;
        place-items:center;
        position:fixed;
        z-index:950;
        left:12px;
        top:14px;
        width:42px;
        height:42px;
        border:1px solid #d2dde6;
        border-radius:9px;
        background:#fff;
        color:#143f70;
        font-size:22px;
        cursor:pointer;
        box-shadow:0 5px 18px rgba(25,60,90,.09);
    }

    .mobile-sidebar-close{
        display:block;
        margin-left:auto;
        border:0;
        background:none;
        color:#5e7186;
        font-size:30px;
        line-height:1;
        cursor:pointer;
    }

    .mobile-sidebar-overlay{
        display:block;
        position:fixed;
        inset:0;
        background:rgba(14,34,52,.38);
        z-index:990;
        opacity:0;
        visibility:hidden;
        transition:.22s ease;
    }

    .sidebar-mobile-open .mobile-sidebar-overlay{
        opacity:1;
        visibility:visible;
    }

    .topbar{
        min-height:78px;
        height:auto!important;
        padding:13px 14px 13px 65px!important;
        gap:10px;
    }

    .topbar-heading{
        min-width:0;
    }

    .topbar h1{
        font-size:17px;
        white-space:nowrap;
        overflow:hidden;
        text-overflow:ellipsis;
        max-width:42vw;
    }

    .topbar-heading small{
        display:none;
    }

    .user-menu{
        margin-left:auto;
        gap:7px;
    }

    .user-menu-copy{
        display:none!important;
    }

    .avatar{
        width:34px;
        height:34px;
        font-size:12px;
    }

    .link-button{
        padding:5px;
        font-size:12px;
    }

    .content{
        padding:16px 12px!important;
        max-width:100%;
    }

    .stats{
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
        gap:10px;
    }

    .stat{
        padding:15px;
    }

    .stat b{
        font-size:23px;
    }

    .grid.two,
    .form-grid,
    .manual-form-grid,
    .manual-form-grid-2,
    .manual-form-grid-3{
        grid-template-columns:1fr!important;
    }

    .form-grid .wide,
    .manual-form-grid .wide,
    .manual-form-grid .span2{
        grid-column:auto!important;
    }

    .toolbar,
    .applications-toolbar,
    .manual-application-intro{
        flex-direction:column;
        align-items:stretch;
    }

    .toolbar form,
    .applications-filters{
        width:100%;
        max-width:none;
    }

    .applications-filters input,
    .applications-filters select{
        width:100%;
        min-width:0!important;
    }

    .btn{
        min-height:42px;
    }

    .card{
        padding:16px;
        border-radius:12px;
        max-width:100%;
    }

    .table-wrap{
        width:100%;
        max-width:100%;
        overflow-x:auto;
        -webkit-overflow-scrolling:touch;
    }

    .table-wrap table{
        min-width:760px;
    }

    /*
     * Vistas antiguas que todavía tengan una tabla directa dentro de .card
     * también podrán desplazarse horizontalmente.
     */
    .card{
        overflow-x:auto;
        -webkit-overflow-scrolling:touch;
    }

    .card>table{
        min-width:720px;
    }

    .flow{
        flex-direction:column;
        align-items:stretch;
    }

    .flow span{
        width:100%;
    }

    .checks,
    .permission-grid{
        grid-template-columns:1fr!important;
    }

    .preselection-admin-form{
        min-width:500px;
    }
}

/* ---------- Portal candidato: prioridad celular ---------- */
@media(max-width:680px){

    .candidate-portal-header{
        min-height:62px;
        padding:9px 14px;
    }

    .candidate-portal-header img{
        width:155px;
    }

    .candidate-portal-header>span,
    .candidate-portal-header strong{
        font-size:13px;
    }

    .candidate-portal-header small{
        font-size:10px;
        max-width:145px;
        white-space:nowrap;
        overflow:hidden;
        text-overflow:ellipsis;
    }

    .candidate-access-wrap{
        align-items:flex-start;
        padding:22px 12px;
    }

    .candidate-access-card{
        border-radius:13px;
        padding:22px 17px;
    }

    .candidate-access-card h1{
        font-size:23px;
    }

    .candidate-preselection-wrap{
        margin:14px auto 28px;
        padding:0 10px;
    }

    .candidate-form-heading{
        display:block;
        padding:17px;
        border-radius:12px;
    }

    .candidate-form-heading h1{
        font-size:22px;
    }

    .candidate-form-heading p{
        font-size:13px;
    }

    .candidate-progress-box{
        margin-top:13px;
    }

    .candidate-form-section{
        padding:19px 15px;
    }

    .candidate-mobile-grid{
        grid-template-columns:1fr;
        gap:13px;
    }

    .candidate-span-2{
        grid-column:auto;
    }

    .candidate-mobile-grid input,
    .candidate-mobile-grid select{
        min-height:48px;
        padding:11px 12px;
    }

    .candidate-form-confirmation{
        padding:17px 15px;
    }

    .candidate-form-actions{
        position:sticky;
        bottom:0;
        z-index:20;
        display:block;
        padding:12px;
        box-shadow:0 -8px 25px rgba(20,54,80,.08);
    }

    .candidate-form-actions>div{
        display:none;
    }

    .candidate-form-actions .candidate-primary-button{
        width:100%;
        min-height:50px;
    }

    .candidate-portal-footer{
        font-size:11px;
    }

    .public-form-grid,
    .public-form-grid-3{
        grid-template-columns:1fr!important;
    }

    .public-form-grid .wide,
    .public-form-grid-3 .wide,
    .public-form-grid-3 .span2{
        grid-column:auto!important;
    }
}


/* ==========================================================
   COLVATALENT v0.8 - Módulo Parametrización
   ========================================================== */

.param-header{
    margin-bottom:15px;
}
.param-header h2{
    margin:0 0 5px;
    color:#123f70;
}
.param-header p{
    margin:0;
    color:#75869a;
    max-width:900px;
    line-height:1.5;
}
.param-toolbar{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:16px;
    margin-bottom:17px;
}
.param-search{
    display:flex;
    flex-wrap:wrap;
    gap:7px;
}
.param-search input{
    min-width:300px;
}
.param-new-group{
    position:relative;
}
.param-new-group summary{
    list-style:none;
    cursor:pointer;
}
.param-new-group summary::-webkit-details-marker{
    display:none;
}
.param-new-group[open] form{
    position:absolute;
    right:0;
    top:48px;
    z-index:25;
    width:340px;
    display:grid;
    gap:10px;
    background:#fff;
    border:1px solid #d8e1e8;
    border-radius:10px;
    padding:16px;
    box-shadow:0 15px 45px rgba(25,58,85,.14);
}
.parameter-grid{
    display:grid;
    gap:17px;
}
.parameter-card{
    background:#fff;
    border:1px solid #dae3ea;
    border-radius:12px;
    overflow:hidden;
    box-shadow:0 7px 24px rgba(20,58,87,.04);
}
.parameter-card-disabled{
    opacity:.78;
}
.parameter-card-header{
    display:flex;
    justify-content:space-between;
    gap:18px;
    align-items:flex-start;
    padding:18px 20px;
    background:#fbfcfd;
    border-bottom:1px solid #e8edf2;
}
.parameter-title-line{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:8px;
}
.parameter-title-line h3{
    margin:0;
    color:#16456f;
}
.parameter-card-header code{
    display:inline-block;
    margin-top:5px;
    font-size:11px;
    color:#8292a4;
}
.parameter-card-header p{
    margin:6px 0 0;
    color:#7d8da0;
    font-size:12px;
}
.parameter-system-badge,
.parameter-inactive-badge{
    border-radius:999px;
    padding:3px 7px;
    font-size:10px;
    font-weight:800;
}
.parameter-system-badge{
    background:#eaf2ff;
    color:#315e9b;
}
.parameter-inactive-badge{
    background:#f1f2f4;
    color:#737f8b;
}
.parameter-list{
    width:100%;
}
.parameter-list-head,
.parameter-row{
    display:grid;
    grid-template-columns:80px minmax(180px,1.4fr) minmax(140px,1fr) 90px 100px;
    gap:8px;
    align-items:center;
}
.parameter-list-head{
    padding:9px 18px;
    background:#f7f9fb;
    color:#8594a5;
    text-transform:uppercase;
    letter-spacing:.03em;
    font-size:10px;
    font-weight:800;
}
.parameter-row{
    position:relative;
    padding:10px 18px;
    border-top:1px solid #edf1f4;
}
.parameter-row-disabled{
    background:#fafafa;
    color:#8d98a3;
}
.parameter-edit-form{
    grid-column:1/-1;
    display:grid;
    grid-template-columns:80px minmax(180px,1.4fr) minmax(140px,1fr) 90px 100px;
    gap:8px;
    align-items:center;
}
.parameter-edit-form input,
.parameter-add-form input{
    width:100%;
    min-height:37px;
}
.parameter-toggle-form{
    position:absolute;
    right:18px;
    top:10px;
    transform:translateX(112px);
}
.parameter-add-form{
    display:grid;
    grid-template-columns:150px minmax(190px,1fr) minmax(160px,1fr) 90px 110px;
    gap:8px;
    padding:14px 18px;
    border-top:1px solid #e7edf2;
    background:#f8fbfd;
}
.parameter-empty{
    padding:17px 20px;
    color:#8a99aa;
}

@media(max-width:900px){
    .param-toolbar{
        flex-direction:column;
        align-items:stretch;
    }
    .param-search input{
        min-width:0;
        flex:1;
    }
    .param-new-group{
        align-self:flex-start;
    }
    .param-new-group[open] form{
        position:fixed;
        left:12px;
        right:12px;
        top:95px;
        width:auto;
    }
    .parameter-card{
        overflow-x:auto;
    }
    .parameter-list{
        min-width:760px;
    }
    .parameter-add-form{
        min-width:760px;
    }
}

@media(max-width:650px){
    .param-search{
        display:grid;
        grid-template-columns:1fr 1fr;
    }
    .param-search input{
        grid-column:1/-1;
    }
}


/* ==========================================================
   COLVATALENT v0.10 - Preselección -> Laboratorio / EMO
   ========================================================== */

.preselection-review-grid,
.lab-evaluation-grid{
    display:grid;
    grid-template-columns:minmax(0,1.8fr) minmax(320px,.8fr);
    gap:18px;
    align-items:start;
}

.review-card-head{
    display:flex;
    justify-content:space-between;
    gap:18px;
    align-items:flex-start;
    margin-bottom:20px;
}

.review-card-head h2,
.preselection-decision-card h2,
.lab-decision-card h2{
    margin-top:0;
    color:#123f70;
}

.review-card-head p{
    margin:4px 0 0;
    color:#77889b;
}

.candidate-data-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
}

.candidate-data-item{
    min-width:0;
    border:1px solid #e2e9ef;
    background:#f9fbfc;
    border-radius:8px;
    padding:11px 12px;
}

.candidate-data-item span{
    display:block;
    color:#8392a3;
    font-size:11px;
    margin-bottom:4px;
}

.candidate-data-item strong{
    display:block;
    color:#263a51;
    line-height:1.35;
    overflow-wrap:anywhere;
}

.candidate-data-wide{
    grid-column:1/-1;
}

.preselection-decision-card,
.lab-decision-card{
    position:sticky;
    top:95px;
}

.preselection-decision-card>p{
    color:#75869a;
    line-height:1.5;
}

.decision-option{
    border:1px solid #dce5ec;
    border-radius:10px;
    padding:15px;
    background:#fbfcfd;
}

.decision-option h3{
    margin:0 0 6px;
    color:#124a7b;
    font-size:15px;
}

.decision-option p{
    margin:0 0 13px;
    color:#728499;
    font-size:13px;
    line-height:1.5;
}

.decision-option form{
    display:grid;
    gap:10px;
}

.decision-option textarea,
.decision-option select,
.lab-decision-form textarea{
    width:100%;
}

.decision-divider{
    position:relative;
    text-align:center;
    margin:11px 0;
}

.decision-divider:before{
    content:"";
    position:absolute;
    left:0;
    right:0;
    top:50%;
    border-top:1px solid #e1e7ed;
}

.decision-divider span{
    position:relative;
    display:inline-block;
    padding:0 9px;
    background:#fff;
    color:#9aa7b5;
}

.success-button{
    background:#08785a!important;
    border-color:#08785a!important;
    color:#fff!important;
}

.danger-button{
    background:#b42318!important;
    border-color:#b42318!important;
    color:#fff!important;
}

.flow-current-box,
.flow-disabled-note,
.route-audit-box,
.lab-status-box{
    border-radius:9px;
    padding:12px;
    margin-top:10px;
}

.flow-current-box{
    background:#eef7fb;
    border:1px solid #d2e9f2;
}

.flow-current-box span,
.lab-status-box span{
    display:block;
    font-size:11px;
    color:#758a9d;
}

.flow-current-box strong,
.lab-status-box strong{
    display:block;
    margin:3px 0 8px;
    color:#075d80;
}

.flow-current-box small{
    display:block;
    margin-bottom:9px;
}

.flow-disabled-note{
    background:#fff5e5;
    border:1px solid #f1deb9;
    color:#855d18;
    line-height:1.5;
}

.route-audit-box{
    background:#f7f9fb;
    color:#8191a3;
}

.lab-status-box{
    background:#eef7fb;
    border-left:3px solid #0c7d9d;
    margin:0 0 14px;
}

.lab-decision-form{
    display:grid;
    gap:9px;
    padding-top:15px;
    margin-top:15px;
    border-top:1px solid #e4eaf0;
}

.lab-reject-form{
    margin-top:12px;
}

.lab-subtitle{
    margin-top:24px!important;
}

.lab-approved-box{
    background:#e9f8f1;
    border-color:#c7ead9;
}

.lab-rejected-box{
    background:#fff0ef;
    border-color:#f2cfcb;
}

@media(max-width:1000px){
    .preselection-review-grid,
    .lab-evaluation-grid{
        grid-template-columns:1fr;
    }

    .preselection-decision-card,
    .lab-decision-card{
        position:static;
    }
}

@media(max-width:650px){
    .review-card-head{
        display:block;
    }

    .review-card-head .badge{
        display:inline-block;
        margin-top:10px;
    }

    .candidate-data-grid{
        grid-template-columns:1fr;
    }

    .candidate-data-wide{
        grid-column:auto;
    }

    .decision-option{
        padding:13px;
    }
}
