:root {
    --candidato-granate: #8c3345;
    --candidato-granate-oscuro: #6f2636;
    --candidato-granate-claro: #a9455b;
    --candidato-rosa: #f2e4e8;
    --candidato-verde: #528244;
    --candidato-verde-claro: #e7f1e4;
    --candidato-tinta: #30282b;
    --candidato-muted: #6f676a;
    --candidato-borde: #e1dadd;
    --candidato-fondo: #f4f5f6;
    --candidato-blanco: #fff;
}

.trabajador-page {
    width: min(100%, 1440px);
    margin: 0 auto;
    padding: 24px;
    color: var(--candidato-tinta);
}

.trabajador-page > .bg-gradient-to-r.from-emerald-500 {
    margin-bottom: 18px;
    border: 0;
    border-radius: 14px;
    box-shadow: 0 9px 24px rgba(8, 100, 80, .14);
}

.trabajador-panel {
    padding: 20px !important;
    border: 1px solid rgba(140, 51, 69, .11) !important;
    border-radius: 20px !important;
    background: rgba(255, 255, 255, .98) !important;
    box-shadow: 0 12px 34px rgba(48, 40, 43, .07) !important;
}

.trabajador-page__title {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 11px;
    min-height: 60px;
    margin-bottom: 20px !important;
    padding: 12px 24px !important;
    border-radius: 18px !important;
    color: #fff;
    background: linear-gradient(135deg, var(--candidato-granate), #9d3c51) !important;
    box-shadow: 0 10px 28px rgba(111, 38, 54, .15);
}

.trabajador-page__title h1,
.trabajador-page__title h2 {
    margin: 0;
    font-size: clamp(1.25rem, 1.1rem + .5vw, 1.65rem);
    font-weight: 800;
    line-height: 1.2;
}

.trabajador-page__title i { font-size: 1.15em; }

.trabajador-page label {
    margin-bottom: 6px;
    color: #3f3639 !important;
    font-weight: 650 !important;
}

.trabajador-page input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
.trabajador-page select,
.trabajador-page textarea,
.modal-overlay input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
.modal-overlay select,
.modal-overlay textarea {
    min-height: 44px;
    border: 1px solid #d4cdd0 !important;
    border-radius: 10px !important;
    background-color: #fff;
    color: var(--candidato-tinta);
    box-shadow: 0 1px 2px rgba(48, 40, 43, .03);
}

.trabajador-page textarea,
.modal-overlay textarea { min-height: 96px; }

.trabajador-page input[type="file"] {
    width: 100%;
    min-height: 44px;
    padding: 7px 10px;
    border: 1px solid #d4cdd0 !important;
    border-radius: 10px !important;
    background: #fff;
    color: var(--candidato-muted);
}

.trabajador-page input[type="file"]::file-selector-button {
    margin: -3px 10px -3px -5px;
    padding: 7px 11px;
    border: 0;
    border-radius: 7px;
    background: var(--candidato-rosa);
    color: var(--candidato-granate);
    font-weight: 700;
    cursor: pointer;
}

.trabajador-page input:focus,
.trabajador-page select:focus,
.trabajador-page textarea:focus,
.modal-overlay input:focus,
.modal-overlay select:focus,
.modal-overlay textarea:focus {
    border-color: var(--candidato-granate) !important;
    outline: none !important;
    box-shadow: 0 0 0 3px rgba(140, 51, 69, .12) !important;
}

.trabajador-form-section {
    padding: 22px;
    border: 1px solid var(--candidato-borde);
    border-radius: 16px;
    background: #fff;
}

.trabajador-form-section + .trabajador-form-section { margin-top: 16px; }

.trabajador-form-section__title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 20px !important;
    padding: 0 !important;
    border: 0 !important;
    color: var(--candidato-granate);
    font-size: 1.12rem;
    font-weight: 800;
}

.trabajador-form-section__title i {
    width: 26px;
    text-align: center;
    font-size: 1.2em;
}

.trabajador-page .btn-action,
.trabajador-page .btn-principal,
.trabajador-page .btn-secundario,
.trabajador-page .btn-eliminar,
.modal-overlay .btn-action,
.modal-overlay .btn-principal,
.modal-overlay .btn-secundario {
    min-height: 40px;
    padding: 9px 15px;
    border: 1px solid transparent;
    border-radius: 10px;
    font-weight: 750;
    line-height: 1.1;
    transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}

.trabajador-page .btn-action:hover,
.trabajador-page .btn-principal:hover,
.trabajador-page .btn-secundario:hover,
.trabajador-page .btn-eliminar:hover,
.modal-overlay .btn-action:hover,
.modal-overlay .btn-principal:hover,
.modal-overlay .btn-secundario:hover {
    transform: translateY(-1px);
    box-shadow: 0 7px 16px rgba(111, 38, 54, .16);
}

.trabajador-page .btn-primary,
.trabajador-page .btn-principal,
.modal-overlay .btn-primary {
    border-color: var(--candidato-granate) !important;
    background: var(--candidato-granate) !important;
    color: #fff !important;
}

.trabajador-page .btn-neutral,
.trabajador-page .btn-secundario,
.modal-overlay .btn-secundario,
.modal-overlay .btn-neutral {
    border-color: var(--candidato-granate) !important;
    background: #fff !important;
    color: var(--candidato-granate) !important;
}

.trabajador-page .btn-danger-soft,
.trabajador-page .btn-eliminar,
.modal-overlay .btn-danger-soft {
    border-color: #c72735 !important;
    background: #c72735 !important;
    color: #fff !important;
}

.trabajador-page .btn-edit-soft,
.modal-overlay .btn-edit-soft {
    border-color: var(--candidato-granate) !important;
    background: var(--candidato-granate) !important;
    color: #fff !important;
}

.experiencia-item,
.form-card,
.preferencia-item,
.doc-item {
    margin-bottom: 14px !important;
    padding: 20px !important;
    border: 1px solid var(--candidato-borde) !important;
    border-left: 4px solid var(--candidato-granate) !important;
    border-radius: 15px !important;
    background: #fff !important;
    box-shadow: 0 5px 16px rgba(48, 40, 43, .035);
}

.experiencia-header,
.form-card-header,
.preferencia-header,
.doc-header {
    gap: 12px;
    padding-bottom: 13px;
    border-bottom: 1px solid #f0ecee;
}

.experiencia-titulo,
.form-card-title,
.preferencia-titulo,
.doc-nombre {
    color: var(--candidato-granate) !important;
    font-size: 1.08rem !important;
    font-weight: 800 !important;
}

.experiencia-info,
.form-card-info,
.preferencia-info {
    gap: 14px 24px !important;
    padding: 15px 0 !important;
}

.experiencia-comentario,
.form-card-desc,
.doc-comentario {
    border: 1px solid #ece6e8 !important;
    border-radius: 10px !important;
    background: #fbfafb !important;
}

.experiencia-actions,
.form-card-actions,
.preferencia-actions,
.doc-actions {
    gap: 10px !important;
    padding-top: 13px !important;
    border-top: 1px solid #f0ecee;
}

.tabs-container {
    overflow-x: auto;
    border-bottom: 1px solid var(--candidato-granate) !important;
}

.tab-button,
.tab-btn {
    min-height: 46px;
    padding: 10px 22px !important;
    border-radius: 10px 10px 0 0;
    font-weight: 750 !important;
}

.tab-button.active,
.tab-btn.active {
    background: var(--candidato-granate) !important;
    color: #fff !important;
}

.modal-overlay {
    padding: 18px;
    background: rgba(35, 28, 31, .58) !important;
    backdrop-filter: blur(2px);
}

.modal-overlay .modal-content {
    width: min(100%, 660px);
    max-height: min(88vh, 880px);
    overflow-y: auto;
    border: 1px solid rgba(140, 51, 69, .14);
    border-radius: 18px !important;
    background: #fff;
    box-shadow: 0 24px 70px rgba(35, 28, 31, .25) !important;
}

.modal-overlay .modal-header {
    position: sticky;
    top: 0;
    z-index: 2;
    min-height: 58px;
    padding: 14px 20px !important;
    border-radius: 17px 17px 0 0;
    background: linear-gradient(135deg, var(--candidato-granate), #9d3c51) !important;
    color: #fff !important;
}

.modal-overlay .modal-header h2 {
    color: #fff !important;
    font-size: 1.25rem !important;
    font-weight: 800 !important;
}

.modal-overlay .modal-header h3 {
    margin: 0;
    color: #fff !important;
    font-size: 1.25rem !important;
    font-weight: 800 !important;
}

.modal-overlay .modal-close { color: #fff !important; }
.modal-overlay .modal-body { padding: 22px !important; }
.modal-overlay .modal-footer {
    gap: 10px;
    padding: 15px 22px !important;
    border-top: 1px solid var(--candidato-borde);
    background: #fbfafb !important;
}

.documentos-table {
    overflow: hidden;
    border: 1px solid var(--candidato-borde) !important;
    border-collapse: separate !important;
    border-spacing: 0;
    border-radius: 14px;
    background: #fff;
}

.documentos-table th {
    padding: 13px 12px !important;
    border: 0 !important;
    background: var(--candidato-granate) !important;
    color: #fff !important;
}

.documentos-table td {
    padding: 13px 12px !important;
    border: 0 !important;
    border-bottom: 1px solid #eee9eb !important;
}

.documentos-table tbody tr:hover { background: #fbf7f8; }

.trabajador-page .empty-state {
    padding: 46px 20px !important;
    border: 1px dashed #d8cfd2;
    border-radius: 15px;
    background: #fbfafb;
}

.trabajador-info-box {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 14px 16px;
    border: 1px solid #cfdcec;
    border-radius: 12px;
    background: #f2f7fc;
    color: #28557d;
}

.trabajador-info-box > i {
    flex: none;
    margin-top: 2px;
    font-size: 1.05rem;
}

.trabajador-info-box p { margin: 0; color: inherit !important; }

.soporte-page,
.seguridad-page {
    max-width: 980px;
}

.soporte-panel,
.seguridad-panel,
.solicitudes-panel {
    overflow: hidden;
}

.soporte-form {
    margin-top: 18px;
    background: #fbfafb;
}

.soporte-form > div:not([aria-hidden="true"]) + div { margin-top: 16px; }

.seguridad-section { border-bottom: 0 !important; }

.seguridad-password-field input {
    border-radius: 10px 0 0 10px !important;
}

.seguridad-toggle {
    flex: none;
    min-width: 78px;
    height: 44px;
    padding: 0 12px !important;
    border: 1px solid #d4cdd0 !important;
    border-left: 0 !important;
    border-radius: 0 10px 10px 0 !important;
    background: #f5f1f2 !important;
    color: var(--candidato-granate) !important;
    font-weight: 700;
}

.seguridad-page #formCambiarClave > button,
.seguridad-page #formCambiarEmail > button,
.seguridad-page #formEliminarCuenta > button,
.soporte-page #btnEnviarSoporte {
    min-height: 44px;
}

.seguridad-page #formCambiarEmail > div:first-child > div {
    display: flex;
    align-items: center;
    min-height: 44px;
    padding: 9px 12px !important;
    border-color: var(--candidato-borde) !important;
    border-radius: 10px !important;
    background: #f7f5f6 !important;
}

.seguridad-danger-zone {
    border-color: #efc9ce;
    background: #fffafb;
}

.seguridad-danger-zone .trabajador-form-section__title { color: #a51f2d; }

.solicitudes-page #table_container > .overflow-x-auto {
    overflow-x: auto;
    border: 1px solid var(--candidato-borde);
    border-radius: 14px;
}

.solicitudes-page .solicitudes-table {
    margin: 0;
    border: 0;
    border-collapse: collapse;
    background: #fff;
}

.solicitudes-page .solicitudes-table th {
    padding: 13px 12px;
    border: 0;
    border-right: 1px solid rgba(255, 255, 255, .45);
    background: var(--candidato-granate);
    color: #fff;
}

.solicitudes-page .solicitudes-table td {
    padding: 12px;
    border: 0;
    border-right: 1px solid #eee9eb;
    border-bottom: 1px solid #eee9eb;
    vertical-align: middle;
}

.solicitudes-page .solicitudes-table tr:last-child td { border-bottom: 0; }
.solicitudes-page .solicitudes-table th:last-child,
.solicitudes-page .solicitudes-table td:last-child { border-right: 0; }
.solicitudes-page .solicitudes-table tbody tr:hover { background: #fbf7f8; }

.solicitudes-page .btn-action {
    width: 40px;
    height: 40px;
    min-height: 40px;
    margin: 2px;
    padding: 0;
    border-radius: 10px;
}

.solicitudes-actions {
    display: flex;
    align-items: center;
    gap: 4px;
}

.solicitudes-page .btn-ver {
    border-color: var(--candidato-granate);
    background: var(--candidato-granate);
    color: #fff;
}

.solicitudes-page .btn-editar {
    border-color: #e8d28e;
    background: #fff4d6;
    color: #725600;
}

.solicitudes-page .btn-borrar {
    border-color: #c72735;
    background: #c72735;
    color: #fff;
}

.solicitudes-page .badge-estado {
    display: inline-flex;
    align-items: center;
    min-height: 32px;
    padding: 6px 10px;
    border-radius: 999px;
    line-height: 1.15;
}

.solicitudes-disabled {
    color: var(--candidato-muted);
    font-size: .9rem;
    text-align: center;
}

.puesto-trabajo-row + .puesto-trabajo-row { margin-top: 10px; }

.fichaje-panel { overflow: hidden; }

.fichaje-consulta-aviso {
    display: none;
    align-items: center;
    justify-content: center;
    gap: 9px;
    padding: 12px 16px;
    border: 1px solid #cfdcec;
    border-radius: 12px;
    background: #f2f7fc;
    color: #28557d;
    font-weight: 700;
}

.fichaje-filtros {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    padding: 16px;
    border: 1px solid var(--candidato-borde);
    border-radius: 14px;
    background: #fbfafb;
    text-align: left;
}

.fichaje-tabla-wrap {
    overflow-x: auto;
    border: 1px solid var(--candidato-borde);
    border-radius: 14px;
}

.fichaje-tabla-wrap table {
    margin: 0;
    border: 0 !important;
    border-collapse: collapse;
    border-spacing: 0;
}

.fichaje-tabla-wrap thead tr {
    position: static;
}

.fichaje-modificado {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-top: 6px;
    color: #1769aa;
    font-size: .78rem;
    font-weight: 750;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* El buscador público mantiene su calibración propia. En el área privada, los
   filtros adoptan el mismo lenguaje de formulario que el resto del candidato. */
.ofertas-area-candidato .of-filtros-layout {
    gap: 24px;
}

.ofertas-area-candidato .of-localizacion-campos,
.ofertas-area-candidato .of-intervalo-campos {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
}

.ofertas-area-candidato .of-input {
    width: 100%;
    min-height: 44px;
    padding: 10px 12px;
    border: 1px solid #d4cdd0;
    border-radius: 10px;
    background: #fff;
    color: var(--candidato-tinta);
    font-size: .9rem;
    line-height: 1.25;
    text-align: left;
    box-shadow: 0 1px 2px rgba(48, 40, 43, .03);
}

.ofertas-area-candidato .of-input:focus {
    border-color: var(--candidato-granate);
    outline: none;
    box-shadow: 0 0 0 3px rgba(140, 51, 69, .12);
}

.ofertas-area-candidato label[for="fl_poblacion"],
.ofertas-area-candidato label[for="fl_cp"],
.ofertas-area-candidato .of-candidate-label {
    margin-bottom: 6px;
    color: #3f3639;
    font-size: .88rem;
    font-weight: 650;
}

.ofertas-area-candidato .of-select-km {
    padding-right: 36px;
}

@media (min-width: 1024px) {
    .ofertas-area-candidato .of-filtros-layout {
        grid-template-columns: minmax(330px, 360px) minmax(0, 1fr);
    }
}

@media (min-width: 1024px) {
    .fichaje-control { display: none !important; }
    .fichaje-consulta-aviso { display: flex; }
}

@media (max-width: 767px) {
    .trabajador-page { padding: 76px 14px 24px; }
    .trabajador-panel { padding: 14px !important; border-radius: 16px !important; }
    .trabajador-page__title { min-height: 54px; padding: 10px 14px !important; border-radius: 14px !important; }
    .trabajador-form-section { padding: 16px 14px; }
    .experiencia-item,
    .form-card,
    .preferencia-item,
    .doc-item { padding: 15px !important; }
    .modal-overlay { align-items: flex-end !important; padding: 0 !important; }
    .modal-overlay .modal-content {
        width: 100%;
        max-width: none !important;
        max-height: 92vh;
        border-radius: 18px 18px 0 0 !important;
    }
    .modal-overlay .modal-header { border-radius: 17px 17px 0 0; }
    .modal-overlay .modal-footer { position: sticky; bottom: 0; }
    .fichaje-filtros { grid-template-columns: 1fr; }

    .trabajador-page > .bg-gradient-to-r.from-emerald-500 {
        align-items: stretch;
        gap: 12px;
    }

    .solicitudes-page #table_container > .overflow-x-auto {
        overflow: visible;
        border: 0;
        border-radius: 0;
    }

    .solicitudes-page .solicitudes-table,
    .solicitudes-page .solicitudes-table tbody,
    .solicitudes-page .solicitudes-table tr {
        display: block;
        width: 100%;
    }

    .solicitudes-page .solicitudes-table thead { display: none; }

    .solicitudes-page .solicitudes-table tr {
        margin-bottom: 12px;
        overflow: hidden;
        border: 1px solid var(--candidato-borde);
        border-left: 4px solid var(--candidato-granate);
        border-radius: 14px;
        background: #fff;
    }

    .solicitudes-page .solicitudes-table td {
        display: grid;
        grid-template-columns: 94px minmax(0, 1fr);
        gap: 10px;
        width: 100%;
        padding: 10px 12px;
        border-right: 0;
        border-bottom: 1px solid #eee9eb;
        overflow-wrap: anywhere;
    }

    .solicitudes-page .solicitudes-table td::before {
        content: attr(data-label);
        color: var(--candidato-granate);
        font-weight: 800;
    }

    .solicitudes-page .solicitudes-table td:last-child { border-bottom: 0; }
    .solicitudes-page .solicitudes-actions { flex-wrap: wrap; }
    .solicitudes-page #btn_nueva_container,
    .solicitudes-page #btn_nueva_container button { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
    .trabajador-page *, .modal-overlay * { transition: none !important; }
}
