:root{--b:#0369a1;--b2:#0ea5e9;--bg:#f1f5f9;--card:#fff;--tx:#0f172a;--mu:#64748b;--ln:#e2e8f0;--ok:#16a34a;--wa:#16a34a;--warn:#d97706;--bad:#dc2626;--r:12px;--sh:0 1px 3px #0f172a14,0 4px 14px #0f172a0a}
*{box-sizing:border-box}html,body{margin:0;height:100%}body{font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--tx);-webkit-tap-highlight-color:transparent}
a{color:var(--b);text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}
#app{display:flex;min-height:100%}
.side{width:236px;background:#0c2d48;color:#cbd5e1;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;padding:14px 10px;overflow:auto}
.side .brand{display:flex;align-items:center;gap:10px;padding:6px 8px 16px;color:#fff;font-weight:700;font-size:15px;line-height:1.2}.side .brand img{width:40px;height:40px;border-radius:10px;background:#fff;object-fit:contain}
.side a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;color:#cbd5e1;font-size:14px;margin:1px 0}.side a:hover{background:#ffffff12}.side a.on{background:var(--b);color:#fff}
.side a .bd{margin-left:auto;background:#f59e0b;color:#111;border-radius:99px;font-size:11px;padding:0 7px;font-weight:700}
.side .foot{margin-top:auto;font-size:12px;padding:10px;color:#94a3b8}
.ic{width:19px;height:19px;flex:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
main{flex:1;margin-left:236px;padding:64px 26px 40px;max-width:1240px;min-width:0}
.top{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.top h1{font-size:22px;margin:0;flex:1;min-width:150px}
.bnav{display:none}
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:16px;margin-bottom:14px}.card h3{margin:0 0 10px;font-size:15px;display:flex;align-items:center;gap:8px}
.card h3 .sp{flex:1}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:14px}
.kpi{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:14px 16px}.kpi small{color:var(--mu);font-size:12px;text-transform:uppercase;letter-spacing:.04em;font-weight:600}.kpi b{display:block;font-size:22px;margin-top:2px}
.kpi.g b{color:var(--ok)}.kpi.rd b{color:var(--bad)}.kpi.bl b{color:var(--b)}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 14px;border-radius:9px;border:1px solid var(--ln);background:#fff;cursor:pointer;font-weight:600;font-size:14px;white-space:nowrap}
.btn:hover{border-color:#cbd5e1;background:#f8fafc}.btn.p{background:var(--b);border-color:var(--b);color:#fff}.btn.p:hover{background:#075985}
.btn.wa{background:var(--wa);border-color:var(--wa);color:#fff}.btn.d{color:var(--bad)}.btn.sm{padding:5px 10px;font-size:13px}.btn .ic{width:17px;height:17px}.btn:disabled{opacity:.5}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.list{display:flex;flex-direction:column}.it{display:flex;gap:12px;align-items:center;padding:11px 4px;border-bottom:1px solid var(--ln);cursor:pointer;color:inherit}.it:last-child{border:0}.it:hover{background:#f8fafc}
.it .m{flex:1;min-width:0}.it .t{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.it .s{color:var(--mu);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.it .v{text-align:right;font-weight:700;white-space:nowrap}
.av{width:38px;height:38px;border-radius:10px;background:#e0f2fe;color:var(--b);display:grid;place-items:center;font-weight:700;flex:none;font-size:14px}
.tag{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:700;background:#e2e8f0;color:#334155;white-space:nowrap}
.tag.agendada{background:#e0f2fe;color:#0369a1}.tag.pendiente{background:#fef3c7;color:#92400e}.tag.en_proceso{background:#ede9fe;color:#6d28d9}.tag.terminada,.tag.pagada,.tag.aceptada,.tag.atendida{background:#dcfce7;color:#166534}
.tag.cancelada,.tag.anulada,.tag.rechazada,.tag.descartada{background:#fee2e2;color:#991b1b}.tag.parcial,.tag.enviada,.tag.nueva{background:#fef3c7;color:#92400e}.tag.alta{background:#fee2e2;color:#991b1b}
.empty{color:var(--mu);text-align:center;padding:22px 10px;font-size:14px}
.search{flex:1;min-width:180px;padding:10px 12px;border:1px solid var(--ln);border-radius:9px;background:#fff}
.chips{display:flex;gap:6px;overflow:auto;padding-bottom:4px;margin-bottom:10px}.chip{padding:6px 12px;border-radius:99px;border:1px solid var(--ln);background:#fff;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.chip.on{background:var(--tx);color:#fff;border-color:var(--tx)}
table.t{width:100%;border-collapse:collapse;font-size:14px}table.t th{text-align:left;font-size:12px;color:var(--mu);text-transform:uppercase;padding:8px;border-bottom:1px solid var(--ln)}table.t td{padding:9px 8px;border-bottom:1px solid var(--ln)}.r{text-align:right}
.dl{display:grid;grid-template-columns:140px 1fr;gap:6px 12px;font-size:14px}.dl dt{color:var(--mu)}.dl dd{margin:0;white-space:pre-line;word-break:break-word}
.fotos{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}.fotos .f{position:relative;aspect-ratio:1;border-radius:9px;overflow:hidden;background:#e2e8f0}.fotos img{width:100%;height:100%;object-fit:cover;cursor:zoom-in}
.fotos .f span{position:absolute;left:5px;top:5px;background:#000a;color:#fff;font-size:11px;padding:1px 6px;border-radius:5px}.fotos .f button{position:absolute;right:4px;top:4px;border:0;background:#000a;color:#fff;border-radius:6px;width:24px;height:24px;cursor:pointer}
.bars{display:flex;gap:10px;align-items:flex-end;height:150px;padding-top:10px}.bars .c{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%}.bars .c .s{flex:1;width:100%;display:flex;gap:3px;align-items:flex-end;justify-content:center}
.bars .c i{display:block;width:40%;max-width:22px;border-radius:4px 4px 0 0;background:var(--b2);min-height:2px}.bars .c i.g{background:#f87171}.bars small{font-size:11px;color:var(--mu)}
.legend{display:flex;gap:14px;font-size:12px;color:var(--mu)}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.dia h4{margin:16px 0 6px;font-size:13px;text-transform:uppercase;color:var(--mu);letter-spacing:.04em}.dia h4.hoy{color:var(--b)}
.hora{font-weight:800;color:var(--b);width:62px;flex:none;font-size:14px}
/* modal */
.ov{position:fixed;inset:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px;animation:f .15s}@keyframes f{from{opacity:0}}
.md{background:#fff;border-radius:16px;width:100%;max-width:560px;max-height:92vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0004}.md.w{max-width:860px}
.md header{padding:16px 18px;border-bottom:1px solid var(--ln);display:flex;align-items:center;gap:10px}.md header h2{margin:0;font-size:17px;flex:1}.md header button{border:0;background:none;font-size:24px;cursor:pointer;color:var(--mu);line-height:1}
.md .bd{padding:16px 18px;overflow:auto}.md footer{padding:12px 18px;border-top:1px solid var(--ln);display:flex;gap:8px;justify-content:flex-end}
.fm{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}.fm .full{grid-column:1/-1}.fm label{display:block;font-size:12px;font-weight:700;color:#334155;margin-bottom:4px}
.fm input,.fm select,.fm textarea,.inp{width:100%;padding:10px 11px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;font-size:15px}.fm textarea{min-height:76px;resize:vertical}
.fm input:focus,.fm select:focus,.fm textarea:focus,.inp:focus,.search:focus{outline:2px solid #7dd3fc;border-color:var(--b2)}
.fm .hint{font-size:12px;color:var(--mu);margin-top:3px}
.items td{padding:4px}.items input{padding:8px;border:1px solid #cbd5e1;border-radius:7px;width:100%}
.toast{position:fixed;left:50%;bottom:86px;transform:translateX(-50%);background:#0f172a;color:#fff;padding:11px 18px;border-radius:10px;z-index:60;font-size:14px;box-shadow:0 8px 24px #0004;max-width:90vw}.toast.e{background:var(--bad)}
.login{min-height:100vh;width:100%;display:grid;place-items:center;padding:20px;background:linear-gradient(160deg,#0c2d48,#0369a1)}.login .card{width:100%;max-width:380px;padding:28px}.login img{width:90px;display:block;margin:0 auto 8px}
.login h1{text-align:center;font-size:20px;margin:0 0 4px}.login p{text-align:center;color:var(--mu);margin:0 0 18px;font-size:14px}.login .fm{grid-template-columns:1fr}.login .btn{width:100%;padding:12px;margin-top:14px}
.fab{display:none}
.lb{position:fixed;inset:0;background:#000e;z-index:70;display:grid;place-items:center;padding:10px}.lb img{max-width:100%;max-height:100%}
.pre{background:#f8fafc;border:1px solid var(--ln);border-radius:9px;padding:10px;font-size:13px;white-space:pre-wrap;word-break:break-word}
code.blk{display:block;background:#0f172a;color:#e2e8f0;padding:12px;border-radius:9px;font-size:12px;white-space:pre-wrap;word-break:break-all;max-height:260px;overflow:auto}
.solo-m{display:none}
.sw{display:flex;align-items:center;gap:10px;font-weight:600}.sw input{width:20px;height:20px}
@media (max-width:900px){.grid2,.grid3{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){
 .solo-m{display:block}.no-m{display:none!important}
 .side{display:none}main{margin:0;padding:14px 12px 96px}.top h1{font-size:20px}
 .bnav{display:flex;position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--ln);z-index:40;padding:4px 4px calc(4px + env(safe-area-inset-bottom))}
 .bnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:var(--mu);padding:5px 0;font-weight:600;position:relative}.bnav a.on{color:var(--b)}
 .bnav a .bd{position:absolute;top:0;right:22%;background:#f59e0b;color:#111;border-radius:99px;font-size:10px;padding:0 5px}
 .fab{display:grid;position:fixed;right:16px;bottom:84px;width:56px;height:56px;border-radius:50%;background:var(--b);color:#fff;border:0;place-items:center;box-shadow:0 6px 18px #0369a166;z-index:41}.fab .ic{width:26px;height:26px}
 .top .hide-m{display:none}
 .fm{grid-template-columns:1fr}.dl{grid-template-columns:1fr}.dl dt{margin-top:6px;font-size:12px}
 .ov{align-items:flex-end;padding:0}.md{border-radius:16px 16px 0 0;max-height:94vh}
 .kpis{grid-template-columns:1fr 1fr}.kpi b{font-size:18px}
 table.t.resp thead{display:none}table.t.resp tr{display:block;border-bottom:1px solid var(--ln);padding:6px 0}table.t.resp td{display:flex;justify-content:space-between;border:0;padding:3px 4px}table.t.resp td:before{content:attr(data-l);color:var(--mu);font-size:12px}
}
@media print{.side,.bnav,.fab,.top .btn{display:none}main{margin:0}}
/* ===== botones y movimiento ===== */
.btn{position:relative;overflow:hidden;transition:transform .15s cubic-bezier(.3,.7,.4,1.4),box-shadow .2s,background .2s,border-color .2s,color .2s;box-shadow:0 1px 2px #0f172a0d}
.btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0f172a1a}.btn:active{transform:translateY(0) scale(.96);box-shadow:none}
.btn.p{background:linear-gradient(135deg,#0284c7,#0369a1)}.btn.p:hover{background:linear-gradient(135deg,#0369a1,#075985);box-shadow:0 6px 16px #0369a14d}
.btn.wa{background:linear-gradient(135deg,#22c55e,#16a34a)}.btn.wa:hover{box-shadow:0 6px 16px #16a34a4d}
.btn.ok{color:#166534;border-color:#bbf7d0;background:#f0fdf4}.btn.ok:hover{background:#dcfce7}
.btn .ic{transition:transform .2s}.btn:hover .ic{transform:scale(1.12)}
.btn .rip{position:absolute;border-radius:50%;transform:scale(0);background:currentColor;opacity:.25;animation:rip .55s ease-out;pointer-events:none}@keyframes rip{to{transform:scale(2.6);opacity:0}}
.btn.load{color:transparent!important}.btn.load:after{content:"";position:absolute;width:18px;height:18px;left:calc(50% - 9px);top:calc(50% - 9px);border:2.5px solid #fff;border-right-color:transparent;border-radius:50%;animation:gira .7s linear infinite}
.btn:not(.p):not(.wa).load:after{border-color:var(--b);border-right-color:transparent}@keyframes gira{to{transform:rotate(360deg)}}
.chip{transition:all .18s}.chip:hover{border-color:#94a3b8}.chip:active{transform:scale(.95)}
.it{transition:background .15s,transform .15s}.it:active{transform:scale(.99)}
.card,.kpi{transition:box-shadow .2s,transform .2s}.kpi:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0f172a14}
#main>*{animation:sube .32s ease both}#main>*:nth-child(2){animation-delay:.03s}#main>*:nth-child(3){animation-delay:.06s}#main>*:nth-child(4){animation-delay:.09s}#main>*:nth-child(n+5){animation-delay:.12s}
@keyframes sube{from{opacity:0;transform:translateY(8px)}}
.md{animation:pop .22s cubic-bezier(.3,.7,.4,1.2)}@keyframes pop{from{opacity:0;transform:translateY(16px) scale(.98)}}
.fab{transition:transform .2s cubic-bezier(.3,.7,.4,1.5),box-shadow .2s}.fab:active{transform:scale(.9) rotate(90deg)}
.side a{transition:background .15s,color .15s,padding .15s}.side a:hover{padding-left:16px}
.bnav a{transition:color .15s,transform .15s}.bnav a:active{transform:scale(.9)}.bnav a.on .ic{animation:salta .35s}@keyframes salta{40%{transform:translateY(-3px)}}
.toast{animation:tin .25s ease}@keyframes tin{from{opacity:0;transform:translate(-50%,10px)}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* ===== perfil ===== */
img.avf{object-fit:cover;padding:0;background:#e2e8f0}.av.big{width:62px;height:62px;border-radius:16px;font-size:22px}
.me-row{display:flex!important;align-items:center;gap:10px;padding:8px!important;border-radius:10px;color:#e2e8f0!important}.me-row .av{width:36px;height:36px;border-radius:50%}
.me-row b{display:block;font-size:13px;color:#fff}.me-row small{font-size:11px;color:#94a3b8}
.me-top .av{width:42px;height:42px;border-radius:50%;box-shadow:0 0 0 3px #fff,0 2px 8px #0002}
.me-card{display:flex;gap:14px;align-items:center;color:inherit}.me-card .av{border-radius:50%}.me-card .s{color:var(--mu);font-size:13px}.me-card .link{color:var(--b);font-size:13px;font-weight:600;margin-top:3px}
.perfil{text-align:center}.pf-foto{position:relative;display:inline-grid;place-items:center;width:112px;height:112px;border-radius:50%;background:#e0f2fe;color:var(--b);font-size:38px;font-weight:800;cursor:pointer;overflow:visible}
.pf-foto img{width:112px;height:112px;border-radius:50%;object-fit:cover}.pf-foto em{position:absolute;right:0;bottom:2px;width:34px;height:34px;border-radius:50%;background:var(--b);color:#fff;display:grid;place-items:center;box-shadow:0 0 0 3px #fff}.pf-foto em .ic{width:17px;height:17px}
/* ===== técnicos ===== */
.tecs{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:10px}.tec{display:flex;gap:12px;align-items:center;border:1px solid var(--ln);border-radius:12px;padding:12px}.tec .av{border-radius:50%;width:44px;height:44px}
.tec .m{flex:1;min-width:0}.tec .t{font-weight:700}.tec .s{font-size:13px;color:var(--mu)}
/* ===== calendario ===== */
.seg{display:inline-flex;background:#e2e8f0;border-radius:10px;padding:3px}.seg button{border:0;background:none;padding:6px 12px;border-radius:8px;font-weight:600;font-size:13px;cursor:pointer;color:var(--mu);transition:all .2s}
.seg button.on{background:#fff;color:var(--tx);box-shadow:0 1px 4px #0002}
.cal-tit{color:var(--mu);margin:-6px 0 10px;font-weight:600;font-size:15px}
.cal{padding:12px}.cal-h{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}.cal-h span{text-align:center;font-size:12px;font-weight:700;color:var(--mu);text-transform:uppercase}
.cal-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cd{min-height:96px;border:1px solid var(--ln);background:#fff;border-radius:9px;padding:5px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:3px;transition:all .15s;font:inherit;min-width:0}
.cd:hover{border-color:var(--b2);background:#f0f9ff}.cd.fuera{background:#f8fafc;opacity:.55}.cd .n{font-size:13px;font-weight:700}
.cd.hoy .n{background:var(--b);color:#fff;border-radius:99px;width:24px;height:24px;display:grid;place-items:center}.cd.sel{border-color:var(--b);box-shadow:0 0 0 2px #7dd3fc}
.cd .ev{display:flex;flex-direction:column;gap:2px;min-width:0}.cd .e{font-style:normal;font-size:11px;padding:1px 5px;border-radius:5px;background:#e0f2fe;color:#075985;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd .e.en_proceso{background:#ede9fe;color:#5b21b6}.cd .e.terminada{background:#dcfce7;color:#166534}.cd .e.pendiente{background:#fef3c7;color:#92400e}.cd .e b{font-weight:700}.cd .mas{font-style:normal;font-size:11px;color:var(--mu);padding-left:4px}
.cd .dots{display:none;gap:3px;justify-content:center;margin-top:auto}.cd .dots i{width:6px;height:6px;border-radius:50%;background:#0ea5e9}.cd .dots i.en_proceso{background:#8b5cf6}.cd .dots i.terminada{background:#16a34a}.cd .dots i.pendiente{background:#f59e0b}
@media (max-width:760px){.cd{min-height:54px;align-items:center;padding:5px 2px}.cd .ev{display:none}.cd .dots{display:flex}.cal{padding:8px}.cal-g,.cal-h{gap:3px}.top .seg button{padding:6px 9px}}
.fab{overflow:hidden}
/* ===== equipos múltiples, archivo, garantías ===== */
.eqbox{display:flex;flex-direction:column;gap:6px;border:1px solid #cbd5e1;border-radius:9px;padding:8px;max-height:260px;overflow:auto;background:#f8fafc}
.eqi{display:flex!important;gap:10px;align-items:flex-start;padding:8px 10px;border-radius:8px;background:#fff;border:1px solid var(--ln);cursor:pointer;font-weight:500!important;font-size:14px!important;margin:0!important;transition:border-color .15s,background .15s}
.eqi:hover{border-color:var(--b2)}.eqi input{width:18px!important;height:18px;margin-top:1px;flex:none;accent-color:var(--b)}.eqi span{flex:1}.eqi:has(input:checked){border-color:var(--b);background:#f0f9ff}.eqi.todo{background:#e2e8f0}
.eqbox .btn{align-self:flex-start}.eqbox .hint{font-size:13px;color:var(--mu);padding:2px 4px}
.eqtag{display:inline-block;background:#f1f5f9;border-radius:7px;padding:2px 8px;margin:0 4px 4px 0;font-size:13px}
.finbar{display:flex;gap:12px;align-items:center;background:linear-gradient(135deg,#f0fdf4,#ecfdf5);border:1px solid #bbf7d0}.finbar>.ic{width:28px;height:28px;color:#16a34a;flex:none}.finbar>div{flex:1}.finbar .s{font-size:13px;color:#166534}
.archivo{display:flex;gap:12px;align-items:center;background:#f8fafc;border:1px dashed #cbd5e1;box-shadow:none}.archivo>.ic{width:26px;height:26px;color:var(--b);flex:none}.archivo .s{font-size:13px;color:var(--mu)}
.sep{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--mu);padding:12px 4px 4px}
.av.fin{background:#dcfce7;color:#16a34a}.av .ic{width:18px;height:18px}
.garinfo{display:flex;gap:8px;align-items:center;padding:10px 12px;border-radius:9px;font-size:14px}.garinfo.ok{background:#dcfce7;color:#166534}.garinfo.no{background:#fee2e2;color:#991b1b}.garinfo .ic{flex:none}
.btn:disabled{cursor:default;transform:none!important;box-shadow:none}
@media (max-width:760px){.finbar{flex-wrap:wrap}.finbar>div{flex:1 1 calc(100% - 44px)}.finbar .btn{width:100%}}
/* ===== historial de trabajo (línea de tiempo) ===== */
.hc-res{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.hc-res span{background:#f1f5f9;border-radius:99px;padding:5px 12px;font-size:13px;color:var(--mu)}.hc-res b{color:var(--tx)}
.tl{position:relative;padding-left:6px}.tl:before{content:"";position:absolute;left:23px;top:8px;bottom:8px;width:2px;background:var(--ln)}
.tl-i{display:flex;gap:12px;position:relative;padding:8px 0;color:inherit}.tl-p{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#e0f2fe;color:var(--b);box-shadow:0 0 0 4px #fff;z-index:1;font-style:normal}
.tl-p .ic{width:17px;height:17px}.tl-i.terminada .tl-p{background:#dcfce7;color:#16a34a}.tl-i.gar .tl-p{background:#fef3c7;color:#b45309}.tl-i.pago .tl-p{background:#dcfce7;color:#15803d}.tl-i.fac .tl-p{background:#ede9fe;color:#6d28d9}.tl-i.cancelada{opacity:.6}
.tl-c{flex:1;min-width:0;background:#f8fafc;border:1px solid var(--ln);border-radius:12px;padding:10px 12px;transition:border-color .15s,box-shadow .15s}a.tl-i:hover .tl-c{border-color:var(--b2);box-shadow:0 4px 12px #0f172a0f}
.tl-h{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}.tl-f{margin-left:auto;font-size:12px;color:var(--mu)}.tl-c .s{font-size:13px;color:var(--mu);display:flex;gap:5px;align-items:center;margin-top:3px}.tl-c .s .ic{width:14px;height:14px}
.tl-t{font-size:13px;margin-top:5px;white-space:pre-line}.tl-v{font-weight:800;margin-top:5px}
.tl-fotos{display:flex;gap:5px;margin-top:8px;flex-wrap:wrap}.tl-fotos img{width:54px;height:54px;object-fit:cover;border-radius:8px;cursor:zoom-in}.tl-fotos span{width:54px;height:54px;border-radius:8px;background:#e2e8f0;display:grid;place-items:center;font-size:13px;font-weight:700;color:var(--mu)}
.lock{font-size:11px;color:var(--mu);font-weight:600;display:flex;gap:3px;align-items:center;justify-content:flex-end}.lock .ic{width:12px;height:12px}
/* ===== avisos ===== */
.aviso{border:1px solid var(--ln);border-radius:12px;padding:12px;margin-top:10px;display:flex;flex-direction:column;gap:8px}.aviso-h{font-weight:700}.aviso .btn{align-self:flex-start}.btn.hecho{background:#dcfce7!important;color:#166534!important;border-color:#bbf7d0}
.aviso1h{position:fixed;right:18px;bottom:18px;z-index:44;width:min(460px,calc(100vw - 24px));display:flex;flex-direction:column;gap:8px;animation:sube .35s ease}
.a1{background:#0f172a;color:#fff;border-radius:14px;padding:12px;box-shadow:0 12px 32px #0f172a55;display:flex;flex-direction:column;gap:8px;border-left:4px solid #f59e0b}.a1-m{font-size:14px}.a1 .btn:not(.wa){background:#1e293b;color:#fff;border-color:#334155}
@media (max-width:760px){.aviso1h{left:12px;right:84px;width:auto;bottom:80px}.a1{padding:9px 10px}.a1-m{font-size:13px;cursor:pointer}.aviso1h.min .a1 .row{display:none}.aviso1h.min .a1{border-radius:99px}.aviso1h.min .a1-m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tl:before{left:21px}.tl-p{width:32px;height:32px}}
.ptlink{display:flex;gap:12px;align-items:center;color:inherit;border:1px solid #e0f2fe;background:linear-gradient(135deg,#f0f9ff,#fff)}.ptlink>.ic{width:26px;height:26px;color:var(--b);flex:none}.ptlink>div{flex:1}.ptlink .s{font-size:13px;color:var(--mu)}
.ptlink:hover{box-shadow:0 6px 18px #0369a11f;transform:translateY(-1px)}a.kpi:hover{box-shadow:0 6px 20px #0f172a14}
.tec{cursor:pointer;transition:border-color .15s,box-shadow .15s}.tec:hover{border-color:var(--b2)}.tec.sel{border-color:var(--b);box-shadow:0 0 0 2px #7dd3fc;background:#f0f9ff}
@media (max-width:760px){.ptlink{flex-wrap:wrap}.ptlink>div{flex:1 1 calc(100% - 44px)}}
.card h3{flex-wrap:wrap;row-gap:6px}
/* ===== paleta del logo: azul noche, azul eléctrico y cian hielo ===== */
:root{--b:#0b5ed7;--b2:#29b6f6;--bg:#edf3fb;--tx:#0b1733;--ln:#dbe5f1;--navy:#061633;--navy2:#0a2a63;--glow:#1e90ff}
body{background:radial-gradient(1200px 500px at 85% -10%,#dcecff 0%,transparent 60%),var(--bg);background-attachment:fixed}
body:before{content:"";position:fixed;right:-70px;bottom:-60px;width:560px;height:480px;background:url(logo-copo.png) no-repeat center/contain;opacity:.07;pointer-events:none;z-index:0}
main{position:relative;z-index:1}
.side{background:linear-gradient(180deg,#0a2457 0%,#061633 55%,#040e24 100%);border-right:1px solid #12306b;z-index:2}
.side .brand img{background:none;border-radius:0;width:44px;height:38px;object-fit:contain;filter:drop-shadow(0 0 8px #29b6f699)}
.side a{color:#b9c8e4}.side a:hover{background:#ffffff10;color:#fff}
.side a.on{background:linear-gradient(90deg,#1565ff,#1e9bff 60%,#29b6f6);color:#fff;box-shadow:0 6px 18px #1e90ff44}
.btn.p{background:linear-gradient(135deg,#2196ff,#0b4fc4);border-color:#0b5ed7}.btn.p:hover{background:linear-gradient(135deg,#1e90ff,#0a43a8);box-shadow:0 6px 18px #1e90ff55}
.kpi{position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg,#1565ff,#29b6f6)}
.kpi.g:after{background:linear-gradient(90deg,#16a34a,#4ade80)}.kpi.rd:after{background:linear-gradient(90deg,#dc2626,#fb7185)}
.chip.on{background:linear-gradient(135deg,#0a2a63,#061633);border-color:#0a2a63}
.seg button.on{color:var(--b)}
.fab{background:linear-gradient(135deg,#2196ff,#0b4fc4);box-shadow:0 8px 22px #1e90ff66}
.bnav{background:#ffffffee;backdrop-filter:blur(8px)}
.av{background:#e3efff;color:var(--b)}
/* encabezado de inicio */
.hero{position:relative;overflow:hidden;border-radius:18px;padding:22px 24px;margin-bottom:14px;color:#fff;display:flex;align-items:center;gap:16px;min-height:150px;
  background:radial-gradient(420px 220px at 88% 50%,#1e90ff55,transparent 70%),radial-gradient(300px 200px at 0% 100%,#29b6f633,transparent 70%),linear-gradient(135deg,#0a2a63,#061633 70%);box-shadow:0 10px 30px #06163340}
.hero-t{display:flex;gap:14px;align-items:center;flex:1;position:relative;z-index:1}.hero h1{margin:2px 0;font-size:26px}.hero-f{font-size:13px;color:#9ec9ff}.hero-f:first-letter{text-transform:uppercase}.hero-s{font-size:14px;color:#cfe3ff}
.hero .me-top .av{box-shadow:0 0 0 3px #29b6f6,0 0 18px #29b6f688;width:52px;height:52px}
.hero-logo{position:absolute;right:18px;top:50%;transform:translateY(-50%);height:132px;filter:drop-shadow(0 0 18px #1e90ffaa);opacity:.95;pointer-events:none}
.hero-tec{position:relative;z-index:1;margin-right:200px;display:flex;flex-direction:column;align-items:center;padding:10px 18px;border-radius:14px;background:#ffffff14;border:1px solid #ffffff2a;color:#fff;backdrop-filter:blur(4px);transition:background .2s}
.hero-tec:hover{background:#ffffff22}.hero-tec b{font-size:30px;line-height:1}.hero-tec span{font-size:12px;color:#cfe3ff}.hero-tec em{font-style:normal;font-size:11px;margin-top:4px;color:#4ade80;font-weight:700}
/* técnicos activos */
.team{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.tm{display:flex;gap:10px;align-items:center;padding:10px;border:1px solid var(--ln);border-radius:12px;background:#fff}.tm .av{border-radius:50%;width:42px;height:42px}
.tm b{display:block;font-size:14px}.tm span{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--mu)}.tm small{font-size:11px;color:var(--ok)}
.tm i{width:8px;height:8px;border-radius:50%;background:#94a3b8}.tm.srv i{background:#16a34a;box-shadow:0 0 0 3px #16a34a33;animation:late 1.6s infinite}.tm.srv span{color:#166534}
.tm.hoy i{background:#1e90ff}.tm.hoy span{color:var(--b)}.tm.lib i{background:#29b6f6}@keyframes late{50%{box-shadow:0 0 0 6px #16a34a11}}
/* entrada */
.login{background:radial-gradient(600px 380px at 50% 18%,#1e5bd8 0%,transparent 70%),radial-gradient(500px 300px at 80% 100%,#29b6f633,transparent 70%),linear-gradient(180deg,#0a2a63,#040e24)}
.login .card{box-shadow:0 20px 60px #0008;border-top:4px solid #29b6f6}
.login img.login-logo{width:230px;margin:-4px auto 6px;padding:14px 10px;border-radius:16px;background:linear-gradient(135deg,#0a2a63,#061633);filter:drop-shadow(0 0 10px #1e90ff55)}
@media (max-width:760px){
 .hero{padding:16px;min-height:0;flex-direction:column;align-items:stretch}.hero h1{font-size:22px}
 .hero-logo{height:84px;right:-34px;top:8px;transform:none;opacity:.28}
 .hero-tec{margin:0;flex-direction:row;gap:8px;justify-content:center;flex-wrap:wrap}.hero-tec b{font-size:22px}
 body:before{width:320px;height:280px;right:-60px;bottom:40px}
}
/* ===== marca de agua en el panel ===== */
body:before{left:calc(50% + 118px);top:52%;right:auto;bottom:auto;width:min(680px,62vw);height:min(520px,48vw);transform:translate(-50%,-50%);background:url(logo-agua.png) no-repeat center/contain;opacity:.38}
.card,.kpi{background:#ffffffb8}.md .card,.ov .card{background:#fff}
.login:before{display:none}
@media (max-width:760px){body:before{left:50%;top:55%;width:90vw;height:70vw;opacity:.3}}

/* ---------- barra superior: buscador y campana ---------- */
.tbar{position:fixed;top:12px;right:18px;z-index:45;display:flex;gap:8px}
.tbar .tb{display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--ln);border-radius:99px;padding:8px 14px;box-shadow:var(--sh);cursor:pointer;color:var(--mu);font-size:14px}
.tbar .tb:hover{border-color:var(--b2);color:var(--b)}.tbar .tb.ico{padding:8px 10px;position:relative}
.tbar .tb .bd{position:absolute;top:-3px;right:-3px;background:var(--bad);color:#fff;border-radius:99px;font-size:10px;font-weight:800;padding:1px 5px;line-height:1.3}
.bgr{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--mu);padding:10px 4px 4px}
.it.nw{background:#f0f8ff}
.olv{display:block;text-align:center;margin-top:12px;font-size:14px;color:var(--b)}
/* ---------- en ruta ---------- */
.ruta{display:flex;gap:8px;flex-wrap:wrap}
.horas{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.horas>div{flex:1;min-width:84px;background:#f4f8fc;border-radius:10px;padding:8px 10px;text-align:center}
.horas small{display:block;font-size:11px;color:var(--mu)}.horas b{font-size:15px}
/* ---------- firma ---------- */
.pad{width:100%;height:190px;border:2px dashed #94a3b8;border-radius:12px;background:#fff;touch-action:none;display:block}
.firmabox{text-align:center}.firmabox img{max-height:90px;max-width:100%;object-fit:contain}
.firmabox .s{font-size:13px;color:var(--mu);border-top:1px solid var(--tx);display:inline-block;padding-top:4px;margin-top:2px}
/* ---------- reportes ---------- */
.barra{height:8px;border-radius:99px;background:#e2e8f0;overflow:hidden;margin:12px 0}
.barra span{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--b),var(--b2))}
.minik{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px}
.minik>div{background:#f4f8fc;border-radius:10px;padding:8px 10px;text-align:center;min-width:0}
.minik b{display:block;font-size:16px}.minik small{font-size:11px;color:var(--mu)}
@media(max-width:760px){
  .tbar{top:10px;right:12px}
  .tbar .tb{padding:9px;border-radius:50%}.tbar .tb span:not(.bd){display:none}
  main{padding-top:58px}
  .horas>div{min-width:72px}.pad{height:160px}
}

/* ---------- listas de chequeo ---------- */
.ck{list-style:none;padding:0;margin:0;font-size:14px}
.ck li{display:flex;gap:9px;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--bg)}
.ck li:last-child{border-bottom:0}
.ck .ic{flex:none;font-weight:800;width:18px;text-align:center;font-size:15px;height:auto;stroke:none}
.ck .si{color:var(--ok)}.ck .no{color:#94a3b8}.ck .nm{flex:1;min-width:0}.ck .vl{font-weight:700;white-space:nowrap}
.ck-r{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--bg);font-size:15px;cursor:pointer}
.ck-r input{width:22px;height:22px;flex:none;margin-top:1px;accent-color:var(--b)}
.ck-m{padding:9px 0;border-bottom:1px solid var(--bg)}
.ck-m label,.ck-t label{display:block;font-size:14px;margin-bottom:5px}
.ck-m .row{gap:8px;align-items:center}.ck-m .u{font-size:13px;color:var(--mu);min-width:34px}
.ck-t{padding:9px 0;border-bottom:1px solid var(--bg)}
.ck-e{display:grid;grid-template-columns:104px 1fr 86px auto;gap:6px;margin-top:6px;align-items:center}
.ck-e .inp{padding:7px 9px;font-size:14px}
@media(max-width:620px){.ck-e{grid-template-columns:1fr 1fr;grid-template-areas:"t u" "n n" "d d"}
  .ck-e .tt{grid-area:t}.ck-e .uu{grid-area:u}.ck-e .nn{grid-area:n}.ck-e [data-del]{grid-area:d;justify-self:end}}
/* ---------- sin conexión ---------- */
.offb{position:fixed;left:0;right:0;bottom:0;z-index:70;background:#b45309;color:#fff;font-size:13px;padding:8px 14px;display:flex;gap:10px;align-items:center;justify-content:center;font-weight:600}
.offb.sync{background:#0369a1}
.offb button{background:#ffffff2e;border:0;color:#fff;border-radius:7px;padding:5px 10px;font-size:13px;font-weight:700;cursor:pointer}
.pend{display:inline-flex;align-items:center;gap:4px;background:#fef3c7;color:#92400e;border-radius:99px;padding:2px 9px;font-size:11px;font-weight:800}
@media(max-width:760px){.offb{bottom:calc(58px + env(safe-area-inset-bottom,0px))}}

/* aviso de cliente sin registrar */
.avisoprov{display:flex;gap:10px;align-items:center;background:#fff8e6;border:1px solid #fde68a;border-radius:10px;padding:10px 12px;margin:10px 0;font-size:14px}
.avisoprov .ic{color:#b45309;flex:none}.avisoprov b{color:#92400e}.avisoprov .s{font-size:13px;color:#78350f;opacity:.85}
.avisoprov .btn{margin-left:auto;flex:none}
@media(max-width:560px){.avisoprov{flex-wrap:wrap}.avisoprov .btn{margin-left:0;width:100%;justify-content:center}}

/* editor de listas de chequeo */
.ckf{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.ckf .nm{flex:1;min-width:0}.ckf .un{width:72px;flex:none}
.ckf select.tp{font-size:13px;padding:8px}
.ckf .btn{flex:none;padding:6px 8px}
@media(max-width:620px){
  .ckf{flex-wrap:wrap;border:1px solid var(--ln);border-radius:10px;padding:8px;background:#fafcff}
  .ckf select.tp{width:100%;order:1}.ckf .nm{order:2;width:100%;flex:auto}
  .ckf .un{order:3;width:80px}.ckf .sub,.ckf .baj,.ckf .qt{order:4;margin-left:auto}
}
