@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600;700;800&family=Open+Sans:wght@400;500;600;700&display=swap');
:root{--rojo:#c41230;--rojo2:#a90f29;--naranja:#f15a24;--amarillo:#f9a400;--oscuro:#303039;--gris:#6c6c75;--fondo:#f8f8f8}
*{box-sizing:border-box}body{margin:0;background:var(--fondo);color:var(--oscuro);font-family:'Open Sans',Arial,sans-serif}.top{background:#fff;border-bottom:1px solid #eee}.top-inner{max-width:1220px;margin:auto;padding:14px 22px;display:flex;align-items:center;justify-content:space-between;gap:20px}.top .logo{display:block!important;width:auto!important;height:64px!important;max-width:245px!important;max-height:64px!important;object-fit:contain!important}.top-links{display:flex;gap:10px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 17px;border:0;border-radius:8px;text-decoration:none;cursor:pointer;font-weight:700}.primary{background:var(--rojo);color:#fff}.orange{background:var(--naranja);color:#fff}.dark{background:#333;color:#fff}.outline{border:1px solid #ddd;color:#333;background:#fff}.hero{position:relative;overflow:hidden;background:linear-gradient(120deg,#8f0c24 0%,#c41230 55%,#f15a24 100%);color:#fff;padding:62px 22px 86px}.hero:after{content:'';position:absolute;left:-5%;right:-5%;bottom:-42px;height:90px;background:#fff;border-radius:50% 50% 0 0/70% 70% 0 0}.hero-inner{max-width:1220px;margin:auto}.eyebrow{font-weight:800;letter-spacing:2px;text-transform:uppercase}.hero h1{font:800 clamp(34px,5vw,60px) Montserrat;margin:12px 0}.hero p{max-width:760px;font-size:18px;line-height:1.65}.container{max-width:1220px;margin:auto;padding:30px 22px}.search{background:#fff;padding:20px;border-radius:16px;box-shadow:0 10px 35px #00000010;margin-top:-35px;position:relative;z-index:2}.row{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.field{margin-bottom:15px}label{display:block;font-weight:700;margin-bottom:7px}input,select,textarea{width:100%;padding:12px;border:1px solid #ddd;border-radius:8px;font:inherit}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}.card{background:#fff;border-radius:16px;padding:23px;border:1px solid #eee;box-shadow:0 7px 25px #0000000b}.card h2,.card h3{font-family:Montserrat}.badge{display:inline-block;padding:6px 10px;border-radius:20px;background:#e9f8ee;color:#16703d;font-size:12px;font-weight:800}.muted{color:var(--gris)}.price{font-size:23px;font-weight:800;color:var(--rojo)}.timeline{position:relative;margin:25px 0}.step{display:grid;grid-template-columns:55px 1fr;gap:15px;padding:0 0 25px}.dot{width:38px;height:38px;border-radius:50%;background:var(--rojo);color:#fff;display:grid;place-items:center;font-weight:800;position:relative}.step:not(:last-child) .dot:after{content:'';position:absolute;top:38px;width:2px;height:55px;background:#e7a0ad}.step h4{margin:2px 0 5px;font-family:Montserrat}.docs{display:flex;flex-wrap:wrap;gap:10px}.panel{max-width:1200px;margin:auto}.statgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat{background:#fff;border-radius:15px;padding:22px;border-top:4px solid var(--rojo);box-shadow:0 6px 20px #0000000a}.stat strong{font-size:34px;font-family:Montserrat}.tablewrap{overflow:auto;background:#fff;border-radius:12px}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:13px;border-bottom:1px solid #eee;text-align:left;vertical-align:top}.formbox{background:#fff;padding:28px;border-radius:16px;box-shadow:0 8px 25px #0000000b}.notice{padding:13px 16px;border-radius:9px;background:#fff4cf;margin-bottom:18px}.danger{background:#fde8ec}.section-title{font-family:Montserrat;font-weight:800}.footer{background:#2e2e36;color:#fff;margin-top:50px;padding:30px 22px}.footer-inner{max-width:1220px;margin:auto;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}.small{font-size:13px}@media(max-width:800px){.row,.statgrid{grid-template-columns:1fr 1fr}.top .logo{height:58px!important;max-height:58px!important;max-width:210px!important}}@media(max-width:560px){.row,.statgrid{grid-template-columns:1fr}.top-inner{align-items:flex-start;flex-direction:column}.hero{padding-top:45px}}

.top-inner{min-height:82px}
.top-inner img{flex:0 0 auto}
@media(max-width:560px){
  .top-inner{min-height:72px;padding:10px 16px}
  .top .logo{height:52px!important;max-height:52px!important;max-width:190px!important}
  .top-links{width:100%}
  .top-links .btn{width:100%}
}

/* V2.3 - logo isolation and responsive safeguards */
header.top, header.top *{box-sizing:border-box}
header.top .logo{width:220px!important;height:auto!important;max-width:220px!important;max-height:70px!important}
header.top a{border-bottom:0!important}
img{max-width:100%}
@media(max-width:600px){
 header.top .logo{width:185px!important;max-width:185px!important;max-height:60px!important}
 .container{padding-left:16px!important;padding-right:16px!important}
 .hero-inner{padding:0!important}
 .hero p{font-size:15px}
 .card{padding:18px}
}

.documents-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:14px}.section-kicker{display:block;color:var(--rojo);font:800 11px Montserrat;letter-spacing:1.4px;margin-bottom:5px}.documents-heading .section-title{margin:0 0 5px;font-size:25px}.documents-heading p{margin:0;font-size:14px}.documents-count{display:inline-flex;align-items:center;justify-content:center;padding:7px 12px;border-radius:999px;background:#fff1f3;color:var(--rojo);font:800 12px Montserrat;white-space:nowrap}.documents-panel{background:#fff;border:1px solid #e8e8e8;border-radius:18px;overflow:hidden;box-shadow:0 8px 28px #00000009}.document-card{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:22px 24px;border-bottom:1px solid #eee}.document-card:last-child{border-bottom:0}.document-main{display:flex;align-items:center;gap:17px;min-width:0;flex:1}.document-icon{width:48px;height:54px;flex:0 0 48px;border-radius:11px;background:#fff1f3;border:1px solid #f3c4cc;color:var(--rojo);display:grid;place-items:center;position:relative}.document-icon:before{content:'';position:absolute;top:0;right:0;border-style:solid;border-width:0 12px 12px 0;border-color:transparent #fff transparent transparent}.document-icon span{font:800 11px Montserrat;letter-spacing:.3px}.document-copy{min-width:0}.document-type{display:inline-block;font:800 10px Montserrat;letter-spacing:1px;text-transform:uppercase;color:#777;margin-bottom:5px}.document-copy h3{font:800 16px Montserrat;line-height:1.4;margin:0 0 4px;overflow-wrap:anywhere}.document-source{font-size:12px;color:#8a8a91}.document-actions{display:flex;gap:9px;flex:0 0 auto}.document-actions .btn{padding:10px 14px;font-size:13px;white-space:nowrap}.document-actions .btn span{font-size:14px}.documents-empty{display:flex;align-items:center;gap:16px;padding:24px}.empty-doc-icon{width:48px;height:54px;border-radius:11px;background:#f5f5f5;color:#777;display:grid;place-items:center;font:800 11px Montserrat}.documents-empty h3{margin:0 0 5px;font:800 16px Montserrat}.documents-empty p{margin:0;font-size:13px}@media(max-width:760px){.documents-heading{align-items:flex-start;flex-direction:column}.documents-count{margin-top:-5px}.document-card{align-items:flex-start;flex-direction:column;gap:17px;padding:19px}.document-actions{width:100%}.document-actions .btn{flex:1}.document-copy h3{font-size:15px}}@media(max-width:450px){.document-main{align-items:flex-start}.document-actions{display:grid;grid-template-columns:1fr}.documents-heading .section-title{font-size:22px}}
.success-notice{background:#e9f8ee;color:#166534;border:1px solid #b7e4c7}.badge-off{background:#f1f1f1;color:#666}.checkline{display:flex;align-items:center;gap:8px;margin:6px 0 18px;font-weight:600}.checkline input{width:auto}
@media(max-width:700px){.tablewrap{border-radius:10px}.table{min-width:850px}.top-links{display:flex;flex-wrap:wrap;width:100%}.top-links .btn{flex:1}.document-item .docs{width:100%}}

/* ============================================================
   ZEUS REINGENIERIA - PORTAL PUBLICO
   ============================================================ */
.portal-header{background:#fff;border-bottom:1px solid #e9e9e9;position:sticky;top:0;z-index:20;box-shadow:0 2px 12px #0000000a}
.portal-header-inner{max-width:1220px;margin:auto;padding:12px 22px;min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:22px}
.brand{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--oscuro)}
.brand img{width:150px!important;max-width:150px!important;height:54px!important;max-height:54px!important;object-fit:contain!important;display:block!important}
.brand span{border-left:1px solid #ddd;padding-left:14px;display:flex;flex-direction:column;gap:3px;font-family:Montserrat,Arial,sans-serif;font-size:13px;letter-spacing:.4px}.brand small{font-family:'Open Sans',Arial,sans-serif;font-weight:600;color:#777;font-size:12px}
.header-actions{display:flex;gap:9px;align-items:center}.header-actions .btn{padding:10px 14px;font-size:13px}
.hero-compact{padding:48px 22px 66px}.hero-compact .hero-inner{max-width:1220px}.hero-compact h1{font-size:clamp(34px,4.5vw,54px);margin:10px 0 8px}.hero-compact p{margin:0;max-width:760px;font-size:17px}.hero-pills{display:flex;flex-wrap:wrap;gap:9px;margin-top:22px}.hero-pills span{background:#ffffff1c;border:1px solid #ffffff42;border-radius:999px;padding:8px 12px;font-size:13px;font-weight:700}
.portal-main{padding-top:30px}.portal-toolbar{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:18px}.portal-toolbar h2{font-family:Montserrat;margin:0 0 5px;font-size:25px}.portal-toolbar p{margin:0}.search-inline{display:flex;gap:8px;min-width:min(470px,100%)}.search-inline input{min-width:0}.search-inline .btn{white-space:nowrap}
.year-tabs{display:flex;gap:8px;flex-wrap:wrap;padding:5px 0 20px;border-bottom:1px solid #e8e8e8}.year-tab{display:inline-flex;align-items:center;justify-content:center;padding:9px 18px;border:1px solid #ddd;border-radius:999px;background:#fff;color:#444;text-decoration:none;font-weight:800;font-family:Montserrat;font-size:13px}.year-tab:hover{border-color:#b3132b;color:#b3132b}.year-tab.active{background:var(--rojo);border-color:var(--rojo);color:#fff}
.year-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:25px 2px 16px}.year-heading>div:first-child{display:flex;align-items:baseline;gap:10px}.year-heading strong{font:800 30px Montserrat}.year-label{font-size:11px;letter-spacing:1.5px;color:#888;font-weight:800}.year-count{font-size:13px;color:#777}
.process-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.process-card{background:#fff;border:1px solid #e8e8e8;border-radius:16px;padding:21px;box-shadow:0 8px 24px #0000000a;display:flex;flex-direction:column;min-height:290px;transition:transform .15s,box-shadow .15s}.process-card:hover{transform:translateY(-2px);box-shadow:0 12px 30px #00000012}.process-top{display:flex;justify-content:space-between;gap:8px;align-items:center}.status{font-size:11px;font-weight:900;letter-spacing:.4px}.status-live{color:#147a43}.status-closed{color:#777}.process-code{font:700 12px Montserrat;color:#777;background:#f4f4f4;border-radius:6px;padding:5px 8px}.process-card h3{font:800 19px Montserrat;line-height:1.3;margin:18px 0 7px}.process-subtitle{font-size:13px;font-weight:700;color:#555;margin:0 0 8px}.process-desc{font-size:14px;color:#6c6c75;line-height:1.55;margin:4px 0 15px}.process-meta{display:flex;gap:14px;flex-wrap:wrap;color:#666;font-size:12px;border-top:1px solid #eee;padding-top:13px;margin-top:auto}.process-button{width:100%;margin-top:15px}.process-button span{font-size:18px;line-height:1}
.empty-state{text-align:center;background:#fff;border:1px dashed #d8d8d8;border-radius:16px;padding:50px 25px}.empty-icon{font-size:38px}.empty-state h3{font:800 20px Montserrat;margin:12px 0 5px}.info-strip{margin-top:25px;background:#fff7ea;border:1px solid #f2dfbd;border-radius:14px;padding:17px 20px;display:flex;justify-content:space-between;align-items:center;gap:18px}.info-strip>div{display:flex;gap:13px;align-items:flex-start}.info-strip p{margin:4px 0 0;color:#6c6c75;font-size:13px;line-height:1.45}.info-icon{font-size:22px}
@media(max-width:950px){.process-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-toolbar{align-items:stretch;flex-direction:column}.search-inline{min-width:0}.brand span{display:none}}
@media(max-width:650px){.portal-header{position:static}.portal-header-inner{padding:10px 16px;min-height:68px}.brand img{width:135px!important;max-width:135px!important;height:48px!important;max-height:48px!important}.header-actions .btn:first-child{display:none}.header-actions .btn{padding:9px 11px;font-size:12px}.hero-compact{padding:38px 16px 58px}.hero-compact p{font-size:15px}.hero-pills span{font-size:11px}.portal-main{padding:24px 16px}.process-grid{grid-template-columns:1fr}.year-heading{align-items:flex-start;flex-direction:column;padding-top:20px}.year-count{font-size:12px}.search-inline{display:grid;grid-template-columns:1fr auto}.info-strip{align-items:flex-start;flex-direction:column}.info-strip .btn{width:100%}}
.admin-title-row{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:25px}.admin-title-row h1{margin:4px 0}.admin-eyebrow{color:var(--rojo);letter-spacing:1.2px;font-size:11px}.admin-section-head{margin:35px 0 14px;display:flex;justify-content:space-between;align-items:end;gap:20px}.admin-section-head h2{font:800 23px Montserrat;margin:0 0 4px}.admin-section-head .year-tabs{border:0;padding:0}.admin-process-list{display:grid;gap:12px}.admin-process-row{background:#fff;border:1px solid #e8e8e8;border-radius:14px;padding:18px 20px;display:flex;justify-content:space-between;align-items:center;gap:20px;box-shadow:0 5px 18px #00000008}.admin-process-main{min-width:0}.admin-process-main h3{font:800 17px Montserrat;margin:10px 0 4px}.admin-process-main p{margin:0 0 8px}.admin-actions{display:flex;gap:8px;flex:0 0 auto}.admin-actions .btn{white-space:nowrap}.admin-process-row .process-meta{border-top:0;padding-top:2px;margin-top:0}.panel .statgrid{margin-bottom:10px}@media(max-width:760px){.admin-title-row,.admin-section-head,.admin-process-row{align-items:stretch;flex-direction:column}.admin-title-row>.btn{width:100%}.admin-section-head .year-tabs{width:100%}.admin-actions{width:100%}.admin-actions .btn{flex:1}.admin-process-row{gap:14px}}

/* ZEUS - años históricos enlazados a las páginas institucionales existentes */
.historical-tab{border-style:dashed;color:#666;background:#fafafa}
.historical-tab:hover{border-color:var(--rojo);color:var(--rojo);background:#fff}
.portal-history-note{display:flex;align-items:center;gap:14px;margin:0 0 22px;padding:11px 14px;border:1px solid #e8e8e8;border-radius:10px;background:#fff;color:#777;font-size:12px;line-height:1.45}
.portal-history-note span:first-child{white-space:nowrap;color:#555}
@media(max-width:650px){.portal-history-note{align-items:flex-start;flex-direction:column;gap:5px}.year-tabs{gap:7px}.year-tab{padding:8px 14px}}

/* ============================================================
   ZEUS - ACCESO SEGURO / LOGIN INSTITUCIONAL
   ============================================================ */
.login-page{min-height:100vh;background:#f3f5f7;display:flex;align-items:center;justify-content:center;padding:24px;font-family:'Open Sans',Arial,sans-serif}
.login-shell{width:min(1180px,100%);min-height:680px;background:#fff;border-radius:26px;overflow:hidden;display:grid;grid-template-columns:1.08fr .92fr;box-shadow:0 24px 70px #00000018}
.login-visual{position:relative;min-height:680px;overflow:hidden;background:linear-gradient(135deg,#5f0718,#c41230 58%,#f15a24)}
.login-photo{position:absolute;inset:0;background-image:url('../img/login-institucional.jpg');background-size:cover;background-position:center;transform:scale(1.03)}
.login-overlay{position:absolute;inset:0;background:linear-gradient(90deg,#4d0716d9 0%,#8e0b25b5 48%,#c4123070 100%)}
.login-visual-content{position:relative;z-index:2;color:#fff;height:100%;display:flex;flex-direction:column;justify-content:center;padding:65px clamp(35px,6vw,75px);max-width:650px}
.login-brand-logo{width:205px;height:120px;object-fit:contain;object-position:left center;filter:brightness(0) invert(1);margin-bottom:26px}
.login-kicker{font:800 12px Montserrat;letter-spacing:2px;text-transform:uppercase;opacity:.9}.login-visual h1{font:800 clamp(40px,5vw,62px) Montserrat;line-height:1.02;margin:12px 0 18px}.login-visual p{font-size:18px;line-height:1.6;max-width:470px;margin:0;color:#fffdfd}
.login-card-wrap{display:flex;align-items:center;justify-content:center;padding:52px 55px;background:#fff}.login-card{width:min(430px,100%)}
.login-card-head{text-align:center;margin-bottom:27px}.login-logo{display:block;width:125px;height:94px;object-fit:contain;margin:0 auto 8px}.dark-kicker{color:var(--rojo);letter-spacing:1.5px}.login-card-head h2{font:800 30px Montserrat;margin:8px 0 6px;color:#292934}.login-card-head p{margin:0;color:#777;font-size:14px}.login-card .field{margin-bottom:17px}.login-card input{height:48px;border-radius:10px;background:#fff}.login-submit{width:100%;height:48px;font-size:15px;margin-top:4px}.login-alert{display:flex;flex-direction:column;gap:4px}.login-alert small{font-size:12px}.login-links{display:grid;gap:8px;text-align:center;margin-top:20px;padding-top:18px;border-top:1px solid #eee}.login-links a{color:#666;text-decoration:none;font-size:13px;font-weight:600}.login-links a:hover{color:var(--rojo)}.login-security{text-align:center;margin-top:22px;color:#888;font-size:11px;line-height:1.5}
@media(max-width:850px){.login-shell{grid-template-columns:1fr;max-width:600px}.login-visual{min-height:230px}.login-visual-content{padding:30px 34px;justify-content:flex-end}.login-brand-logo{width:140px;height:70px;margin-bottom:8px}.login-visual h1{font-size:34px;margin:5px 0}.login-visual p{font-size:14px}.login-card-wrap{padding:38px 28px}}
@media(max-width:480px){.login-page{padding:0}.login-shell{min-height:100vh;border-radius:0}.login-visual{min-height:205px}.login-card-wrap{padding:32px 20px}.login-card-head h2{font-size:26px}}
