.portal-contract-list{display:grid;gap:14px}.portal-contract-item{border:1px solid rgba(14,42,70,.13);border-radius:16px;padding:18px;background:rgba(255,255,255,.92)}.portal-contract-item-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.portal-contract-item h4{margin:0 0 5px}.portal-contract-number{display:inline-flex;padding:6px 10px;border-radius:999px;background:#0b2845;color:#fff;font-size:.8rem;font-weight:800}.portal-contract-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.portal-contract-upload{margin-top:15px;padding-top:15px;border-top:1px solid rgba(14,42,70,.1);display:grid;gap:9px}.portal-contract-readonly{margin-top:13px;padding:12px;border-radius:12px;background:rgba(32,133,82,.09);color:#17683f;font-weight:700}.contract-access-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(145deg,#eef3f7,#fff)}.contract-access-card{width:min(620px,100%);background:#fff;border:1px solid rgba(14,42,70,.14);border-radius:22px;padding:30px;box-shadow:0 24px 70px rgba(11,40,69,.14)}.contract-access-logo{display:block;max-width:170px;height:auto;margin:0 auto 24px}.contract-access-kicker{display:block;text-transform:uppercase;letter-spacing:.12em;font-size:.75rem;font-weight:800;color:#a07131}.contract-access-card h1{margin:7px 0 12px}.contract-access-form{display:grid;gap:13px;margin-top:20px;padding-top:20px;border-top:1px solid rgba(14,42,70,.12)}.contract-access-form label{display:grid;gap:7px;font-weight:700}.contract-access-actions{margin-top:18px}.contract-access-expiry{margin-top:18px;color:#64748b;font-size:.85rem}.contract-access-success{text-align:center}@media(max-width:640px){.portal-contract-item-head{flex-direction:column}.contract-access-card{padding:22px}}
/* Enlace temporal de entrega contractual */
.contract-access-intro{
    margin:0;
    color:#4f6072;
    font-size:1rem;
    line-height:1.65;
}
.contract-access-pdf-mark{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:46px;
    margin-left:3px;
    padding:3px 9px;
    border:1px solid rgba(145,93,25,.28);
    border-radius:999px;
    background:linear-gradient(180deg,#fffaf0,#f8ecd5);
    color:#815313;
    font-size:.82rem;
    font-weight:850;
    letter-spacing:.06em;
    vertical-align:baseline;
}
.contract-access-actions{
    margin-top:22px;
}
.contract-access-download{
    display:flex;
    align-items:center;
    gap:14px;
    width:100%;
    padding:15px 17px;
    border:1px solid rgba(11,40,69,.14);
    border-radius:16px;
    background:linear-gradient(180deg,#ffffff,#f6f9fc);
    color:#0b2845;
    box-shadow:0 10px 26px rgba(11,40,69,.08);
    transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.contract-access-download:hover{
    transform:translateY(-1px);
    border-color:rgba(145,93,25,.38);
    background:#fff;
    box-shadow:0 14px 32px rgba(11,40,69,.12);
}
.contract-access-download:focus-visible{
    outline:3px solid rgba(184,132,53,.25);
    outline-offset:3px;
}
.contract-access-download-icon{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 44px;
    width:44px;
    height:44px;
    border-radius:13px;
    background:#0b2845;
    color:#fff;
}
.contract-access-download-icon svg{
    width:23px;
    height:23px;
    fill:none;
    stroke:currentColor;
    stroke-width:1.8;
    stroke-linecap:round;
    stroke-linejoin:round;
}
.contract-access-download-copy{
    display:grid;
    gap:2px;
    min-width:0;
    text-align:left;
}
.contract-access-download-copy strong{
    font-size:.97rem;
    font-weight:820;
}
.contract-access-download-copy small{
    color:#718096;
    font-size:.78rem;
    font-weight:600;
}
.contract-access-download-arrow{
    margin-left:auto;
    color:#9b681f;
    font-size:1.35rem;
    line-height:1;
    transition:transform .18s ease;
}
.contract-access-download:hover .contract-access-download-arrow{
    transform:translateX(3px);
}
.contract-access-form{
    display:grid;
    gap:14px;
    margin-top:22px;
    padding-top:22px;
    border-top:1px solid rgba(14,42,70,.12);
}
.contract-access-upload-field{
    display:grid;
    gap:9px;
}
.contract-access-upload-title{
    color:#0b2845;
    font-size:.92rem;
    font-weight:800;
}
.contract-access-upload-title strong{
    color:#8d5a16;
    letter-spacing:.035em;
}
.contract-access-dropzone{
    position:relative;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    min-height:184px;
    padding:24px 20px;
    border:1.5px dashed #bcc9d7;
    border-radius:17px;
    background:linear-gradient(180deg,rgba(249,251,253,.96),rgba(244,248,251,.9));
    color:#657489;
    text-align:center;
    cursor:pointer;
    transition:border-color .18s ease,background .18s ease,box-shadow .18s ease,transform .18s ease;
}
.contract-access-dropzone:hover,
.contract-access-dropzone.is-dragover{
    border-color:#a97528;
    background:#fffaf2;
    box-shadow:0 10px 28px rgba(11,40,69,.08);
}
.contract-access-dropzone.is-dragover{
    transform:translateY(-1px);
}
.contract-access-dropzone.has-file{
    border-style:solid;
    border-color:rgba(39,112,73,.42);
    background:#f4fbf7;
}
.contract-access-dropzone.is-invalid{
    border-color:#b42318;
    background:#fff8f7;
}
.contract-access-dropzone input[type="file"]{
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip:rect(0,0,0,0);
    white-space:nowrap;
    border:0;
}
.contract-access-dropzone-icon{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:43px;
    height:43px;
    margin-bottom:11px;
    border-radius:50%;
    background:#eaf0f6;
    color:#0b2845;
}
.contract-access-dropzone-icon svg{
    width:22px;
    height:22px;
    fill:none;
    stroke:currentColor;
    stroke-width:1.9;
    stroke-linecap:round;
    stroke-linejoin:round;
}
.contract-access-dropzone>strong{
    color:#0b2845;
    font-size:.93rem;
    font-weight:820;
}
.contract-access-dropzone>span:not(.contract-access-dropzone-icon):not(.contract-access-file-state){
    margin-top:4px;
    font-size:.8rem;
}
.contract-access-dropzone b{
    color:#946012;
}
.contract-access-dropzone small{
    margin-top:7px;
    color:#7d8998;
    font-size:.72rem;
}
.contract-access-file-state{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    max-width:100%;
    margin-top:12px;
    padding:6px 10px;
    border-radius:999px;
    background:#e8eef5;
    color:#33445a;
    font-size:.72rem;
    font-weight:750;
    overflow-wrap:anywhere;
}
.contract-access-dropzone.has-file .contract-access-file-state{
    background:#dcefe3;
    color:#1e603c;
}
.contract-access-file-error{
    margin:0;
    color:#b42318;
    font-size:.79rem;
    font-weight:750;
}
.contract-access-file-error[hidden]{
    display:none;
}
.contract-access-submit{
    --upload-progress:0%;
    position:relative;
    isolation:isolate;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    justify-self:center;
    min-width:238px;
    min-height:48px;
    padding:12px 20px;
    overflow:hidden;
    border:1px solid #0b2845;
    border-radius:14px;
    background:linear-gradient(180deg,#173b5d,#0b2845);
    color:#fff;
    box-shadow:0 9px 22px rgba(11,40,69,.18);
    cursor:pointer;
    font-weight:820;
    transition:transform .18s ease,box-shadow .18s ease,opacity .18s ease;
}
.contract-access-submit:hover:not(:disabled){
    transform:translateY(-1px);
    box-shadow:0 12px 27px rgba(11,40,69,.24);
}
.contract-access-submit:focus-visible{
    outline:3px solid rgba(184,132,53,.28);
    outline-offset:3px;
}
.contract-access-submit:disabled{
    cursor:not-allowed;
    opacity:.52;
    box-shadow:none;
}
.contract-access-submit.is-uploading:disabled{
    cursor:wait;
    opacity:1;
    box-shadow:0 9px 22px rgba(11,40,69,.18);
}
.contract-access-submit-progress{
    position:absolute;
    z-index:-1;
    inset:0 auto 0 0;
    width:var(--upload-progress);
    background:linear-gradient(90deg,#98651f,#c4984e);
    transition:width .15s linear;
}
.contract-access-submit.is-uploading{
    border-color:#815313;
    background:#173b5d;
}
.contract-access-submit-label{
    position:relative;
    z-index:1;
    font-variant-numeric:tabular-nums;
}
.contract-access-success-message{
    display:grid;
    gap:5px;
    margin:0 0 18px;
    color:#4f6072;
    line-height:1.55;
}
.contract-access-success-message span{
    display:block;
}
.contract-access-card.is-completing{
    opacity:.72;
    transform:scale(.995);
    transition:opacity .2s ease,transform .2s ease;
}
@media(max-width:640px){
    .contract-access-download{
        padding:13px;
    }
    .contract-access-download-icon{
        flex-basis:40px;
        width:40px;
        height:40px;
    }
    .contract-access-dropzone{
        min-height:168px;
        padding:21px 14px;
    }
    .contract-access-submit{
        justify-self:stretch;
        width:100%;
        min-width:0;
    }
}
@media(prefers-reduced-motion:reduce){
    .contract-access-download,
    .contract-access-download-arrow,
    .contract-access-dropzone,
    .contract-access-submit,
    .contract-access-submit-progress,
    .contract-access-card{
        transition:none!important;
    }
}
