:root{font-family:'Segoe UI',Inter,Arial,sans-serif;font-size:13px;font-synthesis:none;color-scheme:dark;--bg:#0e1318;--head:#171d23;--panel:#192128;--pane:#141b22;--pane2:#202a32;--line:#34414c;--subline:#26323c;--txt:#dce4ed;--secondary:#96a6b5;--muted:#6e8290;--accent:#db3d42;--accent-dark:#4a2129;--selected:rgba(211,56,66,.18);--highlight:#252f38;--btn:#27313b;--row-alt:#192229;--input:#121a20;--shadow:rgba(0,0,0,.35)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{background:var(--bg);color:var(--txt)}body[data-theme="light"]{color-scheme:light;--bg:#e8edf1;--head:#f4f7f9;--panel:#fff;--pane:#f7f9fb;--pane2:#e9eef2;--line:#c4d0d9;--subline:#dbe3e9;--txt:#283847;--secondary:#536979;--muted:#728492;--accent:#c1353c;--accent-dark:#ffe6e8;--selected:#f7dfe0;--highlight:#f0f4f6;--btn:#f0f4f7;--row-alt:#f8fafb;--input:#fff;--shadow:rgba(20,40,60,.17)}
button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none}button:disabled{cursor:default;opacity:.45}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}select,input,textarea{background:var(--input);border:1px solid var(--line);border-radius:4px;padding:6px 9px;min-width:0}textarea{resize:vertical;min-height:90px;line-height:1.45}button:hover:not(:disabled){filter:brightness(1.16)}.hidden{display:none!important}
#app{height:100vh;display:flex;flex-direction:column;overflow:hidden;min-width:680px}.topbar{height:69px;display:flex;align-items:center;padding:0 17px 0 7px;gap:16px;flex:none;background:linear-gradient(175deg,var(--head),var(--pane));border-bottom:1px solid var(--line);box-shadow:0 2px 14px var(--shadow)}.branding{display:flex;align-items:center;gap:5px;width:380px;flex-shrink:0;min-width:0}.brand-logo{height:65px;width:65px;object-fit:contain;filter:drop-shadow(0 3px 7px rgba(0,0,0,.55))}.brand-name{font-size:20px;font-weight:700;letter-spacing:.12px;color:var(--txt);white-space:nowrap}.brand-name span{color:var(--accent)}.brand-sub{font-size:9px;letter-spacing:2px;color:var(--secondary);margin-top:4px}.current-project{border-left:1px solid var(--line);padding-left:17px;display:flex;gap:12px;align-items:center;min-width:170px;max-width:370px;flex:1}.project-mark{font-size:9px;letter-spacing:.4px;padding:7px 5px;border:1px solid var(--accent);border-radius:4px;color:var(--accent);font-weight:bold}.top-project-text{min-width:0}.top-project-text strong{display:block;font-size:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:600}.top-project-text small{display:block;color:var(--muted);padding-top:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.topbar-right{display:flex;align-items:center;gap:8px;margin-left:auto}.edition{color:var(--muted);font-size:10px;letter-spacing:1px;white-space:nowrap}.icon-button{width:32px;height:32px;border-radius:5px;font-size:19px;border:1px solid var(--line);background:var(--btn)}
.main-menu{height:56px;display:flex;align-items:center;gap:2px;padding:5px 10px;overflow-x:auto;overflow-y:hidden;flex:none;background:var(--head);border-bottom:2px solid var(--accent);scrollbar-width:thin;white-space:nowrap}.main-menu button{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:68px;padding:4px 8px;border-radius:4px;height:44px;font-size:10px;gap:2px;color:var(--secondary);transition:background .1s}.main-menu button:nth-of-type(3){min-width:96px}.main-menu button[data-action="certs"]{min-width:108px}.main-menu button[data-action="settings"]{min-width:107px}.main-menu button[data-action="save-as"]{min-width:107px}.main-menu .nav-ico{font-size:18px;line-height:18px;color:var(--txt)}.main-menu button.active-menu{background:var(--selected);color:var(--txt);box-shadow:inset 0 -2px var(--accent)}.main-menu button:hover{background:var(--highlight)}.main-menu .separator{width:1px;background:var(--line);height:32px;flex:none;margin:0 4px}
.workspace{display:flex;flex:1;min-height:0;position:relative;overflow:hidden}.sidebar{display:flex;flex-direction:column;flex:none;width:252px;background:var(--pane);min-width:165px;max-width:430px;overflow:hidden}.panel-title{height:37px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 10px 0 13px;color:var(--secondary);font-size:11px;letter-spacing:.85px;font-weight:700}.mini-icon{border:1px solid var(--line);background:var(--btn);width:23px;height:22px;line-height:20px;border-radius:3px;font-size:11px}.sidebar-filter{padding:10px;border-bottom:1px solid var(--subline)}.sidebar-filter input{height:30px;width:100%;font-size:12px}.sidebar-tree{padding:4px 5px;overflow:auto;flex:1}.file-node{margin:2px 2px 8px;border-left:2px solid var(--line)}.file-header{display:flex;align-items:center;gap:6px;padding:8px 6px;font-size:12px;font-weight:600;border-radius:4px;white-space:nowrap;cursor:pointer}.file-header.active{background:var(--selected);border-left:2px solid var(--accent)}.file-header .file-name{min-width:0;overflow:hidden;text-overflow:ellipsis;flex:1}.file-section{display:block;padding:7px 10px 7px 30px;width:100%;text-align:left;color:var(--secondary);border-radius:4px;font-size:12px}.file-section:hover,.file-header:hover,.side-link:hover{background:var(--highlight)}.file-section.current{color:var(--txt);background:var(--selected)}.sidebar-bottom{padding:8px 8px 10px;border-top:1px solid var(--line);max-height:43%;overflow:auto}.sidebar-section-head{font-size:10px;letter-spacing:1px;color:var(--muted);font-weight:700;padding:12px 8px 6px}.side-link{padding:9px 8px;display:flex;gap:9px;align-items:center;text-align:left;border-radius:4px;width:100%;font-size:11px;color:var(--secondary)}.side-link span{font-weight:700;color:var(--accent);min-width:19px}.sidebar-version{height:27px;border-top:1px solid var(--subline);padding:7px 10px;font-size:10px;color:var(--muted);display:flex;justify-content:space-between}
.dragline{background:var(--line);flex:none;z-index:2;transition:background .12s}.dragline:hover,.dragline.dragging{background:var(--accent)}.dragline.vertical{width:5px;cursor:col-resize}.dragline.horizontal{height:5px;cursor:row-resize}.restore-sidebar,.restore-aux{background:var(--btn);color:var(--secondary);flex:none;width:25px;border-right:1px solid var(--line)}.main-panels{display:flex;flex:1;min-width:0;overflow:hidden}.panel{display:flex;flex-direction:column;min-width:0;background:var(--pane)}.auxiliary{width:43%;flex:none;border-right:1px solid var(--line)}.budget-panel{flex:1;min-width:0}.pane-tabs{height:38px;display:flex;align-items:stretch;gap:1px;padding:5px 6px 0;background:var(--head);border-bottom:1px solid var(--line);flex:none;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;white-space:nowrap}.tab{padding:7px 12px;background:var(--pane2);color:var(--secondary);border:1px solid var(--line);border-bottom:0;border-radius:4px 4px 0 0;white-space:nowrap;font-size:12px}.tab.active{background:var(--pane);color:var(--txt);border-top:2px solid var(--accent);padding-top:6px;font-weight:600}.auxiliary-tabs .tab{font-size:11px;padding-left:10px;padding-right:10px}.auxiliary-tabs .mini-icon{margin:4px 2px 4px auto;flex:none}.viewer-toolbar{height:43px;flex:none;display:flex;align-items:center;padding:5px 9px;gap:5px;border-bottom:1px solid var(--line);overflow-x:auto;white-space:nowrap}.viewer-toolbar select{font-size:11px;max-width:92px;padding:5px}.small-btn{background:var(--btn);border:1px solid var(--line);padding:5px 9px;border-radius:4px;white-space:nowrap;font-size:11px;color:var(--txt)}.small-btn:hover{border-color:var(--secondary)}.red-btn{background:var(--accent-dark);border-color:var(--accent);color:var(--txt)}.viewer-body{flex:1;overflow:hidden;min-height:0;display:flex;flex-direction:column}.aux-footer{height:28px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 12px;border-top:1px solid var(--line);font-size:10px;color:var(--muted)}.badge-small{font-size:9px;letter-spacing:.5px;border:1px solid var(--line);border-radius:3px;padding:2px 5px;color:var(--secondary)}
.viewer-stage{position:relative;flex:1;min-height:0;overflow:hidden;background:radial-gradient(ellipse at 46% 36%,#293541,#111820 76%)}body[data-theme="light"] .viewer-stage{background:radial-gradient(ellipse at 46% 36%,#dde6ed,#bccbd5 90%)}.viewer-stage svg{width:100%;height:100%;display:block}.viewer-caption{position:absolute;top:12px;left:12px;background:rgba(7,13,19,.72);padding:8px 11px;border-radius:4px;border-left:2px solid #d34b4b;color:#edf2f5;font-size:11px;box-shadow:0 3px 12px rgba(0,0,0,.25);pointer-events:none}.viewer-caption small{display:block;color:#aebdc9;margin-top:4px}.view-orientation{position:absolute;right:14px;top:14px;border:1px solid #6b8295;background:rgba(8,20,32,.77);border-radius:5px;color:#dbe7fa;padding:7px;font-size:11px;pointer-events:none}.viewer-info-panel{background:var(--panel);border-top:1px solid var(--line);flex:none;max-height:220px;min-height:140px;overflow:auto}.viewer-info-header{font-size:11px;font-weight:700;padding:8px 12px;color:var(--secondary);border-bottom:1px solid var(--subline)}.property-row{display:flex;justify-content:space-between;gap:8px;padding:5px 12px;font-size:11px;border-bottom:1px solid var(--subline)}.property-row span{color:var(--secondary)}.property-row b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-tools{display:flex;gap:6px;padding:8px;border-bottom:1px solid var(--subline);align-items:center}.viewer-tools select{flex:1;width:50px}.viewer-note{font-size:11px;color:var(--muted);padding:8px 12px;line-height:1.45}.svg-selectable{cursor:pointer}.svg-selectable:hover{filter:drop-shadow(0 0 4px #6dc4ff)}.viewer-blank{display:flex;align-items:center;justify-content:center;flex:1;flex-direction:column;gap:8px;color:var(--secondary);padding:25px;text-align:center}.viewer-blank strong{font-size:16px}.viewer-blank small{line-height:1.5;max-width:400px}.comparison-select{padding:10px;border-bottom:1px solid var(--line)}.comparison-select select{width:100%}.compare-list{flex:1;overflow:auto;padding:10px}.compare-row{display:flex;justify-content:space-between;padding:9px;border-bottom:1px solid var(--subline);gap:10px}.compare-row b{font-weight:500}
#projectTabs{height:38px;padding-left:7px}.project-tab{min-width:115px;max-width:220px;padding:7px 10px;display:flex;align-items:center;gap:5px;background:var(--pane2);border:1px solid var(--line);border-bottom:0;border-radius:5px 5px 0 0;font-size:11px;color:var(--secondary);cursor:pointer}.project-tab.active{border-top:2px solid var(--accent);padding-top:6px;background:var(--pane);color:var(--txt)}.project-tab .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-tab .close{font-size:13px;margin-left:auto;color:var(--muted);padding:0 3px}.project-tab .close:hover{color:var(--accent)}.project-tab .dirty{color:var(--accent)}.project-tab-plus{padding:0 9px;color:var(--secondary);font-size:19px}.budget-navigation{display:flex;align-items:center;gap:7px;height:43px;padding:0 10px;border-bottom:1px solid var(--line);flex:none;background:var(--panel)}.breadcrumbs{display:flex;align-items:center;gap:4px;overflow:auto;white-space:nowrap;flex:1;font-size:11px}.breadcrumbs button{color:var(--secondary);padding:5px 4px;border-radius:3px}.breadcrumbs button:last-child{color:var(--txt);font-weight:650}.breadcrumbs button:hover{background:var(--highlight)}.crumb-arrow{color:var(--muted)}.work-actions{display:flex;gap:5px;flex:none}
.budget-work{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.budget-grid-pane{height:43%;min-height:105px;display:flex;flex-direction:column;background:var(--pane)}.section-caption{height:29px;display:flex;gap:10px;justify-content:space-between;align-items:center;padding:0 11px;border-bottom:1px solid var(--line);background:var(--panel);color:var(--secondary);font-size:11px;flex:none}.section-caption strong{font-size:10px;letter-spacing:.55px;color:var(--txt)}.section-caption small{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:10px}.section-controls{display:flex;align-items:center;gap:5px}.table-scroller{flex:1;overflow:auto;min-height:0}.data-table{border-collapse:collapse;white-space:nowrap;width:100%;font-size:11px}.data-table th{background:var(--pane2);position:sticky;top:0;z-index:1;color:var(--secondary);font-weight:600;text-align:left;line-height:1.25}.data-table th,.data-table td{padding:7px 9px;border-bottom:1px solid var(--subline);border-right:1px solid var(--subline)}.data-table th:last-child,.data-table td:last-child{border-right:0}.data-table tbody tr:nth-child(even){background:var(--row-alt)}.data-table tbody tr:hover{background:var(--highlight)}.data-table tbody tr.selected{background:var(--selected)}.data-table tbody tr.selected td:first-child{box-shadow:inset 3px 0 var(--accent)}.data-table .right{text-align:right;font-variant-numeric:tabular-nums}.data-table .code{color:var(--secondary);font-weight:600}.data-table .item-type{color:#62badd}.data-table .chapter-type{color:#e3b55a}.editable-row{min-height:38px;display:flex;align-items:center;gap:6px;padding:5px 10px;border-top:1px solid var(--line);background:var(--panel);font-size:11px;flex:none;overflow-x:auto}.editable-row input{height:26px;padding:3px 5px;font-size:11px}.editable-row input.code-edit{width:80px}.editable-row input.title-edit{flex:1;min-width:125px}.editable-row input.number-edit{width:80px}.editable-row label{white-space:nowrap;color:var(--secondary)}.editable-row .text-info{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.description-pane{height:17%;min-height:66px;display:flex;flex-direction:column;overflow:hidden}.long-description{overflow:auto;white-space:pre-wrap;line-height:1.55;padding:11px 13px;color:var(--secondary);font-size:12px;flex:1}.detail-pane{flex:1;min-height:110px;display:flex;flex-direction:column;overflow:hidden}.detail-tabbar{height:34px;display:flex;gap:2px;align-items:end;padding-left:9px;background:var(--head);border-bottom:1px solid var(--line);flex:none}.detail-tabbar .tab{font-size:11px;padding:7px 12px}.detail-filler{flex:1}.measure-legend{font-size:10px;padding:9px 8px;color:var(--muted);white-space:nowrap}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:6px;margin-right:2px}.dot.gray{background:#9da5ad}.dot.blue{background:#4cacf4}.dot.purple{background:#be8ee9}.dot.green{background:#60ba7d}.dot.orange{background:#e69b45}.detail-content{overflow:auto;flex:1;padding:8px 9px}.detail-empty{color:var(--muted);font-size:12px;padding:22px 13px;text-align:center}.detail-toolbar{display:flex;gap:6px;align-items:center;padding:0 0 8px}.detail-toolbar .detail-summary{color:var(--secondary);font-size:11px;margin-left:auto}.measures-table td input{width:100%;min-width:42px;padding:4px;background:transparent;border:1px solid transparent;text-align:right}.measures-table td input:focus{border-color:var(--accent);background:var(--input)}.measures-table .measure-comment{min-width:140px;text-align:left}.measures-table td{padding:3px 4px}.measures-table td:first-child{padding-left:9px}.measures-table tr.origin-manual{background:rgba(135,148,158,.1)!important}.measures-table tr.origin-cad{background:rgba(44,138,205,.18)!important}.measures-table tr.origin-ifc{background:rgba(151,92,198,.18)!important}.measures-table tr.origin-document{background:rgba(63,158,92,.18)!important}.measures-table tr.origin-bc3{background:rgba(230,155,69,.16)!important}.measures-table tr.origin-manual td:first-child{border-left:3px solid #aab2b9}.measures-table tr.origin-cad td:first-child{border-left:3px solid #59a8ed}.measures-table tr.origin-ifc td:first-child{border-left:3px solid #bb86df}.measures-table tr.origin-document td:first-child{border-left:3px solid #62c78a}.measures-table tr.origin-bc3 td:first-child{border-left:3px solid #e69b45}.measures-table .partial{font-weight:700;color:var(--txt)}.mini-action{border:1px solid var(--line);border-radius:3px;padding:4px 7px;background:var(--btn);font-size:11px}.detail-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.detail-card{border:1px solid var(--line);border-radius:5px;background:var(--panel);padding:11px}.detail-card .key{color:var(--secondary);font-size:11px}.detail-card .value{font-weight:700;margin-top:6px;font-size:17px}.decomp-table .resource-nested{color:#c2a2e9}.clause-item{padding:9px;margin:5px 0;border-radius:5px;border:1px solid var(--line);background:var(--panel);display:flex;gap:10px;align-items:center}.clause-item label{flex:1}.clause-item p{margin:4px 0;color:var(--muted);font-size:11px}
.statusbar{height:28px;flex:none;background:var(--head);display:flex;align-items:center;gap:8px;padding:0 14px;border-top:1px solid var(--line);color:var(--secondary);font-size:10px;white-space:nowrap;overflow:hidden}.status-led{width:8px;height:8px;border-radius:50%;background:#4fbe83;box-shadow:0 0 6px #4fbe8366}.status-spacer{flex:1}.status-divider{color:var(--line)}#statusFile{max-width:33%;text-overflow:ellipsis;overflow:hidden}
.modal-layer{position:fixed;z-index:20;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(3,7,12,.73);padding:25px;backdrop-filter:blur(3px)}.modal-shell{width:min(860px,96vw);max-height:min(85vh,900px);background:var(--panel);display:flex;flex-direction:column;border-radius:8px;box-shadow:0 18px 80px rgba(0,0,0,.55);border:1px solid var(--line);overflow:hidden}.modal-header{height:51px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;background:var(--head);border-bottom:2px solid var(--accent);flex:none}.modal-header strong{font-size:14px}.modal-body{padding:20px;overflow:auto;flex:1}.modal-footer{height:auto;min-height:58px;display:flex;justify-content:flex-end;align-items:center;gap:9px;padding:10px 18px;background:var(--head);border-top:1px solid var(--line);flex:none}.modal-footer button{padding:8px 14px;border-radius:4px;border:1px solid var(--line);background:var(--btn)}.modal-footer .primary-btn{background:var(--accent);border-color:var(--accent);color:white}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}.form-grid label{display:flex;flex-direction:column;gap:5px;color:var(--secondary);font-size:11px}.form-grid input,.form-grid select,.form-grid textarea{width:100%;color:var(--txt)}.form-grid .wide{grid-column:1/-1}.form-section-title{grid-column:1/-1;border-bottom:1px solid var(--line);padding:10px 0 6px;font-size:12px;color:var(--txt);font-weight:700;margin-top:5px}.form-help{color:var(--secondary);font-size:11px;line-height:1.6}.modal-body h3{margin:2px 0 12px;font-size:14px}.modal-body h4{margin:13px 0 8px}.modal-body p{line-height:1.65;color:var(--secondary)}.modal-body ul{line-height:1.85;color:var(--secondary)}.modal-body .note-warning{border-left:3px solid #edb55e;background:rgba(235,176,75,.08);padding:9px 12px;font-size:11px;margin:10px 0;line-height:1.5}.modal-body .theme-toggle{display:flex;gap:15px;align-items:center;margin:8px 0}.modal-body .theme-toggle button{background:var(--btn);padding:12px 20px;border:1px solid var(--line);border-radius:5px}.modal-body .theme-toggle button.theme-active{outline:2px solid var(--accent)}.letterhead-setting{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:18px;align-items:stretch}.letterhead-picker{min-width:0}.letterhead-loaded{display:block;color:var(--secondary);margin-top:5px}.letterhead-preview{min-height:112px;max-height:140px;border:1px dashed var(--line);border-radius:6px;background:var(--input);display:flex;align-items:center;justify-content:center;padding:8px;overflow:hidden;color:var(--muted);font-size:10px;text-align:center}.letterhead-preview.has-image{border-style:solid}.letterhead-preview img{display:block;width:100%;height:100%;max-height:122px;object-fit:contain;object-position:center;background:white;border-radius:3px}@media(max-width:650px){.letterhead-setting{grid-template-columns:1fr}.letterhead-preview{min-height:100px;max-height:130px}}.mono{font-family:Consolas,'Courier New',monospace;color:var(--txt)}.modal-body .simple-list{display:grid;gap:8px}.modal-body .simple-row{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:9px 10px;border:1px solid var(--line);border-radius:5px}.modal-body .simple-row small{color:var(--muted)}.modal-body .scrollcode{padding:14px;background:var(--input);border:1px solid var(--line);max-height:220px;overflow:auto;white-space:pre-wrap;font-family:Consolas,monospace;font-size:11px}
#toastArea{position:fixed;right:18px;bottom:42px;display:flex;flex-direction:column;gap:7px;z-index:50;pointer-events:none}.toast{max-width:460px;min-width:270px;padding:12px 15px;border:1px solid var(--line);border-left:3px solid #52b88d;background:var(--panel);border-radius:5px;box-shadow:0 7px 30px var(--shadow);font-size:12px;line-height:1.5;pointer-events:auto}.toast.warning{border-left-color:#e8b05c}.toast.error{border-left-color:#e24a4a}
@media(max-width:1350px){.brand-name{font-size:17px}.branding{width:328px}.main-menu button{min-width:54px;padding:4px 5px;font-size:9px}.main-menu button[data-action="certs"]{min-width:85px}.auxiliary-tabs .tab{padding-left:6px;padding-right:6px}.measure-legend{display:none}.edition{display:none}.budget-navigation .work-actions .small-btn{padding:4px 6px}}@media(max-width:1000px){.brand-sub{letter-spacing:1px}.branding{width:280px}.sidebar{width:207px}.auxiliary{width:38%}.top-project-text small{display:none}.viewer-info-panel{max-height:160px}.viewer-caption{font-size:10px}.section-caption small{display:none}}@media print{body,#app{display:none!important}.print-report{display:block!important}}

.signature-buttons{display:flex;gap:3px;padding:1px 0}.signature-buttons button{border:1px solid var(--line);background:var(--btn);padding:2px 9px;border-radius:3px;color:var(--txt)}

/* v0.1.3: presupuesto principal a la izquierda y visor/presupuesto a la derecha. */
.brand-sub{letter-spacing:.35px!important;font-size:10px}.brand-sub strong{color:var(--txt);font-weight:750}.brand-sub span{color:var(--accent);font-weight:800}
#budgetPanel{flex:none;width:calc(50% - 2.5px);border-right:1px solid var(--line)}
#auxPanel{flex:1;width:auto!important;min-width:0;border-right:0}
#secondaryBudgetPanel{display:flex;flex-direction:column;min-height:0;min-width:0;height:100%;width:100%!important;max-width:100%;flex:1 1 100%;align-self:stretch}
#secondaryBudgetPanel .pane-tabs{height:34px;padding-top:3px}
#secondaryBudgetPanel .budget-navigation{height:38px;padding:0 6px}
#secondaryBudgetPanel .budget-work{flex:1}
#secondaryBudgetPanel .budget-grid-pane{height:43%}
#secondaryBudgetPanel .description-pane{height:17%}
.auxiliary .viewer-body:has(#secondaryBudgetPanel){overflow:hidden}
#secondaryBudgetPanel .copy-parallel{font-size:10px}
#secondaryBudgetPanel .data-table{font-size:10px}
#secondaryBudgetPanel .editable-row{font-size:10px}
#secondaryBudgetPanel .pane-tabs{flex:none}
.pane-focus{box-shadow:inset 0 2px var(--accent)}
.copy-parallel{border-color:var(--accent);color:var(--txt)}
.detail-copy{margin:3px 8px 4px 4px;font-size:10px;align-self:center;padding:3px 6px}
.data-table tbody tr.multi-selected{background:var(--selected)!important}
.data-table tbody tr.multi-selected td:first-child{box-shadow:inset 3px 0 var(--accent)}
.data-table tbody tr.row-anchor td:first-child{box-shadow:inset 4px 0 #f49a51}
.kind-label{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.kind-label .kind-icon{font-size:14px;line-height:1;font-family:'Segoe UI Emoji','Segoe UI Symbol',sans-serif}
.kind-label.resource-labor{color:#e2bc71}.kind-label.resource-machine{color:#84bbdb}.kind-label.resource-material{color:#dd9c86}.kind-label.resource-aux{color:#bb9cdd}.kind-label.resource-other{color:#e4ac75}
#secondaryBudgetPanel .work-actions{flex-wrap:nowrap}
#secondaryBudgetPanel .work-actions .small-btn{padding:3px 5px}
.copy-hint{padding:6px 11px;font-size:10px;color:var(--muted);background:var(--panel);border-top:1px solid var(--line)}
@media(max-width:1450px){.copy-parallel{font-size:9px;padding:3px 5px}.brand-sub{font-size:9px}}
.main-panels.single-column #budgetPanel{width:100%!important;flex:1}

.restore-primary{background:var(--btn);color:var(--secondary);flex:none;width:25px;border-right:1px solid var(--line)}
.main-panels.primary-hidden #auxPanel{flex:1!important;width:100%!important}

/* v0.1.4 · Explorador jerárquico de presupuestos y certificaciones. */
.sidebar-tree{padding:5px 5px 10px 5px;overscroll-behavior:contain}
.sidebar-tree .file-node{margin:2px 1px 8px 1px;border-left:2px solid var(--line);padding:2px 0 4px;border-radius:3px}
.sidebar-tree .tree-line{display:flex;align-items:center;min-width:0;min-height:28px;padding-left:calc(var(--tree-level,0) * 12px);border-radius:3px;position:relative}
.sidebar-tree .tree-line:hover{background:var(--highlight)}
.sidebar-tree .tree-expander,.sidebar-tree .tree-expander-spacer{display:inline-flex;align-items:center;justify-content:center;flex:0 0 19px;width:19px;height:27px;font-size:12px;line-height:1;color:var(--secondary);padding:0}
.sidebar-tree .tree-expander:hover{color:var(--txt);background:var(--btn);border-radius:3px}
.sidebar-tree .tree-target{display:flex;align-items:center;gap:5px;flex:1;min-width:0;padding:5px 4px 5px 0;color:var(--secondary);font-size:11px;text-align:left;white-space:nowrap;min-height:28px;border-radius:2px}
.sidebar-tree .tree-target:hover{color:var(--txt)}
.sidebar-tree .tree-target .tree-node-icon{width:18px;flex:0 0 18px;font-size:12px;text-align:center;line-height:1.2}
.sidebar-tree .tree-target .tree-node-code{font-family:Consolas,'Courier New',monospace;font-weight:600;flex:none;max-width:90px;overflow:hidden;text-overflow:ellipsis;color:var(--secondary);font-size:10px}
.sidebar-tree .tree-target .tree-node-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-tree .tree-target .tree-count{color:var(--muted);font-size:10px;padding-right:6px;flex:none}
.sidebar-tree .tree-file{min-height:33px}
.sidebar-tree .tree-file .file-header{padding:5px 4px 5px 0;margin:0;font-size:11px;gap:5px;font-weight:700}
.sidebar-tree .tree-file .file-header .file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-tree .tree-section .tree-target{font-weight:700;color:var(--txt)}
.sidebar-tree .tree-certificate .tree-target{font-weight:600;color:var(--secondary)}
.sidebar-tree .tree-active{background:var(--selected)!important;box-shadow:inset 3px 0 var(--accent)}
.sidebar-tree .tree-active .tree-target{color:var(--txt);font-weight:650}
.sidebar-tree .tree-section-active:not(.tree-active)>.tree-target{color:var(--accent)}
.sidebar-tree .tree-cert-active:not(.tree-active)>.tree-target{color:var(--txt)}
.sidebar-tree .tree-empty{padding:7px 12px 7px 26px;font-size:10px;color:var(--muted);line-height:1.5}
.sidebar-tree .tree-expander:focus-visible,.sidebar-tree .tree-target:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}

/* v0.1.6 · Columnas principales equilibradas al 50 %, ajuste manual y reinicio. */
.pane-header-buttons{display:inline-flex;align-items:center;gap:4px;flex:none;margin-left:auto;
  padding:1px 2px 1px 7px;align-self:stretch;position:sticky;right:0;z-index:3;background:var(--head)}
.pane-header-buttons .mini-icon,.auxiliary-tabs .pane-header-buttons .mini-icon{
  flex:none;margin:0;align-self:center;min-width:23px;min-height:22px}
/* v0.1.6: icono vectorial, centrado y siempre contenido en el boton. */
.pane-header-buttons .column-equalizer{display:inline-flex;align-items:center;justify-content:center;
  flex:0 0 26px;width:26px;min-width:26px;height:24px;min-height:24px;
  padding:2px;line-height:1;overflow:hidden;letter-spacing:normal}
.column-equalizer .equal-columns-icon{display:block;flex:none;width:18px;height:18px;
  max-width:100%;max-height:100%;pointer-events:none}
.column-equalizer:hover{border-color:var(--accent);color:var(--txt)}

/* El presupuesto paralelo se estira hasta los bordes de su columna;
   solo las tablas tienen desplazamiento horizontal si el espacio es escaso. */
#secondaryBudgetPanel>.budget-navigation,#secondaryBudgetPanel>.budget-work,#secondaryBudgetPanel>.pane-tabs{width:100%;max-width:100%;min-width:0}
#secondaryBudgetPanel .table-scroller{width:100%;max-width:100%;min-width:0}
/* CAD de consulta y mediciones vinculadas · v0.1.7 */
.cad-workbench{display:flex;flex-direction:column;min-width:0;min-height:0;height:100%;overflow:hidden;color:var(--txt)}
.cad-empty{padding:40px 22px;margin:auto;text-align:center;color:var(--secondary);max-width:410px}.cad-empty h3{color:var(--txt)}
.cad-top{flex:none;display:flex;gap:4px;align-items:center;padding:5px 7px;border-bottom:1px solid var(--line);min-height:37px}
.cad-top .cad-file{font-size:10px;color:var(--secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:40px}
.cad-top button,.cad-filters button,.cad-color button{font-size:10px;color:var(--txt);padding:4px 6px;border:1px solid var(--line);border-radius:3px;background:var(--btn);white-space:nowrap}
.cad-filters{flex:none;max-height:158px;overflow:auto;padding:8px;background:var(--pane2);border-bottom:1px solid var(--line);font-size:10px}
.cad-filters>button{margin-left:6px}.cad-filter-row{display:flex;gap:4px;align-items:center;margin-top:5px}
.cad-filter-row select,.cad-filter-row input{padding:5px 2px;min-width:0;font-size:11px;height:27px;border:1px solid var(--line);background:var(--pane);color:var(--txt)}
.cad-filter-row select:first-child{width:48px}.cad-filter-row select:nth-child(2){max-width:100px}.cad-filter-row input{flex:1;width:50px}
.cad-main{display:flex;flex:1;min-height:96px;min-width:0;overflow:hidden}
.cad-plan{position:relative;flex:1;min-width:0;background:#07111b;overflow:hidden;touch-action:none}
.cad-plan svg{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}
.cad-entity{cursor:pointer;pointer-events:stroke}.cad-entity:hover{filter:drop-shadow(0 0 5px #e8db70)}
.cad-nav-hint{position:absolute;left:7px;bottom:7px;font-size:9px;color:#c7d9e6;background:#091723b8;padding:5px 7px;border-radius:3px;pointer-events:none}
.cad-selection-window{position:absolute;z-index:5;pointer-events:none;border:1px solid #a7e4ff;background:rgba(82,169,224,.16)}.cad-selection-window.crossing{border-style:dashed;border-color:#67df8b;background:rgba(73,202,102,.11)}
.cad-inspector{width:195px;min-width:145px;max-width:45%;display:flex;flex-direction:column;min-height:0;overflow:hidden;border-left:1px solid var(--line);background:var(--pane)}
.cad-inspector-head{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.6px;color:var(--secondary);font-weight:700;padding:8px;border-bottom:1px solid var(--line)}
.cad-layers{overflow:auto;min-height:42px;max-height:30%;border-bottom:1px solid var(--line);padding:5px}
.cad-layers label{display:flex;align-items:center;gap:5px;font-size:10px;min-width:0;padding:3px 2px;white-space:nowrap;cursor:pointer}
.cad-layers label input{width:13px;accent-color:var(--accent);flex:none}.cad-layers label span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cad-properties{flex:1;overflow:auto;min-height:50px}.cad-empty-props{font-size:11px;padding:12px;color:var(--muted);line-height:1.4}
.cad-prop{display:flex;gap:7px;align-items:baseline;justify-content:space-between;padding:5px 8px;border-bottom:1px solid var(--subline);font-size:10px}
.cad-prop span{color:var(--secondary);max-width:60%}.cad-prop b{font-weight:600;overflow-wrap:anywhere;text-align:right}
.cad-draggable{color:var(--accent);cursor:grab;border-bottom:1px dashed var(--accent);user-select:none}.cad-draggable:hover{filter:brightness(1.2)}
.cad-type-choice{display:flex;flex-direction:column;font-size:10px;gap:4px;padding:8px;border-bottom:1px solid var(--line)}.cad-type-choice select{font-size:10px;width:100%;height:27px;background:var(--btn);color:var(--txt)}
.cad-color{padding:7px;display:flex;gap:6px;align-items:center;border-top:1px solid var(--line)}.cad-color label{display:flex;align-items:center;gap:5px;font-size:10px}.cad-color input{width:29px;height:24px;padding:0}
.cad-measure-builder{flex:none;padding:7px;border-top:1px solid var(--line);background:var(--pane2);overflow:auto;max-height:235px}
.cad-measure-head{display:flex;justify-content:space-between;gap:6px;font-size:10px;font-weight:700;color:var(--secondary);padding-bottom:6px}.cad-measure-head span{font-weight:400;color:var(--muted)}
.cad-measure-grid{display:grid;grid-template-columns:minmax(115px,2fr) repeat(4,minmax(48px,1fr)) minmax(100px,1fr);gap:5px}
.cad-measure-grid label{min-width:0;display:flex;flex-direction:column;gap:3px;font-size:10px;color:var(--secondary)}
.cad-measure-grid input{width:100%;min-width:0;height:28px;padding:4px 5px;border:1px solid var(--line);border-radius:3px;background:var(--pane);color:var(--txt);font-size:11px}
.cad-measure-grid .bound input{border-color:#278dcc;background:color-mix(in srgb,var(--pane) 85%,#2882ad)}.cad-measure-grid .bound small{font-size:9px;color:#51abe3}
.cad-measure-grid .formula{grid-column:1 / 4}.cad-measure-grid .total{grid-column:4 / 6;align-items:flex-start}
.cad-measure-grid output{font-size:14px;font-weight:700;color:var(--txt);padding:4px 0}.cad-measure-grid output.bad{font-size:10px;color:var(--accent)}
.cad-transfer{grid-column:6;min-width:0;background:var(--accent-dark);color:var(--txt);border:1px solid var(--accent);padding:5px 2px;border-radius:4px;font-size:10px;white-space:normal}
.measure-actions{white-space:nowrap;min-width:67px}.measure-actions span{font-size:12px;margin-right:1px}
@media(max-width:1450px){.cad-inspector{width:165px}.cad-measure-head span{display:none}.cad-measure-grid{grid-template-columns:minmax(95px,2fr) repeat(4,minmax(43px,1fr)) minmax(70px,1fr)}.cad-transfer{font-size:9px}}
@media(max-width:1100px){.cad-inspector{width:145px}.cad-measure-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.cad-measure-grid .desc{grid-column:1 / -1}.cad-measure-grid .formula{grid-column:1 / 3}.cad-measure-grid .total{grid-column:3}.cad-measure-grid .cad-transfer{grid-column:4}}

/* CAD v0.1.8: cambios locales y unidades explícitas; visores estrechos */
.cad-units{display:flex;flex-direction:column;gap:4px;padding:7px;font-size:10px;font-weight:600;color:var(--secondary);border-bottom:1px solid var(--line)}
.cad-units select{height:28px;max-width:100%;min-width:0;border:1px solid var(--line);background:var(--pane2);color:var(--txt);border-radius:3px;font-size:11px;padding:3px}
.cad-caution{color:#e1aa53;font-size:10px;line-height:1.4;padding:6px 8px;border-left:2px solid #d38e28;background:rgba(180,110,30,.09)}
.cad-top{flex-wrap:wrap;gap:4px}
.cad-top .cad-file{flex-basis:100%;min-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cad-main,.cad-inspector{min-height:0}
.cad-inspector{flex-shrink:0}
@media(max-width:1200px){.cad-top button{padding:3px 4px;font-size:9px}.cad-inspector{width:150px;max-width:48%}}

/* v0.1.9 · Filtros CAD guiados, revisión de vínculos, fórmulas y reordenación estable */
.cad-filter-row select[data-fval]{min-width:95px;flex:1;max-width:none;width:115px}
.cad-filter-row select[data-ffield]{width:100px;flex:0 0 95px}
.cad-filter-row select[data-fjoin]{flex:0 0 42px;width:42px}
.cad-filter-row>span{flex:0 0 42px;text-align:center}
.cad-review-banner{flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:7px;padding:7px 9px;border-top:2px solid var(--accent);border-bottom:1px solid var(--line);background:var(--panel);font-size:11px;line-height:1.35}
.cad-review-banner strong{color:var(--accent);font-size:11px}
.cad-review-banner span{flex:1;min-width:150px}
.cad-review-banner button{padding:5px 7px;background:var(--btn);color:var(--txt);border:1px solid var(--line);border-radius:4px;cursor:pointer}
.cad-review-banner small{color:var(--muted)}
.viewer-toolbar #associatedModels{max-width:185px;min-width:110px;flex:0 1 170px}
.viewer-toolbar #openAssociated{white-space:nowrap}
.measure-horizontal{width:100%;max-width:100%;overflow:auto}
.measures-table{min-width:770px}
.measures-table td input.measure-formula{min-width:95px;font-family:Consolas,'Courier New',monospace;text-align:left}
.measures-table td input.measure-head-text{text-align:center;color:var(--txt);font-weight:600;min-width:52px}
.measures-table tr.measure-heading{background:rgba(140,125,80,.21)!important;outline:1px solid rgba(205,160,82,.5)}
.measures-table .header-tag{font-size:9px;color:var(--muted)}
.measures-table .drag-handle{cursor:grab;text-align:center;min-width:25px;color:var(--secondary);user-select:none}
.data-table tr[data-node]{cursor:grab}
.data-table tr[data-node] td:first-child::before{content:'⠿';font-size:11px;color:var(--muted);padding-right:5px;opacity:.5}
.data-table tr[data-node]:hover td:first-child::before{opacity:1}
.data-table tr.dragging-row{opacity:.5}
.data-table tr.drop-before td{box-shadow:inset 0 3px var(--accent)}
.data-table tr.drop-after td{box-shadow:inset 0 -3px var(--accent)}
.data-table tr.multi-selected{background:var(--selected)!important}
@media(max-width:1100px){.cad-filter-row select[data-ffield]{flex-basis:75px}.cad-filter-row select[data-fval]{min-width:90px}}

/* v0.1.9: cabeceras ordenables del presupuesto, también en el paralelo. */
.budget-table .budget-sort-btn{background:transparent;border:0;color:inherit;font:inherit;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:5px;padding:4px 2px;margin:-4px -2px;min-width:100%;text-align:left;white-space:nowrap}
.budget-table .budget-sort-btn:hover,.budget-table .budget-sort-btn:focus-visible{color:var(--accent);outline:1px solid var(--accent);outline-offset:1px}
.budget-table th[aria-sort="ascending"],.budget-table th[aria-sort="descending"]{color:var(--txt);background:var(--head)}
.budget-table .sort-arrow{font-size:12px;font-weight:700;opacity:.5;flex-shrink:0}
.budget-table th[aria-sort="ascending"] .sort-arrow,.budget-table th[aria-sort="descending"] .sort-arrow{opacity:1;color:var(--accent)}

/* v0.1.11: gestor de archivos CAD/IFC y modal de inclusión al guardar */
.model-keep-list {max-height:320px;overflow-y:auto;border:1px solid var(--line);border-radius:5px;margin:10px 0;}
.model-keep-row {display:flex;align-items:flex-start;gap:12px;padding:11px 12px;border-bottom:1px solid var(--line);cursor:pointer;}
.model-keep-row:last-child {border-bottom:0;}
.model-keep-row input {margin-top:5px;flex-shrink:0;accent-color:#ba2b32;}
.model-keep-row span {display:block;min-width:0;overflow-wrap:anywhere;}
.model-keep-row small {display:block;opacity:.75;margin-top:4px;line-height:1.5;}
.modal-footer:has(#modalRemoveModelCopies) {flex-wrap:wrap;}
.model-management-actions {display:flex;justify-content:flex-end;margin-bottom:8px;}

/* v0.1.12 · Comparación explícita al sustituir CAD/IFC */
.cad-revision-scroll{max-height:min(58vh,510px);overflow:auto;border:1px solid var(--line);border-radius:4px;margin:10px 0}
.cad-revision-table{width:100%;min-width:850px;border-collapse:collapse;font-size:11px}
.cad-revision-table th{position:sticky;top:0;z-index:1;background:var(--head);white-space:nowrap}
.cad-revision-table td{vertical-align:middle;line-height:1.45;padding:9px 7px}
.cad-revision-table td small{font-size:10px;color:var(--muted);display:block;max-width:210px}
.cad-revision-table td:nth-child(2){min-width:185px}
.cad-revision-table td:nth-child(8){white-space:nowrap}
.cad-revision-table input[type=checkbox]{accent-color:var(--accent);height:16px;width:16px}
.cad-revision-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0 8px}
.cad-revision-actions span{margin-left:auto;font-size:11px;color:var(--secondary)}
.cad-diff-plus{color:#e59769;font-weight:700}.cad-diff-minus{color:#77bc97;font-weight:700}

/* v0.1.13: permite seleccionar un sombreado clicando dentro del relleno. */
.cad-entity[data-hatch-object="1"]{pointer-events:visiblePainted}
.cad-entity[data-hatch-object="1"] [data-hatch-fill]{pointer-events:visiblePainted}

/* v0.1.14 · Presupuesto principal único y presupuestos secundarios con guardado local. */
.pane-tabs .main-budget-mark{font-size:9px;border:1px solid var(--accent);color:var(--accent);padding:1px 4px;border-radius:3px}
#secondaryBudgetPanel .right-budget-save{margin-left:auto;display:inline-flex;align-items:center;gap:3px;flex:none;padding:0 5px;border-left:1px solid var(--line)}
#secondaryBudgetPanel .right-budget-save .mini-icon{font-size:11px;min-width:25px;padding:2px}
.cad-diagnostics{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);margin:4px 6px;padding:8px 10px;color:var(--secondary);font-size:11px;line-height:1.7}
.cad-diagnostics b{color:var(--txt)} .cad-diagnostics button{float:right;font-size:10px;border:1px solid var(--line);background:var(--btn);padding:2px 6px}

/* v0.1.15: herramientas de edición y búsqueda */
.budget-utilities{display:flex;align-items:center;gap:4px;flex-wrap:wrap;flex:none;padding:5px 8px;background:var(--pane2);border-bottom:1px solid var(--line);min-height:33px}
.budget-utilities button{font-size:10px;min-height:24px;padding:3px 6px;white-space:nowrap}
.utilities-label{font-size:9px;font-weight:750;letter-spacing:.5px;color:var(--secondary);margin-right:4px}
.utilities-separator{height:19px;border-left:1px solid var(--line);margin:0 3px}
.delete-choices{display:grid;gap:10px;margin:12px 0}
.delete-choices label{display:grid;grid-template-columns:20px 1fr;column-gap:6px;border:1px solid var(--line);border-radius:5px;background:var(--pane2);padding:12px;cursor:pointer}
.delete-choices label input{grid-row:1 / 3;width:16px;margin:1px 0}
.delete-choices label small{grid-column:2;font-size:11px;color:var(--muted);margin-top:4px}
.table-export-bar{display:flex;justify-content:flex-end;align-items:center;gap:6px;padding:2px 6px;background:var(--pane2);border-bottom:1px solid var(--line);position:relative;left:0;min-height:27px}
.table-export-bar .small-btn{font-size:10px;line-height:1.3;padding:3px 7px;color:var(--txt);border-color:var(--accent)}
.search-controls{display:grid;grid-template-columns:repeat(4,minmax(115px,1fr));gap:7px;padding:10px 8px;border-bottom:1px solid var(--line)}
.search-controls label{display:flex;flex-direction:column;gap:4px;font-size:10px;color:var(--secondary);min-width:0}
.search-controls input,.search-controls select{min-width:0;width:100%;height:28px;background:var(--pane);color:var(--txt);border:1px solid var(--line);border-radius:3px;padding:4px}
.search-presets{display:flex;flex-wrap:wrap;gap:5px;align-items:center;padding:5px 8px;border-bottom:1px solid var(--line)}
.search-presets button{font-size:10px}.search-presets button.active{border-color:var(--accent);color:var(--accent)}
.search-results{min-width:0;overflow:auto;max-height:100%;flex:1}.search-results tr[data-search-code]{cursor:pointer}.search-results tr:hover{background:var(--hover)}
.search-detached{color:#d69d38}.search-status{display:flex;gap:9px;font-size:10px;color:var(--secondary);padding:5px 8px}
@media(max-width:950px){.search-controls{grid-template-columns:repeat(2,minmax(100px,1fr))}.utilities-label{display:none}}


/* v0.1.16 · Controles de contraer/expandir cada sección por columna. */
.section-toggle{width:24px;min-width:24px;height:22px;display:inline-flex;align-items:center;justify-content:center;
 font-size:16px;line-height:1;border:1px solid var(--line);border-radius:4px;background:var(--btn);color:var(--secondary);cursor:pointer;padding:0}
.section-toggle:hover,.section-toggle:focus-visible{border-color:var(--accent);color:var(--txt)}
.section-caption>.section-controls{margin-left:auto;min-width:0}
.section-caption .section-controls small{min-width:0}
.budget-grid-pane.is-collapsed{height:30px!important;min-height:30px!important;flex:0 0 30px!important;overflow:hidden}
.budget-grid-pane.is-collapsed>.table-scroller,.budget-grid-pane.is-collapsed>.editable-row,
.budget-grid-pane.is-collapsed>.table-export-bar{display:none!important}
.description-pane.is-collapsed{height:30px!important;min-height:30px!important;flex:0 0 30px!important}
.description-pane.is-collapsed>.long-description{display:none!important}
.detail-pane.is-collapsed{height:35px!important;min-height:35px!important;flex:0 0 35px!important}
.detail-pane.is-collapsed>.detail-content{display:none!important}
.detail-pane .detail-collapsed-title{display:none}
.detail-pane.is-collapsed .detail-tabbar>.tab,.detail-pane.is-collapsed .detail-tabbar>.copy-parallel,
.detail-pane.is-collapsed .detail-tabbar>.measure-legend{display:none!important}
.detail-pane.is-collapsed .detail-tabbar>.detail-collapsed-title{display:block;font-size:10px;font-weight:700;color:var(--secondary);margin-left:6px;margin-bottom:8px}
.detail-tabbar>.section-toggle{align-self:center;flex:none;margin:0 7px 0 1px}
/* BUSCAR: una fila equivale a una ficha de concepto; clic selecciona, doble clic localiza. */
.search-row-actions{display:flex;align-items:center;flex-wrap:wrap;gap:5px;padding:7px 9px;background:var(--pane2);border-bottom:1px solid var(--line)}
.search-row-actions b{font-size:10px;letter-spacing:.2px;color:var(--secondary);margin-right:5px}
.search-row-actions .small-btn{font-size:10px;padding:4px 6px}
.search-row-actions .search-selection-count{margin-left:auto;color:var(--secondary);font-size:10px}
.search-table tr[data-search-code]{user-select:none}
.search-table tr[data-search-code]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.search-table td:nth-child(7){font-weight:700;white-space:nowrap}
.search-usages-list{max-height:210px;overflow:auto;border:1px solid var(--line);border-radius:4px;padding:4px 10px}
.search-usage-row{display:flex;align-items:center;gap:8px;padding:7px 4px;border-bottom:1px solid var(--subline);font-size:11px}
.search-usage-row:last-child{border-bottom:0}
.search-usage-row input{accent-color:var(--accent)}
.search-usage-row small{display:block;color:var(--muted);margin-top:2px}

/* v0.1.17 · lector IFC/PSET, mediciones a origen y columnas redimensionables */
.data-table thead th{position:relative}
.column-resize-handle{position:absolute;right:-3px;top:0;bottom:0;width:8px;cursor:col-resize;z-index:9;border-right:2px solid transparent;touch-action:none}
.column-resize-handle:hover,.column-resize-handle.resizing{border-right-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}
.measure-subtotal{background:color-mix(in srgb,var(--accent) 13%,var(--panel))!important;font-weight:700}
.cert-measures-table th,.cert-measures-table td{white-space:nowrap}
.cert-measures-table input{min-width:65px;max-width:160px;width:100%;padding:5px 4px;border:1px solid var(--line);border-radius:3px;background:var(--pane);color:var(--txt);font-size:11px}
.cert-measures-table .measure-formula{min-width:100px}
.ifc-workbench{display:flex;flex-direction:column;height:100%;min-height:0;min-width:0;overflow:hidden;background:var(--pane);font-size:11px}
.ifc-toolbar{display:flex;flex:none;align-items:center;gap:6px;flex-wrap:wrap;padding:7px;border-bottom:1px solid var(--line)}
.ifc-toolbar b{flex:1;min-width:145px;max-width:240px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}
.ifc-toolbar span{color:var(--secondary);white-space:nowrap}
.ifc-toolbar button,.ifc-filters>button,.ifc-transfer{background:var(--btn);color:var(--txt);border:1px solid var(--line);border-radius:4px;padding:6px;cursor:pointer;font-size:10px}
.ifc-toolbar button:hover,.ifc-filters>button:hover,.ifc-transfer:hover{border-color:var(--accent)}
.ifc-toolbar button:disabled{opacity:.52;cursor:not-allowed}
.ifc-filters{flex:none;padding:8px;border-bottom:1px solid var(--line);background:var(--pane2);overflow:auto;max-height:185px}
.ifc-filter-grid{display:grid;grid-template-columns:repeat(5,minmax(100px,1fr));gap:5px;margin:6px 0}
.ifc-filter-grid label{font-size:10px;color:var(--secondary);display:flex;flex-direction:column;gap:3px;min-width:0}
.ifc-filter-grid select{width:100%;min-width:0;background:var(--pane);border:1px solid var(--line);color:var(--txt);padding:5px 2px;border-radius:3px}
.ifc-filters>button{margin-right:5px}
.ifc-main{display:flex;flex:1;min-height:130px;min-width:0;overflow:hidden}
.ifc-element-pane{flex:1;min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--line)}
.ifc-section-title{flex:none;background:var(--head);font-weight:700;padding:8px;color:var(--txt);font-size:10px;letter-spacing:.3px;border-bottom:1px solid var(--line)}
.ifc-info{font-size:10px;color:var(--secondary);padding:8px;line-height:1.45}
.ifc-elements{flex:1;overflow:auto;padding:5px}
.ifc-element{display:flex;align-items:center;gap:5px;width:100%;min-width:0;text-align:left;border:0;border-bottom:1px solid var(--subline);background:transparent;color:var(--txt);padding:6px 4px;cursor:pointer;font-size:10px}
.ifc-element:hover{background:var(--highlight)}.ifc-element.chosen{background:var(--selected);border-left:3px solid var(--accent)}
.ifc-element b{flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ifc-element small{color:var(--secondary);width:98px;flex:none;overflow:hidden;text-overflow:ellipsis}.ifc-element em{color:var(--muted);font-style:normal;max-width:75px;overflow:hidden;text-overflow:ellipsis}
.ifc-properties{flex:0 0 43%;min-width:170px;display:flex;flex-direction:column;overflow:hidden}
.ifc-properties-list{flex:1;overflow:auto}.ifc-pset summary{cursor:pointer;background:var(--pane2);padding:6px;font-weight:700;border-bottom:1px solid var(--line)}
.ifc-property{display:flex;align-items:center;gap:7px;justify-content:space-between;font-size:10px;border-bottom:1px solid var(--subline);padding:6px}
.ifc-property span{overflow-wrap:anywhere;min-width:0}.ifc-property b,.ifc-property strong{font-weight:650;text-align:right;overflow-wrap:anywhere}
.ifc-property .ifc-metric{color:var(--accent);cursor:grab;padding:3px 5px;background:var(--btn);border-radius:3px}
.ifc-measure-editor{flex:none;border-top:2px solid var(--accent);padding:0 0 8px;min-width:0;overflow:auto}
.ifc-measure-grid{display:grid;grid-template-columns:minmax(120px,2fr) repeat(4,minmax(52px,1fr)) minmax(90px,1.5fr) minmax(65px,1fr) auto;gap:5px;padding:7px;align-items:end}
.ifc-measure-grid label{display:flex;flex-direction:column;gap:3px;font-size:10px;color:var(--secondary)}
.ifc-measure-grid label input{min-width:0;width:100%;background:var(--pane);color:var(--txt);border:1px solid var(--line);border-radius:3px;padding:7px 4px;font-size:11px}
.ifc-drop-active{outline:2px solid var(--accent);background:var(--selected)}
.ifc-transfer{background:var(--accent);color:#fff;font-weight:700;white-space:nowrap}
.ifc-empty{margin:auto;padding:35px;text-align:center;color:var(--secondary)}
@media(max-width:1300px){.ifc-filter-grid{grid-template-columns:repeat(3,minmax(90px,1fr))}.ifc-measure-grid{grid-template-columns:repeat(4,minmax(72px,1fr))}.ifc-measure-grid label:first-child{grid-column:span 2}}

/* v0.1.18 — visor IFC 3D real, integrado con selección, filtros y PSET. */
.ifc-scene-column{flex:0 0 var(--ifc-scene-width,64%);display:flex;flex-direction:column;min-width:180px;min-height:0;overflow:hidden}
.ifc-scene-header{display:flex;gap:8px;align-items:center;justify-content:space-between;flex:none;padding:7px 10px;background:var(--head);color:var(--txt);font-size:10px;border-bottom:1px solid var(--line)}
.ifc-scene-header span{max-width:58%;color:var(--secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ifc-scene-viewport{position:relative;flex:0 1 var(--ifc-viewer-height,54%);min-height:110px;background:#626970;overflow:hidden}
.ifc-webgl-root{position:absolute;inset:0;width:100%;height:100%;overflow:hidden;touch-action:none}
.ifc-webgl-canvas{display:block;width:100%;height:100%;outline:none}
.ifc-viewer-placeholder{position:absolute;inset:0;display:grid;place-items:center;padding:15px;color:#97a8bf;font-size:12px;pointer-events:none;text-align:center}
.ifc-scene-hint{flex:none;font-size:9px;line-height:1.45;padding:5px 10px;color:var(--secondary);background:var(--pane2);border-bottom:1px solid var(--line)}
.ifc-scene-column>.ifc-elements{flex:1 1 30%;min-height:65px;overflow:auto}
.ifc-scene-column>.ifc-section-title{font-size:10px}
.ifc-properties{flex:1 1 0;min-width:160px}
@media(max-width:1150px){.ifc-scene-viewport{min-height:175px}.ifc-scene-header span{max-width:45%}.ifc-scene-hint{font-size:9px}}

/* v0.1.19: visor gris, separación adaptable de vista/lista/PSET y vínculo IFC visible. */
.ifc-resize-grip{flex:none;background:var(--line);position:relative;z-index:3;touch-action:none;transition:background .12s ease}
.ifc-resize-grip:hover,.ifc-resize-grip:focus-visible,.ifc-resize-grip.is-resizing{background:var(--accent);outline:none}
.ifc-resize-horizontal{height:7px;min-height:7px;cursor:row-resize;border-top:1px solid var(--subline);border-bottom:1px solid var(--subline)}
.ifc-resize-vertical{width:7px;min-width:7px;cursor:col-resize;border-left:1px solid var(--subline);border-right:1px solid var(--subline)}
.ifc-resize-horizontal:after,.ifc-resize-vertical:after{content:'';display:block;position:absolute;background:var(--secondary);opacity:.7;border-radius:3px}
.ifc-resize-horizontal:after{width:42px;height:2px;left:50%;top:2px;transform:translateX(-50%)}
.ifc-resize-vertical:after{width:2px;height:35px;top:50%;left:2px;transform:translateY(-50%)}
.ifc-drop.ifc-bound{border-radius:4px;box-shadow:inset 0 0 0 1px #8e68bb;background:rgba(145,93,187,.12)}
.ifc-drop.ifc-bound small{font-size:9px;color:#c7a2ed;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.ifc-linked-indicator{color:#c18cf5;border-color:#8860ae;white-space:nowrap}
.ifc-viewer-placeholder{color:#f0f2f4}


/* v0.1.20 — triedro IFC XYZ fijo en pantalla, orientado con la cámara. */
/* v0.1.22: triedro sin fondo, reducido al 75% del tamaño anterior (134 px). */
.ifc-axis-triad{position:absolute;left:11px;bottom:11px;width:101px;height:101px;
 z-index:5;pointer-events:none;overflow:visible;user-select:none;
 background:transparent;border:0;border-radius:0;box-shadow:none}
.ifc-axis-triad-canvas{display:block;width:101px;height:101px;pointer-events:none;background:transparent}
@media(max-width:650px){.ifc-axis-triad{transform:scale(.82);transform-origin:bottom left}}

/* Identidad de marca coherente en toda la aplicación, incluidos los diálogos. */
.brand-y{color:var(--accent)!important;font-weight:800}

/* v0.1.23 — menú contextual IFC, fuera de los paneles con overflow. */
.ifc-context-menu{position:fixed;left:0;top:0;z-index:10000;min-width:210px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);overflow:auto;padding:5px;background:var(--pane);color:var(--txt);border:1px solid var(--line);border-radius:6px;box-shadow:0 8px 28px rgba(0,0,0,.32);font-size:12px}
.ifc-context-menu>button{display:block;width:100%;padding:9px 13px;text-align:left;background:transparent;color:inherit;border:0;border-radius:3px;font:inherit;white-space:nowrap;cursor:pointer}
.ifc-context-menu>button:hover:not(:disabled),.ifc-context-menu>button:focus-visible{background:var(--selected);outline:1px solid var(--accent);outline-offset:-1px}
.ifc-context-menu>button:disabled{color:var(--muted);opacity:.65;cursor:default}
.ifc-scene-viewport:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}

/* v0.1.29 · densidad, cabeceras persistentes, columnas automáticas y menús contextuales */
:root{--table-font-size:11px;--table-row-height:13.75px;--table-vpad:1.4px}
.main-menu{height:48px;justify-content:safe center;padding:3px 8px}
.main-menu button{height:38px;min-width:64px;padding:2px 7px;font-size:9px;gap:1px}
.main-menu .nav-ico{font-size:16px;line-height:16px}.main-menu .separator{height:28px}
.data-table{font-size:var(--table-font-size);table-layout:auto}
.data-table thead{position:sticky;top:0;z-index:7}
.data-table th{position:sticky;top:0;z-index:8}
.data-table th,.data-table td{padding:var(--table-vpad) 7px;height:var(--table-row-height);line-height:1}
.data-table th.auto-fit-col,.data-table td.auto-fit-col{width:1%;white-space:nowrap}
.data-table th.description-col,.data-table td.description-col{width:auto;min-width:160px;white-space:normal}
.measures-table td{padding:var(--table-vpad) 4px}.measures-table td input{padding:1px 4px;min-height:var(--table-row-height);font-size:var(--table-font-size)}
.project-tab[draggable="true"]{cursor:grab}.project-tab.dragging-tab{opacity:.48}.project-tab.tab-drop-before{box-shadow:inset 3px 0 var(--accent)}.project-tab.tab-drop-after{box-shadow:inset -3px 0 var(--accent)}
.concept-context-menu{position:fixed;z-index:10050;min-width:178px;padding:4px;border:1px solid var(--line);border-radius:5px;background:var(--pane2);box-shadow:0 8px 24px var(--shadow);display:flex;flex-direction:column;gap:2px}
.concept-context-menu>button{border:0;background:transparent;color:var(--txt);text-align:left;padding:7px 9px;border-radius:3px;font-size:11px}.concept-context-menu>button:hover,.concept-context-menu>button:focus{background:var(--highlight);outline:none}
.custom-paper-fields{display:grid;grid-template-columns:repeat(2,minmax(160px,1fr));gap:10px}.custom-paper-fields>small{grid-column:1/-1;color:var(--muted)}
.settings-check{flex-direction:row!important;align-items:center!important;gap:8px}.settings-check input{width:auto!important}

/* v0.1.30 · edición directa, revisión y funciones en desarrollo */
.dev-button{position:relative}.dev-button .dev-note{display:block;color:#ef555b;font-size:7px;font-weight:800;line-height:8px;letter-spacing:.25px}.detail-tabbar .dev-button .dev-note{display:inline;margin-left:4px;font-size:7px}.dev-button:disabled{opacity:.82;color:var(--secondary)}.dev-button:disabled .nav-ico{opacity:.55}
.review-col{text-align:center;min-width:38px!important;width:38px!important}.review-cell{text-align:center;padding-left:4px!important;padding-right:4px!important}.review-dot{width:14px;height:14px;min-width:14px;border-radius:50%;border:1px solid var(--muted);display:inline-block;padding:0;vertical-align:middle;background:transparent}.review-dot.review-positive{background:#49b86a;border-color:#6fd78b}.review-dot.review-negative{background:#d9484e;border-color:#f06b70}.review-dot.review-reviewing{background:#e6b83f;border-color:#f4cf69}.review-dot:hover{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 28%,transparent)}
.has-breakdown{font-weight:800!important;color:var(--txt)}
.inline-cell-input{width:100%;min-width:48px;height:calc(var(--table-row-height) + 5px);padding:1px 4px!important;border:1px solid transparent!important;background:transparent!important;border-radius:2px!important;font-size:var(--table-font-size)!important}.inline-cell-input:hover{border-color:var(--subline)!important}.inline-cell-input:focus{border-color:var(--accent)!important;background:var(--input)!important}.inline-cell-input.numeric{text-align:right;font-variant-numeric:tabular-nums}.inline-cell-input.has-breakdown{font-weight:800}.inline-cell-readonly{display:inline-block;padding:2px 3px}
.data-table tr[data-node]>td:first-child,.data-table tr[data-detail-node]>td:first-child,.data-table tr[data-resource]>td:first-child{cursor:grab;user-select:none}.data-table tr[data-node]>td:not(:first-child),.data-table tr[data-detail-node]>td:not(:first-child),.data-table tr[data-resource]>td:not(:first-child){cursor:default}.data-table tr[data-node]>td:first-child::before,.data-table tr[data-detail-node]>td:first-child::before,.data-table tr[data-resource]>td:first-child::before{content:'⠿';font-size:11px;color:var(--muted);padding-right:5px;opacity:.5}.data-table tr[data-node]>td:first-child:hover::before,.data-table tr[data-detail-node]>td:first-child:hover::before,.data-table tr[data-resource]>td:first-child:hover::before{opacity:1}
.kind-label.resource-auxItem{color:#6fc6c6}.search-table input.inline-cell-input{min-width:90px}.search-table td.description-col input{min-width:180px}
.data-table tr[data-node]{cursor:default}.data-table tr[data-node] td:first-child::before{opacity:.5}

/* v0.1.32 · tiradores reales, apertura por arrastre y propiedades completas */
[data-row-drag-handle]{cursor:grab!important;user-select:none;-webkit-user-select:none}
[data-row-drag-handle]:active{cursor:grabbing!important}
.unit-inline{min-width:42px!important;max-width:82px}
.item-properties-heading{margin:14px 0 6px;font-size:12px;color:var(--secondary)}
.item-properties-scroll{max-height:250px;overflow:auto;border:1px solid var(--line);border-radius:4px}
.item-properties-decomp{margin:0}
.item-properties-summary{display:flex;justify-content:space-between;gap:14px;padding:8px 10px;border:1px solid var(--line);border-radius:4px;background:var(--pane2)}
.compact-empty{padding:12px!important}
body.external-file-drag::after{content:'Suelta aquí · PYM / DWG / DXF / IFC';position:fixed;z-index:20000;inset:14px;border:2px dashed var(--accent);border-radius:8px;background:color-mix(in srgb,var(--pane) 82%,transparent);color:var(--txt);display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:800;letter-spacing:.2px;pointer-events:none;box-shadow:inset 0 0 0 9999px color-mix(in srgb,var(--pane) 12%,transparent)}
/* v0.1.32 · catálogo y previsualización de informes */
.report-catalog-head{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:18px;align-items:end;margin-bottom:12px}.report-catalog-head .form-help{align-self:center}.report-catalog-group{margin:14px 0 18px}.report-catalog-group>h4{position:sticky;top:-20px;z-index:2;background:var(--panel);padding:8px 0 6px;border-bottom:1px solid var(--line);color:var(--accent)}.report-catalog-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:9px 10px;border-bottom:1px solid var(--line)}.report-catalog-row:hover{background:rgba(120,150,180,.06)}.report-catalog-row small{display:block;color:var(--muted);margin-top:3px}.report-inline-options{display:grid;grid-template-columns:220px 220px;gap:8px;margin-top:8px}.report-inline-options label{font-size:10px;color:var(--secondary);display:flex;flex-direction:column;gap:3px}.report-preview-shell{width:min(1500px,98vw)!important;max-height:96vh!important;height:96vh}.report-preview-shell .modal-body{padding:10px;display:flex;flex-direction:column;min-height:0}.report-preview-toolbar{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:3px 4px 9px;color:var(--secondary);font-size:11px}.report-preview-frame{border:1px solid var(--line);background:#dfe3e7;width:100%;height:100%;min-height:0;flex:1;border-radius:4px}.report-preview-shell .modal-footer{min-height:52px}.report-preview-pages{flex:1;min-height:0;overflow:auto;border:1px solid var(--line);border-radius:4px;background:#525659;padding:18px 14px 28px;display:flex;flex-direction:column;align-items:center;gap:22px}.report-pdf-sheet{display:flex;justify-content:center;width:100%;min-width:0}.report-pdf-page{display:block;max-width:calc(100% - 8px);height:auto;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.38)}.report-preview-loading,.report-preview-error{margin:auto;max-width:720px;padding:24px;color:#f3f5f7;text-align:center}.report-preview-error{color:#ffd7d7}@media(max-width:900px){.report-catalog-head{grid-template-columns:1fr}.report-inline-options{grid-template-columns:1fr}.report-preview-shell{width:99vw!important;height:98vh;max-height:98vh!important}}
.report-option-summary{grid-column:1/-1;color:var(--secondary);padding:1px 2px 0;font-weight:600}

.budget-visible-total{color:var(--secondary);font-size:11px;white-space:nowrap}.calculated-price{color:#2e8fd8;font-weight:700}.report-preview-frame{background:#525659}
.app-confirm-message{font-size:13px;line-height:1.55;color:var(--txt);padding:8px 2px 18px}.app-confirm-message br+br{line-height:2}

.app-confirm-overlay{position:fixed;inset:0;z-index:10050;background:rgba(10,18,24,.55);display:flex;align-items:center;justify-content:center;padding:20px}.app-confirm-card{width:min(560px,calc(100vw - 40px));background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.38);padding:18px 20px}.app-confirm-card h3{margin:0 0 10px;color:var(--txt);font-size:15px}.app-confirm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.app-confirm-actions button{min-width:92px}

/* v0.1.40 · configuración de firmas con editor enriquecido en línea */
.signature-config-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start}
.signature-config-card{border:1px solid var(--line);border-radius:6px;background:var(--input);padding:10px;min-width:0}
.signature-config-card>h4{margin:0 0 9px!important;color:var(--txt);font-size:12px!important;border-bottom:1px solid var(--line);padding-bottom:7px}
.signature-editor{display:grid;gap:6px;margin-bottom:11px}.signature-editor:last-child{margin-bottom:0}
.signature-editor-title{font-size:10px;font-weight:700;color:var(--secondary);text-transform:uppercase;letter-spacing:.03em}
.signature-format-row{display:flex;align-items:flex-end;gap:5px;flex-wrap:wrap}
.signature-command{display:flex;align-items:center;justify-content:center;width:31px;height:29px;border:1px solid var(--line);border-radius:4px;background:var(--btn);color:var(--txt);font-size:12px;cursor:pointer;padding:0}
.signature-command.active,.signature-command[aria-pressed="true"]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--btn));outline:1px solid var(--accent)}
.signature-color-control,.signature-size-control{display:flex!important;flex-direction:column!important;gap:2px!important;width:auto!important;font-size:9px!important;color:var(--muted)!important}.signature-color-control input{width:42px!important;height:29px!important;padding:2px!important}.signature-size-control>span{display:flex;align-items:center;gap:3px}.signature-size-control input{width:62px!important;height:29px!important;padding:4px 6px!important}
.signature-rich-editor{min-height:76px;max-height:180px;overflow:auto;border:1px solid var(--line);border-radius:4px;background:#fff;color:#111;padding:8px 9px;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere;text-align:center;outline:none;cursor:text}
.signature-rich-editor:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.signature-rich-editor:empty::before{content:attr(data-placeholder);color:#7d8790;font-style:italic;font-size:8pt;font-weight:400;text-decoration:none;pointer-events:none}
.signature-rich-editor font{line-height:inherit}
@media(max-width:820px){.signature-config-grid{grid-template-columns:1fr}.signature-config-card{padding:9px}}

/* v0.1.38 · controles de previsualización PDF */
.report-preview-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:3px 4px 9px;color:var(--secondary);font-size:11px;flex-wrap:wrap}
.report-preview-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap;min-width:0}
.report-preview-controls{display:flex;gap:5px;align-items:center;flex-wrap:wrap;margin-left:auto}
.report-preview-controls button{height:29px;min-width:30px;padding:4px 9px;border:1px solid var(--line);border-radius:4px;background:var(--btn);color:var(--txt);font-size:10px;white-space:nowrap}
.report-preview-controls button:hover{border-color:var(--accent)}.report-preview-controls button.active{border-color:var(--accent);outline:1px solid var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--btn))}
.report-preview-control-sep{width:1px;height:21px;background:var(--line);margin:0 2px}
#reportZoomReset{min-width:66px}
.report-preview-pages{align-items:flex-start;overflow:auto;scrollbar-gutter:stable both-edges}
.report-pdf-sheet{display:flex;justify-content:center;width:max-content;min-width:100%;flex:none}
.report-pdf-page{display:block;max-width:none!important;height:auto;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.38);flex:none}
@media(max-width:760px){.report-preview-controls{margin-left:0;width:100%}.report-preview-controls button[data-report-fit]{flex:1}.report-preview-meta{width:100%;justify-content:space-between}}
/* LISTADOS e INFORMES · espacio de trabajo a pantalla completa */
.report-workspace-shell{width:100vw!important;height:100vh!important;max-width:none!important;max-height:none!important;border-radius:0!important;border:0!important}
.report-workspace-shell .modal-header{height:58px;min-height:58px;position:relative;padding:0 18px}.report-workspace-shell .modal-header>strong{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;width:100%;min-width:0;padding-right:42px}.report-workspace-shell .modal-header>#closeModal{position:absolute;right:15px;top:50%;transform:translateY(-50%)}
.reports-brand{display:flex;align-items:center;gap:9px;min-width:0;font-size:13px;font-weight:700;color:var(--txt)}.reports-brand img{width:34px;height:34px;object-fit:contain}.reports-section-title{font-size:15px;letter-spacing:.04em;color:var(--txt);white-space:nowrap}.reports-header-spacer{display:block}
.report-workspace-shell .modal-body{padding:0;overflow:hidden;min-height:0}.report-workspace-shell .modal-footer{min-height:58px;justify-content:space-between;padding:9px 14px}.reports-footer-settings,.reports-footer-close{display:flex;gap:8px;align-items:center}
.reports-workspace{height:100%;min-height:0;display:grid;grid-template-columns:minmax(310px,27%) minmax(0,1fr);background:var(--panel)}
.reports-left{min-width:0;min-height:0;border-right:1px solid var(--line);display:flex;flex-direction:column;background:var(--panel)}.reports-left-head{padding:10px 12px;border-bottom:1px solid var(--line);background:var(--head)}.reports-cert-select{display:flex;flex-direction:column;gap:4px;font-size:10px;color:var(--secondary)}.reports-cert-select select{width:100%}.reports-no-cert{font-size:10px;color:var(--muted);padding:5px 0}.reports-catalog-scroll{overflow:auto;min-height:0;flex:1;padding:8px 10px 20px}.reports-list-group{margin:0 0 14px}.reports-list-group>h3{position:sticky;top:-8px;z-index:3;background:var(--panel);color:var(--accent);font-size:11px;margin:0;padding:8px 4px 6px;border-bottom:1px solid var(--line);text-transform:uppercase;letter-spacing:.035em}.reports-list-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:center;border-bottom:1px solid var(--line);padding:4px;border-left:3px solid transparent}.reports-list-row.selected{background:color-mix(in srgb,var(--accent) 9%,transparent);border-left-color:var(--accent)}.reports-list-row.disabled{opacity:.5}.reports-report-choice{min-width:0;text-align:left;border:0;background:transparent;color:var(--txt);padding:7px 6px;border-radius:3px;cursor:pointer}.reports-report-choice:hover{background:rgba(120,150,180,.07)}.reports-report-choice strong{display:block;font-size:11px}.reports-report-choice small{display:block;margin-top:2px;color:var(--muted);font-size:9px;line-height:1.35}.reports-param-btn{font-size:9px!important;padding:5px 7px!important}
.reports-preview-panel{min-width:0;min-height:0;display:flex;flex-direction:column;background:#525659}.reports-preview-toolbar{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:53px;padding:8px 11px;background:var(--head);border-bottom:1px solid var(--line)}.reports-preview-title{min-width:0;display:flex;flex-direction:column;gap:3px}.reports-preview-title strong{font-size:12px;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reports-preview-title small{font-size:9px;color:var(--muted)}.reports-preview-host{border:0;border-radius:0;padding:16px 12px 24px}.reports-preview-actions{flex:none;display:flex;justify-content:flex-end;gap:8px;padding:9px 12px;background:var(--head);border-top:1px solid var(--line)}.reports-preview-actions button{padding:8px 14px;border-radius:4px;border:1px solid var(--line);background:var(--btn);color:var(--txt)}.reports-preview-actions .primary-btn{background:var(--accent);border-color:var(--accent);color:#fff}
.report-parameters-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}.report-parameters-form>label{display:flex;flex-direction:column;gap:5px;color:var(--secondary);font-size:11px}.report-param-check{grid-column:1/-1!important;flex-direction:row!important;align-items:center!important;gap:8px!important;padding:7px 4px}.report-param-check input{width:auto!important}
/* Configuración económica y grupos de firmas */
.metadata-config-grid{align-items:start}.budget-concepts-editor{display:grid;gap:8px}.budget-concepts-editor>small,.signature-add-row>small{color:var(--muted);font-size:9px}.budget-concepts-table{width:100%;border-collapse:collapse}.budget-concepts-table th{font-size:10px;text-align:left;padding:6px;background:var(--head);color:var(--secondary);border-bottom:1px solid var(--line)}.budget-concepts-table td{padding:5px;border-bottom:1px solid var(--line)}.budget-concepts-table td:nth-child(1){width:48%}.budget-concepts-table td:nth-child(2){width:31%}.budget-concepts-table td:nth-child(3){width:17%}.budget-concepts-table td:nth-child(4){width:36px}.budget-concepts-table input,.budget-concepts-table select{width:100%}.signature-groups{display:grid;gap:15px}.signature-group-block{border:1px solid var(--line);border-radius:6px;padding:10px;background:color-mix(in srgb,var(--input) 75%,transparent)}.signature-group-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;color:var(--txt)}.signature-add-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
@media(max-width:900px){.reports-workspace{grid-template-columns:minmax(245px,36%) minmax(0,1fr)}.reports-preview-toolbar{align-items:flex-start;flex-direction:column}.report-preview-controls{width:100%;justify-content:flex-end}.reports-brand span{display:none}.report-parameters-form{grid-template-columns:1fr}}
.modal-layer.report-workspace-layer{padding:0;backdrop-filter:none}
/* v0.1.43 · Excel e informes personalizados */
.reports-preview-actions{flex-wrap:wrap}.reports-footer-settings{flex-wrap:wrap}.excel-export-dialog{display:grid;gap:10px}.excel-export-dialog>label.wide{display:grid;gap:5px;margin-top:5px}.excel-export-dialog select{width:100%}
.custom-report-designer{display:grid;gap:13px}.custom-report-designer>label{display:grid;gap:5px}.custom-report-designer-grid{display:grid;grid-template-columns:minmax(210px,30%) minmax(0,1fr);gap:15px}.custom-report-designer-grid h4{margin:0 0 8px;color:var(--secondary)}.custom-report-palette{display:flex;flex-direction:column;gap:6px}.custom-report-palette button{text-align:left;padding:7px 9px;border:1px solid var(--line);border-radius:4px;background:var(--btn);color:var(--txt);cursor:grab}.custom-report-dropzone{min-height:180px;border:1px dashed var(--accent);border-radius:6px;padding:9px;display:flex;flex-direction:column;gap:6px;background:color-mix(in srgb,var(--accent) 4%,var(--input))}.custom-report-field{display:flex;align-items:center;gap:8px;padding:8px 9px;border:1px solid var(--line);border-radius:4px;background:var(--panel);color:var(--txt);cursor:grab}.custom-report-field .drag-grip{color:var(--muted);letter-spacing:-2px}.custom-report-field button{margin-left:auto;border:0;background:transparent;color:var(--muted);font-size:16px}.custom-report-designer-grid small{display:block;color:var(--muted);margin-top:8px;line-height:1.35}@media(max-width:760px){.custom-report-designer-grid{grid-template-columns:1fr}}
.custom-dev-label{font-weight:800;color:#d11f2f}
.reports-cert-budget-btn{width:100%;margin-top:7px;padding:8px 10px;border:1px dashed var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--panel));color:var(--txt);border-radius:5px;text-align:left;font-weight:650}.reports-cert-budget-btn:disabled{opacity:.45}
.custom-ifp-workspace{display:grid;grid-template-columns:minmax(430px,42%) minmax(0,1fr);height:100%;min-height:0}.custom-ifp-designer{min-width:0;overflow:auto;padding:13px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:11px}.custom-ifp-preview{min-width:0;min-height:0;display:flex;flex-direction:column}.custom-ifp-preview .reports-preview-host{flex:1;min-height:0}.custom-ifp-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}.custom-ifp-toolbar label,.custom-ifp-designer>label,.custom-ifp-table-head label{display:grid;gap:4px}.custom-ifp-toolbar-buttons{display:flex;gap:6px;flex-wrap:wrap}.custom-ifp-table-tabs{display:flex;align-items:center;gap:5px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:7px}.custom-ifp-table-tabs button.active{border-color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}.custom-ifp-table-head{display:grid;grid-template-columns:minmax(150px,1.4fr) minmax(130px,1fr) minmax(150px,1.2fr) auto;gap:8px;align-items:end;margin-bottom:10px}.custom-ifp-fields-grid{display:grid;grid-template-columns:minmax(180px,30%) minmax(0,1fr);gap:10px}.custom-ifp-fields-grid h4{margin:0 0 7px;color:var(--secondary)}.ifp-column{flex-wrap:wrap}.ifp-column>span:nth-child(2){min-width:120px;flex:1}.ifp-column label{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--muted);white-space:nowrap}.ifp-column label input{margin:0}.custom-ifp-preview .reports-preview-toolbar{border-bottom:1px solid var(--line)}
@media(max-width:1050px){.custom-ifp-workspace{grid-template-columns:1fr}.custom-ifp-designer{max-height:48vh;border-right:0;border-bottom:1px solid var(--line)}.custom-ifp-table-head{grid-template-columns:1fr 1fr}.custom-ifp-fields-grid{grid-template-columns:1fr}}
.excel-export-options{border:1px solid var(--line,#cfd6dd);border-radius:6px;padding:10px 12px;display:grid;gap:8px}.excel-export-options legend{padding:0 5px;font-weight:700}.excel-export-options .form-help{margin:2px 0 0}
/* v0.1.46 · filtros y agrupación global en informes personalizados */
.custom-ifp-filter-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:2px 0 -4px;color:var(--secondary)}
.custom-ifp-filter-title span{font-size:10px;color:var(--muted)}
.custom-ifp-filters{border:1px solid var(--line);border-radius:4px;padding:8px;margin-bottom:10px;background:color-mix(in srgb,var(--pane) 92%,transparent)}
.custom-ifp-filters label{font-size:10px}
@media(max-width:700px){.custom-ifp-filter-title{align-items:flex-start;flex-direction:column}.custom-ifp-filters{grid-template-columns:1fr}}

/* v0.1.48 · filtros jerárquicos, texto largo IFP y cuadro Acerca de */
.custom-ifp-hierarchy{border:1px solid var(--line);border-radius:4px;padding:8px;margin:-2px 0 10px;background:color-mix(in srgb,var(--pane) 94%,transparent);display:grid;gap:7px}
.custom-ifp-hierarchy-head{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--secondary)}
.custom-ifp-hierarchy-head button{padding:4px 8px}
.custom-ifp-hierarchy-row{display:grid;grid-template-columns:minmax(220px,1.7fr) minmax(150px,.9fr) auto;gap:7px;align-items:end}
.custom-ifp-hierarchy-row label{display:grid;gap:4px;font-size:10px}.custom-ifp-hierarchy-row button{min-width:32px;height:31px;padding:0}
.modal-product-brand{display:inline-flex;align-items:center;gap:6px}.modal-product-brand img{width:22px;height:22px;object-fit:contain}
.about-brand{text-align:center;margin:2px auto 15px}.about-brand-main{display:flex;align-items:center;justify-content:center;gap:14px}.about-brand-main img{width:92px;height:92px;object-fit:contain}.about-brand-copy{text-align:center}.about-brand-copy h3{font-size:20px;margin:0 0 5px}.about-version{font-size:75%;font-weight:700;color:var(--secondary)}.about-brand p{margin:9px auto 0;max-width:620px}
@media(max-width:700px){.custom-ifp-hierarchy-row{grid-template-columns:1fr}.custom-ifp-hierarchy-row button{justify-self:start}.about-brand-main{flex-direction:column}.about-brand-main img{width:78px;height:78px}}

/* v0.1.49 · filtros anidados y agrupables en informes personalizados */
.custom-ifp-filter-title{align-items:center;margin:2px 0 4px}.custom-ifp-filter-title button{padding:4px 9px}
.custom-ifp-filter-list{border:1px solid var(--line);border-radius:4px;padding:8px;margin-bottom:10px;background:color-mix(in srgb,var(--pane) 94%,transparent);display:grid;gap:7px}
.custom-ifp-filter-list>small{color:var(--muted);padding:3px 2px}
.custom-ifp-filter-row{display:grid;grid-template-columns:auto minmax(110px,.75fr) minmax(130px,1fr) minmax(150px,1.15fr) auto;gap:7px;align-items:end;padding:7px;border:1px solid color-mix(in srgb,var(--line) 88%,transparent);border-radius:4px;background:var(--panel);cursor:grab}
.custom-ifp-filter-row:has([data-ifp-filter-kind] option[value="chapter"]:checked){grid-template-columns:auto minmax(100px,.65fr) minmax(115px,.85fr) minmax(145px,1fr) minmax(145px,1fr) minmax(130px,.85fr) auto}
.custom-ifp-filter-row label{display:grid;gap:4px;font-size:10px;min-width:0}.custom-ifp-filter-row .drag-grip{align-self:center;color:var(--muted);letter-spacing:-2px;padding:0 3px}
.custom-ifp-filter-group{display:flex!important;align-items:center;gap:5px!important;white-space:nowrap;padding-bottom:7px}.custom-ifp-filter-group input{margin:0}
.custom-ifp-filter-row>button{min-width:32px;height:31px;padding:0}
@media(max-width:900px){.custom-ifp-filter-row,.custom-ifp-filter-row:has([data-ifp-filter-kind] option[value="chapter"]:checked){grid-template-columns:1fr 1fr}.custom-ifp-filter-row .drag-grip{display:none}.custom-ifp-filter-row>button{justify-self:start}.custom-ifp-filter-group{padding-bottom:0}}

/* v0.1.50 · acciones de eliminación coherentes */
.delete-action,.concept-context-menu .delete-command{color:#e25555!important;border-color:rgba(226,85,85,.55)!important;font-weight:700}
.delete-action:hover,.concept-context-menu .delete-command:hover{background:rgba(226,85,85,.12)!important;border-color:#e25555!important}
.row-actions{white-space:nowrap}.row-actions .mini-action+.mini-action{margin-left:4px}
/* v0.1.51 · autenticación, licencia y Acerca de */
.pym-auth-layer,.pym-admin-layer{position:fixed;inset:0;z-index:1000;background:rgba(6,10,15,.86);display:none;align-items:center;justify-content:center;padding:24px;backdrop-filter:blur(5px)}.pym-auth-layer.show,.pym-admin-layer{display:flex}.pym-auth-card{width:min(430px,94vw);background:var(--panel);border:1px solid var(--line);border-radius:11px;box-shadow:0 25px 90px #000a;padding:26px}.pym-auth-brand{text-align:center}.pym-auth-brand img{width:112px;height:112px;object-fit:contain}.pym-auth-brand h1{font-size:23px;margin:8px 0 2px}.pym-auth-brand h1 span{color:var(--accent)}.pym-auth-brand small{color:var(--muted)}.pym-auth-form{display:grid;gap:13px;margin-top:24px}.pym-auth-form label{display:grid;gap:5px;color:var(--secondary)}.pym-auth-form input{width:100%;box-sizing:border-box}.pym-auth-error{min-height:18px;color:#ff6978;font-size:11px}.pym-auth-desktop p{color:var(--secondary);line-height:1.55}.pym-auth-device{background:var(--input);padding:10px;border:1px solid var(--line);border-radius:5px;display:grid;gap:4px}.pym-auth-device small{color:var(--muted);word-break:break-all}.pym-auth-code{font:700 25px Consolas,monospace;letter-spacing:3px;text-align:center;padding:12px;margin:14px 0;background:var(--input);border-radius:6px}.pym-auth-area{display:flex;align-items:center;gap:6px}.pym-auth-user{font-size:10px;color:var(--secondary);border:1px solid var(--line);padding:5px 8px;border-radius:5px}.pym-admin-card{width:min(1080px,97vw);height:min(760px,94vh);background:var(--panel);border:1px solid var(--line);border-radius:9px;display:flex;flex-direction:column;overflow:hidden}.pym-admin-card>header{height:52px;padding:0 16px;background:var(--head);border-bottom:2px solid var(--accent);display:flex;align-items:center;justify-content:space-between}.pym-admin-card>header button{font-size:18px}.pym-admin-body{display:grid;grid-template-columns:270px 1fr;min-height:0;flex:1}.pym-admin-body aside{padding:14px;border-right:1px solid var(--line);overflow:auto}.pym-admin-users{display:grid;gap:5px;margin-top:10px}.pym-admin-users button{text-align:left;padding:9px;border:1px solid var(--line);background:var(--btn);border-radius:4px;display:grid}.pym-admin-users small,.pym-device-row small{color:var(--muted)}.pym-admin-form{padding:18px;overflow:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 15px}.pym-admin-form>label{display:grid;gap:4px}.pym-admin-checks,.pym-admin-devices,.pym-admin-form>footer,.pym-admin-form>[data-error]{grid-column:1/-1}.pym-admin-checks{display:flex;gap:14px;flex-wrap:wrap}.pym-admin-checks label{display:flex;gap:5px;align-items:center}.pym-admin-devices{border-top:1px solid var(--line);padding-top:10px}.pym-device-row{display:flex;align-items:center;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--line)}.pym-device-row span{display:grid}.pym-admin-form>footer{display:flex;justify-content:flex-end;gap:8px}.danger-btn{color:#ff6674!important;border-color:#b94752!important}.license-readonly [contenteditable="true"]{pointer-events:none}.about-v0151{text-align:center}.about-v0151 .about-main-logo{width:210px;max-height:230px;object-fit:contain}.about-v0151 h2{font-size:25px;margin:5px 0 2px}.about-v0151 .about-sub{color:var(--muted)}.about-v0151 .about-inysoft{border-top:1px solid var(--line);margin:18px auto 0;padding-top:15px;display:flex;justify-content:center;align-items:center;gap:15px}.about-v0151 .about-inysoft img{width:90px;height:90px;object-fit:contain}.about-v0151 .about-dev{margin:10px 0;color:var(--secondary)}.about-license-box{text-align:left;margin-top:12px;border:1px solid var(--line);background:var(--input);border-radius:5px;padding:10px;max-height:165px;overflow:auto;font-size:10px;line-height:1.55;color:var(--secondary)}.developer-contact-form{display:grid;grid-template-columns:1fr 1fr;gap:12px}.developer-contact-form label{display:grid;gap:4px}.developer-contact-form .wide{grid-column:1/-1}.developer-contact-form textarea{min-height:160px}.modal-product-brand img{width:18px;height:18px;object-fit:contain;vertical-align:middle;margin:0 6px}.modal-product-brand{display:inline-flex;align-items:center}@media(max-width:700px){.pym-admin-body{grid-template-columns:1fr}.pym-admin-body aside{max-height:170px;border-right:0;border-bottom:1px solid var(--line)}.pym-admin-form{grid-template-columns:1fr}.developer-contact-form{grid-template-columns:1fr}}
