@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Instrument+Serif:ital@0;1&display=swap');
:root{--ink:#20272c;--ink2:#4e5a62;--muted:#7b858e;--line:#e6e9e9;--background:#f8f9f8;--paper:#ffffff;--accent:#315b66;--accent2:#dae9e9;--dark:#223f48;--radius:14px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:'DM Sans',system-ui,sans-serif;color:var(--ink);background:var(--background);font-size:14px;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #78b0be;outline-offset:2px}
.shell{max-width:1240px;margin:auto;padding:0 42px} .topbar{height:78px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{text-decoration:none;display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;letter-spacing:-.5px}.brand-icon{background:var(--dark);color:white;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-size:18px}.brand-soft{color:var(--muted);font-weight:500}.top-actions{display:flex;gap:12px;align-items:center}.sync-state{color:var(--ink2);font-size:12px;white-space:nowrap}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:5px;background:#6ba28a}.dot-demo{background:#d49d60}.dot-error{background:#c96f6f}.icon-btn{border:1px solid var(--line);background:var(--paper);border-radius:9px;width:34px;height:34px;font-size:23px;color:var(--ink2);line-height:0}.access-btn{border:1px solid #cfdbdf;background:#edf3f3;color:#31565f;border-radius:9px;padding:9px 14px;font-size:12px;font-weight:700}
.intro{display:flex;justify-content:space-between;gap:32px;padding:73px 0 50px}.eyebrow{font-size:10px;letter-spacing:2.2px;font-weight:700;color:var(--accent);text-transform:uppercase;margin:0 0 20px}.eyebrow-line{display:inline-block;vertical-align:middle;height:1px;width:32px;background:#afc7cc;margin:0 10px}.intro h1{font-size:clamp(43px,5.15vw,72px);letter-spacing:-3.1px;line-height:1.02;margin:0;font-weight:600;max-width:760px}.intro h1 em{font:italic 1.09em 'Instrument Serif',Georgia,serif;letter-spacing:-2px;color:#37616d}.lead{max-width:620px;font-size:15px;line-height:1.75;color:var(--ink2);margin:23px 0 0}.intro-aside{width:200px;flex:0 0 200px;align-self:end;text-align:right;padding-bottom:5px}.intro-label{font-size:10px;letter-spacing:1.5px;color:var(--muted);font-weight:700}.year-mark{display:block;font:400 68px 'Instrument Serif',Georgia,serif;letter-spacing:-5px;line-height:1.2;color:#b6c8cc;white-space:nowrap}.year-mark span{font:28px 'DM Sans',sans-serif;padding:0 7px;color:#78989f}.intro-caption{font-size:10px;font-weight:700;letter-spacing:1px;color:#8a999e}
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow:hidden}.metric{padding:22px 27px;min-height:104px;border-right:1px solid var(--line)}.metric:last-child{border-right:0}.metric-label{font-size:11px;color:var(--muted);font-weight:600}.metric-val{font-size:33px;font-weight:500;letter-spacing:-1.5px;line-height:1.2;margin-top:9px}.metric-meta{color:#77939a;font-size:11px;font-weight:500;margin-left:8px;letter-spacing:0}
.section-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;border-bottom:1px solid var(--line);margin-top:46px}.tabs{display:flex;gap:29px}.tab{appearance:none;background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:0 0 17px;color:var(--muted);font-size:13px;font-weight:700}.tab.active{color:var(--ink);border-color:#476e76}.tab-num{display:inline-flex;align-items:center;justify-content:center;background:#e9eff0;color:#516e74;width:22px;height:21px;border-radius:6px;font-size:11px;margin-left:5px}.foot-label,.view-meta{font-size:11px;color:var(--muted)}.view{display:none;min-height:300px}.view.active{display:block}
.filterbar{display:flex;gap:12px;align-items:center;margin:28px 0 32px}.searchbox{background:white;border:1px solid var(--line);border-radius:10px;flex:1;display:flex;align-items:center;gap:8px;padding:0 14px;min-width:150px;height:42px}.searchbox span{font-size:25px;line-height:1;color:#7f8c92}.searchbox input{border:0;outline:0!important;width:100%;font-size:12px;color:var(--ink);background:transparent}.searchbox input::placeholder{color:#9ba4aa}.segmented{background:#eff2f2;display:flex;align-items:center;border-radius:10px;padding:3px;gap:2px;white-space:nowrap}.segmented button{background:transparent;border:0;border-radius:7px;padding:10px 13px;font-size:11px;font-weight:700;color:#697980}.segmented button.active{background:#fff;color:#24424c;box-shadow:0 1px 3px #1e383e15}.filterbar select{height:42px;background:white;border:1px solid var(--line);border-radius:9px;padding:0 13px;color:var(--ink2);font-size:12px;max-width:170px}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:15px;margin:0 0 22px}.section-heading h2{font-size:22px;letter-spacing:-.8px;margin:0 0 6px}.section-heading p{margin:0;font-size:12px;color:var(--muted);line-height:1.6}.section-heading:not(:first-child){margin-top:30px}
.program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.program-card{background:white;border:1px solid var(--line);border-radius:13px;padding:26px;display:flex;flex-direction:column;gap:16px;min-height:289px;transition:border-color .2s,transform .2s,box-shadow .2s}.program-card:hover{border-color:#adc3c7;transform:translateY(-2px);box-shadow:0 10px 25px #34505c0d}.program-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.region-tag{font-size:10px;letter-spacing:.5px;font-weight:700;color:#446d72;background:#eff5f5;padding:7px 9px;border-radius:6px}.region-tag.arg{background:#f1f2f3;color:#6a737b}.priority-tag{font-size:10px;color:#8a939a}.card-title{font-size:21px;font-weight:600;line-height:1.25;letter-spacing:-.6px;max-width:400px;margin:0}.card-university{margin:-7px 0 0;font-size:12px;color:var(--muted)}.card-focus{font-size:12px;color:#607079;line-height:1.7;min-height:40px;margin:0}.card-spec{border-top:1px solid var(--line);padding-top:14px;display:grid;grid-template-columns:1fr 1fr 1.35fr;gap:8px}.spec-label{display:block;color:#9ba4a8;font-size:10px;margin-bottom:7px}.spec-value{font-size:12px;font-weight:700;line-height:1.45;color:#374a52}.spec-value.pending{color:#aa8157}.card-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:6px}.card-bottom button{background:none;border:0;padding:0;font-size:12px;color:#426d77;font-weight:700}.card-bottom button span{font-size:18px;vertical-align:-1px;margin-left:3px}.card-bottom .minor{font-size:11px;color:#9ba4a8}
.panel-list{background:white;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin:26px 0}.panel-row{padding:20px 24px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.panel-row:last-child{border:0}.row-main{display:flex;align-items:flex-start;gap:14px}.row-date{border:1px solid var(--line);border-radius:9px;width:67px;height:62px;flex:0 0 67px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:#fbfcfc;color:#315762}.row-date strong{font-size:20px;line-height:1}.row-date span{font-size:9px;font-weight:700;letter-spacing:1px;color:var(--muted)}.row-date.missing{font-size:10px;color:#ba905e;background:#fcfaf5}.row-title{font-size:14px;font-weight:700;line-height:1.5}.row-sub{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.5}.row-action{text-align:right;flex:0 0 180px;font-size:11px;color:var(--muted);line-height:1.6}.row-action a{color:#416a74;text-decoration:none;font-weight:700}.row-action a:hover{text-decoration:underline}.small-pill{display:inline-block;padding:5px 7px;border-radius:6px;background:#f1f4f4;font-size:10px;font-weight:600;color:#6b8289;margin-bottom:6px}.small-pill.warn{color:#9e744c;background:#faf5ec}.task-dot{height:16px;width:16px;border:1.5px solid #9ab0b6;border-radius:50%;margin-top:2px;flex:0 0 16px}.task-dot.done{background:#5e8f76;border-color:#5e8f76;position:relative}.task-dot.done:after{content:'✓';font-size:12px;color:white;position:absolute;left:3px;top:-2px}.priority-high{color:#986e48}.empty{background:white;border:1px dashed #cddad8;padding:45px;text-align:center;border-radius:12px;color:var(--muted)}.empty strong{display:block;color:var(--ink2);font-size:15px;margin-bottom:10px}
.footer{margin-top:75px;display:flex;justify-content:space-between;gap:15px;border-top:1px solid var(--line);padding:24px 0 40px;font-size:10px;color:#a3abae;letter-spacing:.6px}
.details-dialog,.access-dialog{border:0;padding:0;background:white;color:var(--ink);border-radius:16px;max-height:min(90vh,950px);box-shadow:0 25px 90px #0f28304a}.details-dialog{width:min(730px,calc(100vw - 30px))}.access-dialog{width:min(420px,calc(100vw - 30px))}.details-dialog::backdrop,.access-dialog::backdrop{background:#0e2328a9;backdrop-filter:blur(4px)}.dialog-inner{padding:38px;position:relative}.dialog-close{position:absolute;right:20px;top:20px;width:30px;height:30px;border:1px solid var(--line);border-radius:50%;background:white;color:#677}.detail-type{font-size:10px;font-weight:700;color:#60808a;letter-spacing:2px;margin:0 0 14px}.detail-title{font-size:36px;line-height:1.13;letter-spacing:-1.4px;margin:0 0 9px}.detail-sub{font-size:14px;color:var(--muted);margin:0 0 24px}.detail-tags{display:flex;flex-wrap:wrap;gap:8px}.detail-tags span{font-size:11px;background:#edf3f3;color:#456b73;border-radius:7px;padding:8px 10px;font-weight:600}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:25px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:26px 0}.detail-pair small{display:block;color:var(--muted);margin-bottom:7px}.detail-pair strong{font-weight:600;font-size:12px;line-height:1.5}.detail-section{margin-top:26px}.detail-section h3{font-size:15px;margin:0 0 12px}.detail-section p{font-size:13px;line-height:1.75;color:#53656d;white-space:pre-line;margin:0}.detail-list{margin:0;padding-left:18px;color:#566b72;line-height:1.8;font-size:12px}.detail-list a{color:#426b75}.detail-actions{display:flex;gap:10px;flex-wrap:wrap;margin:25px 0 0}.detail-link{font-size:11px;background:#edf3f3;border-radius:8px;padding:10px 12px;text-decoration:none;font-weight:700;color:#3a6872}.detail-link:hover{background:#deebed}
.access-inner{padding:30px}.access-inner h2{font-size:23px;margin:0 0 12px}.access-inner p:not(.eyebrow){font-size:13px;color:#677a81;line-height:1.6}.access-inner label{display:block;font-size:12px;font-weight:700;margin:25px 0 8px}.access-inner input{height:44px;width:100%;border:1px solid #cddadf;border-radius:8px;padding:0 12px}.access-error{color:#ba5d5d;min-height:20px;font-size:11px;margin-top:8px}.dialog-actions{display:flex;gap:8px;justify-content:flex-end}.btn{padding:11px 15px;font-size:12px;border-radius:8px;font-weight:700}.btn.primary{background:#315b66;color:white;border:1px solid #315b66}.btn.subtle{background:white;border:1px solid #dee5e7;color:#607980}.notice{display:none;position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:13px 18px;border-radius:9px;background:#294955;color:white;box-shadow:0 14px 30px #0002;z-index:20;font-size:12px;max-width:90vw}.notice.show{display:block}
@media(max-width:850px){.shell{padding:0 23px}.intro{padding:54px 0 37px}.intro-aside{display:none}.metrics{grid-template-columns:1fr 1fr}.metric:nth-child(2){border-right:0}.metric:nth-child(-n+2){border-bottom:1px solid var(--line)}.program-grid{grid-template-columns:1fr}.filterbar{flex-wrap:wrap}.searchbox{flex:1 1 100%}.section-toolbar{margin-top:34px}}
@media(max-width:520px){.shell{padding:0 16px}.topbar{height:69px}.top-actions{gap:5px}.sync-state{font-size:10px}.access-btn{padding:9px}.brand{font-size:14px}.intro{padding:44px 0 36px}.intro h1{letter-spacing:-1.8px;font-size:45px}.intro h1 em{letter-spacing:-1px}.lead{font-size:13px}.metric{padding:17px}.metric-val{font-size:27px}.metric-label{font-size:10px}.tabs{gap:15px}.tab{font-size:11px}.section-toolbar{align-items:end}.foot-label{display:none}.filterbar{gap:9px}.segmented{flex:1}.segmented button{flex:1;padding:10px 5px}.filterbar select{flex:1}.program-card{padding:20px}.card-title{font-size:19px}.card-spec{grid-template-columns:repeat(3,1fr);gap:6px}.panel-row{padding:17px 14px;flex-wrap:wrap}.row-action{margin-left:81px;flex:1 1 auto;text-align:left}.footer{flex-wrap:wrap}.dialog-inner{padding:25px}.detail-title{font-size:29px}.detail-grid{gap:12px}}

/* Acceso privado: sin datos visibles ni descargados hasta validar la contraseña. */
[hidden]{display:none!important}
.login-gate{min-height:calc(100vh - 145px);display:grid;place-items:center;padding:55px 15px 110px}
.login-gate-inner{max-width:660px;text-align:center}
.login-gate h1{font-size:clamp(45px,6.5vw,78px);letter-spacing:-3px;line-height:1.05;font-weight:600;margin:0 0 24px}
.login-gate h1 em{font:italic 1.08em 'Instrument Serif',Georgia,serif;color:#37616d}
.login-gate-inner>p:not(.eyebrow){color:var(--ink2);font-size:15px;line-height:1.8;max-width:490px;margin:0 auto 28px}
.login-gate .btn{background:var(--dark);color:#fff;border:0;border-radius:10px;padding:14px 23px;font-weight:700}
.login-gate .btn span{margin-left:14px}
.login-gate-inner>.login-gate-foot{font-size:11px!important;color:var(--muted)!important;margin-top:26px!important}
@media(max-width:520px){.login-gate{min-height:calc(100dvh - 75px);padding:50px 4px}.login-gate h1{letter-spacing:-1.7px}.login-gate-inner>p:not(.eyebrow){font-size:13px}}
