/* ============================================================
   budget.css — vista Presupuesto
   ============================================================ */
.budget{padding:14px 20px 60px}
.b-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.b-toolbar .meta-field input,.b-toolbar .meta-field select{border:1px solid var(--border);background:#fff}
.b-tiles{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:20px}
.b-tile{background:var(--bg);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:4px;min-width:0}
.b-tile small{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
.b-tile b{font-size:18px;font-weight:800;letter-spacing:-.3px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.b-tile span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.b-tile.pos b{color:#0a7c4a}.b-tile.neg b{color:var(--red)}
.b-tile .progress{margin-top:4px}
.b-phase{margin-bottom:22px}
.b-phase-head{display:flex;align-items:center;gap:8px;padding:6px 0 8px;font-size:15px}
.b-phase-head .b-sub{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.b-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;background:#fff;min-width:1000px}
.b-table th{font-weight:500;color:var(--muted);font-size:12px;text-align:center;padding:6px;border-bottom:1px solid var(--border);border-right:1px solid var(--border-soft);background:#fff;height:34px}
.b-table th:first-child,.b-table td:first-child{text-align:left}
.b-table td{border-bottom:1px solid var(--border-soft);border-right:1px solid var(--border-soft);padding:0 4px;height:36px;vertical-align:middle;font-size:13px;text-align:center;font-variant-numeric:tabular-nums}
.b-table tr.b-line td:first-child{border-left:6px solid var(--gc);padding-left:2px}
.b-table tr.b-line:hover td{background:#f8f8f9}
.b-table tr.add-row td{border-left:6px solid color-mix(in srgb,var(--gc) 40%,#fff);opacity:.65;text-align:left}
.b-table tr.add-row input{width:100%;border:none;outline:none;padding:0 10px;height:34px;background:transparent}
.b-table tr.add-row:hover td,.b-table tr.add-row:focus-within td{opacity:1}
.bc-code{width:76px}.bc-acc{width:200px}.bc-concept{width:auto;min-width:320px}.bc-unit{width:80px}.bc-qty{width:64px}.bc-iva{width:58px}.bc-num{width:104px;text-align:right}.bc-status{width:108px}.bc-more{width:34px;border-right:none!important}
.b-table{min-width:1440px}
.b-table td.calc{padding-right:8px;color:var(--muted)}
.b-table td.calc b{color:var(--text)}
.b-table .inkind{color:#7a3fb0}
.b-table .over{color:var(--red);font-weight:700}
.b-table tr.inkind td.bc-num.calc b{color:#7a3fb0}
.b-desc{font-size:10px;color:var(--muted);padding:0 6px 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.tablewrap{overflow-x:auto}
.b-summary tr.major td{font-weight:700;background:var(--bg)}
.b-summary tr.sub td:first-child,.b-summary tr.sub td:nth-child(2){padding-left:18px;color:var(--ink-2,#4a4c55)}
.b-fund-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.b-fund h4,.b-cuadre h4{margin:0 0 8px;font-size:13px;font-weight:700}
.b-fund h4 .muted{font-weight:500;font-size:12px}
.b-fund .b-table{min-width:0}
.b-fund .b-table td{height:34px}
.b-fund .b-table tr.add-row td{border-left:none}
.b-cuadre{margin-top:16px;background:var(--bg);border-radius:10px;padding:14px 16px}
.b-cuadre-row{display:grid;grid-template-columns:1fr 160px 220px;gap:10px;padding:6px 0;border-bottom:1px solid var(--border-soft);font-size:13px;align-items:center}
.b-cuadre-row b{text-align:right;font-variant-numeric:tabular-nums}
.b-cuadre-row span:last-child{display:inline-flex;align-items:center;gap:4px;font-size:12px}
.b-cuadre-row.neg b,.b-cuadre-row.neg span:last-child{color:var(--red);font-weight:700}
.b-cuadre-row.pos b,.b-cuadre-row.pos span:last-child{color:#0a7c4a;font-weight:700}
@media (max-width:1000px){.b-fund-grid{grid-template-columns:1fr}}
.b-table td.bc-kind,.b-table td.bc-iva,.b-table td.bc-status{padding:0}
.b-table .pill.off{color:#fff}
.b-table select.cell-input{width:100%;font-size:12px;padding:4px 2px}
.b-table .num-r{text-align:right;width:100%}
.b-table td.diff{padding-right:8px;color:var(--muted)}
.b-table td.pos{color:#0a7c4a;font-weight:600}.b-table td.neg{color:var(--red);font-weight:600}
.b-empty{border:1px dashed var(--border);border-radius:12px;padding:30px;text-align:center;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:6px;margin:10px 0 20px}
.b-empty > span{max-width:620px;line-height:1.5}
.b-empty-btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:10px}
.b-empty b{color:var(--text)}
.b-section{margin-top:26px}
.b-section h3{display:flex;align-items:center;gap:8px;font-size:15px;margin:0 0 10px}
.b-summary{min-width:0}
.b-summary th{text-align:left}
.b-summary td{text-align:left;padding:6px 8px}
.b-summary td.bc-num,.b-summary th.bc-num{text-align:right}
.b-summary tr.total td{font-weight:700;border-top:2px solid var(--border)}
.b-summary tr.grand td{font-size:14px;background:var(--bg)}
.b-split{display:flex;gap:24px;margin-top:10px;font-size:13px;color:var(--muted);flex-wrap:wrap}
.b-split b{color:var(--text)}
.b-split .dot{margin-right:4px}
.pos{color:#0a7c4a}.neg{color:var(--red)}
@media (max-width:1300px){.b-tiles{grid-template-columns:repeat(3,1fr)}}

/* ---------- Submenús y catálogo ---------- */
.b-tabs{display:flex;gap:2px;border-bottom:1px solid var(--border-soft);margin-bottom:16px}
.b-tab{padding:8px 14px;border-radius:6px 6px 0 0;color:var(--muted);font-weight:500;border-bottom:2px solid transparent;display:flex;align-items:center;gap:7px;font-size:13px}
.b-tab:hover{background:var(--bg);color:var(--text)}
.b-tab.active{color:var(--text);border-bottom-color:var(--text);font-weight:700}
.b-tab .n{background:var(--bg);border-radius:10px;padding:0 7px;font-size:11px;color:var(--muted)}
.b-tab.active .n{background:var(--text);color:#fff}
.b-table select.cell-input{padding:4px 22px 4px 4px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;appearance:none;-webkit-appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b6e78' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 6px center}
.bc-acc{width:250px}
.b-catalog{display:flex;flex-direction:column;gap:14px}
.b-cat-major{border:1px solid var(--border-soft);border-radius:10px;overflow:hidden}
.b-cat-head{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--bg);font-size:13px;flex-wrap:wrap}
.b-cat-head .muted{font-size:12px}
.b-cat-acc{padding:6px 14px 8px;border-top:1px solid var(--border-soft)}
.b-cat-acc-head{display:flex;align-items:center;gap:6px;font-size:13px;padding:4px 0}
.b-cat-item{display:flex;align-items:center;gap:10px;padding:3px 0 3px 14px;font-size:13px}
.b-cat-item .code{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--muted);width:44px}
.b-cat-item .name{flex:1}
.b-cat-item .unit{font-size:11px;color:var(--muted);width:90px}
.b-cat-item.has .name{color:var(--muted)}

.b-cat-head .code,.b-cat-acc-head .code{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--muted);width:44px;flex-shrink:0}
.cat-name{border:1px solid transparent;border-radius:4px;padding:3px 6px;background:transparent;font-size:13px;min-width:120px;flex:1;max-width:520px}
.cat-name.major{font-weight:700;text-transform:uppercase}
.cat-name:hover{border-color:var(--border)}
.cat-name:focus{outline:none;border-color:var(--text);background:#fff}
.cat-unit{border:1px solid transparent;border-radius:4px;padding:3px 6px;background:transparent;font-size:11px;color:var(--muted);width:100px}
.cat-unit:hover{border-color:var(--border)}
.cat-unit:focus{outline:none;border-color:var(--text);background:#fff;color:var(--text)}
.b-cat-item .icon-btn{width:24px;height:24px;opacity:.5}
.b-cat-item:hover .icon-btn,.b-cat-acc-head:hover .icon-btn,.b-cat-head:hover .icon-btn{opacity:1}
.cat-phase{font-size:11px;border:1px solid var(--border);border-radius:4px;padding:2px 4px;background:#fff;color:var(--muted);max-width:200px}
.cat-phase:focus{outline:none;border-color:var(--text);color:var(--text)}
.b-code{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--muted);background:var(--bg);border-radius:4px;padding:1px 6px}
.cat-major-name{font-size:14px;letter-spacing:.3px}

/* ---------- Arrastrar y soltar en el catálogo ---------- */
.b-cat-acc,.b-cat-item{position:relative;cursor:grab}
.b-cat-acc.dragging,.b-cat-item.dragging{opacity:.4}
.b-cat-acc .grip,.b-cat-item .grip{color:#c4c7d4;display:inline-flex;margin-right:2px;cursor:grab}
.b-cat-acc.drop-before::before,.b-cat-item.drop-before::before,.b-cat-acc.drop-after::after,.b-cat-item.drop-after::after{content:'';position:absolute;left:8px;right:8px;height:3px;background:var(--text);border-radius:2px;z-index:2;pointer-events:none}
.b-cat-acc.drop-before::before,.b-cat-item.drop-before::before{top:-2px}
.b-cat-acc.drop-after::after,.b-cat-item.drop-after::after{bottom:-2px}
.b-cat-acc.drop-before::before,.b-cat-acc.drop-after::after{height:4px;left:0;right:0}
.drop-zone{font-size:11px;color:var(--muted-2);border:1px dashed transparent;border-radius:6px;padding:2px 8px;display:inline-flex;align-items:center;gap:4px;opacity:0;transition:.15s}
body.cat-dragging .drop-zone{opacity:1;border-color:var(--border)}
.drop-zone.drop-into{border-color:var(--text);color:var(--text);background:var(--primary-soft);opacity:1}
.b-cat-major.drop-into{outline:2px dashed var(--text);outline-offset:-2px}
.b-table td.bc-concept .cell{display:flex;align-items:center;gap:2px}
.b-table td.bc-concept .cell .cell-input{flex:1;min-width:0}
.b-table td.bc-acc .cell{display:flex;align-items:center;gap:2px}
.b-table td.bc-acc .cell select{flex:1;min-width:0}
.new-acc{width:22px;height:22px;flex-shrink:0;background:var(--text);color:#fff;border-radius:6px}
.new-acc:hover{background:#333;color:#fff}
.ns-form{padding:4px 10px 8px;display:flex;flex-direction:column;gap:4px}
.ns-form select,.ns-form input{border:1px solid var(--border);border-radius:6px;padding:6px 8px;width:100%}
.ns-lbl{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-top:4px}
.ns-preview{background:var(--bg);border-radius:8px;padding:8px 10px;font-size:12px;line-height:1.5;margin-top:6px}
.ns-preview div{display:flex;align-items:center;gap:4px}
.b-table td.bc-sub{padding:0 4px}
.b-table td.bc-sub select.cell-input{padding-right:22px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;appearance:none;-webkit-appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b6e78' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 6px center}
.b-table td.bc-sub select:disabled{opacity:.45}
.b-pcode{font-family:ui-monospace,Menlo,monospace;font-size:12px;font-weight:600}
.b-pcode.muted{font-weight:400}

/* ---------- Partidas: número + arrastre ---------- */
.b-table td.bc-code{text-align:left;padding-left:2px;white-space:nowrap}
.b-table td.bc-code .grip{color:#c4c7d4;cursor:grab;display:inline-flex;vertical-align:middle;margin-right:2px;opacity:.5}
.b-table tr.b-line:hover td.bc-code .grip{opacity:1}
.b-table tr.b-line{cursor:default}
.b-table tr.b-line.dragging{opacity:.4}
.b-table tr.b-line.drop-before td{box-shadow:inset 0 3px 0 var(--text)}
.b-table tr.b-line.drop-after td{box-shadow:inset 0 -3px 0 var(--text)}
.b-table td.bc-concept .cell-input{font-weight:500}

/* ---------- Esquema: Cuenta (1000) → Subcuenta (1100) → Partida (1101) ---------- */
.b-tree{min-width:1720px}
.bc-grip{width:22px;border-right:none!important;padding:0!important}
.b-tree .bc-code{width:88px;text-align:left}
.b-tree td.bc-code{padding-left:4px}
.b-tree .b-pcode{font-family:ui-monospace,Menlo,monospace;font-size:12px;font-weight:600;display:inline-block}
.b-tree tr.lvl1 .b-pcode{font-size:13px;font-weight:800}
.b-tree tr.lvl2 .b-pcode{padding-left:14px;font-weight:700}
.b-tree tr.lvl3 .b-pcode{padding-left:28px;font-weight:500}
.b-tree tr.lvl3 td.bc-concept .cell{padding-left:14px}
.b-tree tr.lvl2 td.bc-concept .cell{padding-left:6px}
.b-tree tbody.b-cuenta{border-top:6px solid #fff}
.b-tree tr.b-major td{background:color-mix(in srgb,var(--gc) 12%,#fff);border-top:2px solid var(--gc);height:40px}
.b-tree tr.b-major .major-name{font-size:14px;letter-spacing:.3px;padding-left:6px}
.b-tree tr.b-major .bc-grip .dot{margin-left:6px}
.b-tree tr.b-sub td{background:#fafafb;height:36px}
.b-tree tr.b-sub.orphan td{background:#fff7ed}
.b-tree tr.b-sub.drop-into td{background:var(--primary-soft);box-shadow:inset 0 0 0 2px var(--text)}
.b-tree tr.b-sub .sub-name{font-weight:700;flex:0 1 auto;min-width:160px;max-width:420px}
.b-tree tr.b-line td{background:#fff}
.b-tree tr.b-line td.bc-concept .cell-input{font-weight:500}
.b-tree tr.b-line.dragging{opacity:.4}
.b-tree tr.b-line.drop-before td{box-shadow:inset 0 3px 0 var(--text)}
.b-tree tr.b-line.drop-after td{box-shadow:inset 0 -3px 0 var(--text)}
.b-tree tr.add-row td{opacity:.55;border-left:none}
.b-tree tr.add-row input{padding-left:14px}
.b-tree tr.add-row:hover td,.b-tree tr.add-row:focus-within td{opacity:1}
.b-tree tr.tr-empty td{border-left:none;padding-left:40px}
.b-tree td.bc-grip .grip{color:#c4c7d4;cursor:grab;display:inline-flex;opacity:.5;padding-left:4px}
.b-tree tr.b-line:hover td.bc-grip .grip{opacity:1}
.b-tree td.calc{color:var(--muted)}
.b-tree tr.lvl1 td.calc,.b-tree tr.lvl2 td.calc{color:var(--text);font-variant-numeric:tabular-nums}
.b-tree tr.lvl1 td.calc b{font-size:13px}
.b-cat-item.line .cat-name.item{font-weight:500}
.b-cat-item .cat-amt{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;width:90px;text-align:right}
.b-cat-item.suggest{opacity:.7}
.b-cat-item.suggest:hover{opacity:1}
.b-cat-item.suggest .name{flex:1;font-style:italic}
.b-cat-item.line.dragging{opacity:.4}
.b-cat-item.line.drop-before::before,.b-cat-item.line.drop-after::after{content:'';position:absolute;left:8px;right:8px;height:3px;background:var(--text);border-radius:2px;z-index:2;pointer-events:none}
.b-cat-item.line.drop-before::before{top:-2px}.b-cat-item.line.drop-after::after{bottom:-2px}
.b-cat-acc-head.drop-into{background:var(--primary-soft);border-radius:6px}
.b-cat-acc.orphan{background:#fff7ed}
.cont-ctl{display:inline-flex;align-items:center;gap:6px;margin-left:8px}
.cont-ctl select,.cont-ctl input{border:1px solid var(--border);border-radius:6px;padding:3px 6px;font-size:12px;background:#fff}
.b-toolbar .meta-field select{border:1px solid var(--border);background:#fff}
.b-tree tbody.contingency tr.b-major td{background:#f4f4f6;border-top:2px solid #9a9da8}
.b-tree tr.cont-note td{background:#fafafb;height:32px}
.b-tree tr.cont-note input{padding-left:28px;font-size:12px;height:26px}
.b-tree tr.grand td{background:var(--text);color:#fff;border-top:none}
.b-tree tr.grand td.calc,.b-tree tr.grand .muted{color:#fff}
.b-tree tr.grand td.calc b{color:#fff}
.b-tree tbody.contingency tr.grand td{background:var(--text);color:#fff;border-top:none}
.b-tree tbody.contingency tr.grand td.calc,.b-tree tbody.contingency tr.grand td.calc b,.b-tree tbody.contingency tr.grand .muted,.b-tree tbody.contingency tr.grand .major-name{color:#fff}
.b-tile small .tag-soft{margin-left:4px}
.bc-notes{width:170px}
.b-table td.bc-notes{text-align:left;padding:0 4px}
.b-table td.bc-notes .cell-input{font-size:12px;color:var(--muted)}
.b-table td.bc-notes .cell-input:focus{color:var(--text)}
