:root{--blue:#2367e8;--blue-d:#1253c8;--blue-l:#eaf2ff;--ink:#14243a;--muted:#8190a5;--line:#e8edf4;--bg:#f5f7fb;--green:#168257;--green-l:#e9f9f1;--orange:#a36a13;--orange-l:#fff4df;--red:#b83c39;--red-l:#fff0ef;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}
body{margin:0;background:var(--bg)}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
button:disabled{opacity:.45;cursor:not-allowed}
a{color:var(--blue)}

/* layout */
.app{display:flex;min-height:100vh}
.side{width:248px;flex-shrink:0;background:#fff;border-right:1px solid var(--line);padding:26px 15px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}
.brand{display:flex;align-items:center;gap:10px;padding:0 9px 22px}
.brand-logo{width:42px;height:42px;border-radius:50%;object-fit:cover;flex-shrink:0;box-shadow:0 2px 8px #0002}
.brandrow{display:flex;gap:14px;align-items:center}
.doclogo{width:72px;height:72px;border-radius:50%;object-fit:cover;flex-shrink:0}
.logoset{display:flex;gap:16px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:16px;max-width:640px}
.logoprev{width:88px;height:88px;border-radius:50%;object-fit:cover;flex-shrink:0;background:#f0f2f6}
.brand-icon{width:39px;height:39px;border-radius:12px;background:#1d65e8;color:#fff;display:grid;place-items:center;font-weight:900;flex-shrink:0}
.brand b{font-size:14px;letter-spacing:-.2px}
.brand small{display:block;color:#8894a6;font-size:11px;margin-top:2px}
.navlabel{font-size:10px;letter-spacing:1.4px;color:#9aa5b4;font-weight:800;margin:12px 13px 10px}
.nav{overflow:auto;flex:1}
.nav button{border:0;background:none;width:100%;text-align:left;padding:11px 13px;color:#6c7b90;border-radius:10px;display:flex;align-items:center;gap:12px;font-weight:650;font-size:13px;margin-bottom:3px}
.nav button.active{background:var(--blue-l);color:#185cdb}
.nav button:hover{background:#f0f5ff}
.nav .ico{font-size:16px;width:20px;text-align:center}
.nav .badge{margin-left:auto;background:#e5484d;color:#fff;border-radius:10px;font-size:10px;padding:2px 7px}
.side-foot{border-top:1px solid #eef0f4;padding:14px 8px 0;color:#8794a8;font-size:11px}
.side-foot b{color:var(--ink);display:block;font-size:12px}
.main{min-width:0;flex:1;padding:25px 34px 95px;max-width:1650px}
.top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:22px}
.eyebrow{font-size:11px;letter-spacing:1.5px;font-weight:800;color:#8795a8}
.top h1{margin:5px 0 0;font-size:28px;letter-spacing:-1px}
.topright{display:flex;gap:10px;align-items:center}
.branchsel{padding:8px 10px;font-size:12px;font-weight:700;color:var(--blue);background:var(--blue-l);border-color:#d6e4ff;max-width:220px}
.rolechip{background:var(--blue-l);color:var(--blue);border-radius:20px;padding:7px 12px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px}
.avatar{background:var(--blue-l);color:#1d65e8;border-radius:50%;width:35px;height:35px;display:grid;place-items:center;font-weight:900;border:0}
.muted{color:var(--muted)}
.subtitle{color:#8b97a8;font-size:13px;margin-top:7px}

/* cards & panels */
.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:20px}
.card,.panel{background:#fff;border:1px solid #e9edf4;border-radius:15px;box-shadow:0 4px 18px #213b6005}
.card{padding:20px}
.card .mini{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#8592a5;font-weight:650}
.card .num{font-size:25px;font-weight:850;letter-spacing:-1px;margin-top:12px}
.card .hint{color:#8997a7;font-size:11px;margin-top:8px}
.card .bubble{width:34px;height:34px;border-radius:10px;background:#eef4ff;color:#2267e8;display:grid;place-items:center;font-size:16px}
.card.click{cursor:pointer}
.card.click:hover{border-color:#cfdcf3}
.two{display:grid;grid-template-columns:1.45fr 1fr;gap:18px}
.half{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.panel{padding:20px;margin-bottom:18px;overflow:hidden}
.panelhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.panel h2{font-size:16px;margin:0;letter-spacing:-.3px}
.panel h3{font-size:14px;margin:18px 0 8px}
.panel p{font-size:12px;color:#8a97a9;margin:6px 0 0}

/* buttons */
.btn{border:0;border-radius:9px;background:var(--blue);color:#fff;font-weight:750;font-size:12px;padding:11px 15px;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.btn:hover{background:var(--blue-d)}
.btn.secondary{background:#eff4fd;color:#2763cb}
.btn.outline{background:#fff;color:#2865d5;border:1px solid #dce6f7}
.btn.danger{background:#fff0f0;color:#bf3434}
.btn.success{background:#16a06a}
.btn.success:hover{background:#118556}
.btn.whatsapp{background:#25d366}
.btn.small{padding:8px 10px;font-size:11px}
.btn.block{width:100%;justify-content:center;padding:13px}
.btn.loading{opacity:.6;pointer-events:none}

/* tables */
.tablewrap{overflow:auto}
table{width:100%;border-collapse:collapse;text-align:left;font-size:12px;white-space:nowrap}
th{color:#93a0b0;font-size:10px;letter-spacing:.4px;text-transform:uppercase;font-weight:750;border-bottom:1px solid #edf0f5;padding:12px}
td{padding:13px 12px;border-bottom:1px solid #f0f2f6;vertical-align:middle}
tr:last-child td{border-bottom:0}
tr.click{cursor:pointer}
tr.click:hover td{background:#f8faff}
td.num,th.num{text-align:right}
.strong{font-weight:750;color:#24354b}
.pill{display:inline-block;padding:5px 9px;border-radius:7px;background:#edf4ff;color:#2366ce;font-weight:750;font-size:10px;white-space:nowrap}
.pill.green{background:var(--green-l);color:var(--green)}
.pill.orange{background:var(--orange-l);color:var(--orange)}
.pill.red{background:var(--red-l);color:var(--red)}
.pill.grey{background:#f0f2f6;color:#6c7b90}
.actions{display:flex;gap:7px;flex-wrap:wrap}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.search,.field{border:1px solid #e1e8f1;background:#fff;padding:11px 12px;border-radius:9px;color:#34445a;outline:0;min-width:0}
.search:focus,.field:focus{border-color:var(--blue);box-shadow:0 0 0 3px #e9f0ff}
.search{width:300px;max-width:100%}
textarea.field{min-height:76px;resize:vertical}
.spacer{flex:1}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.tabs button{border:1px solid #e1e8f1;background:#fff;border-radius:20px;padding:7px 13px;font-size:12px;font-weight:650;color:#5f6f85}
.tabs button.active{background:var(--blue);border-color:var(--blue);color:#fff}
.notice{padding:12px 14px;border-radius:10px;background:#edf4ff;color:#315f9d;font-size:12px;margin-bottom:14px;line-height:1.5}
.notice.warn{background:#fff6e6;color:#93681c}
.notice.ok{background:var(--green-l);color:var(--green)}
.notice.err{background:var(--red-l);color:var(--red)}
.empty{text-align:center;color:#8b98a9;padding:30px}

/* forms */
.fieldrow{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fieldrow3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.formlabel{display:block;font-size:11px;font-weight:800;color:#66768d;margin:0 0 6px}
.formgroup{margin-bottom:13px}
.formgroup .field{width:100%}
.check{display:flex;align-items:center;gap:8px;font-size:13px;margin-bottom:13px}

/* modal */
.modalbg{position:fixed;inset:0;background:#101e38a8;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}
.modal{width:620px;max-width:100%;max-height:92vh;overflow:auto;background:#fff;border-radius:18px;padding:24px;box-shadow:0 30px 90px #0003}
.modal.wide{width:900px}
.modal h2{margin:0 0 6px;font-size:20px}
.modal .desc{font-size:12px;color:#8491a3;margin:0 0 18px}
.modalfooter{display:flex;justify-content:end;gap:10px;margin-top:16px;flex-wrap:wrap}
.statlist{display:flex;flex-direction:column;gap:12px}
.statline{display:flex;justify-content:space-between;gap:10px;font-size:13px}
.statline.total{border-top:1px solid #edf0f5;padding-top:12px;font-weight:800;font-size:15px}
.progress{height:8px;background:#edf1f7;border-radius:20px;overflow:hidden;margin-top:6px}
.progress span{height:100%;display:block;background:#2d70e9;border-radius:20px}
.progress span.low{background:#e5484d}
.rowcards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.minicard{border:1px solid #e8edf5;border-radius:12px;padding:13px;min-width:0}
.minicard b{font-size:15px;display:block;overflow:hidden;text-overflow:ellipsis}
.minicard small{display:block;color:#8a97a8;margin-top:4px;font-size:11px}
.mutedline{font-size:11px;color:#8a97a8}
.steps{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}
.steps span{font-size:11px;font-weight:750;color:#9aa5b4;padding:6px 10px;border-radius:20px;background:#f2f5fa}
.steps span.on{background:var(--blue);color:#fff}
.steps span.done{background:var(--blue-l);color:var(--blue)}
.pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-bottom:14px}
.pick button{border:1px solid #e1e8f1;background:#fff;border-radius:12px;padding:14px;text-align:left}
.pick button.active{border-color:var(--blue);box-shadow:0 0 0 3px #e3edff}
.pick button b{display:block;font-size:13px}
.pick button small{display:block;color:var(--muted);margin-top:4px}
.pick button .price{color:var(--blue);font-weight:850;font-size:16px;margin-top:8px}
.summary{background:#f7f9fd;border-radius:12px;padding:14px;margin:12px 0}
.timeline{font-size:12px;border-left:2px solid #e3e9f3;margin-left:6px;padding-left:14px}
.timeline div{margin-bottom:10px;position:relative}
.timeline div::before{content:"";position:absolute;left:-20px;top:4px;width:10px;height:10px;border-radius:50%;background:#c6d6f3}

/* toast */
#toast{position:fixed;right:20px;bottom:20px;z-index:80;display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:none}
.show-m{display:none}
#toast div{background:#14243a;color:#fff;padding:11px 16px;border-radius:10px;font-size:13px;box-shadow:0 10px 30px #0003;max-width:90vw}
#toast div.err{background:#b83c39}

/* login */
.auth{min-height:100vh;display:grid;place-items:center;padding:16px}
.authbox{width:400px;max-width:100%;background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 20px 60px #213b6012}
.authbox h1{font-size:22px;margin:16px 0 4px}

/* mobile nav */
.mobilebar{display:none}
.loadingbar{position:fixed;top:0;left:0;height:3px;background:var(--blue);z-index:90;width:0;transition:width .3s}
.loadingbar.on{width:70%}

/* print documents */
#printarea{display:none}
.doc{font-size:12px;color:#111;background:#fff}
.doc-a4{width:190mm;margin:0 auto;padding:6mm 0}
.doc-a4 .hdr{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #1d65e8;padding-bottom:12px;margin-bottom:16px}
.doc-a4 h1{font-size:20px;margin:0;color:#1d65e8}
.doc-a4 .title{font-size:22px;font-weight:900;letter-spacing:1px;text-align:right}
.doc-a4 table{white-space:normal;font-size:12px}
.doc-a4 th{color:#333;border-bottom:1px solid #333}
.doc-a4 .tot td{font-weight:800;border-top:1px solid #333}
.doc-a4 .meta{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.doc-a4 .box{border:1px solid #ccd;border-radius:8px;padding:10px}
.doc-a4 .foot{margin-top:24px;font-size:11px;color:#444;border-top:1px solid #ccc;padding-top:10px}
.doc-thermal .doclogo{display:none}
.doc-thermal{width:72mm;margin:0 auto;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px}
.doc-thermal .c{text-align:center}
.doc-thermal hr{border:0;border-top:1px dashed #000;margin:6px 0}
.doc-thermal .r{display:flex;justify-content:space-between;gap:6px}
.qrbox{display:flex;gap:16px;align-items:center;border:2px dashed #b9cff5;background:#f5f9ff;border-radius:14px;padding:14px;margin-bottom:14px}
.qrbox img{border-radius:8px;background:#fff;flex-shrink:0}
@media(max-width:700px){.qrbox{flex-direction:column;text-align:center}}
.preview{border:1px solid #e1e8f1;border-radius:12px;padding:14px;max-height:60vh;overflow:auto;background:#fff}

@media(max-width:1100px){.cards{grid-template-columns:repeat(2,1fr)}.two,.half{grid-template-columns:1fr}.main{padding:22px 20px 95px}.rowcards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){
  .side{display:none}
  .main{padding:16px 14px 92px}
  .top{margin-bottom:16px}
  .top h1{font-size:22px}
  .subtitle{display:none}
  .rolechip{display:none}
  .branchsel{max-width:150px;font-size:11px;padding:7px 6px}
  .cards{gap:9px}
  .card{padding:14px}
  .card .num{font-size:19px}
  .card .mini{font-size:10px}
  .panel{padding:15px}
  .mobilebar{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:20;background:#fff;border-top:1px solid #e4eaf4;justify-content:space-around;padding:7px 4px max(8px,env(safe-area-inset-bottom))}
  .mobilebar button{border:0;background:transparent;color:#8997a9;display:flex;flex-direction:column;align-items:center;font-size:10px;gap:3px;min-width:54px}
  .mobilebar button.active{color:var(--blue);font-weight:850}
  .mobilebar .ico{font-size:19px}
  .fieldrow,.fieldrow3{grid-template-columns:1fr}
  .rowcards{grid-template-columns:1fr 1fr}
  .modalbg{align-items:flex-end;padding:0}
  .modal{padding:18px;border-radius:18px 18px 0 0;max-height:94vh}
  .search{width:100%}
  .hide-m{display:none}
  .show-m{display:inline-block;margin-top:5px}
  #toast{left:12px;right:12px;bottom:84px;align-items:center}
}
@media print{
  @page{margin:10mm}
  body{background:#fff}
  .app,#modalhost,#toast,.loadingbar{display:none!important}
  #printarea{display:block}
}

#offline{position:fixed;top:0;left:0;right:0;z-index:95;background:#b83c39;color:#fff;text-align:center;font-size:13px;font-weight:700;padding:9px 12px}

.topsearch{width:230px;padding:9px 12px;font-size:12px}
.bars{display:flex;align-items:flex-end;gap:6px;height:170px;padding-top:6px;border-bottom:1px solid #eef1f6}
.barcol{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:5px;font-size:10px;color:#98a4b4;min-width:0}
.bar{background:linear-gradient(#377ef6,#b5d2ff);border-radius:6px 6px 0 0;width:100%;max-width:40px}
.barv{font-size:9px;color:#5f6f85;font-weight:700}
@media(max-width:700px){.barv{display:none}.bars{gap:3px;height:130px}}
.discrow{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.discrow input{width:110px}
.discrow select{width:72px}
.payqr{display:flex;gap:14px;align-items:center;border:2px dashed #9fd5b5;background:#f2fbf6;border-radius:14px;padding:12px;margin:0 0 12px}
.payqr img{width:200px;height:auto;max-height:260px;object-fit:contain;background:#fff;border-radius:8px;flex-shrink:0}
@media(max-width:700px){.payqr{flex-direction:column;text-align:center}.payqr img{width:min(260px,80vw)}}
.waqr{display:flex;gap:18px;align-items:center;border:2px solid #25d366;background:#f0fdf4;border-radius:14px;padding:16px;margin-bottom:16px}
.waqr img{width:240px;height:240px;background:#fff;border-radius:10px;flex-shrink:0}
@media(max-width:700px){.waqr{flex-direction:column;text-align:left}}
.wabig{text-align:center;border:1px solid var(--line);border-radius:16px;padding:28px 16px;margin-bottom:16px;background:#fafbfe}
.wabig.ok{background:#f0fdf4;border-color:#bbf7d0}
.wabig h3{margin:8px 0 6px;font-size:18px}
.waicon{font-size:44px}
.waqr h3{font-size:18px}
