:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--pagebg,#f3f4f6);font-synthesis:none;--primary:#111827;--accent:#2563eb;--pagebg:#f3f4f6;--text:#111827}*{box-sizing:border-box}body{margin:0;background:var(--pagebg)}button,input,select,textarea{font:inherit}button{cursor:pointer}.app{display:grid;grid-template-columns:238px minmax(0,1fr);min-height:100vh}aside{background:var(--primary);color:#fff;padding:22px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;margin:0 6px 25px}.brand span{display:block;font-size:11px;color:#cbd5e1;margin-top:2px}.logo,.heroLogo{width:40px;height:40px;border-radius:12px;background:#fff;color:var(--primary);display:grid;place-items:center;font-weight:850;overflow:hidden;flex:0 0 auto}.heroLogo{width:52px;height:52px;background:var(--primary);color:#fff}.logoImage img,.heroLogo.logoImage img{width:100%;height:100%;object-fit:contain;background:#fff}.brand b{font-size:17px}aside nav{display:flex;flex-direction:column}aside button{width:100%;border:0;background:transparent;color:#dbe4f0;display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:10px;margin:2px 0;text-align:left;font-size:14px}aside button:hover,aside button.active{background:rgba(255,255,255,.10);color:#fff}aside .logout{margin-top:auto;color:#fecaca}main{padding:26px;overflow:hidden}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:21px}h1{font-size:25px;margin:0;letter-spacing:-.02em}h2{letter-spacing:-.015em}header p,.panelHead p,.muted{margin:4px 0 0;color:#6b7280;font-size:13px}.iconBtn{width:40px;height:40px;border:1px solid #e5e7eb;background:#fff;border-radius:11px;display:grid;place-items:center}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.stat,.panel{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 1px 2px rgba(0,0,0,.025)}.stat{display:flex;gap:12px;padding:17px}.stat small,.reconCards small{display:block;font-size:11px;color:#6b7280}.stat b{display:block;font-size:20px;margin-top:3px}.stat span{display:block;font-size:11px;color:#6b7280;margin-top:2px}.panel{padding:19px;margin-top:17px}.panelHead{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:15px}.panelHead h2,.modalHead h2{font-size:18px;margin:0}.btn{border:0;border-radius:10px;padding:10px 14px;font-weight:720;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn.primary{background:var(--primary);color:#fff}.btn.primary:hover{filter:brightness(1.08)}.btn.secondary{background:#f3f4f6;color:var(--text)}.btn.big{min-height:49px;padding:13px 18px}.btn:disabled{opacity:.45;cursor:not-allowed}.tableWrap{overflow:auto;border:1px solid #eef0f2;border-radius:12px;margin-top:12px}table{border-collapse:collapse;width:100%;min-width:760px}th,td{text-align:left;padding:10px 11px;border-bottom:1px solid #eef0f2;font-size:12.5px;vertical-align:middle}th{color:#6b7280;font-weight:700;background:#fafafa;white-space:nowrap}tbody tr:last-child td{border-bottom:0}.tableEmpty{text-align:center!important;color:#9ca3af;padding:25px!important}.pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:10.5px;font-weight:750;background:#f3f4f6;color:#4b5563;white-space:nowrap}.pill.green{background:#ecfdf5;color:#047857}.pill.amber{background:#fffbeb;color:#b45309}.pill.red{background:#fef2f2;color:#b91c1c}.empty{min-height:135px;display:grid;place-items:center;align-content:center;text-align:center;color:#9ca3af}.empty p{font-size:13px}.formGrid,.contextGrid,.miniGrid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.formGrid.single{grid-template-columns:1fr}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:11px;color:#6b7280;font-weight:700}.span2{grid-column:1/-1}.field input,.field select,.field textarea,.inlineForm input,.publicCard input,.publicCard select{border:1px solid #d1d5db;background:#fff;border-radius:10px;padding:10px 11px;outline:none;width:100%;min-height:42px}.field textarea{min-height:92px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus,.publicCard input:focus,.publicCard select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}.field input[readonly]{background:#f9fafb;color:#4b5563}.stackForm{display:flex;flex-direction:column;gap:14px}.contextGrid{background:#fafafa;border:1px solid #eef0f2;border-radius:14px;padding:14px}.evidenceRow{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.8fr);gap:16px;padding:15px;border:1px solid #e5e7eb;border-radius:14px;background:#fff}.evidenceFields{display:flex;flex-direction:column;gap:12px}.stepTitle{display:flex;flex-direction:column;gap:2px}.stepTitle b{font-size:14px}.stepTitle small{color:#6b7280;font-size:11.5px}.evidencePhoto{display:flex;min-height:126px}.photoTile{position:relative;width:100%;min-height:126px;border:1.5px dashed #9ca3af;border-radius:13px;background:#fafafa;display:flex;align-items:center;gap:11px;padding:13px;overflow:hidden;cursor:pointer;transition:.15s}.photoTile:hover{border-color:var(--accent);background:#f8fbff}.photoTile input{position:absolute;inset:0;opacity:0;cursor:pointer;z-index:3}.photoIcon{width:40px;height:40px;border-radius:11px;background:#eef2ff;display:grid;place-items:center;color:#4338ca;font-size:20px;flex:0 0 auto}.photoText{display:flex;flex-direction:column;gap:3px;min-width:0;z-index:1}.photoText b{font-size:12px}.photoText small{font-size:10.5px;color:#6b7280;overflow:hidden;text-overflow:ellipsis}.photoPreview{margin-left:auto;width:76px;height:76px;border-radius:10px;overflow:hidden;flex:0 0 auto;z-index:1}.photoPreview img{width:100%;height:100%;object-fit:cover}.formActions{display:flex;justify-content:flex-end;padding-top:2px}.overlay{position:fixed;inset:0;background:rgba(17,24,39,.55);z-index:50;display:grid;place-items:center;padding:18px}.modal{width:min(600px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:18px;padding:20px;box-shadow:0 25px 80px rgba(0,0,0,.25)}.modalHead{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px}.modalHead button{border:0;background:#f3f4f6;width:34px;height:34px;border-radius:10px;display:grid;place-items:center}.auth{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(150deg,#f9fafb,var(--pagebg))}.authCard{width:min(420px,100%);background:#fff;border:1px solid #e5e7eb;border-radius:20px;padding:28px;box-shadow:0 20px 60px rgba(0,0,0,.08)}.authCard h1{margin:17px 0 5px}.authCard>p{margin:0 0 22px;color:#6b7280;font-size:13px}.publicPage{min-height:100vh;background:var(--pagebg);padding:16px;max-width:720px;margin:0 auto}.publicHead{display:flex;align-items:center;gap:13px;padding:10px 2px 15px}.publicHead small{color:#6b7280}.publicHead h1{font-size:27px}.publicHead p{margin:2px 0;color:#6b7280;font-size:12px}.publicTabs{display:grid;grid-template-columns:1fr 1fr;background:#e5e7eb;padding:4px;border-radius:12px;margin-bottom:13px}.publicTabs button{border:0;padding:11px;border-radius:9px;background:transparent;font-weight:700;color:#6b7280}.publicTabs button.active{background:#fff;color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.06)}.publicCard{background:#fff;border:1px solid #e5e7eb;border-radius:17px;padding:18px}.publicCardHead h2{margin:0}.publicCardHead p{margin:4px 0 2px;color:#6b7280;font-size:12px}.publicCard .evidenceRow{grid-template-columns:1fr;margin-top:2px}.publicCard .photoTile{min-height:112px}.publicCard>.stackForm{margin-top:15px}.notice{margin-top:13px;border-radius:10px;background:#fff7ed;padding:11px;font-size:12px;color:#92400e}.notice.ok{background:#ecfdf5;color:#047857}.identityRow{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:14px;padding:14px;border:1px solid #e5e7eb;border-radius:14px}.identityRow>div:first-child{display:flex;flex-direction:column;gap:3px}.identityRow small{font-size:11px;color:#6b7280}.reconCards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:15px}.reconCards>div{background:#f9fafb;border:1px solid #e5e7eb;border-radius:12px;padding:12px}.reconCards b{display:block;font-size:17px;margin-top:4px}.danger{color:#b91c1c}.success{color:#047857}.dangerText{color:#b91c1c!important}.actionRow{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 20px}.voucherVerify{display:grid;grid-template-columns:1fr 300px auto;gap:12px;align-items:end;margin:10px 0 16px}.voucherVerify>div:first-child{display:grid;grid-template-columns:1fr 1fr;gap:8px}.voucherVerify .photoTile{min-height:72px}.linkBtn{border:0;background:transparent;color:var(--accent);display:inline-flex;align-items:center;gap:2px;padding:0;text-decoration:none;font-size:12px}.evidenceLink{font-size:11px;color:var(--accent);text-decoration:none}.dashboardGrid{display:grid;grid-template-columns:1.35fr .85fr;gap:17px}.dashboardGrid .panel{min-width:0}.settingsGroups{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.settingsCard{border:1px solid #e5e7eb;border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:11px}.settingsCard h3{font-size:14px;margin:0 0 2px}.checkField{display:flex;gap:10px;align-items:flex-start;border:1px solid #eef0f2;border-radius:10px;padding:10px}.checkField input{margin-top:2px}.checkField div{display:flex;flex-direction:column}.checkField b{font-size:12px}.checkField small{font-size:10.5px;color:#6b7280}.brandPreview{min-height:126px;border:1px dashed #d1d5db;border-radius:13px;display:grid;place-items:center;font-weight:850;font-size:28px}.brandPreview img{max-width:90%;max-height:110px;object-fit:contain}.topGap{margin-top:15px}code{font-size:10.5px;color:#4b5563;white-space:pre-wrap}.fuelEntryPanel{border-top:3px solid var(--accent)}
@media(max-width:1080px){.stats{grid-template-columns:repeat(2,1fr)}.settingsGroups{grid-template-columns:1fr 1fr}.dashboardGrid{grid-template-columns:1fr}.voucherVerify{grid-template-columns:1fr 1fr}.voucherVerify .btn{grid-column:1/-1}}
@media(max-width:800px){.app{display:block}aside{position:sticky;top:0;height:auto;z-index:20;display:flex;flex-direction:row;overflow:auto;padding:8px}aside nav{display:flex;flex-direction:row;gap:2px}.brand{display:none}aside button{min-width:max-content;width:auto}.logout{margin-left:auto!important}main{padding:14px}header{margin:7px 2px 16px}.formGrid,.contextGrid,.miniGrid{grid-template-columns:1fr}.span2{grid-column:auto}.evidenceRow{grid-template-columns:1fr}.evidencePhoto{min-height:112px}.settingsGroups{grid-template-columns:1fr}.reconCards{grid-template-columns:1fr 1fr}.modal{padding:16px}.panel{padding:14px}.panelHead{align-items:flex-start}.publicPage{padding:12px}.identityRow{grid-template-columns:1fr}.voucherVerify,.voucherVerify>div:first-child{grid-template-columns:1fr}.photoTile{min-height:105px}.formActions .btn{width:100%}}
@media(max-width:480px){.stats{grid-template-columns:1fr 1fr}.reconCards{grid-template-columns:1fr 1fr}header p{display:none}.publicCard{padding:13px}.publicPage{padding:8px}.photoPreview{width:62px;height:62px}.stats .stat{padding:13px}.stat b{font-size:17px}}
.riskLegend{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.riskLegend>div{border:1px solid #e5e7eb;border-radius:12px;padding:12px;background:#fafafa;display:flex;flex-direction:column;gap:7px}.riskLegend span{font-size:11px;color:#6b7280;line-height:1.45}.reconCards.reconFive{grid-template-columns:repeat(5,minmax(0,1fr))}.reconCards span{display:block;font-size:10.5px;color:#6b7280;margin-top:4px}.invoiceEvidence{display:flex;justify-content:flex-end;margin:-4px 0 12px}
@media(max-width:1200px){.reconCards.reconFive{grid-template-columns:repeat(3,1fr)}.riskLegend{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.reconCards.reconFive{grid-template-columns:1fr 1fr}.riskLegend{grid-template-columns:1fr}}

.avatarSmall{width:42px;height:42px;border-radius:10px;object-fit:cover;border:1px solid #e5e7eb}.reviewGrid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:16px;border:1px solid #e5e7eb;border-radius:14px;padding:15px}.reviewData{display:flex;flex-direction:column;gap:10px}.reviewData h3{margin:0;font-size:15px}.reviewData>small{color:#6b7280}.reviewPhoto{border:1px dashed #9ca3af;border-radius:13px;padding:10px;min-height:190px;display:flex;flex-direction:column;gap:8px}.reviewPhoto img{width:100%;height:230px;object-fit:contain;background:#1118270a;border-radius:9px}.reviewPhoto>a{display:block}.photoMissing{flex:1;display:grid;place-items:center;text-align:center;color:#6b7280;background:#f9fafb;border-radius:9px}.photoMissing small{display:block;font-size:9px;word-break:break-all}.reviewActions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}.dangerBtn{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.retentionCard{margin-top:14px}.muted{color:#6b7280;font-size:12px}
@media(max-width:900px){.reviewGrid{grid-template-columns:1fr}.reviewPhoto img{height:190px}.reviewActions .btn{flex:1 1 100%}}

/* V1.7 UX: evidence review, dispatch, attendance, payroll and responsive operations */
.reviewPhoto{min-height:300px}.reviewPhoto img{height:310px}.reviewImageButton{border:0;background:transparent;padding:0;display:flex;flex-direction:column;gap:7px;width:100%;cursor:zoom-in}.reviewImageButton span{font-size:11px;color:var(--accent);font-weight:700}.reviewImageButton img{border:1px solid #e5e7eb}
.evidenceZoomDock{position:fixed;right:18px;top:18px;bottom:18px;width:min(58vw,900px);z-index:90;background:#fff;border:1px solid #d1d5db;border-radius:18px;box-shadow:0 25px 90px rgba(0,0,0,.32);display:flex;flex-direction:column;overflow:hidden}.zoomHead{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid #e5e7eb;background:#fff}.zoomHead>div:first-child{display:flex;flex-direction:column}.zoomHead small{color:#6b7280;font-size:10px}.zoomTools{display:flex;gap:6px}.zoomTools button{border:1px solid #d1d5db;background:#f9fafb;border-radius:9px;min-width:36px;height:34px}.zoomCanvas{flex:1;overflow:auto;background:#111827;display:grid;place-items:center;padding:24px}.zoomCanvas img{max-width:100%;max-height:100%;transform-origin:center;transition:transform .12s ease;background:#fff}
.btn.compact{padding:6px 9px;font-size:11px}.strongLink{font-weight:800}.modalWide{width:min(1280px,96vw)}.historyFilter{display:grid;grid-template-columns:220px 220px auto;gap:10px;align-items:end;margin-bottom:14px}.historyChart{border:1px solid #e5e7eb;border-radius:13px;background:#fafafa;padding:8px;margin:12px 0 18px}.historyChart svg{width:100%;height:230px}.historyChart svg line{stroke:#d1d5db;stroke-width:1}.historyChart svg polyline{fill:none;stroke:var(--accent);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.historyChart svg circle{fill:var(--primary);stroke:#fff;stroke-width:2}.historyChart svg text{font-size:13px;fill:#6b7280}.avatarBtn{border:0;background:transparent;padding:0;cursor:zoom-in}.dayChecks{display:flex;flex-wrap:wrap;gap:8px}.dayChecks label{display:flex;align-items:center;gap:5px;border:1px solid #e5e7eb;padding:7px 9px;border-radius:9px;font-size:11px;background:#fafafa}.shiftChecks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
@media(max-width:1100px){.evidenceZoomDock{width:70vw}.shiftChecks{grid-template-columns:1fr 1fr}.historyFilter{grid-template-columns:1fr 1fr}.historyFilter .btn{grid-column:1/-1}}
@media(max-width:800px){.reviewPhoto{min-height:220px}.reviewPhoto img{height:240px}.evidenceZoomDock{inset:8px;width:auto}.zoomCanvas{padding:10px}.shiftChecks{grid-template-columns:1fr}.historyFilter{grid-template-columns:1fr}.modalWide{width:100%}}
.inputWarn{border-color:#dc2626!important;background:#fff7f7!important;box-shadow:0 0 0 2px rgba(220,38,38,.08)}
.notice.warn{border-color:#f59e0b;background:#fffbeb;color:#92400e}

/* V1.7 Dispatch, attendance, payroll and driver UX */
.compactStats{grid-template-columns:repeat(4,minmax(0,1fr))}.dispatchBoard{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.dispatchClient{border:1px solid #e5e7eb;border-radius:15px;background:#fafafa;overflow:hidden}.dispatchClientHead{display:flex;justify-content:space-between;align-items:center;padding:13px 14px;border-bottom:1px solid #e5e7eb;background:#fff}.dispatchClientHead h3{margin:0;font-size:15px}.dispatchClientHead small{font-size:10px;color:#6b7280}.dispatchCards{padding:10px;display:flex;flex-direction:column;gap:8px}.dispatchCard{display:grid;grid-template-columns:78px 1fr auto;gap:10px;align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:10px}.dispatchCard.needsAssign{border-color:#f59e0b;background:#fffbeb}.dispatchTime{font-weight:850;font-size:16px;color:var(--primary)}.dispatchMain{display:flex;flex-direction:column;gap:2px;min-width:0}.dispatchMain b{font-size:13px}.dispatchMain small,.dispatchMain span{font-size:10.5px;color:#6b7280}.exceptionCard{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid #fecaca;background:#fff7f7;padding:11px 12px;border-radius:12px;margin-bottom:8px}.exceptionCard>div{display:flex;flex-direction:column;gap:2px}.exceptionCard small,.exceptionCard span{font-size:10.5px;color:#6b7280}.btn.small{padding:7px 9px;font-size:11px}.driverHome{max-width:900px;margin:0 auto}.driverHero{display:flex;align-items:center;gap:15px;background:linear-gradient(135deg,var(--primary),color-mix(in srgb,var(--primary) 75%,#000));color:#fff;border-radius:20px;padding:20px}.driverHero>img{width:74px;height:74px;border-radius:18px;object-fit:cover;border:3px solid rgba(255,255,255,.7)}.driverHero h1{margin:2px 0}.driverHero p,.driverHero small{margin:0;color:#e5e7eb}.myServiceList{display:flex;flex-direction:column;gap:10px}.myService{display:grid;grid-template-columns:84px 1fr auto;gap:12px;align-items:center;border:1px solid #e5e7eb;border-radius:14px;padding:13px;background:#fff}.myServiceTime{font-size:19px;font-weight:850;color:var(--primary)}.myService h3{margin:2px 0;font-size:16px}.myService span{font-size:11px;color:#6b7280}.myService>div:last-child{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:1100px){.dispatchBoard{grid-template-columns:1fr}.compactStats{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.compactStats{grid-template-columns:1fr 1fr}.dispatchCard{grid-template-columns:64px 1fr}.dispatchCard>div:last-child{grid-column:1/-1}.myService{grid-template-columns:64px 1fr}.myService>div:last-child{grid-column:1/-1;justify-content:flex-start}.driverHero{padding:15px}.driverHero>img{width:60px;height:60px}.dispatchClientHead{position:sticky;top:52px;z-index:2}}

/* V1.7 QR service binding and payroll controls */
.serviceLookupRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.serviceLookupRow .field{margin:0}
.serviceLookupMsg{margin-top:-2px}
.serviceMiniList{display:grid;gap:7px;padding:10px 12px;border:1px solid #dbe2ea;border-radius:12px;background:#f8fafc}
.serviceMiniList>div{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:5px 0;border-bottom:1px solid #e5e7eb}
.serviceMiniList>div:last-child{border-bottom:0}
.serviceMiniList b{font-size:13px}.serviceMiniList span{font-size:12px;color:#64748b;text-align:right}
@media(max-width:680px){.serviceLookupRow{grid-template-columns:1fr}.serviceLookupRow .btn{width:100%}.serviceMiniList>div{align-items:flex-start;flex-direction:column}.serviceMiniList span{text-align:left}}
.qrModeBanner{display:flex;flex-direction:column;gap:3px;border-radius:14px;padding:13px 15px;margin:0 0 13px;color:#fff}.qrModeBanner.operation{background:#1d4ed8}.qrModeBanner.fuel{background:#059669}.qrModeBanner b{font-size:16px}.qrModeBanner span{font-size:11px;opacity:.9}.qrModal{width:min(520px,100%)}.qrCard{text-align:center;border:2px solid #111;border-radius:16px;padding:20px}.qrCard.operation{border-top:10px solid #1d4ed8}.qrCard.fuel{border-top:10px solid #059669}.qrCard img{display:block;width:min(300px,80vw);height:auto;margin:14px auto}.qrFicha{font-size:17px;font-weight:800}.qrType{font-size:23px;font-weight:900;margin-top:8px}.qrCard p{font-size:12px;color:#4b5563}.qrOp{color:#1d4ed8}.qrFuel{color:#047857}
/* Despacho semanal y rutas con paradas */
.dispatchHero{background:linear-gradient(135deg,var(--primary),color-mix(in srgb,var(--primary) 70%,#fff));color:#fff;border-radius:18px;padding:20px;margin-bottom:15px;display:flex;align-items:center;justify-content:space-between;gap:20px}.dispatchHero h2{margin:2px 0;font-size:24px}.dispatchHero p{margin:4px 0 0;color:#dbe4f0;font-size:12px}.dispatchHero small{font-size:11px;color:#cbd5e1}.weekDayBar{display:grid;grid-template-columns:repeat(7,minmax(72px,1fr));gap:6px}.weekDayBtn{border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:#fff;border-radius:11px;padding:8px 9px;display:flex;flex-direction:column;gap:2px}.weekDayBtn small{font-size:9px;color:#dbe4f0}.weekDayBtn.active{background:#fff;color:var(--primary)}.weekDayBtn.active small{color:#6b7280}.dispatchBoardV2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.dispatchCompanyBlock{background:#fff;border:1px solid #e5e7eb;border-radius:16px;overflow:hidden}.dispatchCompanyTitle{padding:13px 15px;border-bottom:1px solid #eef0f2;background:#fafafa}.dispatchCompanyTitle h3{margin:0;font-size:15px}.dispatchCompanyTitle small{color:#6b7280;font-size:10.5px}.dispatchDirections{display:grid;grid-template-columns:1fr 1fr}.dispatchDirections>div{min-width:0}.dispatchDirections>div+div{border-left:1px solid #eef0f2}.directionTitle{font-size:10px;font-weight:850;letter-spacing:.08em;padding:8px 11px}.directionTitle.entry{background:#eff6ff;color:#1d4ed8}.directionTitle.exit{background:#fff7ed;color:#c2410c}.dispatchLine{display:grid;grid-template-columns:54px minmax(0,1fr) auto;gap:8px;align-items:center;padding:9px 10px;border-bottom:1px solid #f1f3f5}.dispatchLine:last-child{border-bottom:0}.dispatchLine.cancelled{opacity:.5}.dispatchLineTime{font-weight:800;font-size:11px;color:#374151}.dispatchLineMain{min-width:0;display:flex;flex-direction:column}.dispatchLineMain b{font-size:11.5px;overflow:hidden;text-overflow:ellipsis}.dispatchLineMain small,.dispatchLineMain span{font-size:9.5px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dispatchLineActions{display:flex;flex-direction:column;gap:5px;align-items:flex-end}.btn.mini{padding:5px 8px;font-size:10px;border-radius:8px}.excelDetails summary{cursor:pointer;display:flex;flex-direction:column;gap:3px}.excelDetails summary span{font-size:11px;color:#6b7280}.excelRefWrap{overflow:auto;max-height:680px;margin-top:14px;border:1px solid #d1d5db;border-radius:12px}.excelRef{min-width:1300px}.excelRef th{position:sticky;top:0;z-index:2}.excelRef td{font-size:10px;padding:6px 7px;min-width:92px}.excelRef td.excelRowNo{min-width:38px;width:38px;color:#9ca3af;background:#fafafa;position:sticky;left:0}.excelRef .excelSplit{min-width:12px;width:12px;background:#111827;border:0}.routeManagerGrid{display:grid;grid-template-columns:360px minmax(0,1fr);gap:18px;align-items:start}.routeCreatePanel{position:sticky;top:18px}.routeCatalogHead{margin:4px 0 10px}.routeCatalogHead h2{margin:0;font-size:18px}.routeCatalogHead p{margin:3px 0;color:#6b7280;font-size:11px}.routeCards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.routeCard{background:#fff;border:1px solid #e5e7eb;border-radius:15px;padding:14px}.routeCardHead{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.routeCardHead h3{margin:2px 0 0;font-size:14px}.routeCardHead small{color:#6b7280;font-size:10px}.routePath{margin:13px 0;display:flex;align-items:stretch;gap:0;overflow:auto;padding-bottom:4px}.routeNode{position:relative;display:flex;align-items:center;min-width:120px;gap:7px;padding-right:16px}.routeNode:after{content:"";position:absolute;height:2px;background:#cbd5e1;left:28px;right:-2px;top:15px;z-index:0}.routeNode:last-child:after{display:none}.routeNode i{z-index:1;width:30px;height:30px;border-radius:999px;background:#e5e7eb;display:grid;place-items:center;font-style:normal;font-size:10px;font-weight:800;flex:0 0 auto}.routeNode.origin i{background:#dbeafe;color:#1d4ed8}.routeNode.destination i{background:#dcfce7;color:#047857}.routeNode span{z-index:1;display:flex;flex-direction:column;background:#fff;padding:2px 4px;min-width:0}.routeNode span b{font-size:10.5px}.routeNode span small{font-size:9px;color:#6b7280}.routeMeta{display:flex;gap:9px;flex-wrap:wrap;font-size:9.5px;color:#6b7280;border-top:1px solid #f1f3f5;padding-top:9px}.routeModal{width:min(900px,96vw)}.wideModal{width:min(820px,96vw)}.routeStopsEditor{margin-top:20px;border-top:1px solid #e5e7eb;padding-top:16px}.routeStopsHead h3{margin:0}.routeStopsHead p{font-size:11px;color:#6b7280;margin:3px 0 12px}.stopEditRow{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #eef0f2;border-radius:10px;padding:8px 9px;margin-bottom:7px}.stopNo{width:28px;height:28px;border-radius:999px;background:#eef2ff;color:#4338ca;display:grid;place-items:center;font-size:10px;font-weight:800}.stopEditRow>div:nth-child(2){display:flex;flex-direction:column}.stopEditRow b{font-size:11px}.stopEditRow small{font-size:9.5px;color:#6b7280}.stopEditRow>div:last-child{display:flex;gap:5px}.stopAddForm{display:grid;grid-template-columns:65px 115px 1fr 105px auto;gap:7px;margin-top:12px}.stopAddForm input,.stopAddForm select{border:1px solid #d1d5db;border-radius:9px;padding:8px;min-width:0}.clientCards{display:flex;flex-direction:column;gap:8px}.clientCard{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #eef0f2;border-radius:11px;padding:10px 12px}.clientCard>div{display:flex;flex-direction:column}.clientCard b{font-size:12px}.clientCard small{font-size:10px;color:#6b7280}
@media(max-width:1100px){.dispatchBoardV2,.routeCards{grid-template-columns:1fr}.routeManagerGrid{grid-template-columns:1fr}.routeCreatePanel{position:static}.dispatchHero{display:block}.weekDayBar{margin-top:14px}.dispatchDirections{grid-template-columns:1fr}.dispatchDirections>div+div{border-left:0;border-top:1px solid #eef0f2}}
@media(max-width:800px){.weekDayBar{grid-template-columns:repeat(4,1fr)}.dispatchLine{grid-template-columns:48px minmax(0,1fr)}.dispatchLineActions{grid-column:2;flex-direction:row;align-items:center}.stopAddForm{grid-template-columns:1fr 1fr}.stopAddForm input[name=name]{grid-column:1/-1}.stopAddForm .btn{grid-column:1/-1}.routePath{padding-bottom:8px}.routeNode{min-width:105px}}
.routeClientGroup{background:#fff;border:1px solid #e5e7eb;border-radius:14px;margin-bottom:10px;overflow:hidden}.routeClientGroup>summary{list-style:none;cursor:pointer;padding:12px 14px;display:flex;justify-content:space-between;align-items:center;background:#fafafa}.routeClientGroup>summary::-webkit-details-marker{display:none}.routeClientGroup>summary>div{display:flex;flex-direction:column}.routeClientGroup>summary b{font-size:13px}.routeClientGroup>summary small{font-size:10px;color:#6b7280}.routeClientGroup>.routeCards{padding:12px}

/* V1.14 - despacho compacto en columnas dinámicas y exportación operativa legible */
.dispatchTopActions,.dispatchExportActions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.dispatchTopActions input[type=date]{border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.96);color:#111827;border-radius:10px;padding:8px 10px;font:inherit}.dispatchExportActions{width:100%;justify-content:flex-end;margin-top:10px}.dispatchHero{flex-wrap:wrap}.dispatchHero>div:first-child{min-width:260px;flex:1}.dispatchHero .weekDayBar{flex:1 1 540px}.dispatchLine.draft{box-shadow:inset 3px 0 0 #f59e0b;background:#fffbeb}.btn.ghost{background:transparent;border:1px solid #e5e7eb;color:#475569}.copyPresets{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 14px}.copyOptions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.copyPreview{margin-top:14px;border:1px solid #d1fae5;background:#f0fdf4;border-radius:14px;padding:14px}.copyPreview.warn{border-color:#fde68a;background:#fffbeb}.copyPreview h3{margin:0 0 10px}.copyPreview .reconCards{margin-bottom:10px}.dispatchExportActions .btn:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:1100px){.dispatchTopActions,.dispatchExportActions{justify-content:flex-start}.dispatchHero .weekDayBar{flex-basis:100%}}
@media(max-width:700px){.dispatchTopActions{display:grid;grid-template-columns:1fr 1fr}.dispatchTopActions input[type=date]{grid-column:1/-1;width:100%}.dispatchTopActions #copyDispatch{grid-column:1/-1}.dispatchExportActions{display:grid;grid-template-columns:1fr 1fr}.dispatchExportActions .btn{width:100%}.dispatchExportActions #publishDispatch{grid-column:1/-1}.copyOptions{grid-template-columns:1fr}.copyPresets{display:grid;grid-template-columns:1fr}.copyPresets .btn{width:100%}}

/* V1.14 - vista operativa adaptable inspirada en la semana real */
.dispatchMatrixDesktop{overflow:hidden}.dispatchCardsMobile{display:none}.dispatchMatrixHint{display:flex;justify-content:space-between;gap:14px;align-items:center;margin:0 0 10px}.dispatchMatrixHint>div:first-child{display:flex;flex-direction:column;gap:2px}.dispatchMatrixHint b{font-size:13px}.dispatchMatrixHint span{font-size:10px;color:#64748b}.matrixLegend{display:flex;gap:6px;flex-wrap:wrap}.matrixLegend .lg{border-radius:999px;padding:5px 8px;font-weight:800;font-size:9px}.matrixLegend .entry{background:#dceaf7;color:#1e3a5f}.matrixLegend .exit{background:#f1caca;color:#6b2d2d}.matrixLegend .draft{background:#fff3b0;color:#765a00}.dispatchMatrixWrap{overflow:auto;border:1px solid #cbd5e1;border-radius:12px;max-height:72vh;background:#fff}.dispatchMatrix{border-collapse:collapse;min-width:1280px;width:100%;table-layout:fixed}.dispatchMatrix td{border:1px solid #d1d5db;height:23px;padding:2px 4px;font-size:10px;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#111827}.dispatchMatrix td:nth-child(1),.dispatchMatrix td:nth-child(4),.dispatchMatrix td:nth-child(8),.dispatchMatrix td:nth-child(11){width:15%}.dispatchMatrix td:nth-child(2),.dispatchMatrix td:nth-child(5),.dispatchMatrix td:nth-child(9),.dispatchMatrix td:nth-child(12){width:11%}.dispatchMatrix td:nth-child(3),.dispatchMatrix td:nth-child(6),.dispatchMatrix td:nth-child(10),.dispatchMatrix td:nth-child(13){width:9%}.dispatchMatrixGap{width:12px!important;min-width:12px!important;background:#f3f4f6!important;border:0!important}.dispatchMatrixCompany{background:#6b7280!important;color:#fff!important;text-align:center;font-weight:900;letter-spacing:.02em;font-size:10.5px!important}.dispatchMatrixCell.entryHead{background:#dceaf7;font-weight:800;color:#1e3a5f}.dispatchMatrixCell.exitHead{background:#f1caca;font-weight:800;color:#6b2d2d}.dispatchMatrixCell.draft{background:#fff7cc}.matrixRouteBtn,.matrixAssignBtn,.matrixNoteBtn,.mobileAssignText{appearance:none;border:0;background:transparent;padding:0;margin:0;font:inherit;color:inherit;text-align:left;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.matrixRouteBtn{font-weight:650}.matrixRouteBtn:hover,.matrixNoteBtn:hover{text-decoration:underline}.matrixAssignBtn{font-weight:750;color:#0f3d63}.matrixAssignBtn.empty{color:#b45309;font-style:italic}.matrixAssignBtn:hover{background:#eff6ff;border-radius:4px;padding:1px 3px;margin:-1px -3px}.quickAssignModal{width:min(520px,94vw)}.quickAssignSummary{display:flex;gap:8px;align-items:center;font-size:11px;color:#64748b}.mobileAssignText{font-size:10px;color:#1d4ed8;font-weight:750}.matrixUnavailable{border:1px dashed #cbd5e1;border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:4px;color:#475569}.matrixUnavailable b{color:#111827}.summaryHint{margin-left:7px;color:#64748b;font-size:10px;font-weight:400}
@media(max-width:900px){.dispatchMatrixDesktop{display:none}.dispatchCardsMobile{display:grid;grid-template-columns:1fr;gap:12px}.dispatchCompanyBlock{border-radius:14px}.dispatchDirections{grid-template-columns:1fr}.dispatchDirections>div+div{border-left:0;border-top:1px solid #eef0f2}}

/* V1.14 - despacho operativo tipo periódico: 3 columnas dinámicas, horas agrupadas */
.dispatchBoardDesktop{overflow:visible}.dispatchCompactHint{display:flex;justify-content:space-between;gap:14px;align-items:center;margin:0 0 11px}.dispatchCompactHint>div:first-child{display:flex;flex-direction:column;gap:2px}.dispatchCompactHint b{font-size:13px}.dispatchCompactHint span{font-size:10px;color:#64748b}.dispatchCompactColumns{column-count:3;column-gap:12px}.dispatchCompactCompany{display:inline-block;width:100%;break-inside:avoid-column;background:#fff;border:1px solid #cfd6df;border-radius:9px;overflow:hidden;margin:0 0 11px;box-shadow:0 1px 2px rgba(15,23,42,.04)}.dispatchCompactCompanyTitle{background:#3f4752;color:#fff;font-size:11px;font-weight:900;padding:6px 8px;letter-spacing:.02em}.dispatchCompactGroupHead{display:flex;align-items:center;gap:7px;padding:4px 7px;font-size:10px;font-weight:800}.dispatchCompactGroupHead b{display:grid;place-items:center;width:20px;height:20px;border-radius:999px;font-size:9px}.dispatchCompactGroupHead.entry{background:#dceaf7;color:#1e3a5f}.dispatchCompactGroupHead.entry b{background:#b7d3ec}.dispatchCompactGroupHead.exit{background:#f3d1d1;color:#6b2d2d}.dispatchCompactGroupHead.exit b{background:#e8b6b6}.dispatchCompactGroupHead.extra{background:#e9e5ff;color:#4c3a78}.dispatchCompactGroupHead.extra b{background:#d7cff8}.dispatchCompactRow{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(105px,.95fr) minmax(0,.72fr);align-items:center;min-height:27px;border-bottom:1px solid #e5e7eb;padding:2px 6px;gap:5px}.dispatchCompactRow:last-child{border-bottom:0}.dispatchCompactRow.draft{background:#fff8d6}.dispatchCompactRow.cancelled{opacity:.62;text-decoration:line-through}.compactRoute,.compactAssign,.compactNote{appearance:none;border:0;background:transparent;padding:2px 1px;margin:0;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;cursor:pointer;font:inherit}.compactRoute{font-size:10.3px;color:#111827}.compactRoute:hover{text-decoration:underline}.compactAssign{font-size:9.8px;color:#174a70;font-weight:800}.compactAssign.empty{color:#9a6700;border-bottom:1px dashed #c9a227}.compactNote{font-size:9px;color:#7a4d00}.compactNote:hover{text-decoration:underline}
@media(max-width:1250px){.dispatchCompactColumns{column-count:2}}
@media(max-width:900px){.dispatchBoardDesktop{display:none}.dispatchCardsMobile{display:grid;grid-template-columns:1fr;gap:12px}.dispatchCompactColumns{column-count:1}}

/* V1.14 - Despacho operativo compacto: hoja viva, no tarjetas altas */
.denseToolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;margin-bottom:10px}.denseToolbar>div:first-child{display:flex;flex-direction:column;gap:2px}.denseToolbar b{font-size:13px}.denseToolbar span{font-size:10px;color:#64748b}.denseFilters{display:flex;gap:8px;align-items:center}.denseFilters input[type=text],.denseFilters input:not([type]){border:1px solid #d1d5db;border-radius:8px;padding:7px 9px;font-size:11px;min-width:230px}.denseFilters label{display:flex;gap:6px;align-items:center;font-size:10px;color:#475569;white-space:nowrap}.denseBoard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;align-items:start;grid-auto-flow:dense}.denseCompany{min-width:0;background:#fff;border:1px solid #cfd6df;border-radius:9px;overflow:hidden;box-shadow:0 1px 2px rgba(15,23,42,.035)}.denseCompany.large{grid-column:span 2}.denseCompany.huge{grid-column:1/-1}.denseCompanyHead{height:27px;background:#3f4752;color:#fff;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:0 8px}.denseCompanyHead b{font-size:10.5px;letter-spacing:.015em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.denseCompanyHead span{font-size:8.5px;color:#e5e7eb;white-space:nowrap}.denseCompanyLanes{display:grid;min-width:0}.denseCompanyLanes.lanes2{grid-template-columns:repeat(2,minmax(0,1fr))}.denseCompanyLanes.lanes3{grid-template-columns:repeat(3,minmax(0,1fr))}.denseLane{min-width:0}.denseLane+.denseLane{border-left:1px solid #cbd5e1}.denseTimeGroup{min-width:0}.denseTimeBand{height:21px;display:flex;align-items:center;justify-content:space-between;gap:6px;padding:0 6px;background:#eef3f8;border-top:1px solid #dbe3ec;border-bottom:1px solid #dbe3ec;color:#334155}.denseTimeGroup:first-child .denseTimeBand{border-top:0}.denseTimeBand b{font-size:9.2px}.denseTimeBand span{font-size:7.8px;color:#64748b}.denseDispatchRow{display:grid;grid-template-columns:18px minmax(0,1.35fr) minmax(86px,.9fr) minmax(0,.8fr);align-items:center;gap:4px;min-height:23px;padding:1px 5px;border-bottom:1px solid #edf0f3;font-size:9px;line-height:1.08}.denseCompany.noNotes .denseDispatchRow{grid-template-columns:18px minmax(0,1.45fr) minmax(92px,.95fr)}.denseDispatchRow:last-child{border-bottom:0}.denseDispatchRow:hover{background:#f8fafc}.denseDispatchRow.draft{box-shadow:inset 3px 0 0 #eab308;background:#fffdf0}.denseDispatchRow.cancelled{opacity:.55;text-decoration:line-through}.denseDir{width:16px;height:16px;border-radius:4px;display:grid;place-items:center;font-size:7.5px;font-weight:900}.denseDir.entry{background:#dceaf7;color:#1e3a5f}.denseDir.exit{background:#f3d1d1;color:#7f1d1d}.denseDir.extra{background:#e9e5ff;color:#4c3a78}.denseRoute,.denseAssign,.denseNote{appearance:none;border:0;background:transparent;margin:0;padding:2px 1px;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;font:inherit;cursor:pointer}.denseRoute{font-weight:650;color:#111827}.denseRoute:hover,.denseNote:hover{text-decoration:underline}.denseAssign{font-size:8.7px;font-weight:800;color:#174a70}.denseAssign.isEmpty{color:#a16207;font-weight:700}.denseAssign.isEmpty:before{content:'+';margin-right:3px}.denseAssign:hover{background:#eff6ff;border-radius:4px}.denseNote{font-size:8px;color:#8a5a13}.denseNoteBlank{min-width:0}.denseNoTime{border-top:1px solid #e5e7eb;background:#fffbeb}.denseNoTime summary{height:25px;padding:0 7px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;list-style:none;color:#92400e;font-size:9px;font-weight:800}.denseNoTime summary::-webkit-details-marker{display:none}.denseNoTime summary small{font-size:8px;color:#a16207;font-weight:600}.denseNoTime[open] summary{border-bottom:1px solid #fde68a}.denseNoTimeRows{background:#fff}.denseEmptyTimed{padding:8px;color:#94a3b8;font-size:9px}.denseCompany.filteredOut,.denseDispatchRow.filteredOut,.denseTimeGroup.filteredOut{display:none!important}
@media(max-width:1450px){.denseBoard{grid-template-columns:repeat(2,minmax(0,1fr))}.denseCompany.large,.denseCompany.huge{grid-column:1/-1}.denseCompany.huge .denseCompanyLanes.lanes3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1050px){.denseBoard{grid-template-columns:1fr}.denseCompany.large,.denseCompany.huge{grid-column:auto}.denseCompanyLanes.lanes2,.denseCompanyLanes.lanes3{grid-template-columns:1fr}.denseLane+.denseLane{border-left:0;border-top:1px solid #cbd5e1}.denseToolbar{align-items:stretch;flex-direction:column}.denseFilters{justify-content:space-between}.denseFilters input[type=text],.denseFilters input:not([type]){flex:1;min-width:0}}
@media(max-width:900px){.dispatchBoardDesktop{display:none}.dispatchCardsMobile{display:grid;grid-template-columns:1fr;gap:12px}}

/* V1.14 - despacho dinámico: masonry real, bloques segmentados y legibilidad adaptable */
.denseMasonry{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:start;min-width:0}
.denseMasonryPool{display:none}
.denseMasonryColumn{display:flex;flex-direction:column;gap:10px;min-width:0;align-self:start}
.denseCompany{width:100%;min-width:0;background:#fff;border:1px solid #cbd5e1;border-radius:9px;overflow:hidden;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.denseCompany.filteredOut,.denseCompany.collapsedHidden{display:none!important}
.denseCompanyHead{min-height:30px;height:auto;background:#374151;color:#fff;display:grid;grid-template-columns:minmax(0,1fr) auto 26px;align-items:center;gap:7px;padding:4px 6px 4px 8px}
.denseCompanyName{appearance:none;border:0;background:transparent;color:#fff;font:inherit;font-size:11.5px;font-weight:900;letter-spacing:.015em;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;padding:0}
.denseCompanyHead>span{font-size:9px;color:#e5e7eb;white-space:nowrap}
.denseCollapseBtn{appearance:none;border:0;background:rgba(255,255,255,.12);color:#fff;border-radius:5px;width:24px;height:22px;cursor:pointer;font-size:12px;line-height:1}
.denseCollapseBtn:hover,.denseCompanyName:hover{filter:brightness(1.15)}
.denseCompanyBody{min-width:0}
.denseCompany.companyCollapsed .denseCompanyBody{display:none}
.denseCompany.companyCollapsed .denseCollapseBtn{transform:rotate(-90deg)}
.denseTimeBand{min-height:23px;height:auto;display:flex;align-items:center;justify-content:space-between;gap:6px;padding:3px 7px;background:#edf3f8;border-top:1px solid #dbe3ec;border-bottom:1px solid #dbe3ec;color:#334155}
.denseTimeGroup:first-child .denseTimeBand{border-top:0}
.denseTimeBand b{font-size:10px;line-height:1.1}.denseTimeBand span{font-size:8.5px;color:#64748b;font-weight:700}
.denseDispatchRow{display:grid;grid-template-columns:20px minmax(0,1.45fr) minmax(110px,.95fr) minmax(0,.82fr);align-items:center;gap:5px;min-height:29px;padding:2px 7px;border-bottom:1px solid #edf0f3;font-size:10.5px;line-height:1.12}
.denseCompany.noNotes .denseDispatchRow{grid-template-columns:20px minmax(0,1.55fr) minmax(120px,1fr)}
.denseDir{width:17px;height:17px;border-radius:4px;display:grid;place-items:center;font-size:8px;font-weight:900}
.denseRoute{font-size:10.5px;font-weight:700}.denseAssign{font-size:10px;font-weight:800}.denseNote{font-size:9.2px}.denseAssign.isEmpty{color:#9a6700;border-bottom:1px dashed #d6b54b}.denseAssign.isEmpty:before{content:none}
.denseDispatchRow:hover{background:#f7fafc}.denseAssign:hover{background:#eff6ff;border-radius:4px;padding-left:4px;padding-right:4px}
.denseNoTime summary{min-height:28px;height:auto;padding:4px 8px;font-size:9.6px}.denseNoTime summary small{font-size:8.5px}
.denseToolbar{align-items:center}.denseFilters{flex-wrap:wrap;justify-content:flex-end}.denseFilters select{border:1px solid #d1d5db;border-radius:8px;padding:7px 8px;background:#fff;font-size:10.5px}.denseColumnState{display:inline-flex!important;align-items:center;background:#eef2f7;color:#475569!important;border-radius:999px;padding:5px 8px;font-size:9px!important;font-weight:800;white-space:nowrap}
.denseMasonry.compact .denseCompanyHead{min-height:26px;padding-top:2px;padding-bottom:2px}.denseMasonry.compact .denseCompanyName{font-size:10.5px}.denseMasonry.compact .denseCompanyHead>span{font-size:8px}.denseMasonry.compact .denseTimeBand{min-height:20px;padding-top:2px;padding-bottom:2px}.denseMasonry.compact .denseTimeBand b{font-size:9.2px}.denseMasonry.compact .denseDispatchRow{min-height:24px;padding-top:1px;padding-bottom:1px;font-size:9.4px;grid-template-columns:18px minmax(0,1.45fr) minmax(98px,.95fr) minmax(0,.75fr)}.denseMasonry.compact .denseCompany.noNotes .denseDispatchRow{grid-template-columns:18px minmax(0,1.55fr) minmax(105px,1fr)}.denseMasonry.compact .denseRoute{font-size:9.4px}.denseMasonry.compact .denseAssign{font-size:9px}.denseMasonry.compact .denseNote{font-size:8.4px}
@media(max-width:1320px){.denseMasonry{grid-template-columns:repeat(2,minmax(0,1fr))}.denseDispatchRow{grid-template-columns:20px minmax(0,1.55fr) minmax(120px,1fr) minmax(0,.8fr)}}
@media(max-width:820px){.denseMasonry{grid-template-columns:1fr}.denseToolbar{align-items:stretch;flex-direction:column}.denseFilters{justify-content:flex-start}.denseFilters input[type=text],.denseFilters input:not([type]){flex:1;min-width:180px}.denseDispatchRow{grid-template-columns:20px minmax(0,1.55fr) minmax(118px,1fr) minmax(0,.8fr)}}

/* V1.15 - respaldo/restauración administrada */
.dbAdminCard{margin-top:14px}.fileBtn{cursor:pointer}.dbAdminCard .actionRow{margin-bottom:0}.dbAdminCard .notice{margin-top:8px}
