:root{--optilab-navy:#002E5D;--optilab-pink:#F84F6B;--optilab-cyan:#00C6FF;--optilab-yellow:#FFE600;--optilab-green:#7BC043;--bg:#ffffff;--panel:#ffffff;--line:#dbe4ee;--text:var(--optilab-navy);--muted:#5c7185;--accent:#007A9E}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,Arial,sans-serif}header{min-height:64px;display:flex;align-items:center;gap:10px;padding:0 5vw;border-bottom:1px solid var(--line);position:sticky;top:0;background:#ffffffee;backdrop-filter:blur(10px);z-index:2}header b{font-size:22px;letter-spacing:1px}header span{color:var(--accent);font-size:12px}nav{margin-left:auto;display:flex;gap:18px;flex-wrap:wrap}a{color:inherit;text-decoration:none}nav a{color:var(--muted)}main{max-width:1300px;margin:auto;padding:34px 5vw}.card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:22px;overflow:auto;box-shadow:0 1px 3px rgba(0,46,93,.06)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0}.stats b{display:block;font-size:34px}.stats span{color:var(--muted)}.grid{display:grid;grid-template-columns:340px 1fr;gap:18px}form{display:grid;gap:12px}label{display:grid;gap:6px;color:var(--muted)}input,select,button{width:100%;padding:11px 12px;border-radius:10px;border:1px solid var(--line);background:#ffffff;color:var(--text)}button{background:var(--optilab-cyan);color:var(--optilab-navy);border:0;font-weight:700;cursor:pointer}.secondary{background:var(--optilab-navy);color:white}.success{margin-top:16px;background:var(--optilab-green);color:#0c2503}.login{max-width:420px;margin:9vh auto}.alert{padding:10px;background:rgba(248,79,107,.08);border:1px solid var(--optilab-pink);border-radius:10px}table{width:100%;border-collapse:collapse;min-width:650px}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}th{color:var(--muted);font-size:12px;text-transform:uppercase}.badge{display:inline-block;padding:5px 9px;border:1px solid var(--line);border-radius:999px;font-size:12px}.qr{width:210px;background:white;padding:10px;border-radius:14px;border:1px solid var(--line)}@media(max-width:800px){header{align-items:flex-start;padding-top:15px;padding-bottom:15px;flex-wrap:wrap}nav{width:100%;margin:0;overflow:auto;flex-wrap:nowrap}.stats{grid-template-columns:1fr 1fr}.grid{grid-template-columns:1fr}main{padding:22px 14px}.card{padding:16px}}
.button-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.btn-link{display:flex;align-items:center;justify-content:center;width:100%;padding:11px 12px;border-radius:10px;border:1px solid var(--line);font-weight:700}.btn-link.secondary{background:var(--optilab-navy);color:white}.disabled{opacity:.45;pointer-events:none}.muted{color:var(--muted)}.coords{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.map-link{display:inline-block;padding:7px 10px;border-radius:9px;background:var(--optilab-navy);color:#fff;white-space:nowrap}.location-box{display:grid;gap:7px;margin:14px 0;padding:13px;border:1px solid var(--line);border-radius:12px;background:#f4f7fb}.location-box .map-link{width:max-content}@media(max-width:520px){.button-row{grid-template-columns:1fr}}
.alert{padding:12px 14px;border-radius:10px;margin:0 0 16px 0;font-weight:600}.alert.error{background:rgba(248,79,107,.1);border:1px solid var(--optilab-pink);color:#7a1626}.alert.success{background:rgba(123,192,67,.12);border:1px solid var(--optilab-green);color:#2c4a10}

/* V0.1.5 - tipos de envio y catalogos logisticos */
.catalog-grid{display:grid;grid-template-columns:1fr;gap:18px}.compact-form{grid-template-columns:repeat(4,minmax(140px,1fr));align-items:end;margin-bottom:18px}.compact-form button{height:42px}.small-table button{padding:7px 9px;font-size:12px}.small-table form{display:block}.shipping-form{min-width:260px;gap:8px}.shipping-option[hidden]{display:none!important}@media(max-width:900px){.compact-form{grid-template-columns:1fr 1fr}}@media(max-width:560px){.compact-form{grid-template-columns:1fr}}

/* V0.1.6 - escaner de codigos de barra y lista por optica */
.scanner-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px}.scanner-head h1{margin-bottom:6px}.scanner-head p{max-width:780px}.scanner-counter{min-width:170px;text-align:center;padding:14px 18px;border:1px solid var(--line);border-radius:16px;background:var(--panel)}.scanner-counter span{display:block;color:var(--muted);font-size:12px}.scanner-counter b{display:block;font-size:38px;color:var(--accent)}.scanner-grid{display:grid;grid-template-columns:minmax(300px,390px) 1fr;gap:18px}.scanner-control h2,.scanner-list-card h2{margin-top:0}.scanner-divider{height:1px;background:var(--line);margin:8px 0 4px}.barcode-input{font-size:24px;font-weight:800;letter-spacing:1px;border:2px solid var(--accent);padding:16px}.barcode-input:focus{outline:3px solid rgba(0,198,255,.25)}.scanner-help{font-size:12px;margin-top:-3px}.scan-message{min-height:45px;padding:11px 12px;border-radius:10px;border:1px solid transparent;font-weight:700}.scan-message:empty{display:none}.scan-message.ok{background:rgba(123,192,67,.12);border-color:var(--optilab-green);color:#2c4a10}.scan-message.warn{background:rgba(255,230,0,.22);border-color:#c9b400;color:#5c4b00}.scan-message.error{background:rgba(248,79,107,.1);border-color:var(--optilab-pink);color:#7a1020}.dispatch-summary{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px;background:#f4f7fb;border:1px solid var(--line);border-radius:12px;margin-bottom:12px}.dispatch-summary b{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.scanner-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.scanner-list-head{display:flex;justify-content:space-between;gap:15px;align-items:flex-start;margin-bottom:10px}.scanner-list-head h2{margin-bottom:4px}.scanner-empty{padding:50px 20px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:14px}.scanner-table-wrap{overflow:auto}.scanner-table{min-width:720px}.scanner-table tbody tr:first-child{background:rgba(0,198,255,.06)}.remove-scan{width:auto;padding:7px 10px;font-size:12px}.scanner-control select{font-size:16px}.scanner-list-card{min-height:480px}@media(max-width:900px){.scanner-grid{grid-template-columns:1fr}.scanner-head{align-items:stretch}.scanner-counter{min-width:140px}}@media(max-width:560px){.scanner-head{flex-direction:column}.scanner-counter{width:100%}.scanner-actions{grid-template-columns:1fr}.barcode-input{font-size:20px}}
.dispatch-row-actions{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:9px}.dispatch-row-actions .map-link{font-size:12px;padding:6px 8px}

/* V0.1.7 - historial, trazabilidad y alertas de atraso */
.status-chip{display:inline-block;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800;border:1px solid transparent;white-space:nowrap;margin:2px 3px 2px 0}.status-chip.facturado{background:rgba(0,46,93,.08);border-color:#2d6ea6;color:#0d3868}.status-chip.listo{background:rgba(0,198,255,.1);border-color:#0092c7;color:#00506b}.status-chip.asignado{background:rgba(255,230,0,.22);border-color:#c9b400;color:#5c4b00}.status-chip.en-ruta{background:rgba(0,198,255,.16);border-color:#0092c7;color:#004a63}.status-chip.entregado{background:rgba(123,192,67,.14);border-color:#5c9a2e;color:#2c4a10}.status-chip.recibido{background:rgba(123,192,67,.24);border-color:#4a7d22;color:#1f3308}.status-chip.neutral{background:#eef2f7;border-color:#c7d4e2;color:#33465c}.status-chip.overdue{background:rgba(248,79,107,.14);border-color:#e0294a;color:#7a1020}.overdue-row{background:rgba(248,79,107,.07)!important;border-left:4px solid var(--optilab-pink)}.overdue-stat{border-color:var(--optilab-pink)!important;background:rgba(248,79,107,.08)!important}.overdue-stat b,.overdue-stat span{color:#a3122c!important}.stats-five{grid-template-columns:repeat(5,1fr)}.history-head,.history-detail-head,.section-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.legend{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px;max-width:620px}.history-filters{margin:18px 0}.history-filter-form{grid-template-columns:2fr 1.4fr 1.2fr .8fr;align-items:end}.history-table .small,.small{font-size:12px}.history-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.history-summary .card{display:grid;gap:6px;min-height:108px}.history-summary span,.history-summary small{color:var(--muted)}.history-summary b{font-size:17px}.history-total{margin-bottom:18px;padding:14px;border-radius:12px;background:rgba(123,192,67,.14);border:1px solid var(--optilab-green)}.overdue-alert{background:rgba(248,79,107,.1);border:1px solid var(--optilab-pink);color:#7a1020}.timeline{display:grid;gap:0;margin-top:10px}.timeline-item{display:grid;grid-template-columns:24px 1fr;gap:14px;position:relative;padding-bottom:22px}.timeline-item:not(:last-child):before{content:'';position:absolute;left:7px;top:17px;bottom:-2px;width:2px;background:var(--line)}.timeline-dot{width:16px;height:16px;border-radius:50%;margin-top:4px;border:3px solid var(--panel);box-shadow:0 0 0 2px var(--line);z-index:1}.timeline-dot.facturado{background:#2d6ea6}.timeline-dot.listo{background:#4fa8d8}.timeline-dot.asignado{background:var(--optilab-yellow)}.timeline-dot.en-ruta{background:var(--optilab-cyan)}.timeline-dot.entregado{background:#8fce5c}.timeline-dot.recibido{background:var(--optilab-green)}.timeline-body{padding:0 0 0 2px}.timeline-body p{margin:8px 0}.timeline-top{display:flex;gap:10px;justify-content:space-between;align-items:center}.history-mini{font-size:11px;color:var(--accent);margin-left:6px}@media(max-width:1050px){.stats-five{grid-template-columns:repeat(3,1fr)}.history-summary{grid-template-columns:1fr 1fr}.history-filter-form{grid-template-columns:1fr 1fr}}@media(max-width:650px){.history-head,.history-detail-head,.section-head{flex-direction:column}.legend{justify-content:flex-start}.stats-five{grid-template-columns:1fr 1fr}.history-summary{grid-template-columns:1fr}.history-filter-form{grid-template-columns:1fr}.timeline-top{align-items:flex-start;flex-direction:column;gap:4px}}

/* V0.1.7.2 - identidad OPTILAB */
.brand{display:flex;align-items:center;gap:10px;min-width:max-content}.brand img{display:block;width:auto;height:50px;object-fit:contain}.brand span{font-weight:800;letter-spacing:1.4px;color:var(--accent);font-size:11px}.login-brand{text-align:center;margin:-4px 0 8px}.login-brand img{width:auto;height:150px;max-width:100%;object-fit:contain}.receive-logo{display:block;width:auto;height:120px;max-width:80%;object-fit:contain;margin:0 auto 8px}.count-pill{display:inline-flex;min-width:42px;align-items:center;justify-content:center;padding:6px 10px;border-radius:10px;background:rgba(0,46,93,.08);border:1px solid #2d6ea6;font-weight:800;color:#0d3868}@media(max-width:800px){.brand img{height:44px}.brand span{font-size:10px}.login-brand img{height:125px}.receive-logo{height:100px}}
/* V0.1.8 - logo ampliado + solicitudes de recoleccion */
.brand img{height:72px}.login-brand img{height:190px}.receive-logo{height:145px}.pickup-grid{grid-template-columns:minmax(300px,420px) 1fr}.pickup-optic{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#f4f7fb;margin-bottom:14px;display:grid;gap:3px}.pickup-optic span{color:var(--muted);font-size:12px}.pickup-pending{background:rgba(255,230,0,.08)}.inline-assign{display:grid;grid-template-columns:minmax(140px,1fr) auto;gap:7px;margin-bottom:7px}.small-btn{padding:7px 9px}.user-optic-form{display:grid;grid-template-columns:minmax(150px,1fr) auto;gap:6px;min-width:290px}.table-wrap{overflow:auto}@media(max-width:800px){.brand img{height:58px}.login-brand img{height:155px}.receive-logo{height:120px}.pickup-grid{grid-template-columns:1fr}}@media(max-width:520px){.brand img{height:52px}.brand span{display:none}}
/* V0.1.9 - identidad ampliada + hero OPTILAB Logistics */
.brand img{height:92px}.brand span{font-size:13px;letter-spacing:2px}@media(max-width:800px){.brand img{height:70px}}@media(max-width:520px){.brand img{height:62px}}

button.danger,.button.danger{background:var(--optilab-pink);color:#33040f;border-color:var(--optilab-pink)}button.danger:hover,.button.danger:hover{filter:brightness(1.08)}
/* V0.2.4 - notificaciones y flujo de aceptación de recolecciones */
.notify-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;margin-left:5px;border-radius:999px;background:var(--optilab-pink)!important;color:#33040f!important;font-size:11px!important;font-weight:900;vertical-align:middle;box-shadow:0 0 0 2px #ffffff}.pickup-pending{box-shadow:inset 4px 0 0 var(--optilab-yellow)}

/* V0.2.7 - ubicacion escrita y centro de notificaciones */
.optics-grid{grid-template-columns:minmax(310px,380px) 1fr}.optic-inline-edit{min-width:620px}.optic-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(170px,1fr));gap:8px}.optic-inline-edit input{padding:8px 10px}.optics-table td:last-child{width:110px}.pickup-location{margin-top:6px;padding:7px 9px;border-radius:8px;background:#f4f7fb;border:1px solid var(--line);font-size:12px;max-width:340px;white-space:normal}.notification-shell{position:relative;display:flex;align-items:center}.notification-bell{position:relative;width:42px;height:42px;padding:0;border-radius:12px;background:#f0f4f9;color:var(--optilab-navy);border:1px solid var(--line);font-size:19px;display:flex;align-items:center;justify-content:center}.notification-bell:hover{background:#e2ebf5}.notification-bell .notify-badge{position:absolute;top:-7px;right:-8px;margin:0;box-shadow:0 0 0 3px #ffffff}.notification-panel{position:absolute;right:0;top:50px;width:min(390px,92vw);max-height:560px;background:#ffffff;border:1px solid var(--line);border-radius:16px;box-shadow:0 22px 60px rgba(0,46,93,.18);z-index:500;overflow:hidden}.notification-head{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:14px 15px;border-bottom:1px solid var(--line)}.notification-head>div{display:grid;gap:2px}.notification-read-all{width:auto;padding:7px 9px;background:var(--optilab-navy);color:#fff;font-size:11px}.notification-list{max-height:475px;overflow:auto}.notification-item{display:grid;grid-template-columns:10px 1fr;gap:10px;width:100%;border-radius:0;border:0;border-bottom:1px solid var(--line);padding:13px 14px;text-align:left;background:#ffffff;color:var(--optilab-navy)}.notification-item:hover{background:#f4f8fc}.notification-item.unread{background:rgba(0,198,255,.06)}.notification-dot{width:8px;height:8px;border-radius:50%;background:#c3ceda;margin-top:6px}.notification-item.unread .notification-dot{background:var(--accent);box-shadow:0 0 0 4px rgba(0,198,255,.16)}.notification-copy{display:grid;gap:4px}.notification-copy b{font-size:13px}.notification-copy span{font-size:12px;color:#4d6178;line-height:1.35}.notification-copy small{font-size:10px;color:#8698ac}.notification-empty{padding:30px 16px;text-align:center;color:var(--muted);font-size:12px}.toast-stack{position:fixed;right:20px;bottom:20px;z-index:1200;display:grid;gap:10px;width:min(390px,calc(100vw - 28px));pointer-events:none}.app-toast{display:grid;grid-template-columns:38px 1fr;gap:10px;align-items:start;padding:14px;border-radius:15px;background:#ffffff;border:1px solid var(--line);box-shadow:0 16px 45px rgba(0,46,93,.18);transform:translateY(20px);opacity:0;transition:.22s ease;pointer-events:auto;cursor:pointer;color:var(--optilab-navy)}.app-toast.show{transform:translateY(0);opacity:1}.app-toast-icon{width:36px;height:36px;border-radius:10px;background:rgba(0,198,255,.12);display:flex;align-items:center;justify-content:center}.app-toast b{font-size:13px}.app-toast p{margin:4px 0 0;color:#4d6178;font-size:12px;line-height:1.35}@media(max-width:800px){.optics-grid{grid-template-columns:1fr}.notification-panel{position:fixed;right:10px;left:10px;top:128px;width:auto}.toast-stack{right:14px;bottom:14px}.optic-edit-grid{grid-template-columns:1fr}.optic-inline-edit{min-width:310px}}
/* V0.3.1 - Integración LabOrders */
.integration-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:18px 0}.integration-summary .card{display:grid;gap:6px}.integration-summary span,.integration-summary small{color:var(--muted)}.integration-summary b{font-size:16px}.integration-actions{display:flex;gap:8px;flex-wrap:wrap}.integration-actions form{margin:0}.integration-form{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px;margin-top:14px}.integration-form button,.integration-form details,.integration-checks{grid-column:1/-1}.integration-checks{display:flex;gap:18px;flex-wrap:wrap}.check-row{display:flex!important;align-items:center;gap:8px}.check-row input{width:auto!important}.field-map{border:1px solid var(--line);border-radius:12px;padding:12px}.field-map summary{cursor:pointer;font-weight:700}.integration-fields{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:10px;margin-top:12px}@media(max-width:900px){.integration-summary{grid-template-columns:1fr}.integration-form{grid-template-columns:1fr 1fr}.integration-fields{grid-template-columns:1fr 1fr}}@media(max-width:600px){.integration-form,.integration-fields{grid-template-columns:1fr}.integration-actions{width:100%}.integration-actions form,.integration-actions button{width:100%}}

/* V0.3.3 - tabla de usuarios compacta */
.users-table-wrap{overflow-x:visible}.users-table{min-width:0;table-layout:auto}.users-table th,.users-table td{padding:9px 8px}.users-table th:last-child,.users-table td:last-child{width:245px}.user-actions{display:flex;gap:5px;flex-wrap:wrap;align-items:center}.user-actions form{display:inline-block;margin:0}.user-action-btn,.user-actions button{width:auto!important;min-width:0!important;padding:6px 8px!important;border-radius:8px!important;font-size:11px!important;line-height:1.15;white-space:nowrap}.user-actions .button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.users-table td:nth-child(1){max-width:125px;overflow-wrap:anywhere}.users-table td:nth-child(2){max-width:150px;overflow-wrap:anywhere}.users-table td:nth-child(4){max-width:190px;white-space:normal}@media(max-width:1050px){.users-table th,.users-table td{padding:7px 6px;font-size:12px}.users-table th:last-child,.users-table td:last-child{width:205px}.user-action-btn,.user-actions button{padding:5px 6px!important;font-size:10px!important}}@media(max-width:760px){.users-table-wrap{overflow-x:auto}.users-table{min-width:690px}}

.delivery-alert-card{max-width:760px}.days-input{width:90px!important;min-width:70px!important;text-align:center}.settings-actions{margin-top:16px;display:flex;justify-content:flex-end}
/* V0.3.6 - acciones compactas de ópticas */
.compact-optics{width:100%;table-layout:fixed}.compact-optics th:nth-child(1){width:22%}.compact-optics th:nth-child(2){width:39%}.compact-optics th:nth-child(3){width:12%}.compact-optics th:nth-child(4){width:27%}.optic-actions{display:flex;gap:5px;flex-wrap:wrap;align-items:center}.inline-form{display:inline;margin:0}.mini-btn,.optic-edit-details summary{font-size:12px!important;line-height:1.1!important;padding:6px 8px!important;min-height:auto!important;width:auto!important;margin:0!important;white-space:nowrap}.optic-edit-details{position:relative}.optic-edit-details summary{cursor:pointer;list-style:none;border-radius:7px;background:#17355d;color:#fff}.optic-edit-details[open] .optic-compact-form{position:absolute;right:0;top:32px;z-index:30;width:320px;max-width:80vw;background:#ffffff;border:1px solid var(--line);padding:10px;border-radius:10px;box-shadow:0 12px 30px rgba(0,46,93,.18)}.optic-compact-form input{font-size:12px;padding:7px;margin:3px 0}.row-disabled{opacity:.62}@media(max-width:900px){.compact-optics{table-layout:auto}.optic-actions{min-width:150px}.optic-edit-details[open] .optic-compact-form{left:0;right:auto}}
\n/* V0.3.7 - identidad RC Technology + Acerca de + logo dashboard sin deformacion */
.brand-credit{display:grid!important;grid-template-rows:auto auto;gap:0!important;align-items:center!important}.brand-main{display:flex;align-items:center;gap:10px}.brand-credit>small{display:block;margin-top:-8px;text-align:center;font-size:9px;letter-spacing:.25px;color:#7890a8;white-space:nowrap}.about-card{max-width:820px;margin:30px auto;display:grid;grid-template-columns:minmax(180px,260px) 1fr;gap:30px;align-items:center;overflow:hidden}.about-logo{display:block;width:100%;height:auto;max-height:330px;object-fit:contain}.about-copy h1{margin-top:0}.about-version{display:inline-block;padding:7px 11px;border:1px solid var(--line);border-radius:999px;color:var(--accent);font-weight:800}.about-designer{margin-top:24px;padding-top:16px;border-top:1px solid var(--line);color:var(--muted)}
@media(max-width:800px){.brand-credit>small{margin-top:-5px;font-size:8px}.about-card{grid-template-columns:1fr;text-align:center}.about-logo{max-width:230px;margin:auto}}@media(max-width:520px){.brand-credit>small{display:none}}

.route-stop{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}.route-stop:last-child{border-bottom:0}.route-stop p{margin:4px 0}.route-stop .btn-link{width:auto;flex-shrink:0}.grid-form textarea{width:100%;box-sizing:border-box}.wide{grid-column:1/-1}@media(max-width:900px){.route-stop{align-items:flex-start;flex-direction:column}.route-stop .btn-link{width:100%;text-align:center}}

/* V0.7.9.4 - responsive, despacho selectivo y transferencias */
main{max-width:1680px;width:100%}.page-head,.section-toolbar,.head-actions,.dispatch-card-head,.dispatch-meta,.select-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.page-head,.dispatch-card-head{justify-content:space-between}.page-head h1,.section-toolbar h2,.dispatch-card-head h2,.optic-group-head h3{margin:0}.head-actions{justify-content:flex-end}.danger-btn{background:var(--optilab-pink)!important;color:#33040f!important}.mini{width:auto!important;padding:7px 10px!important;font-size:12px}.dispatch-list{display:grid;gap:16px}.dispatch-card{overflow:visible}.dispatch-code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--accent);font-size:12px;margin-bottom:6px}.dispatch-meta{margin-top:7px}.shipping-id{display:inline-block;margin:8px 8px 0 0;padding:8px 11px;border:1px solid var(--line);border-radius:10px;background:#f4f7fb}.dispatch-items-wrap{margin-top:14px;border-top:1px solid var(--line);padding-top:13px}.dispatch-items-table{min-width:760px}.dispatch-items-table input[type=checkbox],.jobs-table input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}.select-tools{margin-bottom:8px}.shipping-form{margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:13px;background:#f4f7fb}.shipping-grid{display:grid;grid-template-columns:repeat(2,minmax(210px,1fr));gap:10px}.shipping-option{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:10px}.shipping-option[data-type=MENSAJERO],.shipping-option[data-type=PERSONAL]{grid-template-columns:1fr}.transfer-box{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.transfer-box form,.job-transfer-bar{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:8px;align-items:center}.jobs-layout{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:18px}.jobs-main-card{min-width:0}.job-entry-card{align-self:start;position:sticky;top:90px}.section-toolbar{justify-content:space-between;margin-bottom:12px}.job-transfer-bar{grid-template-columns:auto auto minmax(280px,1fr) auto;margin:12px 0;padding:10px;border:1px solid var(--line);border-radius:12px;background:#f4f7fb}.optic-group-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:14px 0 8px}.jobs-table{min-width:980px}.table-wrap{overflow-x:auto;max-width:100%}.dispatch-summary{margin:2px 0 4px;font-size:13px;font-weight:700;color:var(--muted)}.dispatch-summary.warning{color:#7a6400;font-weight:800}
@media(max-width:1100px){.jobs-layout{grid-template-columns:1fr}.job-entry-card{position:static}.shipping-grid,.transfer-box{grid-template-columns:1fr}.job-transfer-bar{grid-template-columns:1fr 1fr}.job-transfer-bar select{grid-column:1/-1}.job-transfer-bar button:last-child{grid-column:1/-1}.dispatch-card-head{align-items:flex-start}}
@media(max-width:700px){main{padding:18px 10px}.card{padding:14px}.page-head,.dispatch-card-head,.section-toolbar{align-items:stretch;flex-direction:column}.head-actions,.dispatch-row-actions{justify-content:flex-start}.head-actions>*{width:100%}.shipping-grid,.shipping-option,.transfer-box,.transfer-box form,.job-transfer-bar{grid-template-columns:1fr}.dispatch-items-table{min-width:680px}.jobs-table{min-width:860px}.shipping-form button,.transfer-box button{width:100%}.select-tools .mini{flex:1}.notification-panel{top:118px}}

/* V0.8.0 - modo campo: pantallas de mensajero (llegada, entrega, escaner, recepcion) */
.field-mode .grid{align-items:start}
.field-action{min-height:48px;font-size:16px}
@media(max-width:600px){.field-action{width:100%}}
.field-mode input,.field-mode select,.field-mode textarea{font-size:16px}
.field-mode button,.field-mode .button,.field-mode a.map-link,.field-mode a.button,.field-mode .btn-link{min-height:44px}
@media(max-width:600px){.field-mode .grid{grid-template-columns:1fr}.field-mode .grid>.card:first-of-type.field-secondary{order:2}.field-mode .grid>.card.field-primary{order:1}}

/* V0.9.0 - navegacion como barra lateral izquierda */
.app-shell{display:flex;min-height:100vh;align-items:stretch}
.sidebar{width:230px;flex-shrink:0;display:flex;flex-direction:column;padding:20px 14px;border-right:1px solid var(--line);position:sticky;top:0;align-self:flex-start;height:100vh;overflow-y:auto;background:var(--panel)}
.sidebar .brand{margin-bottom:14px;padding:0 6px;min-width:0}
.sidebar .brand img{height:32px}
.sidebar nav{display:flex;flex-direction:column;gap:2px;margin-left:0;flex-wrap:nowrap}
.sidebar nav a{padding:10px 10px;border-radius:8px;color:var(--text);font-weight:600}
.sidebar nav a:hover{background:#eef2f7}
.sidebar nav>a[href="/logout"]{margin-top:10px;border-top:1px solid var(--line);padding-top:16px;border-radius:0;color:var(--muted)}
.sidebar .notification-shell{margin:2px 0}
.sidebar .notification-bell{width:100%;height:auto;border-radius:8px;justify-content:flex-start;gap:8px;background:transparent;border:0;color:var(--text);font-weight:600;padding:10px 10px}
.sidebar .notification-bell:hover{background:#eef2f7}
.sidebar .notification-bell .notify-badge{position:static;margin-left:auto;box-shadow:none}
.sidebar .notification-panel{position:fixed;left:246px;right:auto;top:auto;bottom:20px;margin-left:0;max-height:min(560px,calc(100vh - 40px))}
.app-content{flex:1;min-width:0}
@media(max-width:900px){
  .app-shell{flex-direction:column}
  .sidebar{width:100%;height:auto;position:static;flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px;border-right:0;border-bottom:1px solid var(--line);overflow-y:visible}
  .sidebar .brand{margin-bottom:0}
  .sidebar nav{flex-direction:row;flex-wrap:wrap;gap:4px;margin-left:auto;overflow-x:auto;flex-wrap:nowrap}
  .sidebar nav a{padding:8px 9px;white-space:nowrap}
  .sidebar nav>a[href="/logout"]{margin-top:0;border-top:0;padding-top:8px}
  .sidebar .notification-bell{width:auto;padding:8px 9px}
  .sidebar .notification-panel{position:fixed;left:10px;right:10px;top:128px;width:auto;margin-left:0}
}

/* V0.9.1 - KPIs de dashboard (ADMIN/DISPATCH) */
.daily-trend{display:flex;align-items:flex-end;gap:4px;height:140px;padding:10px 4px 0}
.daily-bar{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.daily-bar b{font-size:10px;color:var(--text);font-weight:700}
.daily-bar span{width:100%;background:var(--optilab-cyan);border-radius:4px 4px 0 0;min-height:2px;margin-top:2px}
.daily-bar small{margin-top:4px;font-size:9px;color:var(--muted);white-space:nowrap}
