/* «پنل وب فروشنده» (/merchant). Same fonts and tokens as the site; admin-panel layout. No external resources, nothing
   inline (CSP self). Print: the report / receipt on A4, or a thermal slip (58 / 80 mm) from #print-root. */
@font-face{font-family:Vazirmatn;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/vazirmatn-regular.woff2) format("woff2")}
@font-face{font-family:Vazirmatn;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/vazirmatn-medium.woff2) format("woff2")}
@font-face{font-family:Vazirmatn;font-style:normal;font-weight:600 800;font-display:swap;src:url(/assets/fonts/vazirmatn-bold.woff2) format("woff2")}

:root,[data-theme=dark]{--bg:#13141e;--sf:#1e2031;--sf2:#25283c;--sf3:#2d3048;--ln:#34374f;--tx:#ececf1;--mu:#aaaec3;--fa:#7c809a;--ac:#9a8cf0;--act:#d6d0ff;--acs:rgb(154 140 240/.14);--ok:#5fd4a0;--oks:rgb(95 212 160/.13);--wa:#f2b95c;--was:rgb(242 185 92/.13);--da:#f58a82;--das:rgb(245 138 130/.13);--in:#7fb2f6;--ins:rgb(127 178 246/.13);color-scheme:dark}
[data-theme=light]{--bg:#f5f4f9;--sf:#fdfdfe;--sf2:#efeef5;--sf3:#e4e3ee;--ln:#dcdbe7;--tx:#16172a;--mu:#51546a;--fa:#7a7d92;--ac:#6a5bd6;--act:#4536a8;--acs:#ecebff;--ok:#16835a;--oks:#e2f5ec;--wa:#a86a07;--was:#fbf0dc;--da:#c03636;--das:#fbe6e6;--in:#2d63b8;--ins:#e3edfb;color-scheme:light}

*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--tx)}
body{font-family:Vazirmatn,Tahoma,system-ui,sans-serif;font-size:14px;line-height:1.65;-webkit-font-smoothing:antialiased}
h1,h2,h3{margin:0;font-weight:700;line-height:1.35}
h1{font-size:20px}h2{font-size:16px}h3{font-size:15px}
p{margin:0}
a{color:var(--act);text-decoration:none}
a:hover{text-decoration:underline}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
.muted{color:var(--mu)}.faint{color:var(--fa)}.small{font-size:12.5px}
.center{text-align:center;justify-content:center}
.grow{flex:1}
.row{display:flex;align-items:center;flex-wrap:wrap}
.gap{gap:10px}.gap-sm{gap:6px}.end{justify-content:flex-end}.wrap{flex-wrap:wrap}
.stack{display:flex;flex-direction:column;gap:16px}
.stack.sm{gap:10px}
.pad{padding:14px 18px}
.num{font-variant-numeric:tabular-nums;white-space:nowrap}
.mono,code{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:12.5px;direction:ltr;unicode-bidi:isolate}
.mono.wrap{word-break:break-all;white-space:normal}
.ellipsis{max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.err{color:var(--da);font-size:13px}
.tone-ok{color:var(--ok)}
.danger-text{color:var(--da)!important}
.warn{border:1px solid var(--wa);background:var(--was);border-radius:10px;padding:10px 12px;font-size:13px}
svg.i{width:18px;height:18px;flex:none;fill:currentColor}

/* ------------------------------------------------------------- controls */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:10px;padding:9px 16px;font:inherit;font-weight:700;background:var(--ac);color:#fff;cursor:pointer;text-decoration:none;white-space:nowrap}
.btn:hover{text-decoration:none;filter:brightness(1.08)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.ghost{background:transparent;color:var(--act);border:1px solid var(--ln)}
.btn.ghost:hover{background:var(--sf2)}
.btn.danger{background:var(--da);color:#fff}
.btn.sm{padding:6px 12px;font-size:13px}
.btn.big{padding:13px 22px;font-size:16px}
.btn.wide{width:100%}
.link-btn{background:none;border:0;padding:2px 4px;font:inherit;color:var(--act);cursor:pointer;white-space:nowrap}
.link-btn:hover{text-decoration:underline}
.icon-btn{background:transparent;border:1px solid var(--ln);color:var(--mu);border-radius:8px;width:32px;height:32px;cursor:pointer;font:inherit;line-height:1}
.icon-btn:hover{color:var(--tx);background:var(--sf2)}
input,select,textarea{font:inherit;color:var(--tx);background:var(--sf2);border:1px solid var(--ln);border-radius:9px;padding:8px 11px;min-width:0}
textarea{resize:vertical;line-height:1.7}
input:focus,select:focus,textarea:focus{outline:2px solid var(--ac);outline-offset:0;border-color:transparent}
input[type=checkbox],input[type=radio]{accent-color:var(--ac);width:16px;height:16px;padding:0}
input.switch{appearance:none;width:38px;height:22px;border-radius:999px;background:var(--sf3);border:1px solid var(--ln);position:relative;cursor:pointer;flex:none}
input.switch::after{content:"";position:absolute;top:2px;right:2px;width:16px;height:16px;border-radius:50%;background:var(--mu);transition:right .15s}
input.switch:checked{background:var(--ac);border-color:var(--ac)}
input.switch:checked::after{right:18px;background:#fff}
input.switch:disabled{opacity:.5}
input.file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.field{display:flex;flex-direction:column;gap:5px}
.field>span{font-weight:600;font-size:13px}
.field.inline{flex-direction:row;align-items:center}
.toggle,.radio{display:inline-flex;align-items:center;gap:8px;cursor:pointer}
.form{display:flex;flex-direction:column;gap:14px}
.pill{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;border-radius:999px;padding:2px 10px;white-space:nowrap;background:var(--sf2);color:var(--mu)}
.pill.ok{background:var(--oks);color:var(--ok)}.pill.wa{background:var(--was);color:var(--wa)}.pill.da{background:var(--das);color:var(--da)}.pill.in{background:var(--ins);color:var(--in)}.pill.ac{background:var(--acs);color:var(--act)}
p.pill{align-self:flex-start;white-space:normal;border-radius:10px;padding:4px 10px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--ln);background:transparent;color:var(--mu);border-radius:999px;padding:5px 14px;font:inherit;font-size:13px;cursor:pointer}
.chip.on{background:var(--acs);color:var(--tx);border-color:var(--ac)}

/* ------------------------------------------------------------- layout */
.boot{min-height:100vh;display:grid;place-items:center;padding:20px}
.layout{display:flex;min-height:100vh}
.sidebar{width:232px;flex:none;background:var(--sf);border-inline-end:1px solid var(--ln);padding:16px 12px 24px;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;gap:14px}
.brand{display:flex;align-items:center;gap:8px;color:var(--tx);font-weight:800;font-size:17px;align-self:flex-start;padding:2px 6px}
.brand:hover{text-decoration:none}
.store-box{display:flex;flex-direction:column;gap:4px;background:var(--sf2);border-radius:12px;padding:10px 12px}
.store-box b{font-size:15px}
.store-box [dir=ltr]{text-align:right}
.nav{display:flex;flex-direction:column;gap:2px}
.nav-link{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;color:var(--mu)}
.nav-link:hover{background:var(--sf2);color:var(--tx);text-decoration:none}
.nav-link.active{background:var(--acs);color:var(--tx);box-shadow:inset -3px 0 0 var(--ac)}
.side-foot{margin-top:auto;line-height:1.7}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;gap:10px;height:58px;padding:0 22px;border-bottom:1px solid var(--ln);background:var(--bg);position:sticky;top:0;z-index:5}
.topbar h1{font-size:17px}
.content{padding:22px 24px 64px;max-width:1360px;width:100%}
.nav-toggle{display:none}
@media (max-width:900px){
  .sidebar{position:fixed;inset-block:0;inset-inline-start:0;z-index:20;transform:translateX(100%);transition:transform .2s;box-shadow:0 0 40px rgb(0 0 0/.4)}
  .sidebar.open{transform:none}
  .nav-toggle{display:inline-block}
  .content{padding:16px 14px 48px}
  .topbar{padding:0 12px}
}

.card{background:var(--sf);border:1px solid var(--ln);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:12px}
.card.flush{padding:0;gap:0;overflow:hidden}
.card.narrow{max-width:420px;align-items:center}
.card.empty{align-items:center;text-align:center;padding:36px 18px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.split{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:start}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px}
@media (max-width:1100px){.split,.grid2{grid-template-columns:1fr}}
.sticky{position:sticky;top:76px}
.kv{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px dashed var(--ln);padding-bottom:8px;min-width:0}
.kv:last-child{border-bottom:0}
.kv>:first-child{flex:none}
.kv>:last-child{text-align:left;min-width:0}
.kvs{display:flex;flex-direction:column;gap:8px}
.addr{display:flex;align-items:center;gap:6px;min-width:0}
.addr .mono{overflow-wrap:anywhere;font-size:11.5px}
ul.plain{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
ul.plain li{display:flex;justify-content:space-between;align-items:center;gap:8px}
.app-only{background:var(--sf2);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.steps{margin:0;padding:0 1.4rem 0 0;list-style:persian;display:flex;flex-direction:column;gap:12px}
.steps li b{display:block}
.upload{display:flex;align-items:center;gap:10px;flex-wrap:wrap;position:relative}

/* stats */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.stat{background:var(--sf);border:1px solid var(--ln);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:2px;color:var(--tx)}
.stat.link:hover{border-color:var(--ac);text-decoration:none}
.stat-label{color:var(--mu);font-size:13px}
.stat-value{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}
.stat.ac .stat-value{color:var(--act)}
.stat.ok .stat-value{color:var(--ok)}
.quick{display:flex;gap:10px;flex-wrap:wrap}

/* tables */
.table-wrap{overflow-x:auto}
.table{width:100%;border-collapse:collapse}
.table th,.table td{padding:10px 14px;text-align:right;border-bottom:1px solid var(--ln);vertical-align:middle}
.table th{color:var(--mu);font-weight:600;font-size:12.5px;background:var(--sf2);white-space:nowrap}
.table tbody tr:last-child td{border-bottom:0}
.table tbody tr:hover td{background:color-mix(in srgb,var(--sf2) 50%,transparent)}
.table tfoot td{font-weight:800;border-top:2px solid var(--ln);border-bottom:0}
.table tr.click{cursor:pointer}
.table tr.off td{opacity:.55}
.table td.actions{white-space:nowrap;text-align:left}
.thumb{width:40px;height:40px;border-radius:9px;object-fit:cover;display:grid;place-items:center;background:var(--acs);color:var(--act);font-weight:800}

/* new invoice */
.prod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.prod{display:flex;align-items:center;gap:10px;border:1px solid var(--ln);border-radius:12px;padding:10px;cursor:pointer;background:var(--sf)}
.prod:hover{border-color:var(--ac)}
.prod.on{border-color:var(--ac);background:var(--acs)}
.prod-main{flex:1;min-width:0;display:flex;flex-direction:column}
.prod-main b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stepper{display:flex;align-items:center;gap:4px}
.step{width:28px;height:28px;border-radius:8px;border:1px solid var(--ln);background:var(--sf2);color:var(--tx);font:inherit;font-weight:800;cursor:pointer;line-height:1}
.qty{min-width:22px;text-align:center;font-weight:800}
.custom-lines{display:flex;flex-direction:column;gap:8px}
.custom-line{display:grid;grid-template-columns:minmax(0,1fr) 160px 70px 32px;gap:8px;align-items:center}
.lines{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.lines li{display:flex;justify-content:space-between;gap:12px}
.total{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border-top:1px solid var(--ln);padding-top:12px}
.total b,.total-num{font-size:24px;font-weight:800}
.summary .words{line-height:1.8}

/* POS */
.pos{background:var(--sf);border:1px solid var(--ln);border-radius:18px;padding:24px}
.pos-grid{display:grid;grid-template-columns:minmax(300px,440px) minmax(0,1fr);gap:28px;align-items:start}
@media (max-width:900px){.pos-grid{grid-template-columns:1fr}}
.pos-left{display:flex;flex-direction:column;gap:12px;align-items:center}
.pos-qr{background:#fff;border-radius:18px;padding:14px;line-height:0;width:100%;max-width:440px}
.pos-qr svg,.qr-big svg,.login-qr svg{width:100%;height:auto;display:block}
.pos-right{display:flex;flex-direction:column;gap:12px;min-width:0}
.pos-store{font-size:22px}
.pos-amount{font-size:20px}
.pos-amount b{font-size:46px;font-weight:800}
.pos-crypto{font-size:18px;font-weight:700;color:var(--mu)}
.pos-crypto .mono{font-size:18px}
.timer{display:flex;justify-content:space-between;align-items:center;background:var(--sf2);border-radius:12px;padding:10px 14px}
.timer b{font-size:22px}
.timer.low b{color:var(--da)}
.pos-status{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.code-row{background:var(--sf2);border-radius:10px;padding:9px 12px;overflow-wrap:anywhere;text-align:left}
.pos:fullscreen{border-radius:0;border:0;padding:4vh 4vw;display:flex;align-items:center;overflow:auto}
.pos:fullscreen .pos-main{width:100%}
.pos:fullscreen .pos-grid{grid-template-columns:minmax(0,46vh) minmax(0,1fr);gap:5vw}
.pos:fullscreen .pos-qr{max-width:none}
.pos:fullscreen .no-full{display:none}
.pos:fullscreen .pos-amount b{font-size:9vh}
.pos:fullscreen .pos-store{font-size:4vh}
.paid{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;padding:30px 0}
.paid h1{font-size:34px;color:var(--ok)}
.paid-mark{width:110px;height:110px;border-radius:50%;background:var(--oks);color:var(--ok);display:grid;place-items:center;font-size:62px;font-weight:800}
.paid.expired h1{color:var(--da)}
.paid.expired .paid-mark{background:var(--das);color:var(--da)}
.pos:fullscreen .paid h1{font-size:7vh}
.pos:fullscreen .paid-mark{width:22vh;height:22vh;font-size:13vh}
.rows{display:flex;flex-direction:column;gap:8px;min-width:min(420px,100%)}
.rows div{display:flex;justify-content:space-between;gap:16px}

/* receipt */
.receipt-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.receipt-no{display:flex;flex-direction:column;align-items:flex-end}
.receipt-no b{font-size:22px}
/* «فاکتور طلا» */
.gold-lines{display:flex;flex-direction:column;gap:12px}
.gold-line .row>.field:first-child{flex:1}
.gold-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.gold-table{display:flex;flex-direction:column;gap:8px;min-width:0}
.gold-table h3{margin:0}
.table.gold{font-size:13px}
.table.gold th{white-space:nowrap}
.table.gold td.num{white-space:nowrap}
.gold-totals .kv b{font-size:17px}
.gold-pay{display:flex;gap:16px;align-items:flex-start}
.gold-qr{display:flex;flex-direction:column;align-items:center;gap:4px}
.gold-qr svg{width:120px;height:120px}
.summary .gold-preview .table.gold{font-size:12px}

/* products */
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.photo{margin:0;position:relative;border-radius:12px;overflow:hidden;border:1px solid var(--ln);aspect-ratio:1}
.photo img{width:100%;height:100%;object-fit:cover;display:block}
.photo .icon-btn{position:absolute;top:6px;left:6px;background:rgb(0 0 0/.55);color:#fff;border:0}
.warn-card{border-color:var(--wa)}
.problems{margin:0;padding:0 1.2rem 0 0;display:flex;flex-direction:column;gap:4px}

/* products tabs, availability */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--ln)}
.tab{padding:8px 14px;color:var(--mu);border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:600}
.tab:hover{color:var(--tx);text-decoration:none}
.tab.on{color:var(--tx);border-bottom-color:var(--ac)}
.avail{font:inherit;font-size:12px;font-weight:700;border-radius:999px;padding:3px 12px;cursor:pointer;border:1px solid transparent;white-space:nowrap}
.avail.ok{background:var(--oks);color:var(--ok);border-color:color-mix(in srgb,var(--ok) 40%,transparent)}
.avail.da{background:var(--das);color:var(--da);border-color:color-mix(in srgb,var(--da) 40%,transparent)}
.avail:hover{filter:brightness(1.12)}
.avail:disabled{opacity:.5;cursor:wait}
.table tr.off td .avail{opacity:1}

/* menu builder («منوساز») */
.menu{display:flex;flex-direction:column;gap:12px}
.sec{padding:0;gap:0;transition:box-shadow .1s}
.sec.off .mlist,.sec.off .sec-title h3{opacity:.6}
.sec.other{border-style:dashed}
.sec-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--ln);flex-wrap:wrap}
.sec.other .sec-head{justify-content:space-between}
.sec-head[draggable=true]{cursor:grab}
.sec-title{display:flex;align-items:center;gap:8px;min-width:0}
.grip{color:var(--fa);font-weight:800;letter-spacing:-2px;cursor:grab;user-select:none;padding:0 2px;line-height:1}
.mlist{list-style:none;margin:0;padding:6px;display:flex;flex-direction:column;gap:2px}
.mrow{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:10px;cursor:grab;background:var(--sf)}
.mrow:hover{background:var(--sf2)}
.mrow.off .mrow-main,.mrow.off .thumb{opacity:.55}
.mrow-main{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.4}
.mrow-main b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.thumb.sm{width:34px;height:34px;border-radius:8px;flex:none}
.arrows{display:inline-flex;gap:4px}
.icon-btn.sm{width:28px;height:28px;font-size:14px}
.icon-btn:disabled{opacity:.35;cursor:default;background:transparent}
.pad-x{padding:12px 16px}
.dragging{opacity:.45}
.drop-before{box-shadow:0 -3px 0 0 var(--ac)}
.drop-after{box-shadow:0 3px 0 0 var(--ac)}
.sec.drop-before{box-shadow:0 -4px 0 0 var(--ac)}
.sec.drop-after{box-shadow:0 4px 0 0 var(--ac)}

/* store page settings */
.img-box{display:flex;gap:14px;align-items:center;border-top:1px dashed var(--ln);padding-top:12px}
.img-prev{flex:none;background:var(--sf2);display:grid;place-items:center;overflow:hidden;border:1px solid var(--ln)}
.img-prev img{width:100%;height:100%;object-fit:cover;display:block}
.img-box.logo .img-prev{width:84px;height:84px;border-radius:50%;font-size:30px;font-weight:800;color:var(--act)}
.img-box.logo .img-prev span{font-size:30px}
.img-box.cover .img-prev{width:200px;height:75px;border-radius:10px}
.img-side{display:flex;flex-direction:column;gap:4px;min-width:0}
.num-in{width:84px;text-align:center}
@media (max-width:520px){.img-box{flex-wrap:wrap}.img-box.cover .img-prev{width:100%;height:auto;aspect-ratio:8/3}}

/* table-QR sheet: A4 pages (screen: paper preview; print: one page each) */
.sheet{display:flex;flex-direction:column;align-items:center;gap:18px}
.sheet-page{width:210mm;min-height:297mm;padding:10mm;background:#fff;color:#000;box-shadow:0 4px 24px rgb(0 0 0/.3);display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:66mm;gap:3mm;align-content:start;page:tables;break-after:page}
.sheet-page:last-child{break-after:auto}
.tcard{border:1.2px dashed #777;border-radius:3mm;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1mm;padding:3mm;text-align:center;font-family:Vazirmatn,Tahoma,sans-serif;color:#000;break-inside:avoid;overflow:hidden}
.tc-store{font-size:12pt;font-weight:800;line-height:1.3;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tc-title{font-size:9.5pt;color:#333}
.tc-qr{width:38mm;line-height:0}
.tc-qr svg{width:100%;height:auto;display:block}
.tc-table{font-size:17pt;font-weight:800;line-height:1.2}
@page tables{size:A4;margin:0}

/* page mode + «اشتراک منو» */
.modes{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mode{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--ln);border-radius:12px;padding:10px 12px;cursor:pointer}
.mode.on{border-color:var(--ac);background:var(--acs)}
.mode input{margin-top:4px}
.mode>span{display:flex;flex-direction:column;line-height:1.5}
.share-card{border-color:color-mix(in srgb,var(--ac) 55%,var(--ln))}
.share-grid{display:grid;grid-template-columns:200px minmax(0,1fr);gap:18px;align-items:center}
.share-grid .qr-big{width:200px;padding:10px;align-self:start}
@media (max-width:700px){.share-grid{grid-template-columns:1fr}.share-grid .qr-big{align-self:center}.modes{grid-template-columns:1fr}}

/* «منوی QR» card (A5 / A4) */
.poster{background:#fff;color:#000;box-shadow:0 4px 24px rgb(0 0 0/.3);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;font-family:Vazirmatn,Tahoma,sans-serif;overflow:hidden}
.poster.a5{width:148mm;height:210mm;padding:12mm;gap:4mm;page:poster-a5}
.poster.a4{width:210mm;height:297mm;padding:18mm;gap:6mm;page:poster-a4}
.pz-logo{border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#f1effc;color:#4536a8;font-weight:800;border:1px solid #ddd}
.a5 .pz-logo{width:24mm;height:24mm;font-size:30pt}.a4 .pz-logo{width:34mm;height:34mm;font-size:42pt}
.pz-store{font-weight:800;line-height:1.3;max-width:100%;overflow-wrap:anywhere}
.a5 .pz-store{font-size:22pt}.a4 .pz-store{font-size:32pt}
.pz-qr{line-height:0;border:1.5px solid #000;border-radius:4mm;padding:3mm}
.pz-qr svg{width:100%;height:auto;display:block}
.a5 .pz-qr{width:92mm}.a4 .pz-qr{width:130mm}
.pz-caption{font-weight:800;line-height:1.2}
.a5 .pz-caption{font-size:24pt}.a4 .pz-caption{font-size:36pt}
.pz-hint{color:#444}.a5 .pz-hint{font-size:10pt}.a4 .pz-hint{font-size:14pt}
.pz-url{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;color:#444}
.a5 .pz-url{font-size:9pt}.a4 .pz-url{font-size:12pt}
@page poster-a5{size:A5;margin:0}
@page poster-a4{size:A4;margin:0}

/* links */
.link-card.off{opacity:.7}
.minis{display:grid;grid-template-columns:1fr 1fr 1fr 1.7fr;gap:8px}
.mini{background:var(--sf2);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column}
.qr-big{background:#fff;border-radius:16px;padding:14px;width:min(340px,100%);align-self:center;line-height:0}

/* reports */
.report-head{flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:wrap}
.custom-range{align-items:flex-end}
.date-in{width:130px;direction:ltr;text-align:center}
.notes{display:flex;flex-direction:column;gap:4px}

/* modal + toast */
dialog.modal{border:1px solid var(--ln);border-radius:16px;background:var(--sf);color:var(--tx);padding:0;width:min(480px,94vw);max-height:90vh}
dialog.modal.wide{width:min(720px,94vw)}
dialog.modal::backdrop{background:rgb(0 0 0/.55)}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--ln)}
.modal-body{padding:18px;display:flex;flex-direction:column;gap:14px}
.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--sf3);color:var(--tx);border:1px solid var(--ln);border-radius:12px;padding:10px 18px;transition:all .2s;z-index:50;max-width:90vw}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.ok{border-color:var(--ok)}.toast.da{border-color:var(--da)}

/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(1200px 600px at 80% -10%,var(--acs),transparent)}
.login-card{flex-direction:row;gap:36px;max-width:920px;width:100%;padding:34px;align-items:center}
.login-text{flex:1;display:flex;flex-direction:column;gap:14px;min-width:0}
.login-text h1{font-size:24px}
.login-qr-box{display:flex;flex-direction:column;align-items:center;gap:10px;width:320px;flex:none;text-align:center}
.login-qr{background:#fff;border-radius:18px;padding:14px;width:300px;height:300px;line-height:0;display:grid;place-items:center}
.qr-wait{color:#555;line-height:1.6;font-size:13px}
@media (max-width:820px){.login-card{flex-direction:column-reverse;padding:22px}.login-qr-box{width:100%}}

/* ------------------------------------------------------------- thermal slip (#print-root) */
/* laid out off-screen so its height can be measured; the slip route shows it as a paper preview */
#print-root{position:absolute;top:0;left:-10000px;visibility:hidden;background:#fff}
.print-bar{display:none}
html.slip-route #app{display:none}
html.slip-route,html.slip-route body{background:var(--sf2)}
html.slip-route .print-bar{display:flex;gap:10px;justify-content:center;padding:14px}
html.slip-route #print-root{position:static;visibility:visible;margin:0 auto 40px;box-shadow:0 4px 24px rgb(0 0 0/.25)}
html.slip-58 #print-root{width:58mm}
html.slip-80 #print-root{width:80mm}
.slip{margin:0 auto;padding:3mm 0 5mm;background:#fff;color:#000;font-family:Vazirmatn,Tahoma,sans-serif;direction:rtl;line-height:1.45;display:flex;flex-direction:column;gap:1.2mm}
.slip-w80{width:72mm;font-size:10.5pt}
.slip-w58{width:48mm;font-size:9pt}
.slip *{color:#000;background:transparent;box-shadow:none;text-shadow:none}
.slip p,.slip h1{margin:0}
.slip .s-store{font-size:1.45em;font-weight:800;text-align:center;line-height:1.3}
.slip .s-info{text-align:center;font-size:.86em}
.slip .s-title{text-align:center;font-weight:800;font-size:1.1em;border:1.5px solid #000;border-radius:1.5mm;padding:.4mm 0;margin:1mm 0}
.slip .s-kv,.slip .s-item,.slip .s-total{display:flex;justify-content:space-between;align-items:baseline;gap:2mm;min-width:0}
.slip .s-kv span{flex:none}
.slip .s-kv b,.slip .s-kv bdi{text-align:left;min-width:0;overflow-wrap:anywhere}
.slip .s-name{flex:1;min-width:0;overflow-wrap:anywhere}
.slip .s-qty{font-size:.9em}
.slip .s-num{flex:none;font-variant-numeric:tabular-nums}
/* numbers print heavier and a little larger: the thin «٬» / «٫» must survive a thermal head */
.slip .s-num,.slip .s-kv b,.slip .s-amt,.slip .s-total b{font-weight:800;font-size:1.06em}
.slip .s-amt{direction:ltr;unicode-bidi:isolate}
.slip .s-total{font-size:1.25em;font-weight:800}
.slip .s-total b{font-weight:800}
.slip .s-words{font-size:.86em;line-height:1.5}
.slip .s-detail{display:flex;justify-content:space-between;gap:6px;font-size:.82em;line-height:1.4;color:#000;padding-inline-start:8px}
.slip .s-crypto,.slip .s-link,.slip .s-center,.slip .s-note{text-align:center}
.slip .s-mono{font-family:ui-monospace,"SF Mono",Menlo,Consolas,"Courier New",monospace;direction:ltr;unicode-bidi:isolate;font-size:.9em}
.slip .s-link .s-mono{font-size:.78em;overflow-wrap:anywhere}
.slip .s-sep{border:0;border-top:1.2px dashed #000;margin:1mm 0;width:100%}
.slip .s-qr{align-self:center;line-height:0;padding:1mm 0}
.slip .s-qr svg{display:block;width:100%;height:auto}
.slip-w80 .s-qr-lg{width:44mm}.slip-w58 .s-qr-lg{width:38mm}
.slip-w80 .s-qr-sm{width:24mm}.slip-w58 .s-qr-sm{width:22mm}
.slip .s-paid{text-align:center;font-size:1.35em;font-weight:800;border-block:1.5px solid #000;padding:.6mm 0}
.slip .s-note{font-weight:700;font-size:.95em}

/* named pages: the paper width; the height is set to the slip's own through the CSSOM (slip-view.js) */
@page slip58{size:58mm 200mm;margin:0}
@page slip80{size:80mm 200mm;margin:0}
html.slip-58 #print-root{page:slip58}
html.slip-80 #print-root{page:slip80}

/* «پرداخت نقدی» */
.btn.cash{background:var(--ok);color:#06231a}
.cash-banner{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;border:1px solid var(--in);background:var(--ins);border-radius:12px;padding:10px 14px}
.cash-banner>b{color:var(--in)}
.cash-banner .muted{flex-basis:100%}
.cash-code .code,.rows .code{font-weight:800;font-size:20px;letter-spacing:.12em}
.cash-table{font-weight:700}
.paid.expired .cash-banner{max-width:520px;text-align:right}
.table tr.row-cash td{background:var(--ins)}
.pills{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}
.filters{align-items:center;justify-content:space-between}
.summary .modes{grid-template-columns:1fr}
.summary .small-title{font-size:13px;color:var(--mu);margin-top:4px}
.cash-opt{display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--ln);padding-top:10px}

/* ------------------------------------------------------------- print */
@page{size:A4;margin:12mm}
@media print{
  :root,[data-theme]{--bg:#fff;--sf:#fff;--sf2:#f3f3f3;--sf3:#eee;--ln:#bbb;--tx:#000;--mu:#333;--fa:#555;--act:#000;--ac:#000;color-scheme:light}
  body{background:#fff;color:#000;font-size:11pt}
  .sidebar,.topbar,.no-print,.chips,.custom-range,.toast,.print-bar,button,.btn{display:none!important}
  .layout,.main{display:block}
  .content{padding:0;max-width:none}
  .card,.stat{border:1px solid #999;box-shadow:none;break-inside:avoid}
  .table th{background:#eee}
  .stats{grid-template-columns:repeat(5,1fr)}
  .card.report-table{break-inside:auto}
  .table tr{break-inside:avoid}
  .pill{background:none!important;color:#000!important;padding:0}
  a{color:#000}
  dialog.modal{position:static;border:0;width:auto;max-height:none}
  body:has(dialog[open]) #app{display:none}
  .modal-head .icon-btn{display:none}
  html.printing-slip,html.printing-slip body{background:#fff!important}
  .tone-ok{color:#000}
  body:has(.sheet) .content>.stack{gap:0}
  .sheet{display:block}
  .sheet-page{box-shadow:none;margin:0}
  .poster{box-shadow:none;margin:0}
  html.printing-slip body>:not(#print-root){display:none!important}
  html.printing-slip #print-root{position:static;visibility:visible;margin:0;box-shadow:none;width:auto}
}
