/* SAP programs page (#/programas-sap) */
.psap-bar { display: flex; gap: 8px; align-items: center; margin: 12px 0; flex-wrap: wrap; }
.psap-search { flex: 1; min-width: 180px; border: 1px solid var(--color-border); border-radius: 8px; padding: 6px 10px; font-size: var(--fs-6); background: var(--color-surface); color: var(--color-fg); }
.psap-seg { display: inline-flex; }
.psap-seg button { border: 1px solid var(--color-border); background: transparent; color: var(--color-fg); padding: 5px 10px; font-size: var(--fs-7); cursor: pointer; }
.psap-seg button:first-child { border-radius: 8px 0 0 8px; }
.psap-seg button:last-child { border-radius: 0 8px 8px 0; }
.psap-seg button[aria-pressed="true"] { background: var(--color-accent-soft); border-color: var(--color-accent); }
.psap-grid { --psap-card-h: 13rem; align-items: stretch; display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 10px; }
.psap-card { border: 1px solid var(--color-border); border-radius: 10px; padding: 12px; background: var(--color-surface); display: flex; flex-direction: column; gap: 7px; height: var(--psap-card-h); box-sizing: border-box; overflow: hidden; }
.psap-card.sel { border-color: var(--color-accent); box-shadow: 0 0 0 1px var(--color-accent); }
.psap-card.next { border-style: dashed; opacity: .75; }
.psap-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; }
.psap-name { font-weight: 600; font-size: var(--fs-7); }
.psap-mono { font-family: var(--font-mono); font-size: var(--fs-5); }
.psap-desc { font-size: var(--fs-6); color: var(--color-muted); line-height: 1.4; }
.psap-meta { display: flex; gap: 6px; flex-wrap: nowrap; overflow: hidden; white-space: nowrap; }
/* Same-size cards: description clamped to 3 lines, one-line rows, footer pinned to the bottom (full text lives in Details). */
.psap-card > .psap-row { flex-wrap: nowrap; }
.psap-card .psap-name, .psap-card .psap-mono { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.psap-card .psap-desc { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; }
.psap-card .psap-tag { flex: none; }
.psap-foot { margin-top: auto; }
.psap-foot > .psap-muted { overflow: hidden; min-width: 0; }
.psap-foot > span:last-child { white-space: nowrap; flex: none; }
@media (max-width: 640px) { .psap-grid { --psap-card-h: auto; } .psap-card { overflow: visible; } }
.psap-tag { display: inline-block; font-size: var(--fs-4); padding: 1px 7px; border: 1px solid var(--color-border); border-radius: 999px; color: var(--color-muted); }
.psap-tag.acc { border-color: var(--color-accent); color: var(--color-accent); }
.psap-muted { color: var(--color-muted); font-size: var(--fs-5); }
.psap-btn { line-height: 1.3; min-height: 0; border: 1px solid var(--color-accent); color: var(--color-accent); border-radius: 8px; padding: 5px 11px; font-size: var(--fs-6); cursor: pointer; background: transparent; text-decoration: none; display: inline-block; }
.psap-btn.pri { background: var(--color-accent); color: var(--color-on-accent); }
.psap-btn.ghost { border-color: var(--color-border); color: var(--color-fg); }
.psap-btn.sm { font-size: var(--fs-4); padding: 2px 8px; }
.psap-btn:disabled, .psap-btn[aria-disabled="true"] { opacity: .5; cursor: not-allowed; pointer-events: none; }
.psap-det { border: 1px solid var(--color-border); border-radius: 10px; margin-top: 14px; background: var(--color-surface); }
.psap-dh { padding: 12px 14px; border-bottom: 1px solid var(--color-border); }
.psap-tabs { display: flex; gap: 2px; padding: 0 10px; border-bottom: 1px solid var(--color-border); flex-wrap: wrap; }
.psap-tabs button { padding: 8px 10px; font-size: var(--fs-6); color: var(--color-muted); background: none; border: 0; border-bottom: 2px solid transparent; cursor: pointer; }
.psap-tabs button[aria-selected="true"] { color: var(--color-fg); border-bottom-color: var(--color-accent); }
.psap-db { padding: 12px 14px; display: grid; grid-template-columns: 1.25fr 1fr; gap: 16px; }
@media (max-width: 720px) { .psap-db { grid-template-columns: 1fr; } }
.psap-det table { width: 100%; border-collapse: collapse; font-size: var(--fs-6); }
.psap-det th { text-align: left; color: var(--color-muted); font-weight: 500; padding: 4px 6px; border-bottom: 1px solid var(--color-border); }
.psap-det td { padding: 5px 6px; border-bottom: 1px solid var(--color-border-soft, var(--color-border)); vertical-align: top; overflow-wrap: anywhere; }
.psap-ok { border-left: 3px solid var(--color-accent); padding: 6px 10px; font-size: var(--fs-6); background: var(--color-accent-soft); border-radius: 4px; }
.psap-h { font-size: var(--fs-7); font-weight: 600; margin: 10px 0 4px; text-transform: uppercase; letter-spacing: .04em; color: var(--color-muted); }
.psap-install { font-size: var(--fs-6); line-height: 1.55; overflow-wrap: anywhere; }
.psap-install pre { overflow-x: auto; }
.psap-log h4 { margin: 10px 0 2px; font-size: var(--fs-6); }
.psap-log ul { margin: 0; padding-left: 18px; font-size: var(--fs-6); line-height: 1.5; }
.psap-note { font-size: var(--fs-7); color: var(--color-muted); margin-top: 10px; border-top: 1px dashed var(--color-border); padding-top: 8px; }
.psap-publish { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 6px; }
.psap-publish input[type="text"] { width: 6rem; padding: 3px 8px; font-size: var(--fs-5); }
.psap-publish input[type="file"] { font-size: var(--fs-4); max-width: 100%; }
.psap-status { font-size: var(--fs-7); }
.psap-status.err { color: var(--color-error); }

/* Programs library (views/biblioteca_programas.js) */
.bib-topo { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin: 4px 0 12px; }
.bib-topo p { margin: 0; max-width: 60rem; }
.bib-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 16px; margin-bottom: 14px; }
.bib-form h3, .bib-form > p, .bib-form .bib-accoes { grid-column: 1 / -1; margin: 0; }
.bib-campo { display: flex; flex-direction: column; gap: 4px; font-size: var(--fs-6); color: var(--color-muted); }
.bib-campo input, .bib-campo select, .bib-campo textarea { font: inherit; color: var(--color-fg); background: var(--color-panel-soft); border: 1px solid var(--color-border); border-radius: 8px; padding: 6px 8px; }
.bib-accoes { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.bib-corpo { display: grid; gap: 12px; margin-top: 10px; }
.bib-objecto { cursor: pointer; }
.bib-objecto:hover, .bib-objecto:focus-visible { background: var(--color-accent-soft); outline: none; }
.bib-pre { max-height: 60vh; overflow: auto; margin: 0 0 12px; padding: 10px 12px; border: 1px solid var(--color-border); border-radius: 8px; background: var(--color-panel-soft); font-size: var(--fs-6); }
@media (max-width: 899px) { .bib-form { grid-template-columns: minmax(0, 1fr); } .bib-topo { flex-direction: column; } }
