
:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:#192638;background:#f3f5f8;--ink:#192638;--accent:#294c85;--muted:#687991}*{box-sizing:border-box;font-weight:400!important}body{margin:0}a{text-decoration:none;color:inherit}h1,h2,h3,p{margin-top:0}p{line-height:1.6;color:#687991}h2{font-size:22px}h3{font-size:16px;margin:24px 0 10px}small{color:#9aa9bd}.material-symbols-outlined{font-family:"Material Symbols Outlined";font-weight:normal!important;font-style:normal;font-size:21px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;direction:ltr;font-feature-settings:"liga";-webkit-font-smoothing:antialiased;vertical-align:middle}
.layout{display:flex;min-height:100vh}.layout>aside{width:252px;flex-shrink:0;background:#142139;color:#c7d5e7;padding:24px 15px;position:sticky;top:0;height:100vh;overflow:auto}.brand{height:62px;display:flex;align-items:center;padding:4px 10px}.brand img{width:100%;max-width:195px;height:54px;object-fit:contain;object-position:left center}.layout aside small{display:block;padding:0 10px;font-size:12px}.layout nav{display:grid;gap:5px;margin-top:28px}.layout nav a{display:flex;align-items:center;gap:12px;border-radius:9px;padding:13px 12px;color:#aabbd2;font-size:14px;transition:background .12s}.layout nav a:hover{background:#1c2f4d;color:white}.layout nav a.active{background:#304767;color:#fff}.layout nav a .material-symbols-outlined{font-size:21px}.main{flex:1;min-width:0;display:flex;flex-direction:column}.main>header{height:72px;flex-shrink:0;position:sticky;top:0;z-index:10;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 34px;box-shadow:0 1px 8px #10243b0b}.page-title{font-size:18px}.main>main{padding:30px 34px;flex:1}.main>footer{padding:18px 34px;font-size:12px;color:#9daabc}.panel{background:#fff;border:0;border-radius:13px;padding:26px;margin-bottom:18px;box-shadow:0 2px 16px #142c4708}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.cards.two{grid-template-columns:repeat(2,minmax(0,1fr))}.cards h2{margin:9px 0 14px}.section-intro{margin-bottom:26px}.section-intro h2{font-size:28px;margin:7px 0}.eyebrow{color:#7085a5;letter-spacing:1px;text-transform:uppercase;font-size:11px}.panel-heading{display:flex;align-items:center;gap:11px;margin-bottom:14px}.panel-heading h2{margin:0}.panel-heading .material-symbols-outlined{color:#5375ac}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left}th,td{font-size:13px;padding:12px 10px}thead{background:#f1f4f9}tbody tr:nth-child(even){background:#f8f9fb}th{color:#677b92}form label{display:block;font-size:13px;color:#516278;margin:12px 0}input,select{display:block;width:100%;margin-top:7px;padding:12px;font:inherit;background:#f2f5fa;border:0;outline:2px solid transparent;border-radius:8px;color:#1c2b3e}input:focus,select:focus{outline-color:#a5b9da}button,.button,.button-light{font:inherit;font-size:13px;cursor:pointer;border:0;border-radius:8px;padding:12px 17px;background:#2b528e;color:white;display:inline-flex;align-items:center;gap:8px;justify-content:center}button:hover,.button:hover{background:#234675}.button-light,.button.secondary,header button{background:#edf2f8;color:#325072}button:disabled{opacity:.55;cursor:not-allowed}.dev-intro{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:23px}.dev-intro h2{font-size:27px;margin:6px 0}.dev-intro p{margin:0}.stage-stack{display:grid;gap:9px;margin-bottom:20px}.stage-item{background:#fff;border:0;border-radius:12px;overflow:hidden}.stage-current{background:#fefefe;box-shadow:0 2px 12px #10243b08}.stage-toggle{display:flex;width:100%;text-align:left;justify-content:stretch;border-radius:0;color:#1c2b3e;background:transparent;gap:15px;padding:17px}.stage-toggle:hover:not(:disabled){background:#eff4fb}.stage-label{display:grid;gap:5px;flex:1}.stage-code{font-size:11px;color:#8a9bb0}.stage-toggle .stage-status-icon{color:#8298b6}.stage-done .stage-status-icon{color:#1d9c6e}.stage-content{padding:19px;background:#f5f8fc}.stage-content[hidden]{display:none}.stage-actions{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.stage-content form{padding:16px;border-radius:10px;background:#edf2f8}.stage-content form input{background:#fff}.safety-note{font-size:12px}.test-report{margin:15px 0}.test-line{display:flex;gap:9px;padding:9px;background:#fff;margin:3px 0}.test-line.pass .material-symbols-outlined{color:#16a06b}.test-line.fail .material-symbols-outlined{color:#b74444}.install{min-height:100vh;display:grid;place-items:center;padding:26px;background:#f2f5fa}.install .panel{width:min(100%,520px)}#notice{position:fixed;bottom:24px;right:24px;z-index:999;background:#192e4b;color:#fff;padding:13px 19px;border-radius:10px;max-width:390px;display:none;box-shadow:0 8px 35px #172e5040}#notice.visible{display:block}.confirm-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);margin:0;width:min(92vw,365px);border:0;border-radius:14px;text-align:center;padding:25px;background:#fff;box-shadow:0 15px 55px #10213c30}.confirm-modal::backdrop{background:#0e1b31aa}.confirm-icon{background:#ecf2fa;color:#4365a0;border-radius:100%;width:45px;height:45px;margin:auto;display:grid;place-items:center}.confirm-modal p{margin:15px 0}.modal-actions{display:flex;justify-content:center;gap:10px;margin-top:20px}@media(max-width:850px){.layout>aside{width:208px}.cards,.cards.two{grid-template-columns:1fr}.main>main{padding:20px}.main>header{padding:0 20px}}@media(max-width:620px){.layout{display:block}.layout>aside{position:sticky;top:0;z-index:20;height:auto;width:100%;padding:9px 13px}.brand{height:45px}.brand img{height:40px;width:138px}.layout aside small{display:none}.layout nav{display:flex;overflow:auto;margin:4px 0 0;gap:4px}.layout nav a{white-space:nowrap;padding:10px}.main>header{position:sticky;top:103px;height:58px}.main>main{padding:16px}.panel{padding:18px}.dev-intro{flex-direction:column;align-items:stretch}}

/* ALTENDA 006 - carga visual de archivos y retroalimentacion de acciones */
.layout>aside{display:flex;flex-direction:column;padding-bottom:18px}.layout aside nav{flex:1}.layout aside .app-version{margin-top:auto;align-self:flex-end;font-size:10px;opacity:.55;letter-spacing:.025em;padding:14px 8px 0}
.file-drop{display:flex;align-items:center;gap:13px;min-height:108px;background:#eef3fa;border:2px dashed transparent;border-radius:12px;padding:18px;cursor:pointer;transition:background .15s ease,color .15s ease;color:#344f77;position:relative;margin:12px 0}
.file-drop:hover,.file-drop:focus-within,.file-drop.drag-over{background:#dce8fa;color:#143a72}.file-drop.drag-over{outline:2px solid #6e91c4}.file-drop .material-symbols-outlined{font-size:31px;flex-shrink:0}.file-drop .file-drop-content{min-width:0;display:grid;gap:6px}.file-drop .file-drop-name{font-size:13px;overflow-wrap:anywhere;color:inherit}.file-drop .file-drop-hint{font-size:11px;color:#7386a2}.file-drop input[type=file]{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;margin:0;padding:0;z-index:1}.file-drop input[type=file]:focus-visible{outline:0}.file-drop:has(input:focus-visible){outline:2px solid #6e91c4;outline-offset:2px}
button .material-symbols-outlined{flex-shrink:0}button.action-loading,button.action-success{opacity:1!important}button.action-loading{cursor:progress}button.action-success{background:#167a57;color:white}button.action-success .material-symbols-outlined{color:white}.material-symbols-outlined.icon-spin{animation:altenda-spin .85s linear infinite}@keyframes altenda-spin{to{transform:rotate(360deg)}}
button.button-light:hover,button.secondary:hover,header button:hover{background:#d9e7f8;color:#193a65}button:not(:disabled):hover{color:#fff}button.button-light:not(:disabled):hover,button.secondary:not(:disabled):hover,header button:not(:disabled):hover{color:#193a65}.stage-actions button:hover{color:#fff}.stage-actions .button-light:hover{color:#193a65}
@media(max-width:620px){.layout aside .app-version{display:none}.file-drop{min-height:94px}}
@media(prefers-reduced-motion:reduce){.material-symbols-outlined.icon-spin{animation-duration:1.5s}}

/* CORE-007: keep navigation grouped at top; version remains discreet at bottom. */
.layout aside nav{flex:0 0 auto;align-content:start;align-items:start;grid-auto-rows:max-content}
.layout aside .app-version{margin-top:auto}

/* CORE-008: menu follows wordmark, version belongs to lower-right page footer. */
.layout>aside{justify-content:flex-start}
.layout aside nav{flex:0 0 auto!important;margin-top:12px;align-content:start;align-items:start;grid-auto-rows:max-content}
.layout aside .app-version{display:none!important}
.main>footer{display:flex;align-items:center;justify-content:space-between;gap:16px}
.main>footer .footer-version{font-size:11px;font-weight:400;color:#97a6b9;white-space:nowrap}
@media(max-width:620px){.layout aside nav{margin-top:6px}.main>footer{padding:14px 16px}.main>footer .footer-version{font-size:10px}}
/* CORE-009: en el layout la navegación sigue inmediatamente al logotipo */
.layout aside nav{flex:none;margin-top:13px}
.layout>aside{justify-content:flex-start}
.main>footer{display:flex;justify-content:space-between;align-items:center}

/* CORE-010: package installation test, no visual change. */
