:root{--bg:#f1f4f5;--surface:#fff;--surface-2:#e9eef0;--surface-3:#f6f9fa;--border:#d7dfe2;--border-strong:#c2cdd1;--text:#101b1e;--text-muted:#5b6b70;--text-faint:#8a989d;--accent:#0d9488;--accent-ink:#0a6e66;--accent-soft:#d4eeeb;--d-elec:#d98200;--d-elec-bg:#fbebd2;--d-ccdd:#6a57d8;--d-ccdd-bg:#e7e2fa;--d-clima:#0e88ae;--d-clima-bg:#d7eef5;--d-ces:#159a45;--d-ces-bg:#d6f0de;--warn:#c2740a;--warn-bg:#fbebd0;--crit:#d23b32;--crit-bg:#fadfdc;--ok:#159a45;--ok-bg:#d6f0de;--shadow:0 1px 2px rgba(16,27,30,.06),0 4px 12px rgba(16,27,30,.05);--shadow-lg:0 8px 30px rgba(16,27,30,.16);--radius:12px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0d1416;--surface:#141f22;--surface-2:#1c292d;--surface-3:#101a1c;--border:#26373c;--border-strong:#33484e;--text:#e7eef0;--text-muted:#93a4aa;--text-faint:#6c7e84;--accent:#2dd4bf;--accent-ink:#7ff0e2;--accent-soft:#173c39;--d-elec:#f0a63a;--d-elec-bg:#3a2c12;--d-ccdd:#9e8ff0;--d-ccdd-bg:#241f45;--d-clima:#3fb6d6;--d-clima-bg:#0f323d;--d-ces:#4fcb7c;--d-ces-bg:#123420;--warn:#e5a23c;--warn-bg:#382812;--crit:#f0655b;--crit-bg:#3a1a17;--ok:#4fcb7c;--ok-bg:#123420;--shadow:0 1px 2px rgba(0,0,0,.3),0 4px 14px rgba(0,0,0,.28);--shadow-lg:0 10px 34px rgba(0,0,0,.5)}}:root[data-theme=dark]{--bg:#0d1416;--surface:#141f22;--surface-2:#1c292d;--surface-3:#101a1c;--border:#26373c;--border-strong:#33484e;--text:#e7eef0;--text-muted:#93a4aa;--text-faint:#6c7e84;--accent:#2dd4bf;--accent-ink:#7ff0e2;--accent-soft:#173c39;--d-elec:#f0a63a;--d-elec-bg:#3a2c12;--d-ccdd:#9e8ff0;--d-ccdd-bg:#241f45;--d-clima:#3fb6d6;--d-clima-bg:#0f323d;--d-ces:#4fcb7c;--d-ces-bg:#123420;--warn:#e5a23c;--warn-bg:#382812;--crit:#f0655b;--crit-bg:#3a1a17;--ok:#4fcb7c;--ok-bg:#123420;--shadow:0 1px 2px rgba(0,0,0,.3),0 4px 14px rgba(0,0,0,.28);--shadow-lg:0 10px 34px rgba(0,0,0,.5)}*{box-sizing:border-box}body,html{padding:0;margin:0}body{background:var(--bg);color:var(--text);font-family:IBM Plex Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}img{max-width:100%}[hidden]{display:none!important}.mono{font-family:IBM Plex Mono,IBM Plex Sans,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}button{font-family:inherit;cursor:pointer}h1,h2,h3{margin:0;text-wrap:balance}.app{max-width:1500px;margin:0 auto;padding:18px clamp(12px,3vw,26px) 60px}.topbar{gap:14px;flex-wrap:wrap;margin-bottom:18px}.brand,.topbar{display:flex;align-items:center}.brand{gap:11px;margin-right:auto}.logo{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,var(--accent),var(--d-clima));display:grid;place-items:center;color:#fff;font-weight:700;font-size:15px;letter-spacing:.5px;box-shadow:var(--shadow)}.brand h1{font-size:19px;font-weight:700;letter-spacing:-.2px}.brand .sub{font-size:11.5px;color:var(--text-muted);letter-spacing:.3px;text-transform:uppercase;font-weight:600}.userbox{display:flex;align-items:center;gap:9px;font-size:13px}.userbox .uname{font-weight:600}.userbox .urole{font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted);background:var(--surface-2);padding:2px 7px;border-radius:6px}.icon-btn{background:var(--surface);border:1px solid var(--border);color:var(--text-muted);width:38px;height:38px;border-radius:10px;display:grid;place-items:center;font-size:16px}.icon-btn:hover{border-color:var(--border-strong);color:var(--text)}.btn-primary{background:var(--accent);color:#fff;border:none;border-radius:10px;padding:0 16px;height:38px;font-weight:600;font-size:14px;display:inline-flex;align-items:center;gap:7px;box-shadow:var(--shadow)}.btn-primary:hover{background:var(--accent-ink)}.btn-primary .plus{font-size:18px;line-height:1;margin-top:-1px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin-bottom:16px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:13px 15px;box-shadow:var(--shadow)}.kpi .label{font-size:11.5px;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px;display:flex;align-items:center;gap:6px}.kpi .dot{width:8px;height:8px;border-radius:50%}.kpi .val{font-size:26px;font-weight:700;letter-spacing:-.5px;margin-top:4px;font-family:IBM Plex Mono,monospace}.kpi.alert .val{color:var(--crit)}@media(max-width:820px){.kpis{grid-template-columns:repeat(2,1fr)}}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}.search{position:relative;flex:1 1;min-width:180px;max-width:340px}.search input{width:100%;height:36px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:9px;padding:0 12px 0 32px;font-size:13.5px;font-family:inherit}.search input:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.search svg{position:absolute;left:9px;top:9px;color:var(--text-faint)}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);border-radius:20px;padding:5px 11px;font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.chip .cdot{width:9px;height:9px;border-radius:50%}.chip[aria-pressed=true]{color:var(--text);border-color:var(--border-strong);background:var(--surface-2)}.chip.d-electricidad[aria-pressed=true]{background:var(--d-elec-bg);border-color:var(--d-elec);color:var(--d-elec)}.chip.d-ccdd[aria-pressed=true]{background:var(--d-ccdd-bg);border-color:var(--d-ccdd);color:var(--d-ccdd)}.chip.d-clima[aria-pressed=true]{background:var(--d-clima-bg);border-color:var(--d-clima);color:var(--d-clima)}.chip.d-ces[aria-pressed=true]{background:var(--d-ces-bg);border-color:var(--d-ces);color:var(--d-ces)}select.filter{height:36px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:9px;padding:0 10px;font-size:13px;font-family:inherit;font-weight:500}.spacer{flex:1 1}.toggle{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:3px}.toggle button{border:none;background:transparent;color:var(--text-muted);padding:5px 13px;border-radius:6px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.toggle button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.banner{display:flex;align-items:center;gap:10px;background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent-ink);border-radius:10px;padding:9px 13px;font-size:13px;font-weight:500;margin-bottom:14px}.banner.warnbar{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}.banner button{margin-left:auto;background:transparent;border:1px solid;color:inherit;border-radius:7px;padding:4px 10px;font-size:12px;font-weight:600}.board{gap:12px;overflow-x:auto;padding-bottom:10px;scroll-snap-type:x proximity}.board,.col{display:flex}.col{flex:0 0 268px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;max-height:calc(100vh - 60px);scroll-snap-align:start}.col-head{display:flex;align-items:center;gap:8px;padding:11px 12px 9px;position:-webkit-sticky;position:sticky;top:0}.col-head .cbar{width:4px;height:15px;border-radius:3px}.col-head h3{font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}.col-head .count{margin-left:auto;font-size:12px;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:1px 8px;font-weight:600;font-family:IBM Plex Mono,monospace}.col-body{padding:0 9px 10px;overflow-y:auto;display:flex;flex-direction:column;gap:9px;min-height:40px}.col.drop{outline:2px dashed var(--accent);outline-offset:-4px;background:var(--accent-soft)}.col-empty{color:var(--text-faint);font-size:12px;text-align:center;padding:16px 6px;border:1px dashed var(--border);border-radius:9px}.card{background:var(--surface);border-radius:11px;padding:11px;box-shadow:var(--shadow);cursor:-webkit-grab;cursor:grab;position:relative;border:1px solid var(--border);border-left:3px solid var(--border-strong)}.card:hover{border-color:var(--border-strong)}.card:active{cursor:-webkit-grabbing;cursor:grabbing}.card.dragging{opacity:.4}.card.tipo-cotizacion{border-left-color:var(--d-clima)}.card.tipo-proyecto{border-left-color:var(--accent)}.card .c-top{display:flex;align-items:center;gap:7px;margin-bottom:6px}.card .code{font-size:11px;color:var(--text-faint);font-weight:600}.card .tipo-tag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:1px 6px;border-radius:5px}.tipo-tag.cotizacion{background:var(--d-clima-bg);color:var(--d-clima)}.tipo-tag.proyecto{background:var(--accent-soft);color:var(--accent-ink)}.card .prio{margin-left:auto;width:9px;height:9px;border-radius:50%;flex:none}.prio-alta{background:var(--crit)}.prio-media{background:var(--warn)}.prio-baja{background:var(--text-faint)}.card h4{font-size:13.5px;font-weight:600;line-height:1.3;margin-bottom:3px}.card .cliente{font-size:12px;color:var(--text-muted);margin-bottom:8px}.card .discs{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.disc{font-size:10px;font-weight:700;padding:2px 7px;border-radius:5px;letter-spacing:.2px}.disc.electricidad{background:var(--d-elec-bg);color:var(--d-elec)}.disc.ccdd{background:var(--d-ccdd-bg);color:var(--d-ccdd)}.disc.clima{background:var(--d-clima-bg);color:var(--d-clima)}.disc.ces{background:var(--d-ces-bg);color:var(--d-ces)}.card .prog{margin-bottom:8px}.prog .bar{height:6px;background:var(--surface-2);border-radius:4px;overflow:hidden}.prog .fill{height:100%;background:var(--accent);border-radius:4px}.prog .ptxt{font-size:10.5px;margin-top:3px;justify-content:space-between}.card .c-foot,.prog .ptxt{color:var(--text-muted);display:flex}.card .c-foot{align-items:center;gap:8px;font-size:11.5px}.card .who{display:inline-flex;align-items:center;gap:5px}.avatar{width:19px;height:19px;border-radius:50%;background:var(--surface-2);border:1px solid var(--border);display:grid;place-items:center;font-size:9px;font-weight:700;color:var(--text-muted)}.card .monto{margin-left:auto;font-weight:600;color:var(--text);font-family:IBM Plex Mono,monospace;font-size:12px}.card .due{display:inline-flex;align-items:center;gap:4px;font-weight:600}.due.soon{color:var(--warn)}.due.over{color:var(--crit)}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.tscroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px;min-width:860px}thead th{text-align:left;padding:11px 12px;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted);font-weight:700;border-bottom:1px solid var(--border);background:var(--surface-3);white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}thead th .arr{opacity:.5;font-size:9px}tbody td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}tbody tr{cursor:pointer}tbody tr:hover{background:var(--surface-3)}tbody tr:last-child td{border-bottom:none}td .code{font-size:12px;color:var(--text-muted)}td .code,td.num{font-family:IBM Plex Mono,monospace}td.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.st-pill{font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px;white-space:nowrap;display:inline-block}.mini-discs{display:flex;gap:3px}.mini-disc{width:8px;height:8px;border-radius:2px}.md.electricidad{background:var(--d-elec)}.md.ccdd{background:var(--d-ccdd)}.md.clima{background:var(--d-clima)}.md.ces{background:var(--d-ces)}.empty-all{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-all .big{font-size:40px;margin-bottom:8px}.empty-all h3{font-size:17px;color:var(--text);margin-bottom:6px}.overlay{position:fixed;inset:0;background:rgba(10,16,18,.5);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:26px 14px;overflow-y:auto}.overlay[hidden]{display:none}.modal{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);width:100%;max-width:560px;margin:auto}.modal-head{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-head h2{font-size:16px;font-weight:700}.modal-head .code{margin-left:auto;font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--text-muted);background:var(--surface-2);padding:3px 8px;border-radius:6px}.modal-body{padding:16px 20px;gap:14px}.field,.modal-body{display:flex;flex-direction:column}.field{gap:5px}.field label{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px}.field input,.field select,.field textarea{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:9px;padding:9px 11px;font-size:14px;font-family:inherit;width:100%}.field textarea{resize:vertical;min-height:56px}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.row2{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.seg{display:flex;gap:8px}.seg label{flex:1 1;border:1px solid var(--border);border-radius:10px;padding:9px;text-align:center;font-weight:600;font-size:13px;cursor:pointer;color:var(--text-muted)}.seg input{position:absolute;opacity:0;width:0}.seg label:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}.disc-pick{display:flex;flex-wrap:wrap;gap:8px}.disc-pick label{border:1px solid var(--border);border-radius:20px;padding:6px 12px;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--text-muted);display:inline-flex;align-items:center;gap:6px}.disc-pick label:has(input:checked).electricidad{background:var(--d-elec-bg);border-color:var(--d-elec);color:var(--d-elec)}.disc-pick label:has(input:checked).ccdd{background:var(--d-ccdd-bg);border-color:var(--d-ccdd);color:var(--d-ccdd)}.disc-pick label:has(input:checked).clima{background:var(--d-clima-bg);border-color:var(--d-clima);color:var(--d-clima)}.disc-pick label:has(input:checked).ces{background:var(--d-ces-bg);border-color:var(--d-ces);color:var(--d-ces)}.disc-pick input{position:absolute;opacity:0;width:0}.entregables{border:1px solid var(--border);border-radius:11px;overflow:hidden}.ent-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--border)}.ent-row:last-child{border-bottom:none}.ent-row .en{font-weight:600;font-size:13px;flex:1 1}.ent-row select{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:7px;padding:5px 8px;font-size:12.5px;font-family:inherit}.ent-row .sq{width:10px;height:10px;border-radius:3px;flex:none}.sq.pendiente{background:var(--text-faint)}.sq.en_proceso{background:var(--warn)}.sq.listo{background:var(--accent)}.sq.entregado{background:var(--ok)}.modal-foot{display:flex;align-items:center;gap:10px;padding:14px 20px;border-top:1px solid var(--border)}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text-muted);border-radius:9px;padding:9px 14px;font-weight:600;font-size:13.5px}.btn-ghost:hover{border-color:var(--border-strong);color:var(--text)}.btn-danger{background:transparent;border:1px solid var(--crit);color:var(--crit);border-radius:9px;padding:9px 14px;font-weight:600;font-size:13.5px}.btn-danger:hover{background:var(--crit-bg)}.modal-foot .grow{flex:1 1}.status-line{font-size:11.5px;color:var(--text-faint);text-align:center;padding:8px;letter-spacing:.2px}@media(max-width:560px){.row2{grid-template-columns:1fr}.kpi .val{font-size:22px}}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(1200px 500px at 50% -10%,var(--accent-soft),var(--bg))}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow-lg);width:100%;max-width:380px;padding:30px 28px}.login-card .logo{width:46px;height:46px;border-radius:12px;background:linear-gradient(135deg,var(--accent),var(--d-clima));display:grid;place-items:center;color:#fff;font-weight:700;font-size:17px;margin-bottom:16px}.login-card h1{font-size:20px;font-weight:700;margin-bottom:4px}.login-card p{color:var(--text-muted);font-size:13.5px;margin:0 0 22px}.login-card .field{margin-bottom:14px}.login-card button{width:100%;height:42px;justify-content:center;margin-top:6px}.login-err{background:var(--crit-bg);color:var(--crit);border:1px solid var(--crit);border-radius:9px;padding:9px 12px;font-size:13px;font-weight:500;margin-bottom:14px}.login-foot{text-align:center;color:var(--text-faint);font-size:11.5px;margin-top:18px}