descargar pdf y fotos

This commit is contained in:
2026-06-09 08:25:57 -05:00
parent 0a9c672c75
commit b19deda02c
4404 changed files with 664668 additions and 84 deletions
+236
View File
@@ -2286,3 +2286,239 @@ select {
border: 1px solid var(--line);
border-radius: var(--radius-md);
}
/* ════════════════════════════════
PDF — árbol de selección + generar
════════════════════════════════ */
.pdf-intro {
display: flex;
align-items: flex-start;
gap: 16px;
padding: 18px;
background: rgba(167, 139, 250, 0.06);
border: 1.5px solid var(--line);
border-radius: var(--radius-md);
margin-bottom: 22px;
}
.pdf-intro-icon {
font-size: 2.2rem;
line-height: 1;
flex-shrink: 0;
filter: drop-shadow(0 4px 12px rgba(167, 139, 250, 0.3));
}
.pdf-intro-title {
font-size: 1.1rem;
font-weight: 800;
color: var(--ink);
margin-bottom: 4px;
letter-spacing: -0.01em;
}
.pdf-intro-desc {
font-size: 0.9rem;
color: var(--ink-soft);
line-height: 1.5;
margin: 0;
}
/* Lista de selección (árbol) */
.pdf-selector {
border: 1.5px solid var(--line);
border-radius: var(--radius-md);
background: var(--white);
padding: 8px;
max-height: 480px;
overflow-y: auto;
margin-bottom: 16px;
}
.pdf-selector-loading {
text-align: center;
color: var(--ink-mute);
padding: 30px 20px;
font-size: 0.92rem;
}
.pdf-selector-empty {
text-align: center;
color: var(--ink-mute);
padding: 30px 20px;
font-size: 0.92rem;
}
/* Cada nodo del árbol */
.pdf-node {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 12px;
border-radius: var(--radius-sm);
transition: background 0.15s ease;
user-select: none;
}
.pdf-node:hover {
background: var(--bg-soft);
}
.pdf-node-children {
margin-left: 22px;
border-left: 1.5px dashed var(--line);
padding-left: 4px;
}
.pdf-node-label {
flex: 1;
display: flex;
align-items: center;
gap: 8px;
font-size: 0.92rem;
color: var(--ink);
font-weight: 500;
min-width: 0;
}
.pdf-node-icon {
font-size: 1.05rem;
line-height: 1;
flex-shrink: 0;
}
.pdf-node-name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.pdf-node-count {
font-size: 0.72rem;
color: var(--ink-mute);
background: var(--bg-soft);
border: 1px solid var(--line);
padding: 1px 8px;
border-radius: var(--radius-pill);
font-weight: 600;
flex-shrink: 0;
}
.pdf-node-count.is-zero {
opacity: 0.45;
}
/* Checkbox custom */
.pdf-check {
position: relative;
display: inline-flex;
width: 20px;
height: 20px;
flex-shrink: 0;
cursor: pointer;
}
.pdf-check input {
appearance: none;
-webkit-appearance: none;
width: 100%;
height: 100%;
margin: 0;
border: 2px solid var(--line-strong);
border-radius: 6px;
background: var(--white);
cursor: pointer;
position: relative;
transition: background 0.15s ease, border-color 0.15s ease;
flex-shrink: 0;
}
.pdf-check input:hover {
border-color: var(--violet);
}
.pdf-check input:checked {
background: var(--grad-primary);
border-color: var(--violet-deep);
}
.pdf-check input:checked::after {
content: '';
position: absolute;
left: 5px;
top: 1px;
width: 6px;
height: 11px;
border: solid white;
border-width: 0 2.5px 2.5px 0;
transform: rotate(45deg);
}
.pdf-check input:indeterminate {
background: var(--violet);
border-color: var(--violet-deep);
}
.pdf-check input:indeterminate::after {
content: '';
position: absolute;
left: 3px;
top: 7px;
width: 10px;
height: 2.5px;
background: white;
border-radius: 1px;
}
.pdf-check input:disabled {
opacity: 0.4;
cursor: not-allowed;
}
/* Resumen de selección */
.pdf-summary {
padding: 12px 16px;
background: var(--bg-soft);
border: 1px solid var(--line);
border-radius: var(--radius-md);
font-size: 0.9rem;
color: var(--ink-soft);
margin-bottom: 16px;
text-align: center;
}
.pdf-summary-text strong {
color: var(--violet-deep);
font-weight: 700;
}
/* Acciones del PDF */
.pdf-actions {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
justify-content: flex-end;
}
.pdf-actions .btn-ghost {
font-size: 0.88rem;
padding: 10px 18px;
}
.btn-pdf-generar {
min-width: 200px;
justify-content: center;
}
@media (max-width: 600px) {
.pdf-actions {
justify-content: stretch;
}
.pdf-actions .btn {
flex: 1;
min-width: 0;
}
.btn-pdf-generar {
min-width: 0;
}
}