/* SelfBip 2.0 · tema escuro (grafite / violeta / verde neon) */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#0A0A0F;--surface:#141420;--surface2:#1C1C2E;--border:#2A2A3E;--violet:#7C3AED;--violet-l:#9D65FF;
--violet-g:linear-gradient(135deg,#7C3AED 0%,#5B21B6 100%);--green:#10B981;--green-g:linear-gradient(135deg,#10B981 0%,#059669 100%);
--red:#EF4444;--amber:#F59E0B;--text:#F9FAFB;--text-2:#9CA3AF;--text-3:#6B7280;--radius:16px;--radius-sm:10px;
--shadow:0 8px 32px rgba(0,0,0,.45);--shadow-v:0 8px 24px rgba(124,58,237,.35);--t:all .25s cubic-bezier(.4,0,.2,1);
--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px)}
html,body{height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
body{overflow:hidden}
[hidden],.hidden{display:none!important}
button,input,select,textarea{font-family:inherit;touch-action:manipulation}
a{color:var(--violet-l)}
.screen{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;opacity:0;pointer-events:none;transform:translateX(24px);transition:opacity .3s ease,transform .3s ease;visibility:hidden}
.screen.active{opacity:1;pointer-events:all;transform:none;visibility:visible}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--radius);font-size:16px;font-weight:600;cursor:pointer;transition:var(--t);padding:15px 22px;line-height:1.1;min-height:48px;-webkit-appearance:none;color:var(--text)}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--violet-g);color:#fff;box-shadow:var(--shadow-v)}
.btn-success{background:var(--green-g);color:#fff;box-shadow:0 8px 24px rgba(16,185,129,.3)}
.btn-ghost{background:var(--surface2);color:var(--text-2);border:1px solid var(--border)}
.btn-danger{background:rgba(239,68,68,.14);color:#F87171;border:1px solid rgba(239,68,68,.3)}
.btn-full{width:100%}.btn-sm{padding:9px 14px;font-size:13px;min-height:40px;border-radius:var(--radius-sm)}
.btn:disabled{opacity:.45;pointer-events:none}
.top{display:flex;align-items:center;gap:12px;padding:calc(14px + var(--sat)) 16px 12px;border-bottom:1px solid var(--border);flex-shrink:0}
.top-title{font-size:17px;font-weight:700;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-sub{font-size:11px;color:var(--text-2);font-weight:500}
.iconbtn{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);width:44px;height:44px;display:flex;align-items:center;justify-content:center;color:var(--text-2);cursor:pointer;flex-shrink:0}
.iconbtn:active{transform:scale(.94)}
.badge{background:var(--violet-g);color:#fff;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}
.body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px;display:flex;flex-direction:column;gap:14px}
.card{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);padding:16px}
.label{font-size:12px;font-weight:700;color:var(--text-2);letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px;display:block}
.input{width:100%;background:var(--surface2);border:1.5px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:16px;padding:13px 14px;outline:none;transition:var(--t);-webkit-appearance:none;min-height:48px}
.input:focus{border-color:var(--violet);box-shadow:0 0 0 3px rgba(124,58,237,.18)}
.input::placeholder{color:var(--text-3)}
.field{display:flex;flex-direction:column;gap:6px}
.row{display:flex;gap:10px}.row>*{flex:1;min-width:0}
.hint{font-size:12px;color:var(--text-3);line-height:1.5}
.warn{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.35);color:#FBBF24;border-radius:var(--radius-sm);padding:10px 12px;font-size:12.5px;line-height:1.5}
.info{background:rgba(124,58,237,.1);border:1px solid rgba(124,58,237,.35);color:#C4B5FD;border-radius:var(--radius-sm);padding:10px 12px;font-size:12.5px;line-height:1.5}
.err{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.35);color:#FCA5A5;border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;line-height:1.5}
.okbox{background:rgba(16,185,129,.1);border:1px solid rgba(16,185,129,.35);color:#6EE7B7;border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;line-height:1.5}
.list{display:flex;flex-direction:column;gap:10px}
.item{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);padding:12px 14px;display:flex;align-items:center;gap:12px}
.item.click{cursor:pointer}.item.click:active{transform:scale(.99)}
.thumb{width:46px;height:46px;border-radius:var(--radius-sm);background:var(--surface2);display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;overflow:hidden}
.thumb img{width:100%;height:100%;object-fit:cover}
.grow{flex:1;min-width:0}.nm{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sb{font-size:12px;color:var(--text-2);margin-top:2px}
.tag{font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;border:1px solid var(--border);white-space:nowrap}
.tag.ok{color:var(--green);border-color:rgba(16,185,129,.4);background:rgba(16,185,129,.1)}.tag.pe{color:var(--amber);border-color:rgba(245,158,11,.4);background:rgba(245,158,11,.1)}.tag.no{color:#F87171;border-color:rgba(239,68,68,.4);background:rgba(239,68,68,.1)}
.kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px}.kpi{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);padding:14px}
.kpi b{display:block;font-size:22px;font-weight:800;letter-spacing:-.02em;margin-top:4px}.kpi span{font-size:11px;color:var(--text-2);font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.green{color:var(--green)}.red{color:#F87171}.amber{color:var(--amber)}
.nav{display:flex;overflow-x:auto;-webkit-overflow-scrolling:touch;background:var(--surface);border-top:1.5px solid var(--border);padding:6px 6px calc(6px + var(--sab));flex-shrink:0;scrollbar-width:none;gap:2px}
.nav::-webkit-scrollbar{display:none}
.nav button{flex:1 0 auto;min-width:68px;background:none;border:none;color:var(--text-3);font-size:11px;font-weight:600;padding:8px 6px;border-radius:12px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;min-height:52px}
.nav button .ic{font-size:20px;line-height:1}.nav button.on{color:var(--violet-l);background:rgba(124,58,237,.12)}
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.66);backdrop-filter:blur(6px);z-index:100;display:flex;align-items:flex-end;opacity:0;pointer-events:none;transition:opacity .25s ease}
.modal-backdrop.visible{opacity:1;pointer-events:all}
.modal-sheet{width:100%;max-height:92vh;overflow-y:auto;-webkit-overflow-scrolling:touch;background:var(--surface);border-radius:24px 24px 0 0;padding:20px 20px calc(28px + var(--sab));transform:translateY(100%);transition:transform .3s cubic-bezier(.32,.72,0,1);display:flex;flex-direction:column;gap:16px}
.modal-backdrop.visible .modal-sheet{transform:none}
.modal-head{display:flex;align-items:center;gap:10px}.modal-head h3{flex:1;font-size:18px}
.xbtn{background:var(--surface2);border:1px solid var(--border);color:var(--text);width:40px;height:40px;border-radius:50%;font-size:18px;cursor:pointer;flex-shrink:0}
.spinner{width:48px;height:48px;border:3px solid var(--border);border-top-color:var(--violet);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.loading{position:fixed;inset:0;background:rgba(10,10,15,.88);z-index:300;display:none;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:24px}
.loading.visible{display:flex}.loading b{font-size:17px}.loading span{font-size:13px;color:var(--text-2)}
.toasts{position:fixed;top:calc(14px + var(--sat));left:50%;transform:translateX(-50%);z-index:999;display:flex;flex-direction:column;gap:8px;pointer-events:none;width:calc(100% - 32px);max-width:380px}
.toast{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;font-size:13.5px;font-weight:600;box-shadow:var(--shadow);animation:tin .25s ease;line-height:1.4}
.toast.success{border-color:var(--green);color:#6EE7B7}.toast.error{border-color:var(--red);color:#FCA5A5}.toast.info{border-color:var(--violet);color:#C4B5FD}
@keyframes tin{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
.switch{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px}
.switch input{width:46px;height:28px;accent-color:var(--violet)}
.foot{text-align:center;color:var(--text-3);font-size:11px;padding:6px 0 2px}
.center{text-align:center}
.pill{display:inline-block;background:var(--surface2);border:1px solid var(--border);border-radius:999px;padding:4px 12px;font-size:12px;color:var(--text-2);font-weight:600}
.keypad-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.keypad-btn{background:var(--surface2);border:1.5px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:26px;font-weight:600;padding:16px 0;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;min-height:58px}
.keypad-btn:active{transform:scale(.94);background:var(--border)}.keypad-btn.del{font-size:18px;color:#F87171}.keypad-btn.ok{background:var(--green-g);color:#fff;border-color:transparent}
.keypad-display{background:var(--surface2);border:1.5px solid var(--violet);border-radius:var(--radius);padding:16px;text-align:center;font-size:24px;font-weight:700;letter-spacing:.05em;font-family:'SF Mono',Monaco,monospace;word-break:break-all;min-height:62px;display:flex;align-items:center;justify-content:center}
.keypad-display.empty{color:var(--text-3);font-weight:500;letter-spacing:0;font-family:inherit;font-size:14px}
.scan-wrap{position:relative;flex-shrink:0;height:260px;background:#000;overflow:hidden}
.scan-wrap video{width:100%;height:100%;object-fit:cover;background:#000;display:block}
.scan-over{position:absolute;inset:0;pointer-events:none;display:flex;align-items:center;justify-content:center}
.scan-box{position:relative;width:78%;max-width:300px;height:130px}
.scan-box i{position:absolute;width:24px;height:24px;border:0 solid var(--violet-l)}
.scan-box i:nth-child(1){top:0;left:0;border-width:3px 0 0 3px;border-radius:4px 0 0 0}.scan-box i:nth-child(2){top:0;right:0;border-width:3px 3px 0 0;border-radius:0 4px 0 0}
.scan-box i:nth-child(3){bottom:0;right:0;border-width:0 3px 3px 0;border-radius:0 0 4px 0}.scan-box i:nth-child(4){bottom:0;left:0;border-width:0 0 3px 3px;border-radius:0 0 0 4px}
.scan-laser{position:absolute;left:10px;right:10px;height:2px;background:linear-gradient(90deg,transparent,var(--violet-l),transparent);box-shadow:0 0 8px var(--violet);animation:laser 2s ease-in-out infinite}
@keyframes laser{0%,100%{top:8px}50%{top:calc(100% - 10px)}}
.scan-label{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.65);color:var(--text-2);font-size:12px;padding:5px 12px;border-radius:999px;white-space:nowrap}
.toolbtn{width:100%;padding:13px 16px;background:linear-gradient(135deg,#1A1A2E,#252540);border:1.5px solid var(--violet);border-radius:var(--radius);color:var(--text);font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:12px;text-align:left;min-height:56px}
.toolbtn.plain{border-color:var(--border)}.toolbtn small{display:block;color:var(--text-2);font-weight:500;font-size:11px;margin-top:2px}
.toolbtn .dot{width:34px;height:34px;border-radius:50%;background:var(--violet);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px}.toolbtn.plain .dot{background:var(--surface2);border:1.5px solid var(--border)}
@media print{body{overflow:visible;background:#fff}.no-print{display:none!important}.print-only{display:block!important;color:#000}}
.print-only{display:none}

/* ── adesivo da loja (impressão: 4 por folha A4, 95×135 mm cada) ── */
@page{size:A4;margin:8mm}
@media print{
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  #print-qr{padding:0!important;text-align:initial!important}
  .adesivos{display:grid;grid-template-columns:95mm 95mm;grid-auto-rows:135mm;gap:4mm}
  .st{box-sizing:border-box;width:95mm;height:135mm;border-radius:7mm;overflow:hidden;position:relative;break-inside:avoid;page-break-inside:avoid;color:#fff;display:flex;flex-direction:column;padding:6mm 6mm 4mm;font-family:-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
    background:radial-gradient(circle at 100% 0%,#10B981 0,rgba(16,185,129,0) 38%),radial-gradient(circle at 0% 100%,#7C3AED 0,rgba(124,58,237,0) 52%),#0B1020;border:.3mm dashed #888}
  .st-top{text-align:center}
  .st-brand{font-size:8pt;letter-spacing:.22em;font-weight:800;color:#C4B5FD}
  .st-nome{font-size:19pt;font-weight:900;line-height:1.05;margin:2mm 0 1.2mm;letter-spacing:-.02em;word-break:break-word}
  .st-sub{font-size:8.5pt;color:#A7F3D0;font-weight:600}
  .st-qrbox{background:#fff;border-radius:5mm;margin:3.5mm auto 3mm;padding:3mm 3mm 2.2mm;text-align:center;width:52mm;box-shadow:0 0 0 1.2mm rgba(124,58,237,.55)}
  .st-qr{width:44mm;height:44mm;margin:0 auto}.st-qr img,.st-qr canvas,.st-qr svg{width:44mm!important;height:44mm!important;display:block}
  .st-cta{color:#111;font-size:8pt;font-weight:800;margin-top:1.6mm}
  .st-pass{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2mm}
  .st-pass li{display:flex;align-items:center;gap:2.6mm;font-size:8.6pt;line-height:1.2;font-weight:600}
  .st-pass b{flex:none;width:6.2mm;height:6.2mm;border-radius:50%;background:linear-gradient(135deg,#8B5CF6,#10B981);color:#fff;font-size:9pt;display:flex;align-items:center;justify-content:center}
  .st-url{margin-top:auto;text-align:center;font-size:6.5pt;color:#9CA3AF;word-break:break-all;padding-top:2mm}
}
