/* ===== Explorador "Vistas del sistema" (Mi Copropiedad, modulo 2.3) - prefijo .pv-* =====
   Portado 1:1 de la maqueta (assets/app.css .pv-*). Colores SOLO por tokens --propia-*. */
.pv-head { margin:6px 0 14px; }
.pv-title { font-size:17px; font-weight:800; color:var(--propia-text-h1); letter-spacing:-.3px; }
.pv-sub { font-size:13px; color:var(--propia-text-secondary); margin-top:2px; }
.pv-builder { margin-bottom:18px; }
.pv-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.pv-row:last-child { margin-bottom:0; }
.pv-lbl { font-size:11px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--propia-text-faint); flex:0 0 auto; min-width:52px; }
.pv-in { height:34px; border:1px solid var(--propia-border-card); background:var(--propia-bg-app); color:var(--propia-text-h1); border-radius:9px; padding:0 10px; font-family:inherit; font-size:13px; font-weight:600; cursor:pointer; }
.pv-in:focus { outline:none; border-color:var(--propia-brand); box-shadow:0 0 0 3px var(--propia-brand-soft); }
.pv-src { display:flex; gap:6px; flex-wrap:wrap; }
.pv-src-btn { display:inline-flex; align-items:center; gap:7px; border:1px solid var(--propia-border-card); background:var(--propia-bg-app); color:var(--propia-text-secondary); border-radius:9px; padding:7px 12px; font-size:12.5px; font-weight:700; cursor:pointer; font-family:inherit; transition:background .18s, color .18s, border-color .18s; }
.pv-src-btn i { color:var(--propia-text-muted); }
.pv-src-btn:hover { border-color:var(--propia-brand-border); color:var(--propia-text-h1); }
.pv-src-btn.is-on { background:var(--propia-brand); border-color:var(--propia-brand); color:#fff; }
.pv-src-btn.is-on i { color:#fff; }
.pv-filter { display:inline-flex; align-items:center; gap:4px; background:var(--propia-bg-app); border:1px solid var(--propia-border-card); border-radius:9px; padding:3px 3px 3px 8px; }
.pv-filter .pv-in { height:28px; border:0; background:transparent; padding:0 4px; box-shadow:none; }
.pv-filter-eq { color:var(--propia-text-faint); font-weight:800; font-size:12px; }
.pv-filter-x { border:0; background:transparent; color:var(--propia-text-muted); cursor:pointer; width:22px; height:22px; border-radius:6px; display:inline-flex; align-items:center; justify-content:center; }
.pv-filter-x:hover { background:var(--propia-danger-soft); color:var(--propia-error-text); }
.pv-addf { display:inline-flex; align-items:center; gap:6px; border:1px dashed var(--propia-border-card); background:transparent; color:var(--propia-brand); border-radius:9px; padding:6px 11px; font-size:12.5px; font-weight:700; cursor:pointer; font-family:inherit; }
.pv-addf:hover { background:var(--propia-brand-soft); border-color:var(--propia-brand-border); }
.pv-acts { display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
.pv-tablewrap { overflow:auto; max-height:360px; border:1px solid var(--propia-border-divider); border-radius:11px; margin-top:12px; }
.pv-table { width:100%; border-collapse:collapse; font-size:13px; }
.pv-table th { text-align:left; font-size:10.5px; text-transform:uppercase; letter-spacing:.4px; color:var(--propia-text-faint); font-weight:800; padding:9px 12px; background:var(--propia-bg-card-soft); border-bottom:1px solid var(--propia-border-divider); white-space:nowrap; position:sticky; top:0; z-index:1; }
.pv-table td { padding:8px 12px; border-bottom:1px solid var(--propia-border-divider); color:var(--propia-text-body); white-space:nowrap; }
.pv-table tbody tr:last-child td { border-bottom:0; }
.pv-table tbody tr:hover td { background:var(--propia-bg-hover); }
.pv-rk { font-weight:700; color:var(--propia-text-h1); }
.pv-num { text-align:right; font-variant-numeric:tabular-nums; }
.pv-tot { font-weight:800; color:var(--propia-text-h1); text-align:right; font-variant-numeric:tabular-nums; }
.pv-table th.pv-tot, .pv-table th.pv-num { text-align:right; }
.pv-table tfoot td { font-weight:800; color:var(--propia-text-h1); background:var(--propia-bg-card-soft); border-top:2px solid var(--propia-border-card); border-bottom:0; }
.pv-barwrap { display:flex; align-items:center; gap:8px; justify-content:flex-end; min-width:150px; }
.pv-bar { height:8px; background:var(--propia-brand); border-radius:20px; min-width:2px; width:40px; flex:0 0 auto; }
.pv-barwrap span { flex:0 0 auto; font-variant-numeric:tabular-nums; }
.pv-empty { padding:22px; text-align:center; color:var(--propia-text-faint); font-size:13px; }
.pv-sum-head { display:flex; align-items:center; gap:8px; margin:20px 0 10px; }
.pv-sum-head .pv-title { font-size:15px; }
.pv-sum-count { font-size:11.5px; font-weight:700; color:var(--propia-text-muted); background:var(--propia-bg-app); border:1px solid var(--propia-border-card); border-radius:20px; padding:2px 9px; }
.pv-sum-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:14px; align-items:stretch; }
/* Ancho por vista (span sobre 6 columnas) */
.pv-w-third { grid-column:span 2; }
.pv-w-half { grid-column:span 3; }
.pv-w-twothirds { grid-column:span 4; }
.pv-w-full { grid-column:span 6; }
@media (max-width:1000px){ .pv-w-third,.pv-w-half,.pv-w-twothirds{ grid-column:span 3; } }
@media (max-width:680px){ .pv-sum-grid{ grid-template-columns:1fr; } .pv-w-third,.pv-w-half,.pv-w-twothirds,.pv-w-full{ grid-column:1 / -1; } }
.pv-sum-empty { border:1px dashed var(--propia-border-card); border-radius:13px; padding:26px; text-align:center; color:var(--propia-text-faint); font-size:13px; }
.pv-sum-card { background:var(--propia-bg-card); border:1px solid var(--propia-border-card); border-radius:13px; padding:14px 15px; box-shadow:0 1px 2px rgba(45,62,80,.05); animation:pv-drop .32s cubic-bezier(.4,0,.2,1); }
@keyframes pv-drop { from{ opacity:0; transform:translateY(-10px) scale(.99); } to{ opacity:1; transform:none; } }
.pv-sum-top { display:flex; align-items:flex-start; gap:8px; margin-bottom:10px; }
.pv-sum-t { flex:1; min-width:0; }
.pv-sum-tt { font-size:13.5px; font-weight:800; color:var(--propia-text-h1); }
.pv-sum-meta { font-size:11px; color:var(--propia-text-muted); font-weight:600; margin-top:2px; }
/* Control "Ancho de la vista" en la cabecera del widget (menu desplegable) */
.pv-wwrap { position:relative; display:inline-flex; flex:0 0 auto; }
.pv-menu-backdrop { position:fixed; inset:0; z-index:900; background:transparent; }
.pv-wmenu { position:absolute; top:calc(100% + 4px); right:0; z-index:910; background:var(--propia-bg-card); border:1px solid var(--propia-border-card); border-radius:10px; box-shadow:0 10px 30px rgba(27,42,58,.2); padding:4px; min-width:152px; }
.pv-wmenu button { display:flex; align-items:center; gap:8px; width:100%; border:0; background:transparent; color:var(--propia-text-secondary); font-size:12.5px; font-weight:600; padding:7px 10px; border-radius:7px; cursor:pointer; font-family:inherit; text-align:left; }
.pv-wmenu button:hover { background:var(--propia-bg-hover); color:var(--propia-text-h1); }
.pv-wmenu button.is-on { color:var(--propia-brand); }
.pv-icbtn { border:0; background:var(--propia-bg-app); color:var(--propia-text-muted); width:28px; height:28px; border-radius:8px; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; }
.pv-icbtn:hover { color:var(--propia-brand); background:var(--propia-brand-soft); }
.pv-icbtn--x:hover { color:var(--propia-error-text); background:var(--propia-danger-soft); }
.pv-icbtn:disabled { opacity:.35; cursor:default; }
.pv-icbtn:disabled:hover { color:var(--propia-text-muted); background:var(--propia-bg-app); }
.pv-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:10px; max-height:360px; overflow:auto; }
.pv-pcard { border:1px solid var(--propia-border-card); border-radius:11px; padding:12px; background:var(--propia-bg-card); display:flex; flex-direction:column; gap:8px; }
.pv-pcard:hover { border-color:var(--propia-brand-border); }
.pv-pc-top { display:flex; align-items:center; gap:10px; }
.pv-pc-av { width:36px; height:36px; border-radius:50%; background:var(--propia-brand-soft); color:var(--propia-brand); display:flex; align-items:center; justify-content:center; font-weight:800; font-size:14px; flex:0 0 auto; }
.pv-pc-id { flex:1; min-width:0; }
.pv-pc-nm { font-size:13.5px; font-weight:800; color:var(--propia-text-h1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pv-pc-sub { font-size:11.5px; color:var(--propia-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pv-pc-chips { display:flex; gap:5px; flex-wrap:wrap; }
.pv-chip { font-size:10.5px; font-weight:700; color:var(--propia-brand); background:var(--propia-brand-soft); border:1px solid var(--propia-brand-border); border-radius:20px; padding:2px 8px; }
.pv-pc-meta { display:flex; flex-direction:column; gap:3px; }
.pv-cmeta { font-size:11.5px; color:var(--propia-text-secondary); display:flex; align-items:center; gap:6px; min-width:0; }
.pv-cmeta i { color:var(--propia-text-faint); flex:0 0 auto; }
.pv-pc-acts { display:flex; justify-content:flex-end; margin-top:2px; }
.pv-build .pv-row { margin-bottom:14px; }
.pv-build .pv-lbl { min-width:72px; }
.pv-seg { display:inline-flex; background:var(--propia-bg-app); border:1px solid var(--propia-border-card); border-radius:9px; padding:3px; gap:2px; flex-wrap:wrap; }
.pv-seg-b { display:inline-flex; align-items:center; gap:6px; border:0; background:transparent; color:var(--propia-text-secondary); font-size:12.5px; font-weight:700; padding:6px 13px; border-radius:7px; cursor:pointer; font-family:inherit; }
.pv-seg-b.is-on { background:var(--propia-brand); color:#fff; }
.pv-editgrid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.pv-field { display:flex; flex-direction:column; gap:5px; }
.pv-field-l { font-size:11px; font-weight:800; letter-spacing:.3px; text-transform:uppercase; color:var(--propia-text-faint); }
.pv-prev-list { display:flex; gap:6px; flex-wrap:wrap; }
@media (max-width:560px){ .pv-editgrid { grid-template-columns:1fr; } }
.pv-pc-lines { display:flex; flex-direction:column; gap:4px; }
.pv-pc-line { display:flex; align-items:center; gap:6px; font-size:11.5px; min-width:0; }
.pv-pc-line > i { color:var(--propia-text-faint); flex:0 0 auto; width:13px; text-align:center; }
.pv-pc-ll { color:var(--propia-text-faint); font-weight:700; font-size:10px; text-transform:uppercase; letter-spacing:.3px; flex:0 0 auto; }
.pv-pc-lv { color:var(--propia-text-body); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pv-table .pv-rowact { text-align:right; width:1%; white-space:nowrap; }
.pv-table .pv-rowbtn { border:0; background:transparent; color:var(--propia-text-muted); cursor:pointer; padding:4px 7px; border-radius:6px; }
.pv-table .pv-rowbtn:hover { color:var(--propia-brand); background:var(--propia-brand-soft); }
/* Selector de campos (grid de checkboxes) */
.pv-fieldgrid { display:grid; grid-template-columns:repeat(auto-fill,minmax(158px,1fr)); gap:3px; border:1px solid var(--propia-border-card); border-radius:10px; padding:6px; background:var(--propia-bg-app); }
.pv-fitem { display:flex; align-items:center; gap:8px; padding:7px 9px; border-radius:8px; cursor:pointer; font-size:12.5px; font-weight:600; color:var(--propia-text-secondary); user-select:none; }
.pv-fitem:hover { background:var(--propia-bg-hover); }
.pv-fitem.is-on { color:var(--propia-text-h1); background:var(--propia-brand-soft); }
.pv-fcb { width:17px; height:17px; border-radius:5px; border:1.6px solid var(--propia-border-card); background:var(--propia-bg-card); flex:0 0 auto; display:flex; align-items:center; justify-content:center; color:#fff; font-size:9px; }
.pv-fcb i { opacity:0; }
.pv-fitem.is-on .pv-fcb { background:var(--propia-brand); border-color:var(--propia-brand); }
.pv-fitem.is-on .pv-fcb i { opacity:1; }
.pv-fitem > .fi { color:var(--propia-text-faint); font-size:12px; flex:0 0 auto; }
.pv-fitem.is-on > .fi { color:var(--propia-brand); }
.pv-fitem-l { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pv-fieldhint { font-size:11px; color:var(--propia-text-faint); margin-top:6px; }
/* Graficos SVG (barras / lineas / dona) */
.pv-chart { width:100%; }
.pv-chart > svg { width:100%; height:auto; display:block; }
.pv-chart-legend { display:flex; gap:10px 16px; flex-wrap:wrap; margin-top:10px; font-size:11.5px; color:var(--propia-text-secondary); font-weight:600; }
.pv-chart-legend i { width:11px; height:11px; border-radius:3px; display:inline-block; margin-right:6px; vertical-align:middle; }
.pv-ax { font-size:9px; fill:var(--propia-text-faint); }
.pv-axl { font-size:10px; fill:var(--propia-text-secondary); }
/* Barra superior (titulo + acciones) y botones del explorador */
.pv-topbar { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:6px 0 14px; }
.pv-topbar-acts { display:flex; gap:8px; flex-wrap:wrap; flex:0 0 auto; }
.pv-btn { display:inline-flex; align-items:center; gap:7px; border:1px solid var(--propia-border-card); background:var(--propia-bg-app); color:var(--propia-text-secondary); border-radius:9px; padding:8px 13px; font-size:12.5px; font-weight:700; cursor:pointer; font-family:inherit; transition:background .18s, color .18s, border-color .18s; }
.pv-btn i { color:var(--propia-text-muted); }
.pv-btn:hover { border-color:var(--propia-brand-border); color:var(--propia-text-h1); }
.pv-btn:hover i { color:var(--propia-brand); }
.pv-btn:disabled { opacity:.5; cursor:default; }
.pv-btn--primary { background:var(--propia-brand); border-color:var(--propia-brand); color:#fff; }
.pv-btn--primary i { color:#fff; }
.pv-btn--primary:hover { background:var(--propia-brand-hover); border-color:var(--propia-brand-hover); color:#fff; }
.pv-btn--primary:hover i { color:#fff; }
.pv-btn--ghost { background:transparent; }
.pv-prev { margin-top:14px; border-top:1px dashed var(--propia-border-card); padding-top:14px; }
.pv-prev-l { font-size:11px; font-weight:800; letter-spacing:.3px; text-transform:uppercase; color:var(--propia-text-faint); margin-bottom:8px; }
.pv-section { margin-top:24px; }
/* Modal de edicion de registro */
.pv-modal-ov { position:fixed; inset:0; background:rgba(27,42,58,.45); display:flex; align-items:flex-start; justify-content:center; padding:48px 16px; z-index:1100; overflow:auto; }
.pv-modal { background:var(--propia-bg-card); border:1px solid var(--propia-border-card); border-radius:14px; width:560px; max-width:100%; box-shadow:0 18px 50px rgba(27,42,58,.28); }
/* Variante ancha para el constructor de vistas: cabecera/pie fijos, cuerpo scrolleable */
.pv-modal--wide { width:860px; max-height:90vh; display:flex; flex-direction:column; }
.pv-modal--wide .pv-modal-bd { flex:1 1 auto; overflow:auto; }
.pv-modal-hd { display:flex; align-items:center; gap:10px; padding:16px 18px; border-bottom:1px solid var(--propia-border-divider); }
.pv-modal-hd .pv-title { font-size:15px; }
.pv-modal-bd { padding:18px; }
.pv-modal-ft { display:flex; justify-content:flex-end; gap:8px; padding:14px 18px; border-top:1px solid var(--propia-border-divider); }
.pv-in-full { width:100%; cursor:text; }
.pv-in-full[type=checkbox], select.pv-in-full { cursor:pointer; }
.pv-pc-acts .pv-rowbtn { display:inline-flex; align-items:center; gap:6px; border:1px solid var(--propia-border-card); background:var(--propia-bg-app); color:var(--propia-text-secondary); border-radius:7px; padding:4px 10px; font-size:11.5px; font-weight:700; cursor:pointer; font-family:inherit; }
.pv-pc-acts .pv-rowbtn:hover { color:var(--propia-brand); background:var(--propia-brand-soft); border-color:var(--propia-brand-border); }
.pv-section-err { font-size:12.5px; color:var(--propia-error-text); background:var(--propia-danger-soft); border:1px solid var(--propia-danger-soft); border-radius:9px; padding:8px 12px; margin-bottom:12px; }
