:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;--navy:#0b1728;--navy2:#12263f;--bg:#f4f7fb;--surface:#fff;--line:#dfe6ef;--line2:#edf1f6;--text:#172033;--muted:#6c7b8e;--soft:#9aa7b6;--accent:#178bd1;--accent2:#e9f5fc;--good:#198754;--goodbg:#eaf7f0;--warn:#a66c00;--warnbg:#fff7df;--bad:#c63f48;--badbg:#fff0f1}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text)}body{min-height:100dvh}.hidden{display:none!important}button,input,select{font:inherit}.app{max-width:760px;margin:auto;min-height:100dvh;padding-bottom:74px;background:var(--bg)}
.top{position:sticky;top:0;z-index:30;background:var(--navy);color:#fff;padding:10px 13px;border-bottom:1px solid rgba(255,255,255,.08)}.toprow{display:flex;align-items:center;justify-content:space-between;gap:10px}.identity{display:flex;align-items:center;gap:9px}.identity strong{display:block;font-size:14px;line-height:1.1}.identity span:not(.brandmark){display:block;color:#aebed0;font-size:10px;margin-top:3px}.brandmark{display:grid;place-items:center;width:36px;height:36px;border-radius:9px;background:#4bbcef;color:#062037;font-size:13px;font-weight:900;letter-spacing:-.5px}.smallmark{width:31px;height:31px;font-size:11px}.topactions{display:flex;align-items:center;gap:8px}.status{display:flex;align-items:center;gap:5px;font-size:10px;color:#c8d4e1;border:1px solid rgba(255,255,255,.13);padding:5px 7px;border-radius:999px}.dot{width:7px;height:7px;border-radius:50%;background:#45cf91}.offline .dot{background:#f0b84b}.iconbtn{border:0;background:transparent;color:inherit;font-size:11px;cursor:pointer;padding:6px}
main{padding:12px}.scansection{background:#fff;border:1px solid var(--line);border-radius:11px;padding:10px}.scanline{display:grid;grid-template-columns:1fr auto;gap:8px}.scaninput{display:flex;align-items:center;border:1px solid #cdd8e5;border-radius:8px;background:#fff;min-width:0}.scaninput:focus-within{border-color:#55aee0;box-shadow:0 0 0 3px rgba(23,139,209,.09)}.scanicon{font-size:21px;color:#60758b;padding-left:10px}.scaninput input{min-width:0;flex:1;border:0;outline:none;background:transparent;color:var(--text);height:43px;padding:0 8px;font-size:15px}.scaninput input::placeholder{color:#8b99aa}.enterhint{font-size:8px;color:#9aa7b6;border:1px solid #e2e8f0;border-radius:4px;padding:2px 4px;margin-right:7px}.scanhelp{font-size:9px;color:var(--soft);margin:7px 2px 0}.btn{border:1px solid #ced8e5;background:#fff;color:var(--text);border-radius:8px;padding:9px 11px;font-weight:750;cursor:pointer}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.secondary{background:#fff}.btn.wide{width:100%;padding:11px}.cameraBtn{min-width:76px}
.workbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;border-bottom:1px solid var(--line)}.tabs{display:flex;gap:18px}.tab{border:0;background:transparent;color:#738296;padding:10px 1px 9px;font-weight:800;font-size:12px;border-bottom:2px solid transparent;cursor:pointer}.tab.active{color:#172033;border-bottom-color:var(--accent)}.counterline{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--muted);white-space:nowrap}.counterline b{color:var(--text);font-size:12px}.counterline i{width:3px;height:3px;border-radius:50%;background:#bdc7d2}
.warn{border-left:3px solid #e0a928;background:var(--warnbg);color:#745615;padding:8px 9px;margin:9px 0;border-radius:0 7px 7px 0;font-size:10px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 0}.sortwrap{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:10px}.select{height:36px;border:1px solid #ced8e5;background:#fff;color:var(--text);border-radius:7px;padding:0 9px;outline:none;min-width:0}.sortwrap .select{width:auto;max-width:190px}.listhead{display:grid;grid-template-columns:1fr auto;color:#8a98a8;font-size:9px;text-transform:uppercase;letter-spacing:.5px;padding:5px 3px;border-bottom:1px solid var(--line)}.items{background:#fff;border:1px solid var(--line);border-top:0;border-radius:0 0 10px 10px;overflow:hidden}.item{display:grid;grid-template-columns:1fr auto;gap:9px;padding:10px 10px;border-bottom:1px solid var(--line2);align-items:center}.item:last-child{border-bottom:0}.item .code{font-weight:850;font-size:12px}.item .desc{font-size:11px;margin-top:2px;color:#324257}.item .loc{font-size:9px;color:#7e8c9d;margin-top:3px}.qty{display:flex;align-items:center;gap:4px}.qty .btn{width:31px;height:31px;padding:0;font-size:17px;font-weight:500}.qty strong{min-width:25px;text-align:center;font-size:12px}.empty{padding:32px 12px;text-align:center;color:#8a98a8;font-size:11px}.empty:before{content:'⌁';display:block;font-size:27px;color:#c4ced8;margin-bottom:7px}
.bottom{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:min(760px,100%);background:rgba(255,255,255,.97);border-top:1px solid var(--line);padding:8px 12px calc(8px + env(safe-area-inset-bottom));display:grid;grid-template-columns:120px 1fr;gap:8px;z-index:40;box-shadow:0 -6px 18px rgba(31,50,75,.05)}
.sheet{position:fixed;left:50%;bottom:0;width:min(760px,100%);max-height:88dvh;background:#fff;border:1px solid var(--line);border-bottom:0;border-radius:16px 16px 0 0;z-index:70;padding:0 13px 14px;transform:translate(-50%,110%);transition:.18s ease;box-shadow:0 -18px 55px rgba(12,28,48,.18)}.sheet.open{transform:translate(-50%,0)}.sheetgrab{width:38px;height:4px;border-radius:99px;background:#d8e0e9;margin:7px auto 8px}.sheettop{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 0 11px;border-bottom:1px solid var(--line2)}.sheettop b{display:block;font-size:14px}.sheettop span{display:block;color:var(--muted);font-size:9px;margin-top:2px}.sheetbody{max-height:70dvh;overflow:auto;padding-top:10px}.row{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:8px 0}.label{font-size:10px;font-weight:700;color:#5e6f83;margin-bottom:4px}.sheetbody .select{width:100%}.printsummary{background:#f5f8fb;border:1px solid var(--line);padding:9px 10px;border-radius:8px;color:#52657a;font-size:10px;margin:11px 0}
.camera{display:none;position:fixed;inset:0;background:#05080d;z-index:100}.camera.open{display:flex;flex-direction:column}.camera video{flex:1;min-height:0;width:100%;object-fit:cover}.camframe{position:absolute;left:12%;right:12%;top:35%;height:24%;border:2px solid rgba(255,255,255,.85);border-radius:14px;box-shadow:0 0 0 9999px rgba(0,0,0,.2)}.camtools{padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#08111e;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:8px}.camtools span{font-size:11px;color:#b8c7d7}.toast{position:fixed;left:50%;top:67px;transform:translateX(-50%) translateY(-10px);background:#12243b;color:#fff;padding:9px 12px;border-radius:8px;opacity:0;pointer-events:none;transition:.15s;z-index:120;max-width:90%;font-size:11px;box-shadow:0 10px 26px rgba(0,0,0,.2)}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.login{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#091424 0%,#10243b 100%)}.loginbox{width:min(390px,100%);background:#fff;color:var(--text);border-radius:14px;padding:24px;box-shadow:0 25px 70px rgba(0,0,0,.3)}.loginbrand{display:flex;align-items:center;gap:10px;margin-bottom:22px}.loginbrand strong{display:block;font-size:14px}.loginbrand small{display:block;color:#7a8898;font-size:10px;margin-top:1px}.loginintro{margin-bottom:17px}.loginintro h1{font-size:21px;margin:0}.loginintro p{font-size:12px;color:var(--muted);margin:5px 0 0}.loginbox>label{display:block;font-size:11px;font-weight:750;color:#4b5b70;margin:10px 0 5px}.loginbox input,.loginbox select{width:100%;height:42px;border:1px solid #cdd8e5;border-radius:8px;padding:0 10px;background:#fff!important;color:#172033!important;-webkit-text-fill-color:#172033!important;outline:none}.loginbox input:focus,.loginbox select:focus{border-color:#55aee0;box-shadow:0 0 0 3px rgba(23,139,209,.09)}.loginbox input:-webkit-autofill,.loginbox input:-webkit-autofill:hover,.loginbox input:-webkit-autofill:focus{-webkit-text-fill-color:#172033!important;-webkit-box-shadow:0 0 0 1000px #fff inset!important;box-shadow:0 0 0 1000px #fff inset!important}.loginbox .wide{margin-top:15px}.demohint{font-size:10px;color:#6b7a8c;margin-top:8px;min-height:14px}.loginerr{min-height:18px;margin-top:4px;color:var(--bad);font-size:11px}
@media(max-width:520px){main{padding:10px}.top{padding:9px 10px}.scansection{padding:9px}.scaninput input{font-size:14px}.enterhint{display:none}.counterline{gap:5px}.workbar{align-items:end}.sortwrap>span{display:none}.toolbar{padding:8px 0}.bottom{grid-template-columns:100px 1fr;padding-left:10px;padding-right:10px}.row{grid-template-columns:1fr}.item{padding:9px}.identity span:not(.brandmark){max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}

/* 0.1.14 - gestão de lotes */
.batchItem{align-items:flex-start!important;gap:10px}
.batchMain{min-width:0;flex:1}
.batchError{margin-top:7px;padding:7px 9px;border:1px solid rgba(185,28,28,.18);border-radius:8px;background:rgba(254,226,226,.38);font-size:10px;line-height:1.35}
.batchError b{display:block;color:#991b1b;margin-bottom:2px}
.batchError span{display:block;color:#7f1d1d;word-break:break-word}
.batchActions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.batchActions .btn{padding:7px 9px;font-size:10px}

/* 0.1.15 - fluxo de impressão amigável */
.printSheet{max-height:94dvh}.printBody{padding:8px 0 4px}.printStep{padding:12px 2px;border-bottom:1px solid var(--line2)}.printStep:last-child{border-bottom:0}.stepTitle{display:flex;align-items:center;gap:9px;margin-bottom:10px}.stepTitle>span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--accent2);color:var(--accent);font-weight:900;font-size:11px}.stepTitle b{display:block;font-size:12px}.stepTitle small{display:block;color:var(--muted);font-size:9px;margin-top:1px;line-height:1.35}.printLayout{width:100%!important;height:40px!important}.layoutInfo{font-size:9px;color:var(--muted);margin:5px 2px 0;min-height:13px}.destinationList{display:grid;gap:7px}.destinationChoice{width:100%;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px;display:grid;grid-template-columns:34px 1fr auto auto;align-items:center;gap:8px;text-align:left;color:var(--text);cursor:pointer}.destinationChoice.selected{border-color:#56afe1;background:#f3faff;box-shadow:0 0 0 2px rgba(23,139,209,.08)}.destinationChoice.offline{opacity:.62}.destinationIcon{width:32px;height:32px;border-radius:8px;background:#eef4f9;display:grid;place-items:center;color:#36516c}.destinationText{min-width:0}.destinationText b{display:block;font-size:11px}.destinationText small{display:block;font-size:9px;color:var(--muted);margin-top:3px;white-space:normal}.recommendedBadge{font-size:8px;font-weight:800;color:#177a4f;background:#eaf7f0;border-radius:999px;padding:4px 6px}.choiceMark{font-size:15px;color:var(--accent);font-weight:900}.printLoading,.printEmpty{border:1px dashed #ccd7e4;border-radius:9px;padding:16px;text-align:center;color:var(--muted);font-size:10px;background:#fafcff}.summaryStep{padding-bottom:2px}.printsummary{margin:0 0 10px}.summaryGrid{display:grid;grid-template-columns:72px 82px 1fr;gap:8px}.summaryGrid>div,.summaryLine{background:#fff;border:1px solid var(--line2);border-radius:7px;padding:8px}.summaryGrid span,.summaryLine span{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.45px;color:var(--soft)}.summaryGrid b,.summaryLine b{display:block;font-size:11px;margin-top:3px;color:var(--text)}.summaryLine{margin-top:7px;display:flex;align-items:center;justify-content:space-between;gap:10px}.summaryLine b{text-align:right}.validationHint{margin-top:7px;font-size:9px;color:#44705a;background:var(--goodbg);border-radius:7px;padding:7px 8px}.printConfirm{height:43px;font-size:12px}.printConfirm:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:520px){.printSheet{max-height:96dvh}.destinationChoice{grid-template-columns:31px 1fr auto}.recommendedBadge{grid-column:2}.choiceMark{grid-row:1/3;grid-column:3}.summaryGrid{grid-template-columns:1fr 1fr}.summaryGrid>div:last-child{grid-column:1/3}}

.destinationChoice:disabled{cursor:not-allowed;filter:grayscale(.15)}

.batchError.warning{background:rgba(254,249,195,.55);border-color:rgba(202,138,4,.25)}
.batchError.warning b,.batchError.warning span{color:#854d0e}

/* 0.1.23 - limpeza do carrinho */
.toolbarActions{display:flex;align-items:center;gap:7px}
.btn.ghostDanger{background:transparent;border-color:transparent;color:#9a3b3b;padding-left:8px;padding-right:8px}
.btn.ghostDanger:hover{background:#fff3f3;border-color:#f2d7d7}
.btn.ghostDanger:disabled{opacity:.38;cursor:not-allowed}
.qty .qremove{margin-left:3px;color:#9a3b3b;border-color:#ead6d6;background:#fffafa;font-size:16px}
@media(max-width:520px){.toolbarActions{gap:4px}.btn.ghostDanger{font-size:10px}.qty{gap:3px}.qty .btn{width:29px;height:29px}}

/* 0.1.25 - PWA exibe somente erros de impressão */
.bottom.noHistory{grid-template-columns:1fr}
.errorHistoryBtn{background:#fff2f2;border-color:#edc8cb;color:#a32730;font-weight:850}
.errorHistoryBtn:hover{background:#ffe8ea}
.errorBatch{border-left:3px solid var(--bad)}
@media(max-width:520px){.bottom.noHistory{grid-template-columns:1fr}}

/* Acesso e versão 0.1.28 */
.loginbox>label.rememberRow{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:500;margin:16px 0 0;cursor:pointer}
.loginbox .rememberRow input{width:17px;height:17px;flex:0 0 17px;padding:0;accent-color:#178bd1}
.loginFooter{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.loginFooter a{color:#1476b1;text-decoration:none;font-weight:600}
.version{font-size:11px;font-weight:500;white-space:nowrap;color:var(--muted)}

.identity .version{color:#b8cadb;margin-left:5px;font-size:10px}.adminLink{text-decoration:none;border:1px solid rgba(255,255,255,.18);border-radius:7px;color:#fff}.scanFeedback{color:var(--bad);font-size:12px;line-height:1.4;margin-top:7px}.scanFeedback:empty{display:none}@media(max-width:420px){.topactions{gap:3px}.toprow{gap:5px}.status{padding:5px}.top .iconbtn{padding:6px 4px}.identity{gap:6px}}

/* TS-LABELS: conforto visual móvel e estados de sincronização */
.scaninput input,.item .code{font-size:18px!important}
.item .desc,.item .loc{font-size:16px!important;line-height:1.45}
.scanFeedback,.scanhelp,.toolbar,.listhead,.btn,.tab{font-size:15px!important}
.qty .btn,.cameraBtn{min-height:44px;min-width:42px}
.syncIcon{display:inline-flex;justify-content:center;align-items:center;margin-left:9px;width:24px;height:24px;font-size:17px;font-weight:800;vertical-align:middle;border-radius:50%}
.syncIcon.synced{background:#06b600;color:white}.syncIcon.invalid{background:#fff1f0;color:#cf2323;border:2px solid #cf2323}.syncIcon.waiting{background:#fff1f0;color:#d54b42;border:2px solid #d54b42}.invalidLabel{color:#cf2323!important;font-weight:700}
@media(max-width:520px){.item{gap:8px}.item .code{font-size:18px!important}.qty .btn{width:42px!important;height:44px!important}.scaninput input{font-size:18px!important}.scanhelp{font-size:14px!important}}

.syncIcon img{display:block;width:22px;height:22px;object-fit:contain}.syncIcon.synced,.syncIcon.waiting{background:transparent;border:0}.syncIcon.invalid{font-size:16px}.syncIcon.waiting img{width:24px;height:24px}
