/* Proyectos de Habitósfera (proyectos.js). */
.py{--hab:#C8553D;display:flex;flex-direction:column;gap:12px}
.py-volver{font-size:13px;color:var(--suave);text-decoration:none;align-self:flex-start}
.py-meta-txt{margin:0;font-size:14px;line-height:1.5}
.py-barra{display:inline-block;width:100%;min-width:60px;height:7px;border-radius:99px;background:var(--linea);overflow:hidden;vertical-align:middle}
.py-barra i{display:block;height:100%;background:var(--hab)}
.py-tiles{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.py-tiles>div{background:var(--papel);border:1px solid var(--linea);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:3px}
.py-tiles b{font-size:21px;font-weight:900;font-variant-numeric:tabular-nums;color:var(--tinta)}
.py-tiles span:not(.py-barra){font-size:12px;color:var(--suave)}
.py-alerta b{color:var(--foco)}
.py-rojo{color:var(--foco);font-weight:700}
.py-sig{margin:0;padding:9px 12px;border-left:3px solid var(--hab);background:var(--papel);border-radius:0 8px 8px 0;font-size:13.5px}
.py-tabs{display:flex;flex-wrap:wrap;gap:6px;border-bottom:1px solid var(--linea);padding-bottom:8px}
.py-tabs button{font:inherit;font-size:13.5px;font-weight:600;padding:7px 13px;border-radius:99px;border:1px solid var(--linea);background:var(--papel);color:var(--tinta);cursor:pointer}
.py-tabs button.activa{background:var(--hab);border-color:var(--hab);color:#fff}
.py-vista{display:flex;flex-direction:column;gap:10px}
.py-filtros{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;font-size:13px}
.py-filtros select{font:inherit;padding:4px 6px;border-radius:6px;border:1px solid var(--linea);background:var(--papel);color:var(--tinta)}
.py-filtros label{display:inline-flex;align-items:center;gap:6px;margin:0;width:auto;white-space:nowrap}
.py-filtros select{width:auto}
.py-solo input{width:auto;margin:0}
.py-ley{display:inline-flex;flex-wrap:wrap;align-items:center;gap:5px;font-size:12px;color:var(--suave);margin-left:auto}
.py-p{display:inline-block;min-width:27px;text-align:center;padding:2px 6px;border-radius:99px;font-size:11px;font-weight:800}
.py-P1{background:var(--hab);color:#fff}.py-P2{background:var(--sol-fondo);color:var(--sol-tinta)}.py-P3{background:var(--bruma);color:var(--suave)}
.py-etapa{background:var(--papel);border:1px solid var(--linea);border-radius:12px}
.py-etapa>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;cursor:pointer;list-style:none}
.py-etapa>summary::-webkit-details-marker{display:none}
.py-etq{display:flex;flex-direction:column;gap:2px;min-width:0}
.py-etq b{font-size:15.5px}
.py-der{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.py-der .py-barra{width:80px}
.py-ver{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:99px;background:var(--bruma);color:var(--acento-tinta);white-space:nowrap}
.py-ver::after{content:"Ver ▸"}
details[open]>summary .py-ver::after{content:"Cerrar ▾"}
.py-lista{list-style:none;margin:0;padding:0}
.py-fila{display:grid;grid-template-columns:24px minmax(0,1fr) 190px;gap:10px;padding:11px 14px;border-top:1px solid var(--linea)}
.py-fila-doc{grid-template-columns:24px minmax(0,1fr);padding:9px 0}
.py-check{width:19px;height:19px;margin:1px 0 0;accent-color:var(--hab);cursor:pointer}
.py-cuerpo{display:flex;flex-direction:column;gap:3px;min-width:0}
.py-tit{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.py-hecha b{color:var(--suave);text-decoration:line-through}
.py-meta{display:flex;flex-direction:column;align-items:flex-end;gap:3px;font-size:12.5px;text-align:right}
.py-fecha{font-weight:700}
.py-por{color:var(--ok);font-size:12px}
.py-adj{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:3px}
.py-doc{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:3px 9px;background:var(--bruma);border-radius:7px;font-size:12.5px}
.py-doc small{color:var(--suave);white-space:nowrap}
.py-liga{font:inherit;border:0;background:none;padding:0;color:var(--acento-tinta);text-decoration:underline;cursor:pointer;overflow-wrap:anywhere;text-align:left}
.py-quitar{font:inherit;font-size:11.5px;border:0;background:none;padding:0;color:var(--foco);cursor:pointer}
.py-subir{cursor:pointer;display:inline-block;width:auto;margin:0;border:1px solid var(--linea);background:var(--papel);color:var(--acento-tinta);font-weight:600}
.py-prog{color:var(--suave);font-size:12px}
.py-exp{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}
.py-sec{padding:13px 15px;margin:0}
.py-sec h3{margin:0;font-size:15.5px}
.py-sec p{font-size:13.5px;line-height:1.5;margin:6px 0 0}
.py-sec ul:not(.py-lista):not(.py-mini){margin:7px 0 0;padding-left:18px;font-size:13.5px;line-height:1.5}
.py-sec-alto{display:flex;justify-content:space-between;align-items:center;gap:8px}
.py-ancho{grid-column:1/-1}
.py-mini{list-style:none;margin:9px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:13px}
.py-mini li{display:flex;gap:7px;align-items:flex-start}
.py-nota{margin:0;font-size:13.5px;padding:11px 13px;border:1px solid var(--hab);border-radius:10px}
.py-fuentes{font-size:12px}
.py-ley-cal{margin-left:0;gap:12px}
.py-ley-cal span{display:inline-flex;align-items:center;gap:5px}
.py-gantt-caja{overflow-x:auto;background:var(--papel);border:1px solid var(--linea);border-radius:10px}
.py-gantt{border-collapse:collapse;width:100%;min-width:760px;font-size:12px}
.py-gantt th,.py-gantt td{border-bottom:1px solid var(--linea);padding:0;text-align:center;height:29px;min-width:24px}
.py-gantt thead th{background:var(--papel);font-size:11px;color:var(--suave)}
.py-gantt th:first-child{position:sticky;left:0;z-index:1;background:var(--papel);text-align:left;padding:3px 8px;min-width:250px;font-weight:600}
.py-gantt th[scope=row] small{display:block;font-weight:400;font-size:10.5px;color:var(--suave)}
.py-frente td{background:var(--bruma);text-align:left!important;padding:3px 8px;font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;height:22px;color:var(--suave)}
.py-gantt td:not([colspan]){border-left:1px solid var(--linea)}
.py-inh{background:var(--bruma)}
.py-hoy{box-shadow:inset 2px 0 0 var(--hab),inset -2px 0 0 var(--hab)}
.py-g{display:block;height:11px;min-width:18px;background:var(--linea)}
.py-gP1{background:var(--hab)}.py-gP2{background:var(--sol)}.py-gP3{background:var(--suave);opacity:.55}
.py-g.py-e-hecha{background:var(--ok);opacity:1}.py-g.py-e-atrasada{background:var(--foco);opacity:1}
.py-ley-cal .py-g{width:20px;min-width:20px}
.py-cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.py-card{display:flex;flex-direction:column;gap:7px;padding:15px;text-decoration:none;color:inherit;margin:0}
.py-card h3{margin:0}
.py-card-av{display:flex;align-items:center;gap:9px}
@media (max-width:720px){
  .py-tiles{grid-template-columns:repeat(2,1fr)}
  .py-tiles>div:first-child{grid-column:1/-1}
  .py-exp{grid-template-columns:1fr}
  .py-fila{grid-template-columns:24px minmax(0,1fr)}
  .py-fila:not(.py-fila-doc) .py-meta{grid-column:2;flex-direction:row;flex-wrap:wrap;align-items:center;text-align:left;gap:4px 10px}
  .py-etapa>summary{flex-direction:column;align-items:stretch}
  .py-der .py-barra{flex:1}
  .py-der{justify-content:space-between}
  .py-ley{margin-left:0}
  .py-gantt th:first-child{min-width:150px;width:150px;max-width:150px;white-space:normal;font-size:11px}
  .py-gantt{min-width:600px}
}
