@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800&display=swap");:root{--sidebar-w-nav:240px;--sidebar-w-collapsed:68px;--sidebar-w-panel:520px;--brand:#e40f7e;--brand-soft:rgba(228,15,126,.08);--brand2:#009fe3;--bg:#f4f5f9;--card:#fff;--border:rgba(0,0,0,.06);--shadow:0 1px 4px rgba(0,0,0,.04);--text:#1e1e2d;--muted:#9ca3b4;--accent:#ffed00;--pink:#e40f7e;--blue:#009fe3;--teal:#009fe3;--teal-dark:#0080b8;--radius:16px;--sidebar-w:520px;--focus-ring:0 0 0 3px rgba(0,159,227,.35);--skeleton-bg:linear-gradient(90deg,#eee 25%,#f5f5f5 50%,#eee 75%);--tooltip-bg:#1e1e2d;--tooltip-color:#fff;--confirm-overlay:rgba(0,0,0,.5);--transition-fast:0.15s;--transition-med:0.3s;--success:#25d366;--warning:#ffed00;--danger:#ef4444}body.dark{--bg:#0f1419;--card:#1a2332;--border:hsla(0,0%,100%,.06);--shadow:0 1px 4px rgba(0,0,0,.3);--text:#e4e8f0;--muted:#6b7a8d;--skeleton-bg:linear-gradient(90deg,#1a2332 25%,#243040 50%,#1a2332 75%);--confirm-overlay:rgba(0,0,0,.7);--brand-soft:rgba(228,15,126,.12)}body.dark .stat-card:hover{box-shadow:0 6px 20px rgba(0,0,0,.25)}body.dark tbody tr:nth-child(2n){background:hsla(0,0%,100%,.02)}body.dark tbody tr:hover{background:rgba(0,159,227,.08)}body.dark .edit-input:focus{background:var(--card)}body.dark .modal-top{box-shadow:0 2px 12px rgba(0,0,0,.3)}*{margin:0;padding:0;box-sizing:border-box}body,html{height:100%}body{font-family:Poppins,sans-serif;background:var(--bg);color:var(--text);font-size:13px;transition:background var(--transition-med),color var(--transition-med)}button,input,select,table,td,textarea,th{font-family:inherit}:focus-visible{outline:none;box-shadow:var(--focus-ring)!important;border-radius:4px}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-thumb{background:#dde1f0;border-radius:5px}body.dark ::-webkit-scrollbar-thumb{background:#2a3a4a}.edf-sidenav{scrollbar-width:thin;scrollbar-color:transparent transparent}.edf-sidenav::-webkit-scrollbar{width:7px}.edf-sidenav::-webkit-scrollbar-track{background:transparent}.edf-sidenav::-webkit-scrollbar-thumb{background:transparent!important;border-radius:8px;transition:background .35s ease}.edf-sidenav.scrolling::-webkit-scrollbar-thumb,.edf-sidenav:hover::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#e40f7e,#7c3aed)!important}.edf-sidenav.scrolling,.edf-sidenav:hover{scrollbar-color:#9333ea transparent}.modal-overlay{display:none}.modal-overlay.open{display:block}.modal{position:fixed;top:0;right:0;bottom:0;width:var(--sidebar-w);min-width:320px;max-width:80vw;background:var(--card);border-left:1px solid var(--border);box-shadow:-4px 0 24px rgba(0,0,0,.06);overflow:hidden;z-index:300;transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1),width .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column}.modal-overlay.open .modal{transform:translateX(0)}body.sidebar-dragging .modal{transition:none}body.sidebar-dragging *{user-select:none!important;-webkit-user-select:none!important}.sidebar-resize{position:absolute;left:0;top:0;bottom:0;width:6px;cursor:col-resize;z-index:10;background:transparent;transition:background .15s}.sidebar-resize:hover{background:rgba(0,159,227,.2)}.sidebar-resize:active{background:rgba(0,159,227,.35)}.modal-top{padding:22px 22px 18px;display:flex;flex-direction:column;gap:0;color:#fff;position:relative;flex-shrink:0;border-radius:0 0 18px 18px;overflow:hidden}.modal-top:before{top:-40px;right:-40px;width:130px;height:130px;background:hsla(0,0%,100%,.05)}.modal-top:after,.modal-top:before{content:"";position:absolute;border-radius:50%}.modal-top:after{bottom:-20px;left:-20px;width:80px;height:80px;background:hsla(0,0%,100%,.03)}.modal-top.top-pend{background:linear-gradient(135deg,#e40f7e,#c2185b)}.modal-top.top-proc{background:linear-gradient(135deg,#128c7e,#0e6b62)}.modal-top.top-comp{background:linear-gradient(135deg,#00b4d8,#007bb5)}.modal-top.top-edit{background:linear-gradient(135deg,#ffed00,#e09100)}.modal-header-row{gap:14px;position:relative;z-index:1}.modal-close,.modal-header-row{display:flex;align-items:center}.modal-close{position:absolute;top:14px;right:14px;background:hsla(0,0%,100%,.12);border:none;color:#fff;width:30px;height:30px;border-radius:10px;cursor:pointer;font-size:14px;justify-content:center;transition:background .15s;z-index:2}.modal-close:hover{background:hsla(0,0%,100%,.25)}.modal-avatar{width:48px;height:48px;border-radius:14px;background:hsla(0,0%,100%,.16);display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700;backdrop-filter:blur(8px);border:2px solid hsla(0,0%,100%,.15);flex-shrink:0;color:#fff}.modal-header-info{flex:1;min-width:0}.modal-name{font-size:16px;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:30px}.modal-sub{font-size:11px;opacity:.75;font-weight:400;margin-top:2px}.modal-status-row{gap:8px;margin-top:12px;position:relative;z-index:1;flex-wrap:wrap}.modal-badge,.modal-status-row{display:flex;align-items:center}.modal-badge{font-size:10px;font-weight:600;padding:4px 10px;border-radius:20px;background:hsla(0,0%,100%,.16);backdrop-filter:blur(6px);gap:5px;color:#fff}.modal-badge-countdown{background:rgba(240,180,41,.3)}.modal-quick-actions{display:flex;gap:0;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--card)}.modal-qa{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:12px 6px;cursor:pointer;border:none;background:none;font-family:inherit;font-size:9px;color:var(--muted);font-weight:600;letter-spacing:.3px;text-transform:uppercase;transition:all .2s;position:relative;text-decoration:none}.modal-qa:after{content:"";position:absolute;bottom:0;left:20%;right:20%;height:2px;background:var(--teal);border-radius:2px;transform:scaleX(0);transition:transform .2s}.modal-qa:hover{color:var(--teal);background:rgba(0,159,227,.04)}.modal-qa:hover:after{transform:scaleX(1)}.modal-qa .qa-icon{font-size:17px;display:flex;align-items:center;justify-content:center}.modal-tabs{display:flex;border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0;overflow-x:auto}.modal-tabs::-webkit-scrollbar{height:0}.modal-tab{flex:1;padding:10px 4px;font-size:10.5px;font-weight:600;text-align:center;cursor:pointer;color:var(--muted);border:none;background:none;font-family:inherit;position:relative;transition:all .2s;white-space:nowrap;min-width:0}.modal-tab.active{color:var(--teal)}.modal-tab.active:after{content:"";position:absolute;bottom:-1px;left:15%;right:15%;height:2.5px;background:var(--teal);border-radius:3px 3px 0 0}.modal-tab:hover:not(.active){color:var(--text)}.modal-body{padding:0;overflow-y:auto;flex:1}.modal-body-inner{padding:18px 22px 24px}.modal-section{margin-bottom:18px}.modal-section:last-child{margin-bottom:0}.modal-section-title{font-size:10px;font-weight:700;color:var(--muted);margin-bottom:10px;letter-spacing:.7px;text-transform:uppercase;display:flex;align-items:center;gap:6px}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.info-item{display:flex;flex-direction:column;gap:2px}.info-item label{font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.info-item span{font-size:13px;font-weight:500;color:var(--text)}.importes-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.ibox{background:var(--bg);border-radius:14px;padding:14px;text-align:center;border:1px solid var(--border)}.ibox label{font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;display:block;margin-bottom:4px}.ibox .val{font-size:18px;font-weight:700}.ibox.tot .val{color:var(--text)}.ibox.res .val{color:var(--teal)}.ibox.pend .val{color:var(--brand)}.timeline-track{padding:8px 0}.timeline-track,.tl-step{display:flex;align-items:center}.tl-step{flex:1;flex-direction:column;position:relative}.tl-dot{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;z-index:1;background:var(--bg);color:var(--muted);border:2px solid var(--border);transition:all .3s}.tl-dot.done{background:#e8faf0;color:#25d366;border-color:#25d366}.tl-dot.current{background:var(--teal);color:#fff;border-color:var(--teal);box-shadow:0 0 0 4px rgba(18,140,126,.12)}.tl-label{font-size:9px;font-weight:600;color:var(--muted);margin-top:5px}.tl-label.done{color:#25d366}.tl-label.current{color:var(--teal);font-weight:700}.tl-line{position:absolute;top:14px;left:50%;width:100%;height:2px;background:var(--border);z-index:0}.tl-line.done{background:#25d366}.tl-step:last-child .tl-line{display:none}.countdown-card{background:var(--bg);border-radius:12px;padding:12px 14px;border:1px solid var(--border)}.cd-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.cd-label{font-size:11px;font-weight:600;color:var(--text)}.cd-days{font-size:17px;font-weight:700;color:var(--teal)}.cd-days.past{color:var(--pink)}.cd-track{height:5px;background:var(--border);border-radius:10px;overflow:hidden}.cd-fill{height:100%;border-radius:10px;background:linear-gradient(90deg,var(--teal),#25d366);transition:width .8s cubic-bezier(.16,1,.3,1)}.cd-fill.past{background:linear-gradient(90deg,var(--pink),#ef4444)}.cd-dates{display:flex;justify-content:space-between;margin-top:5px;font-size:9px;color:var(--muted);font-weight:500}.checklist-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.check-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;border:1px solid var(--border);background:var(--bg);font-size:11px;font-weight:600;color:var(--muted);transition:all .2s}.check-item.done{background:rgba(37,211,102,.06);border-color:rgba(37,211,102,.2);color:#137333}.check-item.pending{background:rgba(228,15,126,.04);border-color:rgba(228,15,126,.15);color:#e40f7e}.check-box{width:18px;height:18px;border-radius:5px;border:2px solid;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:10px}.check-item.done .check-box{background:#25d366;border-color:#25d366;color:#fff}.servicio-tag{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:20px;font-size:12px;font-weight:500;background:var(--bg);border:1px solid var(--border);margin:3px}.servicio-tag .sp{color:var(--teal);font-weight:700;margin-left:2px}.costes-card{background:var(--bg);border-radius:12px;padding:14px;border:1px solid var(--border)}.costes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px}.coste-item{text-align:center}.coste-item .ci-icon{font-size:15px;margin-bottom:2px}.coste-item .ci-label{font-size:9px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.3px}.coste-item .ci-val{font-size:14px;font-weight:700;color:var(--text)}.costes-meta{font-size:10px;color:var(--muted);text-align:center;padding:6px 0;border-top:1px dashed var(--border);margin-top:2px}.costes-bottom{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.costes-box{padding:10px;border-radius:10px;text-align:center}.costes-box label{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;display:block;margin-bottom:3px}.costes-box .cb-val{font-size:18px;font-weight:700}.costes-box.coste-total{background:rgba(228,15,126,.05)}.costes-box.coste-total .cb-val,.costes-box.coste-total label{color:var(--pink)}.costes-box.beneficio{background:rgba(37,211,102,.05)}.costes-box.beneficio .cb-val,.costes-box.beneficio label{color:#25d366}.costes-box.beneficio.negative{background:rgba(228,15,126,.05)}.costes-box.beneficio.negative .cb-val,.costes-box.beneficio.negative label{color:var(--pink)}.margen-bar{margin-top:10px}.margen-header{display:flex;justify-content:space-between;font-size:10px;font-weight:600;color:var(--muted);margin-bottom:4px}.margen-track{height:7px;background:var(--border);border-radius:10px;overflow:hidden;position:relative}.margen-fill{height:100%;border-radius:10px;background:linear-gradient(90deg,var(--pink) 0,#ffed00 40%,#25d366 70%);transition:width .8s cubic-bezier(.16,1,.3,1)}.modal-actions-links{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:14px}.modal-btn{padding:10px 18px;border-radius:12px;font-size:12px;font-weight:600;cursor:pointer;border:none;font-family:inherit;transition:all .15s;display:flex;align-items:center;gap:6px;justify-content:center;flex:1;text-decoration:none}.modal-btn-wp{background:linear-gradient(135deg,#25d366,#128c7e);color:#fff}.modal-btn-wp:hover{opacity:.9}.modal-btn-copy{background:var(--bg);color:var(--text);border:1px solid var(--border)}.modal-btn-copy:hover{border-color:var(--brand);color:var(--brand)}.modal-btn-pdf{background:rgba(255,107,157,.06);color:var(--pink);border:1px solid rgba(255,107,157,.2)}.modal-btn-pdf:hover{background:rgba(255,107,157,.12)}.modal-btn-cal{background:rgba(88,166,255,.06);color:var(--blue);border:1px solid rgba(88,166,255,.2)}.modal-btn-cal:hover{background:rgba(88,166,255,.12)}.modal-btn-edit{background:rgba(120,90,255,.06);color:#7c5cbf;border:1px solid rgba(120,90,255,.2)}.modal-btn-edit:hover{background:rgba(120,90,255,.12)}.modal-btn-save{background:linear-gradient(135deg,#e40f7e,#c2185b);color:#fff}.modal-btn-save:hover{opacity:.9}.modal-btn-cancel{background:var(--bg);color:var(--muted);border:1px solid var(--border)}.modal-btn-danger{background:rgba(228,15,126,.06);color:#e40f7e;border:1px solid rgba(228,15,126,.2);width:100%}.modal-btn-danger:hover{background:rgba(228,15,126,.12)}.modal-btn:disabled{opacity:.3;cursor:not-allowed;pointer-events:none}.modal-actions{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap}.modal-footer{padding:14px 22px;border-top:1px solid var(--border);display:flex;gap:8px;flex-shrink:0}.mf-btn,.modal-footer{background:var(--card)}.mf-btn{flex:1;padding:9px 8px;border-radius:10px;border:1px solid var(--border);font-family:inherit;font-size:11px;font-weight:600;cursor:pointer;text-align:center;transition:all .15s;color:var(--text)}.mf-btn:hover{border-color:var(--teal);color:var(--teal);background:rgba(0,159,227,.04)}.mf-btn.primary{background:var(--teal);color:#fff;border-color:var(--teal)}.mf-btn.wa{background:#25d366;color:#fff;border-color:#25d366}.mf-btn.wa:hover{background:#1da851}.edit-form{display:flex;flex-direction:column;gap:12px}.edit-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.edit-field{display:flex;flex-direction:column;gap:4px}.edit-field label{font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}.edit-input{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:10px 14px;font-size:12.5px;color:var(--text);outline:none;font-family:inherit;transition:border-color .15s,background .15s;width:100%}.edit-input:focus{border-color:var(--brand);background:#fff}.edit-input.total-highlight{background:#f0fff4;border:2px solid var(--teal);font-weight:700;font-size:16px;color:var(--teal-dark)}.edit-select{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:10px 14px;font-size:12.5px;color:var(--text);outline:none;font-family:inherit;width:100%;cursor:pointer}.edit-select:focus{border-color:var(--teal)}.serv-row{display:grid;grid-template-columns:1fr 100px 32px;gap:8px;align-items:end}.serv-remove{width:32px;height:40px;border-radius:10px;border:1px solid rgba(228,15,126,.2);background:rgba(228,15,126,.04);color:var(--brand);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.serv-remove:hover{background:var(--brand);color:#fff;border-color:var(--brand)}.add-service-btn{background:rgba(0,159,227,.06);border:1px dashed rgba(0,159,227,.3);color:var(--teal);padding:10px;border-radius:12px;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;font-family:inherit;width:100%;text-align:center;display:flex;align-items:center;justify-content:center;gap:6px}.add-service-btn:hover{background:rgba(0,159,227,.12);border-style:solid}.msg-editable{background:var(--bg);border-radius:14px;padding:14px 16px;font-size:11.5px;line-height:1.7;white-space:pre-wrap;word-break:break-word;color:#555;min-height:120px;max-height:280px;overflow-y:auto;border:1px solid var(--border);width:100%;font-family:inherit;resize:vertical;outline:none;transition:border-color .15s}.msg-editable:focus{border-color:var(--teal);background:#fff}.wa-preview{background:#e5ddd5;border-radius:14px;padding:16px;max-height:300px;overflow-y:auto;font-size:12px;line-height:1.7}.body.dark .wa-preview{background:#0b141a}.wa-bubble{background:#dcf8c6;border-radius:8px 8px 0 8px;padding:10px 14px;max-width:90%;margin-left:auto;margin-bottom:6px;word-break:break-word;box-shadow:0 1px 2px rgba(0,0,0,.08)}.wa-templates{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}.wa-tpl{padding:10px 8px;border-radius:12px;border:1.5px solid var(--border);background:var(--card);cursor:pointer;font-family:inherit;text-align:center;transition:all .2s;position:relative}.wa-tpl:hover{border-color:var(--teal);background:rgba(0,159,227,.04)}.wa-tpl.active{border-color:#25d366;background:rgba(37,211,102,.06)}.wa-tpl-icon{font-size:18px;margin-bottom:4px}.wa-tpl-label{font-size:9px;font-weight:600;color:var(--text);line-height:1.3}.wa-tpl-badge{position:absolute;top:-5px;right:-3px;font-size:7px;font-weight:800;padding:1px 4px;border-radius:20px;background:var(--teal);color:#fff}.nota-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:10px;background:var(--bg);border:1px solid var(--border);margin-bottom:6px}.nota-emoji{font-size:16px;flex-shrink:0;margin-top:1px}.nota-body{flex:1;min-width:0}.nota-text{font-size:12px;line-height:1.5;color:var(--text)}.nota-date{font-size:10px;color:var(--muted);margin-top:2px}.nota-del{background:none;border:none;color:var(--muted);cursor:pointer;padding:2px 5px;border-radius:5px;transition:all .15s;flex-shrink:0}.nota-del:hover{color:#e40f7e;background:rgba(228,15,126,.08)}.nota-types{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:8px}.nota-type-btn{padding:4px 10px;border-radius:8px;border:1px solid var(--border);background:var(--bg);cursor:pointer;font-size:10px;font-weight:600;color:var(--muted);font-family:inherit;transition:all .15s}.nota-type-btn.active{background:var(--teal);color:#fff;border-color:var(--teal)}.history-track{position:relative;padding-left:24px}.history-track:before{content:"";position:absolute;left:7px;top:4px;bottom:4px;width:2px;background:linear-gradient(to bottom,var(--teal),#25d366);border-radius:99px}.history-item{position:relative;margin-bottom:14px}.history-dot{position:absolute;left:-20px;top:3px;width:13px;height:13px;border-radius:50%;border:2px solid var(--card)}.history-label{font-size:12px;font-weight:600;color:var(--text)}.history-sub{font-size:10px;color:var(--muted);margin-top:1px}.score-card{gap:14px;padding:12px 14px;background:var(--bg);border-radius:12px;border:1px solid var(--border)}.score-card,.score-circle{display:flex;align-items:center}.score-circle{width:46px;height:46px;border-radius:50%;background:linear-gradient(135deg,var(--teal),#7c3aed);justify-content:center;font-size:16px;font-weight:800;color:#fff;flex-shrink:0}.score-label{font-size:13px;font-weight:700;color:var(--text)}.score-sub{font-size:10px;color:var(--muted);margin-top:2px}.estado-btn{width:100%;padding:10px 12px;border-radius:10px;border:1px solid;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;text-align:left;display:flex;align-items:center;gap:8px;transition:all .15s;margin-bottom:6px}.estado-btn:last-child{margin-bottom:0}.estado-btn.nuevo{color:#e40f7e;border-color:rgba(228,15,126,.25);background:rgba(228,15,126,.05)}.estado-btn.nuevo:hover{background:rgba(228,15,126,.1)}.estado-btn.procesado{color:var(--teal);border-color:rgba(0,159,227,.25);background:rgba(0,159,227,.05)}.estado-btn.procesado:hover{background:rgba(0,159,227,.1)}.estado-btn.completado{color:#25d366;border-color:rgba(37,211,102,.25);background:rgba(37,211,102,.05)}.estado-btn.completado:hover{background:rgba(37,211,102,.1)}.cobro-bar-wrap{margin-top:8px}.cobro-bar{height:6px;background:var(--border);border-radius:10px;overflow:hidden}.cobro-fill{height:100%;border-radius:10px;background:linear-gradient(90deg,var(--teal),#25d366);transition:width .6s ease}.cobro-pct{font-size:10px;color:var(--muted);text-align:right;margin-top:3px}@keyframes slideIn{0%{opacity:0;transform:translateX(16px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeTab{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}body,html{overflow-x:hidden;max-width:100vw}@media(max-width:768px){body,html{-webkit-text-size-adjust:100%;touch-action:pan-y}*{max-width:100vw}.card,.card-body,.card-header,.page-grid{max-width:100%!important;overflow-x:hidden}}