:root{--fondo:#080A07;--sup:#0E110C;--sup2:#131710;--tinta:#F3F5EE;--tinta2:#B3BAAA;--mut:#8E9786;--linea:#222820;--linea2:#343C2F;--v:#CCFF00;--v-hover:#DDFF4D;--vsoft:#1B2300;--am:#FFB020;--ro:#FF6161;--borde-campo:#646E5C;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:var(--fondo);color:var(--tinta);font-family:"IBM Plex Sans",Arial,sans-serif;font-size:16px;line-height:1.55;min-height:100vh;display:flex;flex-direction:column}
h1,h2,h3{font-family:Archivo,sans-serif;margin:0;text-wrap:balance}a{color:var(--v)}
   
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 24px;border-bottom:1px solid var(--linea);position:sticky;top:0;background:rgba(8,10,7,.94);z-index:5}#top-der{display:flex;align-items:center;gap:12px}#top-der[hidden],[hidden]{display:none!important}.quien{color:var(--mut);font-size:.9rem}
.btn{background:var(--v);color:#000;font-weight:600;border:1px solid var(--v);border-radius:6px;padding:12px 22px;min-height:44px;font-size:1rem;cursor:pointer;font-family:inherit}.btn[disabled]{opacity:.5}.btn-sec{background:transparent;color:var(--tinta2);border:1px solid var(--linea2);border-radius:6px;padding:8px 14px;font-size:.9rem;cursor:pointer;font-family:inherit;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;min-height:44px}
main{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:0 20px 60px}
.eyebrow{font-family:"IBM Plex Mono",monospace;font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--v);margin:0 0 10px}.sub{color:var(--mut);margin:8px 0 22px;max-width:60ch}
.entrar-caja{max-width:520px;margin:64px auto 0;background:var(--sup);border:1px solid var(--linea);border-radius:12px;padding:32px}.entrar-caja h1{font-size:1.8rem;letter-spacing:-.02em}
#f-acceso{display:grid;gap:12px}#f-acceso label{display:grid;gap:6px;font-family:"IBM Plex Sans",Arial,sans-serif;font-size:.875rem;color:var(--tinta2)}#f-acceso input{background:var(--fondo);color:var(--tinta);border:1px solid var(--borde-campo);border-radius:6px;padding:12px;min-height:44px;font-family:"IBM Plex Sans",Arial,sans-serif;font-size:1rem}
.aviso{margin:14px 0 0;padding:12px 14px;border-radius:8px;background:var(--vsoft);border:1px solid var(--v);color:var(--tinta)}.aviso.mal{background:#2A0D0D;border-color:var(--ro)}
.cab{padding:40px 0 20px}.cab h1{font-size:clamp(1.6rem,3.4vw,2.3rem);letter-spacing:-.02em}.cab .meta{color:var(--mut);margin:8px 0 0;display:flex;gap:14px;flex-wrap:wrap;font-size:.95rem}
.proyecto{background:var(--sup);border:1px solid var(--linea);border-radius:12px;padding:24px;margin-bottom:22px}.proyecto h2{font-size:1.35rem;letter-spacing:-.01em}
.pill{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;padding:4px 9px;border-radius:999px;border:1px solid var(--linea2);color:var(--tinta2)}.pill.en_curso{border-color:var(--v);color:var(--v)}.pill.entregado,.pill.entregada{background:var(--vsoft);border-color:var(--v);color:var(--v)}.pill.pausado{border-color:var(--am);color:var(--am)}
.barra{height:10px;background:var(--fondo);border:1px solid var(--linea);border-radius:999px;overflow:hidden;margin:8px 0}.barra i{display:block;height:100%;background:var(--v);border-radius:999px;transition:width .6s ease}
.resumen{color:var(--tinta2);margin:12px 0 0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:16px}.dato{background:var(--fondo);border:1px solid var(--linea);border-radius:8px;padding:12px}.dato b{display:block;font-family:"IBM Plex Mono",monospace;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin-bottom:4px;font-weight:500}
h3.sec{font-size:1rem;margin:26px 0 10px;padding-top:18px;border-top:1px solid var(--linea)}
.etapa{display:grid;grid-template-columns:36px 1fr auto;gap:12px;padding:14px 0;border-bottom:1px solid var(--linea)}.etapa:last-child{border-bottom:0}.etapa .num{font-family:"IBM Plex Mono",monospace;color:var(--v);font-size:.85rem;padding-top:3px}.etapa .nom{font-weight:600}.etapa .obj{color:var(--mut);font-size:.92rem;margin:2px 0 0}.etapa .fechas{font-family:"IBM Plex Mono",monospace;font-size:.72rem;color:var(--mut);margin-top:6px}.etapa .pct{font-family:"IBM Plex Mono",monospace;font-size:.85rem;color:var(--tinta2);text-align:right;white-space:nowrap}
.ents{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:6px}.ents li{display:flex;align-items:center;gap:8px;font-size:.93rem;color:var(--tinta2)}.ents i{width:8px;height:8px;border-radius:50%;border:1px solid var(--linea2);flex:none}.ents .entregado i{background:var(--v);border-color:var(--v)}.ents .en_curso i{border-color:var(--v)}.ents .entregado{color:var(--tinta)}
.nota{background:var(--vsoft);border-left:3px solid var(--v);padding:8px 12px;margin:8px 0 0;font-size:.92rem;color:var(--tinta2);border-radius:0 6px 6px 0}
.bit{padding:10px 0;border-bottom:1px solid var(--linea)}.bit:last-child{border-bottom:0}.bit .bm{font-family:"IBM Plex Mono",monospace;font-size:.7rem;color:var(--mut);margin-bottom:3px}.bit p{margin:0;color:var(--tinta2);white-space:pre-wrap}
.docs{display:flex;gap:10px;flex-wrap:wrap}.vacio{color:var(--mut);font-size:.93rem}
.resp{display:flex;gap:12px;align-items:center;margin-top:8px}.resp .ini{width:40px;height:40px;border-radius:50%;background:var(--vsoft);border:1px solid var(--v);display:grid;place-items:center;font-family:Archivo,sans-serif;font-weight:700;color:var(--v)}
/* Spec 3.7: foco visible; lo que antes iba en style="" (bloqueado por la CSP) ahora son clases. */
:focus-visible{outline:2px solid var(--v);outline-offset:2px}
.p-cab{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:start}
.avance-pie{display:flex;justify-content:space-between;font-family:"IBM Plex Mono",monospace;font-size:.75rem;color:var(--mut)}
.barra i{width:0}.tabla-scroll{overflow-x:auto}.cobros td.nw{white-space:nowrap}
footer{border-top:1px solid var(--linea);padding:22px 24px;text-align:center;color:var(--mut);font-size:.88rem}
@media (max-width:640px){.top{padding:10px 14px}.marca-sub,.quien{display:none}main{padding:0 14px 40px}.proyecto{padding:18px}.entrar-caja{margin-top:32px;padding:24px}.etapa{grid-template-columns:28px 1fr}.etapa .pct{grid-column:2;text-align:left}}
.cobros{width:100%;border-collapse:collapse;font-size:.93rem}.cobros th{font-family:"IBM Plex Mono",monospace;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);text-align:left;padding:6px 8px 6px 0;border-bottom:1px solid var(--linea)}.cobros td{padding:9px 8px 9px 0;border-bottom:1px solid var(--linea);vertical-align:top;color:var(--tinta2)}.cobros td a{margin-right:8px;white-space:nowrap}.cobros td:first-child{white-space:nowrap;font-family:"IBM Plex Mono",monospace}.pill.pagado{background:var(--vsoft);border-color:var(--v);color:var(--v)}.pill.pagado_parcial{border-color:var(--am);color:var(--am)}.pill.vencido{border-color:var(--ro);color:var(--ro)}

