/* Portal del Voluntario v1.0 · versión pública inicial */
:root{--blue:#1768a8;--blue-dark:#0d4f83;--blue-soft:#eaf3fa;--surface:#fff;--page:#eef4f8;--text:#173042;--muted:#667988;--border:#d6e2e9;--red:#b42318;--red-bg:#fff0ef;--green:#177245}
*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;font-family:Segoe UI,Arial,sans-serif;background:var(--page);color:var(--text)}button,input{font:inherit}.hidden{display:none!important}.page{min-height:100vh;display:grid;place-items:center;padding:24px}
.login-card{width:min(100%,460px);background:#fff;border:1px solid #d9e4eb;border-radius:18px;box-shadow:0 16px 45px rgba(25,55,75,.14);padding:30px}.brand{display:flex;align-items:center;gap:16px;border-bottom:1px solid #e3ebf0;padding-bottom:22px;margin-bottom:24px}.logo{width:68px;height:68px;object-fit:contain}.eyebrow{font-size:12px;font-weight:800;letter-spacing:.08em;color:var(--blue);margin:0 0 5px}h1{font-size:25px;margin:0;color:var(--blue-dark)}.intro{color:var(--muted);line-height:1.45;margin:0 0 22px}label{display:block;font-weight:700;margin:16px 0 7px}input{width:100%;height:48px;border:1px solid #cbd9e3;border-radius:10px;padding:0 13px;font-size:16px;outline:none;background:#fff}input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(23,104,168,.12)}.password-row{display:flex;gap:8px}.password-row input{flex:1}.eye{min-width:66px;border:1px solid #cbd9e3;border-radius:10px;background:#f8fbfd;color:var(--blue-dark);font-weight:700;cursor:pointer}.primary{width:100%;height:48px;border:0;border-radius:10px;background:var(--blue);color:#fff;font-weight:800;cursor:pointer;margin-top:8px}.primary:disabled{opacity:.65}.message{min-height:22px;margin:12px 0 0;font-size:14px;color:var(--red)}.version{text-align:center;margin:18px 0 0;color:#8a9aa6;font-size:12px}
.portal-shell{width:min(100%,1080px);background:#fff;border:1px solid #d9e4eb;border-radius:20px;box-shadow:0 16px 45px rgba(25,55,75,.14);overflow:hidden}.portal-header{min-height:92px;background:linear-gradient(135deg,var(--blue-dark),var(--blue));display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 24px;color:#fff}.header-brand{display:flex;align-items:center;gap:14px}.header-logo{width:58px;height:58px;object-fit:contain;background:#fff;border-radius:12px;padding:4px}.header-eyebrow{color:#dceefa;margin-bottom:4px}.portal-header h1{color:#fff;font-size:24px}.logout{border:1px solid rgba(255,255,255,.58);background:rgba(255,255,255,.1);color:#fff;border-radius:9px;padding:10px 15px;font-weight:700;cursor:pointer}.portal-content{padding:26px}
.welcome-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.65fr);gap:24px;background:linear-gradient(135deg,#f7fbfe,#eef6fb);border:1px solid #d6e5ef;border-radius:16px;padding:22px;margin-bottom:18px}.welcome-label{margin:0 0 5px;color:var(--muted);font-size:14px;font-weight:700}.welcome-card h2{margin:0;font-size:27px;line-height:1.25}.identity-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}.identity-badge,.ppc-badge,.cargo-badge{display:inline-flex;align-items:center;min-height:34px;padding:6px 12px;border-radius:999px;font-size:14px;font-weight:800}.identity-badge{background:var(--blue);color:#fff}.ppc-badge,.cargo-badge{background:#fff;border:1px solid #cbdce8;color:var(--blue-dark)}.cargo-badge{max-width:100%;white-space:normal;text-align:center}
.portal-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin-bottom:22px}.nav-card{border:1px solid #d5e1e9;background:#fff;border-radius:13px;padding:14px 16px;text-align:left;display:flex;align-items:center;gap:13px;cursor:pointer}.nav-card.active{border-color:#a9cbe2;background:#f6fbfe}.nav-card span:last-child{display:flex;flex-direction:column;gap:3px}.nav-card strong{color:var(--blue-dark);font-size:15px}.nav-card small{color:var(--muted)}.nav-icon{width:40px;height:40px;border-radius:10px;background:var(--blue-soft);position:relative;flex:0 0 auto}.service-icon:before{content:"";position:absolute;left:10px;right:10px;top:9px;bottom:9px;border:2px solid var(--blue);border-radius:3px}.service-icon:after{content:"";position:absolute;left:14px;right:14px;top:15px;height:2px;background:var(--blue);box-shadow:0 6px 0 var(--blue)}.car-icon:before{content:"";position:absolute;left:7px;right:7px;top:15px;height:11px;border:2px solid var(--blue);border-radius:4px}.car-emoji{display:flex;align-items:center;justify-content:center;font-size:22px;line-height:1}.disabled-card{opacity:.62;cursor:not-allowed}
.services-section{border-top:1px solid #e3ebf0;padding-top:22px}.section-heading,.history-heading,.team-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.section-heading{margin-bottom:15px}.section-kicker{font-size:11px;color:var(--blue);font-weight:800;letter-spacing:.08em;margin:0 0 4px}.section-heading h3{font-size:24px;margin:0}.secondary{border:1px solid #bed2df;background:#fff;color:var(--blue-dark);border-radius:9px;padding:9px 13px;font-weight:700;cursor:pointer}.loading-box,.profile-warning{border-radius:10px;padding:11px 13px;margin-bottom:14px;font-size:14px}.loading-box{background:#edf6fc;color:var(--blue-dark)}.profile-warning{border:1px solid #f0cc83;background:#fff8e8;color:#795600}
.current-service{border:1px solid #b8d4e6;border-radius:16px;background:linear-gradient(180deg,#fbfdff,#f3f8fc);padding:20px;margin-bottom:24px}.current-topline{display:flex;justify-content:space-between;align-items:center;gap:10px}.status-pill{background:var(--blue-dark);color:#fff;border-radius:999px;padding:6px 10px;font-size:11px;font-weight:900;letter-spacing:.05em}.countdown{font-size:13px;font-weight:800;color:var(--green)}.current-service h4{font-size:23px;margin:14px 0 3px}.service-ref{margin:0;color:var(--blue);font-weight:800}.service-time-line{display:flex;gap:8px;align-items:center;margin-top:9px;color:var(--muted);font-weight:600}.dot{opacity:.5}.assignment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}.assignment-box{background:#fff;border:1px solid #d8e4ec;border-radius:12px;padding:13px 14px}.assignment-box span{display:block;font-size:12px;color:var(--muted);font-weight:700;margin-bottom:4px}.assignment-box strong{font-size:18px;color:var(--blue-dark)}
.team-block{background:#fff;border:1px solid #d8e4ec;border-radius:12px;padding:15px}.team-heading h5{font-size:16px;margin:0}.team-count,.history-count{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;border-radius:999px;background:var(--blue-soft);color:var(--blue-dark);font-weight:800}.team-list{display:grid;gap:8px;margin-top:12px}.team-person{display:grid;grid-template-columns:95px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 11px;border:1px solid #e1e8ed;border-radius:9px;background:#fbfcfd}.team-person.self{background:#f4f9fc}.team-call{font-weight:900;color:var(--blue-dark)}.team-name{font-weight:650}.responsible-tag{display:inline-flex;border:1px solid var(--red);background:var(--red-bg);color:var(--red);border-radius:5px;padding:4px 7px;font-size:10px;font-weight:900;letter-spacing:.04em}.team-empty{color:var(--muted);font-size:14px;padding:7px}
.empty-current{border:1px dashed #c6d5df;background:#fafcfd;border-radius:13px;padding:18px 20px;margin-bottom:24px;display:flex;flex-direction:column;gap:4px}.empty-current strong{color:var(--text)}.empty-current span{color:var(--muted);font-size:14px}.history-heading{margin:4px 0 12px}.history-heading h4{margin:0;font-size:18px}.history-heading p{margin:4px 0 0;color:var(--muted);font-size:13px}.history-list{display:grid;gap:9px}.history-card{display:grid;grid-template-columns:110px minmax(0,1fr) auto;align-items:center;gap:14px;border:1px solid #dfe7ec;border-radius:11px;padding:12px 14px}.history-date{font-weight:800;color:var(--blue-dark);font-size:13px}.history-main{display:flex;flex-direction:column;gap:3px}.history-main strong{font-size:14px}.history-main span{font-size:12px;color:var(--muted)}.history-data{display:flex;gap:8px}.history-data span{min-width:94px;background:#f5f8fa;border-radius:8px;padding:7px 9px}.history-data small{display:block;color:var(--muted);font-size:10px}.history-data b{display:block;margin-top:2px;font-size:13px}.history-empty{text-align:center;color:var(--muted);padding:24px;border:1px dashed #d1dde5;border-radius:11px}
@media(max-width:720px){.page{padding:10px;place-items:start center}.login-card{margin-top:18px;padding:22px}.portal-shell{border-radius:14px}.portal-header{padding:15px}.header-logo{width:48px;height:48px}.portal-header h1{font-size:20px}.logout{padding:8px 10px;font-size:12px}.portal-content{padding:15px}.welcome-card{grid-template-columns:1fr;gap:14px}.welcome-card h2{font-size:22px}.portal-nav{grid-template-columns:1fr}.assignment-grid{grid-template-columns:1fr}.team-person{grid-template-columns:80px minmax(0,1fr)}.responsible-tag{grid-column:2;justify-self:start}.history-card{grid-template-columns:1fr}.history-data{justify-content:flex-start;flex-wrap:wrap}.current-topline{align-items:flex-start;flex-direction:column}}

.history-filters{display:flex;flex-direction:column;gap:10px;margin:0 0 14px}.filter-buttons{display:flex;flex-wrap:wrap;gap:8px}.filter-btn{border:1px solid #c7d7e2;background:#fff;color:var(--blue-dark);border-radius:9px;padding:8px 12px;font-weight:750;cursor:pointer}.filter-btn:hover{background:#f5f9fc}.filter-btn.active{background:var(--blue);border-color:var(--blue);color:#fff}.custom-date-filters{display:flex;align-items:end;flex-wrap:wrap;gap:10px;padding:12px;background:#f7fafc;border:1px solid #dce6ed;border-radius:11px}.custom-date-filters label{margin:0;min-width:170px}.custom-date-filters label span{display:block;margin-bottom:6px;font-size:12px;color:var(--muted);font-weight:800}.custom-date-filters input{height:42px}.custom-date-filters .secondary{height:42px}.history-list{max-height:440px;overflow-y:auto;overflow-x:hidden;padding-right:7px;scrollbar-gutter:stable;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.history-list::-webkit-scrollbar{width:9px}.history-list::-webkit-scrollbar-track{background:#edf3f7;border-radius:999px}.history-list::-webkit-scrollbar-thumb{background:#b7cad7;border-radius:999px;border:2px solid #edf3f7}.history-list{scrollbar-width:thin;scrollbar-color:#b7cad7 #edf3f7}
@media(max-width:720px){.filter-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.filter-btn{width:100%}.custom-date-filters{align-items:stretch}.custom-date-filters label{min-width:0;flex:1 1 100%}.custom-date-filters .secondary{width:100%}}

@media(max-width:720px){.history-list{max-height:460px;padding-right:4px}.car-emoji{font-size:24px}}

/* v1.0 · Corrección responsive del filtro de fechas en iOS/móvil */
.custom-date-filters,
.custom-date-filters label,
.custom-date-filters input[type="date"]{
  min-width:0;
  max-width:100%;
}
.custom-date-filters input[type="date"]{
  display:block;
  width:100%;
  inline-size:100%;
  min-inline-size:0;
  max-inline-size:100%;
}
@media(max-width:720px){
  .custom-date-filters{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    width:100%;
    max-width:100%;
    overflow:hidden;
  }
  .custom-date-filters label{
    display:block;
    width:100%;
    min-width:0;
    max-width:100%;
    overflow:hidden;
  }
  .custom-date-filters input[type="date"]{
    width:100%;
    min-width:0;
    max-width:100%;
    box-sizing:border-box;
  }
  .custom-date-filters .secondary{
    width:100%;
    min-width:0;
    max-width:100%;
  }
}


/* v1.0 · Módulos del portal */
.module-section{border-top:1px solid #e3ebf0;padding-top:22px}.module-intro{margin:-4px 0 16px;color:var(--muted);font-size:14px;line-height:1.45}
.alert-icon{display:flex;align-items:center;justify-content:center;font-size:23px;font-weight:900;color:var(--red);background:var(--red-bg)}
.equipment-icon:before{content:"";position:absolute;left:10px;right:10px;top:11px;bottom:9px;border:2px solid var(--blue);border-radius:4px}.equipment-icon:after{content:"";position:absolute;width:10px;height:5px;border:2px solid var(--blue);border-bottom:0;border-radius:4px 4px 0 0;left:13px;top:6px}
.qualification-list{display:grid;gap:12px}.qualification-card{border:1px solid #e2e9ee;border-radius:13px;background:#fff;padding:15px}.qualification-card.restriction{border-color:#e6aaa5;background:#fffafa}.qualification-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.qualification-top>div{display:flex;flex-direction:column;gap:4px}.qualification-top strong{font-size:15px;color:var(--text)}.qualification-top span:not(.expired-tag){font-size:12px;color:var(--muted)}.expired-tag{display:inline-flex;flex:0 0 auto;border:1px solid var(--red);background:var(--red-bg);color:var(--red);border-radius:5px;padding:5px 8px;font-size:10px;font-weight:900;letter-spacing:.04em}.driving-warning{margin-top:13px;border-left:4px solid var(--red);background:var(--red-bg);border-radius:7px;padding:11px 12px;display:flex;flex-direction:column;gap:4px;color:#7f1d16}.driving-warning strong{font-size:12px;text-transform:uppercase;letter-spacing:.03em}.driving-warning span{font-size:13px;line-height:1.45}.ok-empty{border:1px solid #b9d9c6;background:#f4fbf6;border-radius:13px;padding:18px 20px;display:flex;flex-direction:column;gap:4px}.ok-empty strong{color:var(--green)}.ok-empty span{color:var(--muted);font-size:14px}
.equipment-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #d8e4ec;background:#f7fafc;border-radius:11px;padding:12px 14px;margin-bottom:14px}.equipment-summary span{color:var(--muted);font-size:13px;font-weight:700}.equipment-summary strong{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;border-radius:999px;background:var(--blue);color:#fff}.equipment-groups{display:grid;gap:13px}.equipment-group{border:1px solid #dfe7ec;border-radius:13px;overflow:hidden;background:#fff}.equipment-group-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 14px;background:#f3f8fb;border-bottom:1px solid #dfe7ec}.equipment-group-title strong{color:var(--blue-dark);font-size:14px}.equipment-group-title span{display:inline-flex;align-items:center;justify-content:center;min-width:27px;height:27px;border-radius:999px;background:#fff;border:1px solid #cedde7;color:var(--blue-dark);font-size:12px;font-weight:800}.equipment-items{display:grid}.equipment-item{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:11px 14px;border-bottom:1px solid #edf1f4}.equipment-item:last-child{border-bottom:0}.equipment-item strong{font-size:14px}.equipment-item span{color:var(--muted);font-size:12px;white-space:nowrap}
@media(max-width:720px){.qualification-top{align-items:flex-start}.equipment-item{align-items:flex-start;flex-direction:column;gap:4px}.equipment-item span{white-space:normal}.history-data span{min-width:86px;flex:1 1 86px}.portal-nav{grid-template-columns:1fr}.module-section{min-width:0}.qualification-card,.equipment-group{max-width:100%;overflow:hidden}}


/* v1.0 · Solicitudes de vehículo y filtros de equipamiento */
textarea{font:inherit;color:inherit}.request-form{border:1px solid #d9e5ed;background:#fbfdff;border-radius:15px;padding:18px;margin-bottom:24px}.request-form label{margin:0;min-width:0}.request-form label>span{display:block;margin-bottom:6px;color:var(--muted);font-size:12px;font-weight:800}.request-form textarea{width:100%;resize:vertical;min-height:92px;border:1px solid #cbd9e3;border-radius:10px;padding:11px 13px;outline:none;background:#fff}.request-form textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(23,104,168,.12)}.form-grid{display:grid;gap:12px;margin-bottom:14px}.two-cols{grid-template-columns:repeat(2,minmax(0,1fr))}.compact-grid{grid-template-columns:minmax(140px,220px)}.request-days-block{border-top:1px solid #e2ebf1;margin-top:4px;padding-top:16px}.request-days-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.request-days-heading h4{margin:0;font-size:17px}.request-days-heading p{margin:4px 0 0;color:var(--muted);font-size:13px}.request-days{display:grid;gap:10px}.request-day-row{display:grid;grid-template-columns:74px minmax(155px,1fr) minmax(130px,.8fr) minmax(130px,.8fr) auto;gap:10px;align-items:end;border:1px solid #dbe6ed;background:#fff;border-radius:11px;padding:11px}.request-day-number{align-self:center;color:var(--blue-dark);font-size:13px;font-weight:800}.request-day-row input{height:42px}.remove-request-day{height:42px;border:1px solid #e1b3af;background:#fff7f6;color:var(--red);border-radius:9px;padding:0 11px;font-weight:800;cursor:pointer}.request-observations{display:block;margin-top:14px!important}.request-submit{max-width:280px}.request-message{margin:14px 0 4px;border-radius:10px;padding:11px 13px;font-size:14px;font-weight:700}.request-message.ok{display:block;background:#f0f9f3;border:1px solid #b8dbc4;color:#17663d}.request-message.error{display:block;background:var(--red-bg);border:1px solid #e6aaa5;color:#8a2118}.requests-history-heading,.equipment-history-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:22px 0 12px}.requests-history-heading h4{margin:0;font-size:18px}.requests-history-heading p{margin:4px 0 0;color:var(--muted);font-size:13px}.vehicle-requests-list{display:grid;gap:11px;max-height:520px;overflow-y:auto;padding-right:6px;scrollbar-gutter:stable}.vehicle-request-card{border:1px solid #dce6ed;border-radius:13px;background:#fff;padding:14px}.vehicle-request-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.vehicle-request-top>div{display:flex;flex-direction:column;gap:3px}.vehicle-request-top strong{font-size:15px}.vehicle-request-top span:not(.request-status){font-size:12px;color:var(--muted)}.request-status{display:inline-flex;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:900;letter-spacing:.03em}.request-status.pending{background:#fff6dc;color:#7f5c00;border:1px solid #ead58c}.request-status.approved{background:#edf9f1;color:#17663d;border:1px solid #b8dbc4}.request-status.denied{background:var(--red-bg);color:var(--red);border:1px solid #e6aaa5}.request-status.cancelled{background:#f1f3f5;color:#66717a;border:1px solid #d5dce1}.vehicle-request-ref{display:flex;flex-wrap:wrap;gap:10px;margin-top:7px;color:var(--muted);font-size:11px}.vehicle-request-days{display:grid;gap:7px;margin-top:12px}.vehicle-request-day-result{display:grid;grid-template-columns:minmax(0,1fr) minmax(160px,.45fr);gap:10px;align-items:center;background:#f6f9fb;border-radius:9px;padding:9px 11px}.vehicle-request-day-result>div{display:flex;flex-direction:column;gap:2px}.vehicle-request-day-result span,.vehicle-request-day-result small{color:var(--muted);font-size:11px}.vehicle-request-day-result b{color:var(--blue-dark);font-size:13px}.vehicle-request-foot{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px;padding-top:9px;border-top:1px solid #edf1f4;color:var(--muted);font-size:11px}
.equipment-filters{display:grid;gap:12px;margin-bottom:14px}.equipment-filter-group{display:grid;gap:7px}.filter-label{color:var(--muted);font-size:12px;font-weight:800}.equipment-history-heading{margin-top:10px}.equipment-history-heading>span{font-size:15px;font-weight:800;color:var(--blue-dark)}.equipment-history-heading strong{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;border-radius:999px;background:var(--blue-soft);color:var(--blue-dark)}.equipment-movement-list{display:grid;gap:8px;max-height:480px;overflow-y:auto;padding-right:6px;scrollbar-gutter:stable}.equipment-movement{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid #dfe7ec;border-radius:11px;background:#fff;padding:11px 13px}.equipment-movement-main{display:flex;flex-direction:column;gap:3px}.equipment-movement-main strong{font-size:14px}.equipment-movement-main span{color:var(--muted);font-size:11px}.equipment-movement-meta{display:flex;align-items:center;gap:10px}.equipment-movement-meta time{font-size:12px;color:var(--muted);white-space:nowrap}.movement-tag{display:inline-flex;border-radius:5px;padding:4px 7px;font-size:9px;font-weight:900;letter-spacing:.04em}.movement-tag.delivery{background:#edf9f1;color:#17663d;border:1px solid #b8dbc4}.movement-tag.return{background:#fff1eb;color:#9a411d;border:1px solid #e7b79f}
@media(max-width:900px){.request-day-row{grid-template-columns:64px repeat(3,minmax(0,1fr));}.remove-request-day{grid-column:2/5;justify-self:end}}
@media(max-width:720px){.two-cols,.compact-grid{grid-template-columns:1fr}.request-form{padding:14px}.request-days-heading{align-items:stretch;flex-direction:column}.request-days-heading .secondary{width:100%}.request-day-row{grid-template-columns:minmax(0,1fr);gap:8px}.request-day-number{padding-bottom:2px}.remove-request-day{grid-column:auto;width:100%}.request-day-row label,.request-day-row input,.request-form input,.request-form textarea{min-width:0;max-width:100%;width:100%;box-sizing:border-box}.request-submit{max-width:none}.vehicle-request-top{align-items:flex-start}.vehicle-request-day-result{grid-template-columns:1fr}.equipment-movement{align-items:flex-start;flex-direction:column}.equipment-movement-meta{width:100%;justify-content:space-between}.vehicle-requests-list,.equipment-movement-list{max-height:500px;padding-right:4px}}


/* v1.0 · Corrección móvil campos fecha/hora en solicitudes */
.request-form,.request-days,.request-day-row,.request-day-row label{min-width:0}
.request-day-row label{width:100%;display:block;overflow:hidden}
.request-day-row input[type="date"],.request-day-row input[type="time"],.request-form input[type="date"],.request-form input[type="time"]{display:block;width:100%;max-width:100%;min-width:0;-webkit-appearance:none;appearance:none}
@media(max-width:720px){.request-day-row{overflow:hidden}.request-day-row input[type="date"],.request-day-row input[type="time"],.request-form input[type="date"],.request-form input[type="time"]{font-size:16px;padding-left:12px;padding-right:12px}.request-day-row label>span{white-space:normal}}


/* v1.0 · Filtros simplificados y colores de movimientos */
.equipment-type-filter[data-equipment-type="delivery"],
.movement-tag.delivery{
  background:#edf9f1;
  color:#17663d;
  border-color:#b8dbc4;
}
.equipment-type-filter[data-equipment-type="return"],
.movement-tag.return{
  background:#fff1eb;
  color:#9a411d;
  border-color:#e7b79f;
}
.equipment-type-filter[data-equipment-type="delivery"]:hover{background:#e2f4e8}
.equipment-type-filter[data-equipment-type="return"]:hover{background:#ffe8dc}
.equipment-type-filter[data-equipment-type="delivery"].active{
  background:#edf9f1;
  color:#17663d;
  border-color:#17663d;
  box-shadow:0 0 0 2px rgba(23,102,61,.14);
}
.equipment-type-filter[data-equipment-type="return"].active{
  background:#fff1eb;
  color:#9a411d;
  border-color:#9a411d;
  box-shadow:0 0 0 2px rgba(154,65,29,.14);
}


/* v1.0 · Navegación interna por módulos en móvil */
.mobile-module-backbar{display:none;margin:0 0 14px}
.mobile-back-btn{display:inline-flex;align-items:center;gap:7px;border:1px solid #bed2df;background:#fff;color:var(--blue-dark);border-radius:10px;padding:10px 14px;font-weight:800;cursor:pointer}
@media(max-width:720px){
  .mobile-module-backbar{display:flex;align-items:center;justify-content:flex-start}
  .mobile-home-hidden{display:none!important}
  .portal-content>.module-section{border-top:0;padding-top:0}
  .portal-content>.module-section .section-heading{margin-top:0}
  .mobile-back-btn{min-height:44px;font-size:15px}
}


/* v1.0 · Iconografía uniforme de módulos */
.module-emoji,.car-emoji{display:flex;align-items:center;justify-content:center;font-size:22px;line-height:1}


/* v1.0 · Colores identificativos por módulo */
.module-nav{transition:background .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.module-nav:hover{transform:translateY(-1px)}
.module-nav .nav-icon{border:1px solid transparent;transition:background .18s ease,border-color .18s ease}

/* Solicitud de vehículo · azul */
#vehicleRequestNavBtn{border-color:#c6ddeb}
#vehicleRequestNavBtn .nav-icon{background:#eaf3fa;border-color:#c6ddeb}
#vehicleRequestNavBtn strong{color:#1768a8}
#vehicleRequestNavBtn:hover,#vehicleRequestNavBtn.active{background:#f1f8fc;border-color:#1768a8;box-shadow:0 0 0 2px rgba(23,104,168,.10)}
#vehicleRequestNavBtn.active .nav-icon{background:#dceefa;border-color:#1768a8}
#vehicleRequestSection .section-kicker{color:#1768a8}

/* Servicios · verde */
#servicesNavBtn{border-color:#c7dfd0}
#servicesNavBtn .nav-icon{background:#edf8f1;border-color:#c7dfd0}
#servicesNavBtn strong{color:#25704b}
#servicesNavBtn:hover,#servicesNavBtn.active{background:#f2faf5;border-color:#2b7a52;box-shadow:0 0 0 2px rgba(43,122,82,.10)}
#servicesNavBtn.active .nav-icon{background:#dff1e6;border-color:#2b7a52}
#servicesSection .section-kicker{color:#2b7a52}

/* Titulaciones caducadas · rojo */
#qualificationsNavBtn{border-color:#e7c5c1}
#qualificationsNavBtn .nav-icon{background:#fff0ef;border-color:#e7c5c1}
#qualificationsNavBtn strong{color:#a92a20}
#qualificationsNavBtn:hover,#qualificationsNavBtn.active{background:#fff7f6;border-color:#b42318;box-shadow:0 0 0 2px rgba(180,35,24,.10)}
#qualificationsNavBtn.active .nav-icon{background:#ffe5e2;border-color:#b42318}
#qualificationsSection .section-kicker{color:#b42318}

/* Equipamiento entregado · naranja */
#equipmentNavBtn{border-color:#ead3ba}
#equipmentNavBtn .nav-icon{background:#fff4e8;border-color:#ead3ba}
#equipmentNavBtn strong{color:#a45b18}
#equipmentNavBtn:hover,#equipmentNavBtn.active{background:#fff9f2;border-color:#b86b24;box-shadow:0 0 0 2px rgba(184,107,36,.10)}
#equipmentNavBtn.active .nav-icon{background:#ffe9d1;border-color:#b86b24}
#equipmentSection .section-kicker{color:#b86b24}

@media(max-width:720px){
  .module-nav:hover{transform:none}
}

/* v1.0 · Servicio visible desde inicio + llamada al responsable */
.team-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.coordinator-call-btn{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:5px 9px;border:1px solid #7ab890;background:#f1fbf4;color:#17663d;border-radius:7px;font-size:11px;font-weight:900;text-decoration:none;white-space:nowrap}
.coordinator-call-btn:focus-visible{outline:3px solid rgba(23,102,61,.2);outline-offset:2px}
@media(hover:hover) and (pointer:fine){.coordinator-call-btn:hover{background:#e4f6ea;border-color:#5aa274}}
@media(max-width:720px){.team-actions{grid-column:2;justify-content:flex-start}.responsible-tag{grid-column:auto;justify-self:auto}.coordinator-call-btn{min-height:38px;padding:7px 10px}}


/* v1.0 · Botón llamar alineado con RESPONSABLE y sin highlight cuadrado en móvil */
.responsible-tag,.coordinator-call-btn{width:104px;box-sizing:border-box;justify-content:center;text-align:center}
.coordinator-call-btn{appearance:none;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;outline:none;box-shadow:none;overflow:hidden;touch-action:manipulation}
.coordinator-call-btn:active{background:#f1fbf4;border-color:#7ab890;border-radius:7px;box-shadow:none;outline:none}
@media(max-width:720px){
  .responsible-tag,.coordinator-call-btn{width:104px}
  .coordinator-call-btn{-webkit-tap-highlight-color:rgba(0,0,0,0)}
}


/* v1.0 · Comportamiento táctil uniforme: sin resaltado cuadrado detrás de botones */
button,
a,
[role="button"],
.nav-card,
.filter-btn,
.primary,
.secondary,
.logout,
.eye,
.mobile-back-btn,
.remove-request-day,
.coordinator-call-btn{
  -webkit-tap-highlight-color:transparent;
  -webkit-touch-callout:none;
  touch-action:manipulation;
}

button,
input[type="button"],
input[type="submit"],
input[type="reset"]{
  -webkit-appearance:none;
  appearance:none;
}

button:active,
a:active,
[role="button"]:active,
.nav-card:active,
.filter-btn:active,
.primary:active,
.secondary:active,
.logout:active,
.eye:active,
.mobile-back-btn:active,
.remove-request-day:active,
.coordinator-call-btn:active{
  outline:none;
  -webkit-tap-highlight-color:transparent;
}

@media(max-width:720px){
  button,
  a,
  [role="button"],
  .nav-card,
  .filter-btn,
  .primary,
  .secondary,
  .logout,
  .eye,
  .mobile-back-btn,
  .remove-request-day,
  .coordinator-call-btn{
    -webkit-tap-highlight-color:rgba(0,0,0,0);
  }
}


/* v1.0 · Margen superior de seguridad en Android */
@media(max-width:720px){
  html.android-device .page{
    padding-top:max(22px, env(safe-area-inset-top));
  }
}


/* v1.0 · Histórico: coordinador y textos largos */
.history-card-top{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
.history-coordinator-tag{display:inline-flex;align-items:center;justify-content:center;border:1px solid #2f7d4a;background:#eef8f1;color:#24633a;border-radius:6px;padding:5px 8px;font-size:10px;font-weight:900;letter-spacing:.04em;white-space:nowrap}
.history-data{min-width:0}
.history-data span{min-width:0;max-width:100%;overflow:hidden}
.history-data b{min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:break-word;hyphens:auto;line-height:1.2}
@media(max-width:720px){.history-card-top{width:100%}.history-coordinator-tag{flex:0 0 auto}.history-data span{min-width:0}.history-data b{font-size:12px}}


/* v1.0 · Resumen informativo de Servicios */
.services-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:15px}
.service-summary-card{min-width:0;border-radius:12px;padding:13px 15px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid transparent}
.service-summary-card span{font-size:13px;font-weight:800;line-height:1.25}
.service-summary-card strong{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 9px;border-radius:999px;background:#fff;font-size:16px;font-weight:900;flex:0 0 auto}
.vehicle-summary-card{background:#edf8f1;border-color:#b8ddc5;color:#17643a}
.vehicle-summary-card strong{color:#17643a;border:1px solid #b8ddc5}
.coordinator-summary-card{background:#fff4e8;border-color:#efc797;color:#9a5719}
.coordinator-summary-card strong{color:#9a5719;border:1px solid #efc797}
@media(max-width:720px){.services-summary{grid-template-columns:1fr}.service-summary-card{padding:12px 13px}.service-summary-card span{font-size:12px}}

/* v1.0 · Filtros desplegables tipo EnumList + WhatsApp en Servicio actual */
.filter-dropdown-wrap{position:relative;width:100%;margin:0 0 14px;display:flex;align-items:flex-start;justify-content:flex-start;z-index:8}
.filter-toggle-btn{min-width:112px;min-height:40px;border:1px solid #bfd0dc;background:#fff;color:var(--blue-dark);border-radius:10px;padding:8px 13px;font-weight:850;cursor:pointer;text-align:center}
.filter-toggle-btn[aria-expanded="true"]{background:#f1f7fb;border-color:var(--blue);box-shadow:0 0 0 2px rgba(23,104,168,.08)}
.filter-panel{position:absolute;top:calc(100% + 8px);left:0;width:min(390px,100%);max-width:100%;background:#fff;border:1px solid #d7e3eb;border-radius:14px;padding:14px;box-shadow:0 14px 34px rgba(28,57,76,.16);z-index:40}
.filter-panel-title{font-size:15px;font-weight:900;color:var(--text);margin-bottom:11px}
.filter-fieldset{margin:0 0 12px;padding:0;border:0;display:grid;gap:7px;min-width:0}
.filter-fieldset legend{padding:0;margin:0 0 3px;color:var(--muted);font-size:11px;font-weight:900;letter-spacing:.04em;text-transform:uppercase}
.filter-check,.filter-radio{margin:0;display:flex;align-items:center;gap:9px;min-height:38px;padding:7px 9px;border:1px solid #e0e7ec;border-radius:9px;background:#fafcfd;font-weight:700;cursor:pointer;min-width:0}
.filter-check input,.filter-radio input{width:18px;height:18px;min-width:18px;margin:0;padding:0;box-shadow:none}
.filter-check span,.filter-radio span{min-width:0;font-size:13px;line-height:1.25}
.filter-check:hover,.filter-radio:hover{background:#f4f8fb}
.filter-check input:checked,.filter-radio input:checked{accent-color:var(--blue)}
.delivery-choice input:checked{accent-color:#238451}
.return-choice input:checked{accent-color:#c76c25}
.filter-custom-dates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:0 0 12px;padding:10px;background:#f6f9fb;border:1px solid #dde7ed;border-radius:10px;min-width:0}
.filter-custom-dates label{margin:0;min-width:0;overflow:hidden}
.filter-custom-dates label span{display:block;margin-bottom:5px;color:var(--muted);font-size:11px;font-weight:800}
.filter-custom-dates input[type="date"]{display:block;width:100%;max-width:100%;min-width:0;height:40px;box-sizing:border-box;font-size:16px;padding:0 10px}
.filter-panel-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:4px}
.filter-panel-actions .secondary,.filter-panel-actions .primary{width:100%;height:42px;margin:0}
.compact-primary{margin-top:0}
.coordinator-whatsapp-btn{display:inline-flex;align-items:center;justify-content:center;width:104px;min-height:32px;box-sizing:border-box;padding:5px 9px;border:1px solid #69bc85;background:#ecf9f0;color:#146b38;border-radius:7px;font-size:11px;font-weight:900;text-decoration:none;white-space:nowrap;appearance:none;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;outline:none;box-shadow:none;overflow:hidden;touch-action:manipulation}
.coordinator-whatsapp-btn:focus-visible{outline:3px solid rgba(20,107,56,.18);outline-offset:2px}
.coordinator-whatsapp-btn:active{background:#ecf9f0;border-color:#69bc85;border-radius:7px;box-shadow:none;outline:none}
@media(hover:hover) and (pointer:fine){.coordinator-whatsapp-btn:hover{background:#ddf4e5;border-color:#4ba66b}}
@media(max-width:720px){
  .filter-dropdown-wrap{display:block}
  .filter-toggle-btn{width:100%}
  .filter-panel{position:relative;top:auto;left:auto;width:100%;max-width:none;margin-top:8px;box-shadow:none}
  .filter-custom-dates{grid-template-columns:1fr}
  .filter-panel-actions{grid-template-columns:1fr}
  .filter-check,.filter-radio{min-height:44px}
  .coordinator-whatsapp-btn{width:104px;min-height:38px;padding:7px 10px}
}

/* Incluye WhatsApp en la regla global que evita resaltados táctiles cuadrados */
.coordinator-whatsapp-btn{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;touch-action:manipulation}
@media(max-width:720px){.coordinator-whatsapp-btn{-webkit-tap-highlight-color:rgba(0,0,0,0)}}

/* v1.0 · Material actual calculado por saldo de entregas/devoluciones */
.current-material-block{margin-top:18px;padding-top:16px;border-top:1px solid #e7edf1}
.current-material-btn{width:100%;min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #d99a5d;background:#fff8f1;color:#9a4f11;border-radius:11px;padding:10px 13px;font-weight:900;cursor:pointer;text-align:left}
.current-material-btn>span{min-width:0}
.current-material-btn>strong{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;padding:0 8px;border-radius:999px;background:#b86b24;color:#fff;font-size:12px}
.current-material-btn.active{background:#fff0df;border-color:#b86b24}
@media(hover:hover) and (pointer:fine){.current-material-btn:hover{background:#fff3e6;border-color:#c67a34}}
.current-material-panel{margin-top:10px;border:1px solid #ead3ba;background:#fffdfa;border-radius:13px;padding:13px}
.current-material-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.current-material-heading>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.current-material-heading>div>strong{font-size:15px;color:#8e4b14}
.current-material-heading>div>span{font-size:11px;color:var(--muted);line-height:1.35}
.current-material-heading>strong{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;padding:0 9px;border-radius:999px;background:#b86b24;color:#fff;font-size:13px}
.current-material-groups{display:grid;gap:10px}
.current-material-group{border:1px solid #eadfd4;border-radius:11px;overflow:hidden;background:#fff}
.current-material-group-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;background:#fff6ec;border-bottom:1px solid #eee2d6}
.current-material-group-title strong{font-size:12px;color:#8e4b14;text-transform:uppercase;letter-spacing:.03em}
.current-material-group-title span{display:inline-flex;align-items:center;justify-content:center;min-width:25px;height:25px;border-radius:999px;background:#fff;border:1px solid #e1c7ae;color:#9a4f11;font-size:11px;font-weight:900}
.current-material-items{display:grid}
.current-material-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 11px;border-bottom:1px solid #f0ece8}
.current-material-item:last-child{border-bottom:0}
.current-material-item span{font-size:13px;font-weight:650;min-width:0;overflow-wrap:anywhere}
.current-material-item strong{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:28px;padding:0 8px;border-radius:8px;background:#fff1e3;color:#9a4f11;border:1px solid #e2b98f;font-size:12px}
@media(max-width:720px){
  .current-material-btn{min-height:50px}
  .current-material-panel{padding:11px}
  .current-material-heading{align-items:flex-start}
  .current-material-heading>strong{flex:0 0 auto}
  .current-material-item{align-items:center}
}


/* v1.0 · Resolución de solicitudes de vehículo */
.vehicle-request-resolution{margin-top:11px;padding:10px 12px;border-radius:10px;display:flex;flex-direction:column;gap:4px;font-size:12px}.vehicle-request-resolution strong{font-size:12px}.vehicle-request-resolution span{line-height:1.4}.vehicle-request-resolution small{opacity:.82}.denied-resolution{background:#fff3f2;border:1px solid #e8b5b0;color:#84271f}.approved-resolution{background:#eff9f2;border:1px solid #b7ddc2;color:#17663d}


/* v1.0 · Icono Titulaciones caducadas */
.qualification-expired-icon{display:flex;align-items:center;justify-content:center;color:#b42318}
.qualification-expired-icon svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* v1.0 · Tipografía de registros: peso normal */
#vehicleRequestSection .section-kicker,
#vehicleRequestSection .section-heading h3{font-weight:400}

/* Norma general: el contenido de tarjetas/registros no usa negrita.
   Se mantienen en negrita estados, botones, etiquetas y contadores. */
.vehicle-request-card strong,
.vehicle-request-card b,
.history-card strong,
.history-card b,
.qualification-card strong,
.qualification-card b,
.equipment-movement strong,
.equipment-movement b,
.equipment-item strong,
.equipment-item b{font-weight:400}

/* v1.0 · Tipografía normal en formularios y cuadros de registro */
/* Regla general para contenido operativo: etiquetas y valores no se muestran en negrita. */
.module-section label,
.module-section label > span,
.module-section input,
.module-section textarea,
.module-section select,
.request-form label,
.request-form label > span,
.request-form input,
.request-form textarea,
.request-form select,
.request-day-number,
.request-days-heading h4,
.requests-history-heading h4,
.vehicle-request-top strong,
.vehicle-request-day-result b,
.vehicle-request-resolution strong,
.vehicle-request-resolution b,
.history-card strong,
.history-card b,
.qualification-card strong,
.qualification-card b,
.equipment-movement strong,
.equipment-movement b,
.equipment-item strong,
.equipment-item b{font-weight:400}

/* Mantener resaltados solo los elementos operativos que sí deben destacar. */
.module-section button,
.module-section .primary,
.module-section .secondary,
.module-section .request-status,
.module-section .status-pill,
.module-section .movement-tag,
.module-section .expired-tag,
.module-section .team-count,
.module-section .history-count{font-weight:700}


/* v1.0 · Tipografía normal global en solicitudes + cache bust */
/* Todos los formularios operativos de solicitudes usan peso normal.
   Se reserva la negrita únicamente para botones, estados y avisos operativos. */
.module-section form,
.module-section form label,
.module-section form label > span,
.module-section form input,
.module-section form textarea,
.module-section form select,
.module-section form option,
.module-section form p,
.module-section form small,
.module-section form strong,
.module-section form b,
.module-section form h1,
.module-section form h2,
.module-section form h3,
.module-section form h4,
.module-section form h5,
.module-section form h6,
.request-day-number,
.requests-history-heading h4,
.vehicle-request-card strong,
.vehicle-request-card b,
.vehicle-request-day-result b,
.vehicle-request-resolution strong,
.vehicle-request-resolution b {
  font-weight:400 !important;
}

/* Los títulos del módulo de solicitudes también quedan en peso normal. */
.module-section .section-kicker,
#vehicleRequestSection .section-heading h3 {
  font-weight:400 !important;
}

/* Mantener el énfasis solo donde es funcional. */
.module-section form button,
.module-section .primary,
.module-section .secondary,
.module-section .request-status,
.module-section .status-pill,
.module-section .request-message,
.module-section .movement-tag,
.module-section .expired-tag {
  font-weight:700 !important;
}


/* v1.0 · Solicitud de material */
.material-request-icon{display:flex;align-items:center;justify-content:center;color:var(--blue)}
.material-request-icon svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
#materialRequestSection .section-kicker,#materialRequestSection .section-heading h3{font-weight:400!important}
.material-date-grid{margin-bottom:16px}.material-date-grid input[readonly]{background:#f3f7fa;color:#556a79}
.material-picker-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px}.material-picker-field{min-width:0}.material-picker-label{display:block;margin-bottom:6px;color:var(--muted);font-size:12px;font-weight:400!important}
.enumlist-picker{position:relative}.enumlist-toggle{width:100%;min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #cbd9e3;background:#fff;border-radius:10px;padding:10px 12px;color:var(--text);font:inherit;font-weight:400!important;cursor:pointer;text-align:left}.enumlist-toggle[aria-expanded="true"]{border-color:var(--blue);box-shadow:0 0 0 3px rgba(23,104,168,.12)}.enumlist-chevron{font-size:18px;color:var(--muted)}
.enumlist-panel{position:absolute;z-index:35;top:calc(100% + 6px);left:0;right:0;max-height:360px;border:1px solid #cbd9e3;background:#fff;border-radius:12px;box-shadow:0 14px 32px rgba(26,53,72,.18);overflow:hidden}.enumlist-search{width:calc(100% - 20px);margin:10px;height:40px;border:1px solid #cbd9e3;border-radius:9px;padding:9px 11px;font:inherit;font-weight:400!important}.enumlist-options{max-height:298px;overflow:auto;padding:0 8px 9px}.enumlist-group{padding:5px 0}.enumlist-group-title{position:sticky;top:0;background:#f4f8fb;color:var(--blue-dark);font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:7px 9px;border-radius:7px;font-weight:400}.enumlist-option{display:flex!important;align-items:center;gap:9px;padding:8px 9px;margin:0!important;border-bottom:1px solid #eef2f5;cursor:pointer;font-weight:400!important}.enumlist-option:last-child{border-bottom:0}.enumlist-option input{width:17px!important;height:17px!important;flex:0 0 auto;margin:0}.enumlist-option span{margin:0!important;font-size:13px!important;color:var(--text)!important;font-weight:400!important}.enumlist-empty{padding:18px 10px;color:var(--muted);font-size:13px}
.enumlist-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.enumlist-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid #c6dcea;background:#f3f9fd;color:var(--blue-dark);border-radius:999px;padding:6px 9px;font-size:11px;font-weight:400!important;cursor:pointer}.enumlist-chip b{font-size:15px;line-height:1;font-weight:400!important}.material-reason-field{margin-top:16px!important}
.material-requests-list{display:grid;gap:11px;max-height:620px;overflow-y:auto;padding-right:6px;scrollbar-gutter:stable}.material-request-card{border:1px solid #dce6ed;border-radius:13px;background:#fff;padding:14px}.material-request-card strong,.material-request-card b{font-weight:400!important}.material-request-card .request-status{font-weight:700!important}.material-request-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.material-request-columns>div,.material-request-reason{background:#f6f9fb;border-radius:9px;padding:10px 11px;min-width:0}.material-request-columns small,.material-request-reason small{display:block;color:var(--muted);font-size:11px;margin-bottom:6px}.material-request-items{display:flex;flex-wrap:wrap;gap:6px}.material-request-items>span{display:inline-flex;border:1px solid #d5e3ec;background:#fff;border-radius:8px;padding:6px 8px;font-size:12px;color:var(--blue-dark)}.material-request-empty-value{font-size:12px;color:var(--muted)}.material-request-reason{margin-top:10px;display:flex;flex-direction:column;gap:2px}.material-request-reason span{font-size:13px;line-height:1.45}.material-sign-button{margin-top:12px;max-width:260px}.material-signature-state{margin-top:11px;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:3px}.material-signature-state.signed{background:#eff9f2;border:1px solid #b7ddc2;color:#17663d}.material-signature-state span{font-size:13px}.material-signature-state small{font-size:11px;opacity:.82}
.signature-modal{position:fixed;inset:0;z-index:1000;background:rgba(7,25,37,.58);display:grid;place-items:center;padding:18px}.signature-dialog{width:min(680px,100%);max-height:calc(100vh - 36px);overflow:auto;background:#fff;border-radius:16px;box-shadow:0 22px 60px rgba(0,0,0,.28);padding:20px}.signature-dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:14px}.signature-dialog-heading h3{margin:0;font-size:22px;font-weight:400}.signature-close{width:36px;height:36px;border:1px solid #d4e0e7;background:#fff;border-radius:9px;font-size:24px;line-height:1;cursor:pointer;color:var(--muted)}.signature-summary{border:1px solid #dce6ed;background:#f8fbfd;border-radius:12px;padding:13px}.signature-ref{font-size:12px;color:var(--blue-dark);margin-bottom:10px}.signature-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.signature-summary-grid>div{background:#fff;border-radius:9px;padding:10px}.signature-summary-grid small,.signature-reason small{display:block;color:var(--muted);font-size:11px;margin-bottom:6px}.signature-reason{margin-top:10px}.signature-reason span{font-size:13px}.signature-explanation{color:var(--muted);font-size:12px;line-height:1.5;margin:13px 0}.signature-check{display:flex;align-items:flex-start;gap:9px;margin:0 0 13px!important}.signature-check input{width:18px!important;height:18px!important;flex:0 0 auto;margin-top:1px}.signature-check span{margin:0!important;color:var(--text)!important;font-size:13px!important;font-weight:400!important}.signature-password{display:block;margin:0!important}.signature-password>span{display:block;margin-bottom:6px;font-size:12px;color:var(--muted);font-weight:400}.signature-password input{width:100%;height:44px;border:1px solid #cbd9e3;border-radius:10px;padding:10px 12px;font:inherit;font-weight:400}.signature-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:15px}.modal-open{overflow:hidden}
@media(max-width:720px){.material-picker-grid,.material-request-columns,.signature-summary-grid{grid-template-columns:1fr}.enumlist-panel{position:fixed;left:12px;right:12px;top:auto;bottom:12px;max-height:68vh;z-index:1100}.enumlist-options{max-height:calc(68vh - 70px)}.material-requests-list{max-height:540px;padding-right:4px}.material-sign-button{max-width:none;width:100%}.signature-modal{padding:10px;align-items:end}.signature-dialog{max-height:90vh;border-radius:15px 15px 0 0;padding:16px}.signature-actions{flex-direction:column-reverse}.signature-actions button{width:100%}}

/* v1.0 · Solicitudes agrupadas, Mis solicitudes e iconografía uniforme */
/* Menús: tipografía siempre normal. */
.portal-nav .nav-card,
.portal-nav .nav-card .nav-title,
.portal-nav .nav-card small,
.request-module-card,
.request-module-card .nav-title,
.request-module-card small,
.my-request-filter,
.my-request-open{
  font-weight:400 !important;
}
.portal-nav .nav-card .nav-title,
.request-module-card .nav-title{
  color:var(--blue-dark);
  font-size:15px;
  line-height:1.25;
}
.portal-nav .nav-card small,
.request-module-card small{font-size:12px;color:var(--muted);line-height:1.3}
.line-module-icon{display:flex;align-items:center;justify-content:center;color:var(--blue)}
.line-module-icon svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* Colores de los nuevos módulos principales */
#requestsHubNavBtn{border-color:#c6ddeb}
#requestsHubNavBtn .nav-icon{background:#eaf3fa;border-color:#c6ddeb;color:#1768a8}
#requestsHubNavBtn .nav-title{color:#1768a8}
#requestsHubNavBtn:hover,#requestsHubNavBtn.active{background:#f1f8fc;border-color:#1768a8;box-shadow:0 0 0 2px rgba(23,104,168,.10)}
#requestsHubNavBtn.active .nav-icon{background:#dceefa;border-color:#1768a8}
#requestsHubSection .section-kicker,#requestsHubSection .section-heading h3{font-weight:400!important;color:#1768a8}

#myRequestsNavBtn{border-color:#cfd4e8}
#myRequestsNavBtn .nav-icon{background:#f0f2fb;border-color:#cfd4e8;color:#5362a6}
#myRequestsNavBtn .nav-title{color:#5362a6}
#myRequestsNavBtn:hover,#myRequestsNavBtn.active{background:#f7f8fd;border-color:#5362a6;box-shadow:0 0 0 2px rgba(83,98,166,.10)}
#myRequestsNavBtn.active .nav-icon{background:#e7eafa;border-color:#5362a6}
#myRequestsSection .section-kicker,#myRequestsSection .section-heading h3{font-weight:400!important;color:#5362a6}

/* Mantener títulos de los módulos principales con peso normal. */
#servicesNavBtn .nav-title{color:#25704b}
#qualificationsNavBtn .nav-title{color:#a92a20}
#equipmentNavBtn .nav-title{color:#a45b18}
#servicesNavBtn .nav-icon{color:#2b7a52}
#qualificationsNavBtn .nav-icon{color:#b42318}
#equipmentNavBtn .nav-icon{color:#b86b24}

.request-module-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.request-module-card{min-height:84px;border:1px solid #c6ddeb;background:#fff;border-radius:13px;padding:14px 16px;text-align:left;display:flex;align-items:center;gap:13px;cursor:pointer;color:var(--text);-webkit-tap-highlight-color:transparent}
.request-module-card>span:last-child{display:flex;flex-direction:column;gap:3px;min-width:0}
.request-module-card .nav-icon{width:42px;height:42px;border-radius:10px;background:#eaf3fa;border:1px solid #c6ddeb;flex:0 0 auto}
.request-module-card:hover{background:#f1f8fc;border-color:#1768a8;box-shadow:0 0 0 2px rgba(23,104,168,.10)}
.request-module-card:hover .nav-icon{background:#dceefa;border-color:#1768a8}
.section-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.request-hub-back{font-weight:400!important}

.my-requests-filters{display:grid;gap:9px;margin:0 0 15px}
.my-request-filter-row{display:flex;gap:7px;flex-wrap:wrap}
.my-request-filter{min-height:38px;border:1px solid #cfdbe4;background:#fff;color:#435b6d;border-radius:9px;padding:7px 11px;cursor:pointer}
.my-request-filter:hover{background:#f6f9fb}
.my-request-filter.active{border-color:#5362a6;background:#f0f2fb;color:#3f4e91;box-shadow:0 0 0 2px rgba(83,98,166,.08)}
.my-requests-list{display:grid;gap:10px;max-height:620px;overflow-y:auto;padding-right:6px;scrollbar-gutter:stable}
.my-request-card{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:start;border:1px solid #dce5eb;background:#fff;border-radius:13px;padding:13px}
.my-request-type-icon{width:42px;height:42px;border-radius:10px;background:#f2f6f9;border:1px solid #d5e1e8;color:#46687e}
.my-request-main{min-width:0}
.my-request-heading{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-bottom:4px}
.my-request-type{font-size:12px;color:#5362a6;font-weight:400}
.my-request-summary{font-size:14px;color:var(--text);font-weight:400;line-height:1.4}
.my-request-meta{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:6px;color:var(--muted);font-size:11px;font-weight:400}
.my-request-denial{margin-top:9px;padding:9px 10px;border-radius:9px;background:var(--red-bg);border:1px solid #e6aaa5;color:#7f1d16}
.my-request-denial span{display:block;font-size:10px;color:#a22a20;margin-bottom:3px;font-weight:400}
.my-request-denial p{margin:0;font-size:12px;line-height:1.4;font-weight:400}
.my-request-open{align-self:center;border:1px solid #c8d8e3;background:#f8fbfd;color:var(--blue-dark);border-radius:9px;padding:8px 10px;cursor:pointer;white-space:nowrap}
.my-request-open:hover{background:#eef6fb;border-color:#8fb8d2}

@media(max-width:720px){
  .request-module-grid{grid-template-columns:1fr}
  .section-actions{width:100%}
  .section-actions .secondary{flex:1 1 auto}
  .my-request-filter-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  #myRequestTypeFilters{grid-template-columns:1fr}
  .my-request-card{grid-template-columns:42px minmax(0,1fr)}
  .my-request-open{grid-column:1/-1;width:100%;justify-self:stretch}
  .my-requests-list{max-height:560px;padding-right:4px}
}


/* v1.0 · Kilometraje del vehículo desde Servicio actual */
.mileage-block{background:#fff;border:1px solid #d8e4ec;border-radius:12px;padding:15px;margin:0 0 14px}
.mileage-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.mileage-heading h5{margin:0 0 3px;font-size:16px;font-weight:400;color:var(--blue-dark)}
.mileage-heading p{margin:0;color:var(--muted);font-size:13px;font-weight:400;line-height:1.35}
.mileage-list{display:grid;gap:11px}
.mileage-card{border:1px solid #e1e8ed;border-radius:10px;padding:12px;background:#fbfcfd}
.mileage-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}
.mileage-vehicle{font-size:16px;font-weight:400;color:var(--blue-dark)}
.mileage-service-meta{font-size:12px;color:var(--muted);font-weight:400;margin-top:2px;line-height:1.35}
.mileage-status{font-size:11px;border-radius:999px;padding:5px 8px;white-space:nowrap;background:#eef5fa;color:var(--blue-dark);font-weight:400}
.mileage-status.closed{background:#edf8f1;color:#24633a}
.mileage-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr)) auto;gap:10px;align-items:end}
.mileage-field{display:grid;gap:5px;font-weight:400}
.mileage-field span{font-size:12px;color:var(--muted);font-weight:400}
.mileage-field input{width:100%;box-sizing:border-box;font-weight:400}
.mileage-save{min-height:42px;white-space:nowrap}
.mileage-message{margin:8px 0 0;font-size:12px;font-weight:400;color:var(--muted)}
.mileage-message.error{color:#a83333}.mileage-message.ok{color:#24633a}
.mileage-closed-data{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:8px}
.mileage-closed-data span{display:grid;gap:2px;padding:8px 9px;border-radius:8px;background:#fff;border:1px solid #e1e8ed;font-size:12px;font-weight:400}
.mileage-closed-data small{color:var(--muted);font-weight:400}.mileage-closed-data b{font-weight:400;color:var(--blue-dark)}
@media(max-width:720px){.mileage-form{grid-template-columns:1fr}.mileage-save{width:100%}.mileage-closed-data{grid-template-columns:1fr}.mileage-card-head{flex-direction:column}.mileage-status{align-self:flex-start}}


/* v1.0 · validación en dos pasos */
.btn-busy-content{display:inline-flex;align-items:center;justify-content:center;gap:9px}
.btn-spinner{display:inline-block;width:17px;height:17px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:portalSpin .75s linear infinite;flex:0 0 auto}
.secondary .btn-spinner{border-color:rgba(20,76,119,.25);border-top-color:var(--blue-dark)}
@keyframes portalSpin{to{transform:rotate(360deg)}}
.two-factor-intro span{color:var(--blue-dark);font-weight:700}
.security-code-input{text-align:center;font-size:25px;letter-spacing:.28em;font-variant-numeric:tabular-nums;padding-left:calc(13px + .28em)}
.security-note{min-height:18px;margin:8px 0 0;color:var(--muted);font-size:12px;text-align:center}
.two-factor-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}
.two-factor-secondary{flex:1;min-height:42px}
.link-button{border:0;background:transparent;color:var(--blue);cursor:pointer;padding:9px 3px;font:inherit;font-size:13px;text-decoration:underline;text-underline-offset:3px}
.link-button:hover{color:var(--blue-dark)}
@media(max-width:520px){.two-factor-actions{flex-direction:column;align-items:stretch}.two-factor-secondary,.link-button{width:100%}}


/* v1.0 · Mis datos y cambio voluntario de contraseña */
#myDataNavBtn{border-color:#c9d9df}
#myDataNavBtn .nav-icon{background:#edf6f7;border-color:#c9d9df;color:#2f7480}
#myDataNavBtn .nav-title{color:#2f7480;font-weight:400!important}
#myDataNavBtn small{font-weight:400!important}
#myDataNavBtn:hover,#myDataNavBtn.active{background:#f4fafb;border-color:#2f7480;box-shadow:0 0 0 2px rgba(47,116,128,.10)}
.my-data-section .section-kicker,.my-data-section .section-heading h3{font-weight:400!important}
.my-data-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:8px 0 22px}
.my-data-item{border:1px solid #dce6ed;background:#f8fbfd;border-radius:11px;padding:11px 13px;min-width:0;display:flex;flex-direction:column;gap:5px}
.my-data-item span{font-size:11px;color:var(--muted);font-weight:400!important}
.my-data-item strong{font-size:14px;color:var(--blue-dark);font-weight:400!important;overflow-wrap:anywhere}
.password-change-card{border:1px solid #d9e5ed;background:#fbfdff;border-radius:15px;padding:18px;margin-top:8px}
.password-change-heading h4{margin:0;font-size:19px;font-weight:400!important;color:var(--blue-dark)}
.password-change-intro{margin:7px 0 16px;color:var(--muted);font-size:13px;line-height:1.45;font-weight:400!important}
.password-change-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start}
.password-change-form label{display:flex;flex-direction:column;gap:6px;margin:0;font-weight:400!important}
.password-change-form label>span{font-size:12px;color:var(--muted);font-weight:400!important}
.password-change-form input{width:100%;height:43px;border:1px solid #cbd9e3;border-radius:10px;background:#fff;padding:9px 11px;font:inherit;font-weight:400!important;outline:none}
.password-change-form input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(23,104,168,.12)}
.password-change-form small{font-size:10.5px;color:var(--muted);line-height:1.35;font-weight:400!important}
.password-change-form .request-message{grid-column:1/-1;margin:0;font-weight:400!important}
.password-change-button{grid-column:1/-1;justify-self:start;min-width:190px}
@media(max-width:820px){.password-change-form{grid-template-columns:1fr}.password-change-button{grid-column:auto;width:100%}}
@media(max-width:720px){.my-data-grid{grid-template-columns:1fr}.my-data-pair{grid-template-columns:1fr!important}}

/* v1.0 · Recepciones directas de material y teléfono editable */
.material-pending-signatures{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:8px 0 14px;padding:13px 14px;border:1px solid #d7e5ee;background:#f7fbfd;border-radius:12px}
.material-pending-signatures h4,.material-pending-signatures p,.material-pending-signatures .section-kicker{font-weight:400!important;margin:0}
.material-pending-signatures h4{font-size:15px;color:var(--blue-dark);margin-top:2px}.material-pending-signatures p{font-size:12px;color:var(--muted);margin-top:4px}
.direct-material-delivery{border-left:4px solid #4b89b8;padding-left:11px}
.my-data-phone-edit{grid-column:auto}
.phone-update-form{display:flex;gap:8px;align-items:center}.phone-update-form input{flex:1;min-width:0;border:1px solid #cfdde6;border-radius:9px;padding:9px 10px;font:inherit;font-weight:400;background:#fff;color:var(--blue-dark)}
.phone-update-form button{min-width:96px}.phone-update-message{min-height:16px;font-size:11px;color:var(--muted);font-weight:400}.phone-update-message.ok{color:#17663d}.phone-update-message.error{color:#a33a3a}
@media(max-width:720px){.material-pending-signatures{align-items:flex-start}.phone-update-form{flex-direction:column;align-items:stretch}.phone-update-form button{width:100%}}

/* v1.0 rev9 · Mis datos: disposición y edición de teléfono */
.my-data-pair{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;min-width:0}
.my-data-phone-edit{grid-column:auto}
.phone-display-row{display:flex;align-items:center;gap:10px;min-height:42px}
.phone-display-row strong{flex:1;min-width:0}
.phone-display-row .secondary{flex:0 0 auto}
.phone-update-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
.phone-update-form.hidden,.phone-display-row.hidden{display:none!important}
@media(max-width:720px){.my-data-pair{grid-template-columns:1fr}.phone-update-form{grid-template-columns:1fr}.phone-update-form .secondary{width:100%}}

/* v1.0 rev10 · Mis datos: parejas de datos forzadas */
.my-data-grid>.my-data-pair{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;min-width:0}
.my-data-grid>.my-data-pair>.my-data-item{width:100%;box-sizing:border-box}
@media(max-width:720px){.my-data-grid>.my-data-pair{grid-template-columns:1fr}}

/* Portal v1.0 · flujo unificado de material */
.request-module-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.single-material-picker{grid-template-columns:1fr}
.material-request-columns.single,.signature-summary-grid.single{grid-template-columns:1fr}
.movement-reference{font-size:11px;color:var(--muted);white-space:nowrap}
@media(max-width:980px){.request-module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.request-module-grid{grid-template-columns:1fr}}


/* v1.0 · Personal en el servicio compacto en móvil vertical */
@media(max-width:720px){
  .team-block{padding:12px}
  .team-list{gap:7px;margin-top:10px}
  .team-person{grid-template-columns:78px minmax(0,1fr);gap:6px 9px;padding:9px 10px}
  .team-person.is-responsible{grid-template-areas:
    "role role"
    "call name"
    "actions actions";
    align-items:center
  }
  .team-person.is-responsible .responsible-tag{grid-area:role;justify-self:start;width:auto;min-width:0;padding:3px 7px;font-size:9px}
  .team-person.is-responsible .team-call{grid-area:call}
  .team-person.is-responsible .team-name{grid-area:name}
  .team-person.is-responsible .team-actions{grid-area:actions;display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;justify-content:stretch}
  .team-person.is-responsible .coordinator-call-btn,
  .team-person.is-responsible .coordinator-whatsapp-btn{width:100%;min-height:38px;padding:7px 8px}
}


/* Servicios realizados · en móvil, solo 4 datos se distribuyen 2 x 2 */
@media(max-width:720px){
  .history-data.history-data-four{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
    width:100%;
  }
  .history-data.history-data-four span{
    width:100%;
    min-width:0;
    box-sizing:border-box;
  }
}

/* Portal v1.0 · Solicitud de baja voluntaria */
.leave-pending-notice{display:flex;flex-direction:column;gap:4px;margin:0 0 14px;padding:13px 14px;border:1px solid #ead58c;background:#fff8e5;border-radius:12px;color:#6f5400}
.leave-pending-notice strong{font-size:14px}.leave-pending-notice span{font-size:12px;line-height:1.4}
.leave-data-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.leave-data-box{border:1px solid #dce6ed;border-radius:11px;background:#fff;padding:11px 12px;min-width:0}
.leave-data-box span{display:block;color:var(--muted);font-size:11px;margin-bottom:4px}.leave-data-box strong{display:block;color:var(--blue-dark);font-size:13px;overflow-wrap:anywhere}
.leave-legal-note{border:1px solid #cfe0ea;background:#f6fafc;border-radius:11px;padding:12px 13px;margin-bottom:14px}.leave-legal-note strong{color:var(--blue-dark);font-size:13px}.leave-legal-note p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.45}
.leave-material-block{margin-top:16px;border:1px solid #dce6ed;border-radius:13px;background:#fff;padding:14px}
.leave-material-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.leave-material-heading>div{display:flex;flex-direction:column;gap:3px}.leave-material-heading>div>strong{font-size:14px;color:var(--blue-dark)}.leave-material-heading>div>span{font-size:11px;color:var(--muted)}
.leave-material-list{display:grid;gap:7px}.leave-material-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #e5ebef;background:#fafcfd;border-radius:9px;padding:9px 11px}.leave-material-item>div{display:flex;flex-direction:column;gap:2px;min-width:0}.leave-material-item strong{font-size:13px;overflow-wrap:anywhere}.leave-material-item span{font-size:11px;color:var(--muted)}.leave-material-item>b{color:var(--blue-dark);font-size:12px;white-space:nowrap}
.leave-material-warning{margin:10px 0 0;padding:9px 10px;border-radius:9px;background:#fff4ed;border:1px solid #efd0bd;color:#82441f;font-size:12px;line-height:1.45}
.leave-signature-block{margin-top:16px;border-top:1px solid #e4ebf0;padding-top:15px}.leave-signature-block>p:not(.section-kicker){margin:5px 0 12px;color:var(--muted);font-size:12px;line-height:1.45}
.leave-confirm{display:flex!important;align-items:flex-start;gap:9px;margin:0 0 13px!important;font-weight:400!important}.leave-confirm input{width:18px;height:18px;flex:0 0 18px;margin:1px 0 0}.leave-confirm span{display:block!important;margin:0!important;color:var(--text)!important;font-size:12px!important;font-weight:400!important;line-height:1.45}
.voluntary-leave-form.leave-form-locked{opacity:.7}.voluntary-leave-form.leave-form-locked textarea,.voluntary-leave-form.leave-form-locked input,.voluntary-leave-form.leave-form-locked button{cursor:not-allowed}
.voluntary-leave-requests-list{display:grid;gap:10px;max-height:520px;overflow-y:auto;padding-right:5px;scrollbar-gutter:stable}.voluntary-leave-card{border:1px solid #dce6ed;border-radius:13px;background:#fff;padding:14px}.voluntary-leave-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.voluntary-leave-card-top>div{display:flex;flex-direction:column;gap:3px}.voluntary-leave-card-top strong{font-size:15px;color:var(--blue-dark)}.voluntary-leave-card-top span:not(.request-status){font-size:11px;color:var(--muted)}
.voluntary-leave-reason{margin-top:11px;padding:10px 11px;border-radius:9px;background:#f7fafc}.voluntary-leave-reason>span{display:block;color:var(--muted);font-size:10px;margin-bottom:3px}.voluntary-leave-reason p{margin:0;font-size:13px;line-height:1.4;white-space:pre-wrap}
.voluntary-leave-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}.voluntary-leave-meta>span{border:1px solid #e5ebef;border-radius:9px;padding:8px 9px;min-width:0}.voluntary-leave-meta small{display:block;color:var(--muted);font-size:9px}.voluntary-leave-meta b{display:block;margin-top:2px;font-size:11px;overflow-wrap:anywhere}
@media(max-width:900px){.leave-data-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.leave-data-grid{grid-template-columns:1fr}.leave-material-heading{align-items:flex-start}.voluntary-leave-card-top{flex-direction:column}.voluntary-leave-meta{grid-template-columns:1fr}.voluntary-leave-requests-list{max-height:500px;padding-right:4px}}

/* Portal del Voluntariado v1.0.2 · Documentación personal de formación */
#formationNavBtn .nav-icon{background:#ebf4fc;border:1px solid #c8dfef;color:#1768a8}
#formationNavBtn:hover,#formationNavBtn.active{background:#f1f8fe;border-color:#87b9dc}
#formationSection{min-width:0}
.formation-block{border:1px solid #dce7f0;border-radius:15px;padding:18px;margin:0 0 16px;background:#fff}
.formation-block-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #eaf0f5;margin-bottom:14px;padding-bottom:12px}
.formation-block-heading h4{font-size:16px;color:#1c4968;margin:0;font-weight:800}
.formation-count{background:#eaf4fd;color:#205d85;font-size:12px;font-weight:700;min-width:34px;padding:6px 10px;border-radius:20px;text-align:center}
.formation-official-list,.formation-doc-list{display:grid;gap:9px}
.formation-official-row,.formation-doc-row{display:flex;align-items:center;gap:14px;justify-content:space-between;padding:12px 14px;border:1px solid #e0eaf2;border-radius:12px;background:#fafdff;min-width:0}
.formation-official-row>div,.formation-doc-row>div{min-width:0;flex:1;display:flex;flex-direction:column;gap:5px}
.formation-official-row strong,.formation-doc-row strong{font-size:14px;font-weight:800;color:#234760;overflow-wrap:anywhere}
.formation-official-row small,.formation-doc-row small{font-size:12px;color:#607c91;overflow-wrap:anywhere;line-height:1.35}
.formation-official-row button,.formation-doc-row button{flex:none;white-space:nowrap;min-height:38px;padding:8px 13px}
.formation-upload-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.formation-upload-form label{display:flex;flex-direction:column;gap:7px;min-width:0}
.formation-upload-form label>span{font-size:12px;color:#496d87}
.formation-upload-form label:nth-child(3),.formation-upload-form .formation-privacy-note,.formation-upload-form .request-message,.formation-upload-form .request-submit{grid-column:1/-1}
.formation-upload-form input,.formation-upload-form select{width:100%;min-height:44px;border:1px solid #c8dae8;border-radius:10px;background:#fbfdff;padding:10px 12px;font-size:14px;color:#254c67}
.formation-upload-form input:read-only{background:#edf3f8;color:#526f82;cursor:default}
.formation-upload-form input[type=file]{padding:9px}
.formation-privacy-note{font-size:12px;color:#657e91;margin:0;line-height:1.55}
.formation-status{display:inline-flex;align-self:flex-start;border-radius:18px;padding:5px 9px;font-size:11px;font-weight:800;letter-spacing:.01em}
.formation-status.pending{background:#fff3df;color:#93611c}
.formation-status.validated{background:#e5f5ea;color:#1b7645}
.formation-status.rejected{background:#ffefed;color:#a73332}
.formation-doc-row .formation-doc-label{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.formation-doc-row .formation-doc-label strong{flex:0 1 auto}
#formationSection .request-message{margin:0}
@media(max-width:720px){.formation-block{padding:13px}.formation-upload-form{grid-template-columns:1fr}.formation-official-row,.formation-doc-row{flex-wrap:wrap;align-items:flex-start}.formation-official-row button,.formation-doc-row button{width:100%}}


/* v1.0.4 · Mis titulaciones: botones y controles más modernos */
#formationSection .section-heading .secondary{
  min-height:42px;
  border-radius:12px;
  padding:10px 15px;
  border-color:#c7d9e7;
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 8px 18px rgba(23,104,168,.06);
}
#formationSection .section-heading .secondary:hover{background:#f4f9fd;border-color:#aac6da}
.formation-upload-form label>span{font-size:12px;font-weight:800;color:#416882;letter-spacing:.02em}
.formation-upload-form input,
.formation-upload-form select{
  min-height:48px;
  border-radius:12px;
  border:1px solid #c7d9e7;
  background:#fbfdff;
  padding:11px 13px;
  transition:border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}
.formation-upload-form input:hover,
.formation-upload-form select:hover{border-color:#a7c4d8}
.formation-upload-form input:focus,
.formation-upload-form select:focus{
  outline:none;
  border-color:#1768a8;
  box-shadow:0 0 0 3px rgba(23,104,168,.12);
  background:#fff;
}
.formation-upload-form select{
  appearance:none;
  -webkit-appearance:none;
  background-image:linear-gradient(45deg,transparent 50%, #4c7692 50%),linear-gradient(135deg,#4c7692 50%, transparent 50%);
  background-position:calc(100% - 18px) calc(50% - 3px), calc(100% - 12px) calc(50% - 3px);
  background-size:6px 6px, 6px 6px;
  background-repeat:no-repeat;
  padding-right:36px;
}
.formation-upload-form input[type=file]{
  display:block;
  min-height:60px;
  padding:10px 12px;
  border-style:dashed;
  border-width:1.5px;
  border-color:#b9cfdf;
  border-radius:14px;
  background:linear-gradient(180deg,#fafdff 0%,#f4f9fc 100%);
  color:#4d687d;
}
.formation-upload-form input[type=file]:hover{background:linear-gradient(180deg,#ffffff 0%,#eef6fb 100%)}
.formation-upload-form input[type=file]::file-selector-button{
  margin-right:14px;
  border:1px solid #1768a8;
  background:linear-gradient(180deg,#2786d0 0%,#1768a8 100%);
  color:#fff;
  border-radius:11px;
  padding:10px 16px;
  font-weight:800;
  cursor:pointer;
  box-shadow:0 10px 22px rgba(23,104,168,.18);
  transition:transform .16s ease, box-shadow .16s ease, filter .16s ease;
}
.formation-upload-form input[type=file]::-webkit-file-upload-button{
  margin-right:14px;
  border:1px solid #1768a8;
  background:linear-gradient(180deg,#2786d0 0%,#1768a8 100%);
  color:#fff;
  border-radius:11px;
  padding:10px 16px;
  font-weight:800;
  cursor:pointer;
  box-shadow:0 10px 22px rgba(23,104,168,.18);
  transition:transform .16s ease, box-shadow .16s ease, filter .16s ease;
}
.formation-upload-form input[type=file]::file-selector-button:hover,
.formation-upload-form input[type=file]::-webkit-file-upload-button:hover{
  filter:brightness(1.04);
  box-shadow:0 12px 24px rgba(23,104,168,.22);
}
.formation-upload-form .request-submit{
  width:auto;
  min-width:260px;
  max-width:none;
  min-height:52px;
  padding:0 22px;
  margin-top:4px;
  border-radius:14px;
  border:1px solid #1768a8;
  background:linear-gradient(180deg,#2a88d2 0%,#1768a8 100%);
  color:#fff;
  font-size:15px;
  font-weight:800 !important;
  letter-spacing:.01em;
  box-shadow:0 14px 30px rgba(23,104,168,.22);
  transition:transform .16s ease, box-shadow .16s ease, filter .16s ease;
}
.formation-upload-form .request-submit:hover{
  filter:brightness(1.03);
  box-shadow:0 16px 34px rgba(23,104,168,.26);
  transform:translateY(-1px);
}
.formation-upload-form .request-submit:active{
  transform:translateY(0);
  box-shadow:0 8px 18px rgba(23,104,168,.2);
}
.formation-upload-form .request-submit:disabled{
  opacity:.72;
  cursor:not-allowed;
  transform:none;
  box-shadow:none;
}
@media(max-width:720px){
  .formation-upload-form input[type=file]{min-height:68px}
  .formation-upload-form input[type=file]::file-selector-button,
  .formation-upload-form input[type=file]::-webkit-file-upload-button{
    width:100%;
    margin:0 0 10px;
    display:block;
  }
  .formation-upload-form .request-submit{width:100%;min-width:0}
}

/* v1.0.5 · Listado de titulaciones predefinidas y campo «Otras titulaciones» */
.formation-selection-help{grid-column:1/-1;margin:-4px 0 2px;color:#657f91;font-size:12px;line-height:1.5}
.formation-selection-help b{font-weight:700;color:#365d77}
#formationCustomTitleBox{grid-column:1/-1;min-width:0}
#formationLinkedTitle{cursor:pointer}
#formationLinkedTitle:invalid{color:#6c8191}
#formationCustomTitleBox input{background:#fff}


/* v1.0.6 · Renovación documental: fecha propuesta sin modificar fecha oficial */
.formation-expiry-box{grid-column:1/-1;border:1px solid #c7dbeb;border-radius:14px;background:#f4f9fd;padding:15px 16px;display:grid;gap:10px}
.formation-expiry-caption{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;color:#194b71}
.formation-expiry-caption strong{font-size:13px;font-weight:800}
.formation-expiry-caption span{font-size:12px;color:#5c778d}
.formation-expiry-box label{max-width:370px;margin:0}
.formation-expiry-box label>span{font-weight:700!important;color:#365f7a}
.formation-expiry-box p{margin:0;color:#5f788d;font-size:12px;line-height:1.5}
.formation-official-row .formation-date-pending{color:#956218;font-weight:700}
.formation-doc-row .formation-date-pending{color:#956218;font-weight:700}
.formation-upload-form #formationExpiryBox label{grid-column:auto}
@media(max-width:720px){.formation-expiry-caption{flex-direction:column;align-items:flex-start}.formation-expiry-box label{max-width:none}}


/* v1.0.9 · Mis titulaciones y permisos: vigencias + renovaciones en un solo módulo */
#formationSection .formation-expiry-summary{display:flex;gap:9px;flex-wrap:wrap;margin:0 0 12px}
#formationSection .formation-summary-pill{display:inline-flex;align-items:center;gap:8px;border-radius:999px;border:1px solid #d2e1ea;padding:7px 11px;font-size:12px;background:#f6f9fc;color:#365b72;white-space:nowrap}
#formationSection .formation-summary-pill b{min-width:23px;text-align:center;border-radius:999px;padding:2px 5px;background:rgba(255,255,255,.9);font-size:12px}
#formationSection .formation-summary-pill.expired,#formationSection .formation-summary-pill.urgent{background:#fff0ef;border-color:#e8b0ae;color:#9a2d2a}
#formationSection .formation-summary-pill.soon{background:#fff7e8;border-color:#e7c584;color:#8c5d18}
#formationSection .formation-summary-pill.valid{background:#ecf8f0;border-color:#b4d9c2;color:#216b45}
#formationSection .formation-summary-pill.undated{background:#f3f5f7;border-color:#d4dde3;color:#556b7a}
#formationSection .formation-summary-pill.clear{background:#f5f8fa;border-color:#e0e9ee;color:#5d7585}
#formationSection .formation-expiry-help{margin:0 0 16px;line-height:1.5;color:#687e8e;font-size:12px}
#formationSection .formation-expiry-help strong{font-weight:700}
#formationSection .formation-official-list{gap:12px}
#formationSection .formation-official-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:7px 14px;padding:15px 17px;border-radius:14px;border-width:1px 1px 1px 4px;min-width:0}
#formationSection .formation-expiry-valid{border-color:#c4e2cd;background:#f7fcf8}
#formationSection .formation-expiry-soon{border-color:#eccb8b;background:#fffaf0}
#formationSection .formation-expiry-urgent{border-color:#e9a8a3;background:#fff6f5}
#formationSection .formation-expiry-expired{border-color:#d77f7d;background:#fff1f0}
#formationSection .formation-expiry-undated{border-color:#d9e3ea;background:#fafcfd}
#formationSection .formation-title-and-state{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;align-items:center;min-width:0;grid-column:1;grid-row:1}
#formationSection .formation-title-and-state strong{min-width:0;font-size:15px;color:#234760;line-height:1.3;overflow-wrap:anywhere}
#formationSection .formation-expiry-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:99px;padding:5px 9px;font-size:11px;line-height:1.2;font-weight:800;flex:0 0 auto}
#formationSection .formation-expiry-badge.valid{background:#e0f2e7;color:#216b45}
#formationSection .formation-expiry-badge.soon{background:#fff0cb;color:#8b5911}
#formationSection .formation-expiry-badge.urgent,#formationSection .formation-expiry-badge.expired{background:#fce2df;color:#a22e29}
#formationSection .formation-expiry-badge.undated{background:#edf2f5;color:#5a7283}
#formationSection .formation-expiry-detail{display:flex;flex-direction:column;gap:4px;min-width:0;grid-column:1;grid-row:2}
#formationSection .formation-expiry-detail small{line-height:1.4;font-size:12px;color:#59778b}
#formationSection .formation-expiry-detail .formation-date-pending{color:#956218}
#formationSection .formation-renew-btn{grid-column:2;grid-row:1/3;min-height:42px;border-radius:10px;padding:9px 16px;align-self:center;justify-self:end;white-space:nowrap;box-shadow:0 2px 7px rgba(23,104,168,.05)}
#formationSection .formation-operational-warning{grid-column:1/-1;display:flex;flex-direction:column;gap:4px;border:1px solid #e4a6a2;border-left:4px solid #c6473e;background:#fffafa;color:#91312d;border-radius:9px;padding:12px 13px;margin-top:5px}
#formationSection .formation-operational-warning strong{font-size:12px;font-weight:800}
#formationSection .formation-operational-warning span{font-size:13px;line-height:1.5}
@media(max-width:720px){
  #formationSection .formation-official-row{display:flex;flex-direction:column;align-items:stretch;padding:13px 14px;gap:8px}
  #formationSection .formation-renew-btn{width:100%;justify-self:auto;margin-top:3px}
  #formationSection .formation-operational-warning{width:100%}
  #formationSection .formation-expiry-summary{gap:6px}
  #formationSection .formation-summary-pill{padding:6px 9px;font-size:11px}
}


/* =======================================================================
   Portal del Voluntariado v1.0.10 - Acceso y 2FA con diseño GESALVPC Extranet
   Estilos limitados a las tarjetas de autenticación. NO afecta al portal
   una vez iniciada la sesión ni modifica la lógica del acceso.
   ======================================================================= */
.page:has(> #loginView:not(.hidden)),
.page:has(> #twoFactorView:not(.hidden)) {
  min-height:100vh;
  background:linear-gradient(145deg,#082d4d 0%,#105b86 100%);
  place-items:center;
}
.page > .login-card.auth-card {
  width:min(100%,510px);
  margin:0;
  padding:34px 37px 24px;
  border:0;
  border-radius:18px;
  background:#fff;
  color:#183851;
  text-align:center;
  box-shadow:0 20px 60px rgba(0,20,40,.35);
}
.auth-card .auth-brand {text-align:center;}
.auth-card .auth-emblem {display:block;width:96px;height:96px;object-fit:contain;margin:0 auto;}
.auth-card .auth-eyebrow {font-size:10px;letter-spacing:1.5px;font-weight:700;color:#6685a0;margin:14px 0 7px;}
.auth-card h1 {font-size:29px;line-height:1.15;letter-spacing:-.5px;color:#183851;margin:0;}
.auth-card .auth-subtitle {font-size:16px;line-height:1.45;color:#487795;margin:8px 0 25px;}
.auth-card .auth-signin {background:#f8fbfd;border:1px solid #dbe5ed;border-radius:12px;padding:22px;text-align:left;}
.auth-card .auth-signin h2 {font-size:18px;line-height:1.25;margin:0 0 9px;color:#183851;font-weight:700;}
.auth-card .auth-explanation {font-size:13px;color:#516d83;line-height:1.55;margin:0 0 17px;}
.auth-card .auth-signin label {display:block;color:#324e65;font-size:13px;font-weight:700;margin:13px 0 6px;}
.auth-card .auth-signin input {display:block;width:100%;height:44px;min-width:0;padding:10px 12px;border:1px solid #d2dee6;border-radius:8px;background:#fff;color:#173a52;font-size:14px;outline:none;}
.auth-card .auth-signin input:focus-visible {border-color:#1768a8;box-shadow:0 0 0 3px rgba(23,104,168,.13);}
.auth-card .auth-password-field {display:block;position:relative;}
.auth-card .auth-password-field input {padding-right:95px;}
.auth-card .auth-password-field .eye {position:absolute;right:6px;top:50%;transform:translateY(-50%);margin:0;min-width:0;height:32px;padding:0 13px;border:1px solid #cbddea;border-radius:7px;background:#e3ecf4;color:#184365;font-size:12px;font-weight:700;cursor:pointer;}
.auth-card .auth-password-field .eye:hover {background:#d0e0ed;}
.auth-card .auth-signin .primary {display:block;width:100%;height:44px;margin-top:19px;padding:10px;border:0;border-radius:8px;background:#1768a8;color:#fff;font-size:14px;font-weight:700;cursor:pointer;}
.auth-card .auth-signin .primary:not(:disabled):hover {background:#124c80;}
.auth-card .auth-signin .primary:disabled {background:#a9bdcd;color:#fff;opacity:.85;cursor:not-allowed;}
.auth-card .auth-signin .message {min-height:0;margin:12px 0 0;padding:10px 12px;border:1px solid #e4b1b1;border-radius:8px;background:#fff0f0;color:#842323;font-size:13px;line-height:1.4;}
.auth-card .auth-signin .message:empty {display:none;}
.auth-card .auth-foot {margin:20px 0 0;color:#6c8499;font-size:11px;line-height:1.5;}
.auth-card .auth-version {margin:6px 0 0;color:#8a9aa6;font-size:11px;}
.auth-card .two-factor-intro span {color:#184365;font-weight:700;overflow-wrap:anywhere;}
.auth-card .security-code-input {font-size:23px!important;text-align:center;letter-spacing:.28em;font-variant-numeric:tabular-nums;}
.auth-card .security-note {margin:9px 0 0;min-height:18px;color:#526f83;font-size:12px;text-align:center;font-variant-numeric:tabular-nums;}
.auth-card .two-factor-actions {display:flex;align-items:center;gap:10px;justify-content:space-between;margin-top:14px;}
.auth-card .two-factor-secondary {flex:1;min-height:40px;border:1px solid #cbddea;border-radius:8px;background:#e3ecf4;color:#184365;font-size:12px;font-weight:700;cursor:pointer;padding:8px 11px;}
.auth-card .two-factor-secondary:not(:disabled):hover {background:#d0e0ed;}
.auth-card .two-factor-secondary:disabled {opacity:.65;cursor:not-allowed;}
.auth-card .link-button {padding:8px 2px;border:0;background:transparent;color:#1768a8;font-size:12px;white-space:nowrap;cursor:pointer;text-decoration:underline;text-underline-offset:3px;}
.auth-card .link-button:hover {color:#124c80;}
.auth-card button:focus-visible {outline:3px solid rgba(23,104,168,.3);outline-offset:2px;}
@media(max-width:520px) {
  .page:has(> #loginView:not(.hidden)),
  .page:has(> #twoFactorView:not(.hidden)) {padding:15px;}
  .page > .login-card.auth-card {padding:26px 19px;}
  .auth-card h1 {font-size:25px;}
  .auth-card .auth-subtitle {font-size:14px;margin-bottom:22px;}
  .auth-card .auth-signin {padding:17px;}
  .auth-card .two-factor-actions {flex-direction:column;align-items:stretch;}
  .auth-card .two-factor-secondary,.auth-card .link-button {width:100%;}
}

/* v1.0.11 · Adaptación móvil/tablet. Solo presentación, sin cambios de flujos. */
html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body { max-width:100%; overflow-x:hidden; }
.page, .portal-shell, .portal-content, .module-section, .auth-card { min-width:0; }
.portal-shell { max-width:100%; }
.portal-content > *, .portal-header > *, .welcome-card > *,
.section-heading > *, .history-heading > *, .request-module-grid > *,
.material-picker-grid > *, .material-request-columns > * { min-width:0; }
@media (max-width:900px) {
  .page { padding:clamp(12px,2vw,22px); }
  .portal-shell { width:100%; }
  .portal-content { padding:clamp(14px,2.5vw,22px); }
  .portal-header { gap:12px; }
  .auth-card { max-width:510px; }
  .section-heading, .history-heading, .team-heading { flex-wrap:wrap; }
  .request-form input, .request-form select, .request-form textarea,
  .phone-update-form input, .password-change-form input { min-width:0; max-width:100%; }
}
@media (max-width:600px) {
  .page { min-height:100vh; min-height:100dvh; padding:12px max(12px,env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left)); }
  .page:has(> #loginView:not(.hidden)), .page:has(> #twoFactorView:not(.hidden)) { display:flex; align-items:center; justify-content:center; padding:14px max(12px,env(safe-area-inset-right)) calc(14px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left)); }
  .page > .login-card.auth-card { width:100%; max-width:440px; margin:0; padding:clamp(18px,5vw,26px); border-radius:16px; }
  .auth-card .auth-emblem { width:clamp(64px,21vw,84px); height:clamp(64px,21vw,84px); }
  .auth-card .auth-eyebrow { font-size:9px; line-height:1.5; letter-spacing:.09em; margin-top:10px; }
  .auth-card h1 { font-size:clamp(21px,6.5vw,27px); overflow-wrap:anywhere; }
  .auth-card .auth-subtitle { font-size:13px; line-height:1.4; margin:7px 0 18px; }
  .auth-card .auth-signin { padding:clamp(13px,4vw,20px); }
  .auth-card .auth-signin input { font-size:16px; min-height:46px; }
  .auth-card .auth-signin .primary, .auth-card .two-factor-secondary { min-height:46px; }
  .auth-card .auth-password-field .eye { min-height:36px; padding:0 14px; }
  .auth-card .auth-foot { margin-top:14px; }
  .portal-shell { border-radius:14px; }
  .portal-header { padding:12px 13px; min-height:70px; align-items:center; }
  .header-brand { min-width:0; gap:9px; }
  .header-brand > div { min-width:0; }
  .header-logo { width:42px; height:42px; padding:3px; border-radius:9px; flex:none; }
  .header-eyebrow { font-size:9px; letter-spacing:.04em; line-height:1.25; overflow-wrap:anywhere; }
  .portal-header h1 { font-size:clamp(15px,4.5vw,19px); line-height:1.2; overflow-wrap:anywhere; }
  .logout { min-height:44px; padding:7px 9px; flex:0 0 auto; font-size:11px; }
  .portal-content { padding:12px; }
  .welcome-card, .current-service, .team-block { padding:14px; }
  .welcome-card { grid-template-columns:minmax(0,1fr); }
  .welcome-card h2 { font-size:clamp(19px,6vw,25px); overflow-wrap:anywhere; }
  .identity-row { gap:6px; }
  .identity-badge,.ppc-badge,.cargo-badge { min-height:32px; padding:6px 9px; font-size:12px; }
  .portal-nav,.request-module-grid { grid-template-columns:minmax(0,1fr); gap:9px; }
  .nav-card,.request-module-card { min-width:0; min-height:62px; }
  .section-heading h3 { font-size:clamp(19px,5.5vw,23px); }
  .section-heading .secondary,.history-heading .secondary { min-height:44px; }
  .team-person, .history-card, .material-request-card, .my-request-card { max-width:100%; }
  .service-time-line { flex-wrap:wrap; }
  .filter-buttons { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .filter-btn { min-height:42px; white-space:normal; }
  .enumlist-toggle { min-height:46px; }
  .enumlist-panel { left:max(10px,env(safe-area-inset-left)); right:max(10px,env(safe-area-inset-right)); bottom:calc(10px + env(safe-area-inset-bottom)); max-height:min(70dvh,520px); }
  .enumlist-options { max-height:calc(min(70dvh,520px) - 75px); }
  .signature-dialog { max-height:calc(95dvh - env(safe-area-inset-bottom)); overscroll-behavior:contain; }
  .signature-actions button { min-height:44px; }
  input[type="text"],input[type="search"],input[type="password"],input[type="number"],input[type="email"],input[type="tel"],input[type="date"],input[type="time"],select,textarea { font-size:16px; }
}
@media (max-width:380px) {
  .portal-header { gap:6px; }
  .header-logo { width:36px; height:36px; }
  .header-eyebrow { font-size:8px; }
  .portal-header h1 { font-size:15px; }
  .logout { padding:5px 7px; font-size:10px; }
  .portal-content { padding:10px; }
  .current-service,.team-block,.welcome-card { padding:11px; }
  .auth-card .auth-signin { padding:12px; }
  .auth-card .security-code-input { font-size:20px!important; letter-spacing:.17em; }
  .filter-buttons { grid-template-columns:minmax(0,1fr); }
  .history-data { gap:5px; }
}
@media (max-width:900px) and (orientation:landscape) and (max-height:500px) {
  .page:has(> #loginView:not(.hidden)), .page:has(> #twoFactorView:not(.hidden)) { align-items:flex-start; }
  .auth-card .auth-emblem { width:52px; height:52px; }
  .auth-card .auth-subtitle { margin-bottom:12px; }
}

/* v1.0.12: Mi grupo — exclusivo de Jefe/a de Grupo (autorización en servidor). */
.my-group-content{display:grid;gap:18px;min-width:0}
.my-group-card{background:#fff;border:1px solid #dce7f0;border-radius:15px;padding:18px;min-width:0}
.my-group-heading h4{margin:0;color:#205574;font-size:19px;font-weight:600}
.my-group-heading p{margin:4px 0 14px;color:#617989;font-size:13px}
.my-group-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.my-group-stat{background:#f4f8fb;border:1px solid #d9e6ee;border-radius:11px;padding:12px;display:flex;flex-direction:column;gap:6px;min-width:0}
.my-group-stat span{font-size:12px;color:#516878}
.my-group-stat strong{font-size:24px;color:#204a67;font-weight:700}
.my-group-stat.valid{background:#eef8f2;border-color:#c5e5d1}
.my-group-stat.valid strong{color:#19633d}
.my-group-stat.expired{background:#fff0f0;border-color:#f4caca}
.my-group-stat.expired strong{color:#b32625}
.my-group-stat.undated{background:#fff7ed;border-color:#f4dbb9}
.my-group-stat.undated strong{color:#865713}
.my-group-note{color:#667f8e;font-size:12px;line-height:1.5;margin:12px 0}
.my-group-list{display:grid;gap:10px}
.my-group-person{border:1px solid #dbe8ee;background:#fbfdfe;border-radius:12px;padding:12px 14px;min-width:0}
.my-group-person.caducada{background:#fff6f6;border-color:#eab3b3;border-left:4px solid #d44040}
.my-group-person.sin_fecha{background:#fffaf2;border-color:#efd5a7}
.my-group-person-heading{display:flex;justify-content:space-between;gap:12px;align-items:center}
.my-group-person-heading>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.my-group-person-heading strong{color:#23495e;font-weight:600;font-size:14px;overflow-wrap:anywhere}
.my-group-person-heading small{color:#607d8d;font-size:12px}
.my-group-state{font-size:12px;border-radius:999px;background:#e6f5ec;color:#19633d;padding:5px 9px;flex-shrink:0}
.my-group-state.caducada{background:#fce1e1;color:#a52222}
.my-group-state.sin_fecha{background:#ffeed0;color:#82540a}
.my-group-titles{display:grid;gap:5px;margin-top:12px}
.my-group-qualification{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 10px;color:#3d596b;font-size:12px}
.my-group-qualification small{font-size:12px;color:#1d7048}
.my-group-qualification.caducada small{color:#bb2b2b}
.my-group-qualification.sin_fecha small{color:#895c17}
@media(max-width:720px){.my-group-card{padding:13px}.my-group-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.my-group-stat{padding:10px}.my-group-stat strong{font-size:20px}}
@media(max-width:360px){.my-group-person-heading{align-items:flex-start;flex-direction:column}.my-group-summary{gap:7px}}

/* Cinco contadores: agrupación automática en tabletas y móviles. */
.my-group-summary{grid-template-columns:repeat(auto-fit,minmax(125px,1fr))}
.my-group-stat.missing{background:#edf2f6;border-color:#d5e0e7}
.my-group-stat.missing strong{color:#526c7e}
.my-group-person.sin_titulacion{background:#f7f9fb;border-color:#dce4ec}
.my-group-state.sin_titulacion{background:#e5ebf0;color:#52677a}
.my-group-no-qualification{margin:0;color:#597081;font-size:12px}
@media(max-width:720px){.my-group-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* v1.0.14 · Mi grupo: cuadro de mando adaptable a móviles */
#myGroupSection .my-group-content{display:grid;gap:24px}
#myGroupSection .mg-dashboard{padding:0;border-radius:22px;overflow:hidden;background:#fff;border:1px solid #d6e3ed;box-shadow:0 12px 35px rgba(27,65,95,.07)}
#myGroupSection .mg-hero{display:flex;align-items:center;gap:18px;padding:26px 28px;background:linear-gradient(120deg,#124c78 0%,#176da2 64%,#2290b4 100%);color:#fff}
#myGroupSection .mg-hero-emblem{display:grid;place-items:center;font-size:38px;width:65px;height:65px;flex:none;border-radius:18px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25)}
#myGroupSection .mg-hero-copy{flex:1;min-width:0}#myGroupSection .mg-hero h4{font-size:24px;line-height:1.2;color:#fff;margin:4px 0 5px;font-weight:750}
#myGroupSection .mg-eyebrow{letter-spacing:.13em;font-weight:700;font-size:10px;color:#d4ecff}
#myGroupSection .mg-hero p{color:#e5f4fb;font-size:13px;margin:0;line-height:1.45}
#myGroupSection .mg-hero-count{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 15px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.1);border-radius:15px;font-size:23px;font-weight:800;white-space:nowrap}
#myGroupSection .mg-hero-count small{font-size:10px;font-weight:500}
#myGroupSection .mg-main-stats,#myGroupSection .mg-insight-grid,#myGroupSection .mg-epi-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:20px 25px}
#myGroupSection .mg-epi-summary{grid-template-columns:repeat(3,minmax(0,1fr));padding:0 0 19px}
#myGroupSection .mg-insight-grid{padding:12px 0 18px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
#myGroupSection .mg-stat{display:grid;grid-template-columns:auto 1fr;grid-template-rows:1fr auto;column-gap:10px;align-items:center;border:1px solid #deebf4;border-radius:15px;padding:14px;background:#f7fafe;min-width:0}
#myGroupSection .mg-stat-icon{grid-row:1/3;display:grid;place-items:center;width:37px;height:37px;border-radius:12px;background:#e7f2fc;color:#2574a1;font-size:23px}
#myGroupSection .mg-stat strong{font-size:25px;line-height:1.1;color:#234b69;font-weight:750}
#myGroupSection .mg-stat small{color:#5b7587;font-size:11px;line-height:1.3;overflow-wrap:anywhere}
#myGroupSection .mg-stat-valid{background:#f2fbf5;border-color:#d0e9d6}#myGroupSection .mg-stat-valid .mg-stat-icon{color:#23804d;background:#dcf2e4}
#myGroupSection .mg-stat-danger{background:#fff6f5;border-color:#f1d8d6}#myGroupSection .mg-stat-danger .mg-stat-icon{color:#ae3232;background:#fce4e2}
#myGroupSection .mg-stat-warning{background:#fff9ef;border-color:#f2e2c6}#myGroupSection .mg-stat-warning .mg-stat-icon{color:#ac701e;background:#fff0d2}
#myGroupSection .mg-tabs{display:flex;align-items:center;gap:8px;padding:10px 25px 0;border-bottom:1px solid #e3ebf2;overflow-x:auto;scrollbar-width:thin}
#myGroupSection .mg-tabs button{white-space:nowrap;border:0;border-bottom:3px solid transparent;border-radius:10px 10px 0 0;padding:12px 15px;background:transparent;color:#58778b;font-size:13px;font-weight:650;cursor:pointer}
#myGroupSection .mg-tabs button:hover{color:#1768a8;background:#f5f9fc}
#myGroupSection .mg-tabs button.is-active{background:#f0f7fe;border-bottom-color:#1768a8;color:#105789}
#myGroupSection .mg-tabs button:focus-visible,#myGroupSection .mg-search:focus-visible{outline:2px solid #1768a8;outline-offset:2px}
#myGroupSection .mg-pane{padding:24px 25px 28px;min-width:0}#myGroupSection .mg-pane.hidden{display:none!important}
#myGroupSection .mg-pane h5{font-size:17px;color:#174a6d;margin:0 0 6px}#myGroupSection .mg-section-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px}
#myGroupSection .mg-section-top p{font-size:12px;color:#6b8395;margin:0;line-height:1.55}
#myGroupSection .mg-search-label{min-width:180px;max-width:255px;width:35%}#myGroupSection .mg-search{min-height:43px;width:100%;border-radius:12px;padding:10px 13px;background:#f7fafc;border:1px solid #d4e1ed;color:#264a60;font:inherit;font-size:13px}
#myGroupSection .mg-person-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
#myGroupSection .mg-person{min-width:0;border-radius:15px;padding:15px;background:#fff;border:1px solid #e0e8ef;box-shadow:0 3px 9px rgba(27,65,95,.035)}
#myGroupSection .mg-person-caducada{border-color:#f0bcb9;background:#fff8f7}#myGroupSection .mg-person-sin_fecha{border-color:#ead7af;background:#fffcf6}
#myGroupSection .mg-person-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#myGroupSection .mg-avatar{display:grid;place-items:center;flex:none;width:38px;height:38px;border-radius:50%;background:#e9f2f9;color:#185f8e;font-weight:750;font-size:17px}
#myGroupSection .mg-person-identity{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}#myGroupSection .mg-person-identity strong{font-size:13px;color:#203f58;line-height:1.4;overflow-wrap:anywhere;font-weight:650}
#myGroupSection .mg-person-identity small{font-size:11px;color:#718798}
#myGroupSection .mg-status{border-radius:100px;font-size:10px;font-weight:700;line-height:1.2;padding:5px 8px;white-space:nowrap;color:#1b7145;background:#e5f5ec}
#myGroupSection .mg-status-caducada{color:#a63a32;background:#fce6e2}#myGroupSection .mg-status-sin_fecha,#myGroupSection .mg-status-sin_titulacion{color:#9a6614;background:#fff1d8}
#myGroupSection .mg-title-list{display:grid;gap:8px;margin-top:13px}
#myGroupSection .mg-title-pill{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid #dce8f0;background:#f7fafd;border-radius:10px;font-size:11px;color:#526d81}
#myGroupSection .mg-title-pill span{overflow-wrap:anywhere}#myGroupSection .mg-title-pill b{flex:none;font-size:10px;color:#237750}
#myGroupSection .mg-title-caducada{border-color:#f2cfcd;background:#fff4f3}#myGroupSection .mg-title-caducada b{color:#b3352e}
#myGroupSection .mg-title-sin_fecha{border-color:#eadbbf;background:#fffaf0}#myGroupSection .mg-title-sin_fecha b{color:#9a6919}
#myGroupSection .mg-title-acreditada{border-color:#c4e3d1;background:#f3fbf5}
#myGroupSection .mg-epi-items{display:grid;gap:7px;list-style:none;padding:0;margin:13px 0 0}#myGroupSection .mg-epi-items li{display:flex;align-items:center;justify-content:space-between;gap:12px;border-radius:10px;padding:9px 10px;background:#f4f9fc;color:#486b82;font-size:12px}
#myGroupSection .mg-epi-items li strong{font-size:11px;color:#205476;white-space:nowrap}
#myGroupSection .mg-epi-missing{border-radius:13px;padding:15px;margin-top:20px;background:#fffbf2;border:1px solid #efe2c8}#myGroupSection .mg-epi-missing h5{font-size:13px;margin-bottom:11px;color:#7c5c27}
#myGroupSection .mg-chips{display:flex;gap:7px;flex-wrap:wrap}#myGroupSection .mg-chips span{border:1px solid #e6d7b8;background:#fff;color:#8a6835;border-radius:999px;font-size:11px;padding:6px 9px}
#myGroupSection .mg-info{border-left:3px solid #237db1;padding:12px 14px;background:#f1f7fb;color:#577083;line-height:1.55;font-size:12px;border-radius:0 10px 10px 0}
#myGroupSection .mg-empty,#myGroupSection .mg-no-search{grid-column:1/-1;color:#607c8e;padding:18px;text-align:center;background:#f7fafc;border-radius:12px;font-size:13px}
#myGroupSection .mg-person.hidden,#myGroupSection .mg-no-search.hidden{display:none!important}
#formationSection .formation-expiry-accredited{border-color:#b9dfcb;background:#f4fbf7}
#formationSection .formation-expiry-badge.accredited{background:#e1f2e9;color:#1a7648}
@media(max-width:900px){#myGroupSection .mg-main-stats{grid-template-columns:repeat(2,minmax(0,1fr))}#myGroupSection .mg-person-grid{grid-template-columns:1fr}}
@media(max-width:590px){#myGroupSection .mg-dashboard{border-radius:16px}#myGroupSection .mg-hero{gap:11px;padding:18px 15px}#myGroupSection .mg-hero-emblem{width:43px;height:43px;font-size:28px;border-radius:12px}#myGroupSection .mg-hero h4{font-size:19px}#myGroupSection .mg-hero-count{font-size:16px;padding:7px}#myGroupSection .mg-main-stats{gap:8px;padding:13px}#myGroupSection .mg-stat{padding:10px;column-gap:7px}#myGroupSection .mg-stat-icon{width:29px;height:29px;font-size:17px}#myGroupSection .mg-stat strong{font-size:21px}#myGroupSection .mg-stat small{font-size:10px}#myGroupSection .mg-tabs{padding-left:12px;padding-right:12px}#myGroupSection .mg-pane{padding:17px 13px}#myGroupSection .mg-section-top{flex-direction:column}#myGroupSection .mg-search-label{max-width:none;min-width:0;width:100%}#myGroupSection .mg-epi-summary{grid-template-columns:repeat(2,minmax(0,1fr))}#myGroupSection .mg-epi-summary .mg-stat:last-child{grid-column:1/-1}}
@media(max-width:355px){#myGroupSection .mg-hero-count{display:none}#myGroupSection .mg-title-pill{align-items:flex-start;flex-direction:column}#myGroupSection .mg-person-head{align-items:flex-start}}
#myGroupSection .sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* v1.0.15 · Expediente formativo organizado por caducidad */
#formationSection .formation-category-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:20px 0 11px;padding-top:15px;border-top:1px solid #e4edf3}
#formationSection .formation-category-heading>div{display:flex;align-items:center;gap:10px;min-width:0}
#formationSection .formation-category-heading h5{font-size:14px;font-weight:800;line-height:1.3;color:#204966;margin:0;overflow-wrap:anywhere}
#formationSection .formation-category-icon{display:inline-flex;align-items:center;justify-content:center;width:31px;height:31px;flex-shrink:0;border-radius:10px;background:#eaf4fb;color:#146ba7;font-weight:800;font-size:17px}
#formationSection .formation-category-heading+.formation-expiry-help{margin-top:0;margin-bottom:12px}
@media(max-width:480px){#formationSection .formation-category-heading h5{font-size:13px}}

/* v1.0.3 · Código de acceso alfanumérico, 6 caracteres */
.auth-card .security-code-input {text-transform:uppercase;}
