/* Layout: right-hand sidebar on desktop, bottom tab bar on phones; olive-grove palette (leaf green, oil gold, brine) */
:root{
  --bg:#f3f4ee; --surface:#ffffff; --surface-2:#eceee3; --line:#d9dccc;
  --fg:#1f2617; --muted:#636b55; --olive:#4d6a1f; --olive-ink:#ffffff; --olive-soft:#e3ead2;
  --gold:#b88a12; --gold-soft:#f5ebcc; --good:#0b8f66; --warn:#d48806; --bad:#e5484d; --bad-soft:#fde8e8;
  --display:"Vazirmatn",Tahoma,sans-serif; --body:"Vazirmatn",Tahoma,"Segoe UI",sans-serif;
  --r:16px; --hl-a:#5f8526; --hl-b:#2b4110; --hl-ink:#f6f9ec; --shadow:0 10px 28px -20px rgb(45 60 15 / .45);
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#12150e; --surface:#1a1f14; --surface-2:#222819; --line:#323a26;
  --fg:#e8ecdc; --muted:#9aa386; --olive:#9cc15a; --olive-ink:#13170c; --olive-soft:#2a3419;
  --gold:#e0b64a; --gold-soft:#3a3018; --good:#34d399; --warn:#fbbf24; --bad:#f87171; --bad-soft:#3b1d22; --hl-a:#56791f; --hl-b:#1f2d0b; --shadow:0 10px 28px -18px rgb(0 0 0 / .7); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#12150e; --surface:#1a1f14; --surface-2:#222819; --line:#323a26;
  --fg:#e8ecdc; --muted:#9aa386; --olive:#9cc15a; --olive-ink:#13170c; --olive-soft:#2a3419;
  --gold:#e0b64a; --gold-soft:#3a3018; --good:#34d399; --warn:#fbbf24; --bad:#f87171; --bad-soft:#3b1d22; --hl-a:#56791f; --hl-b:#1f2d0b; --shadow:0 10px 28px -18px rgb(0 0 0 / .7); color-scheme:dark}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{background:var(--bg);color:var(--fg);font-family:var(--body);font-size:14px;line-height:1.7;direction:rtl}
button,input,select,textarea{font:inherit;color:inherit}
.app{display:flex;min-height:100%}
.side{width:232px;flex:none;background:#111827;color:#e5e7eb;padding:20px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:10px;padding:0 8px 18px}
.brand svg{flex:none}
.brand b{font-family:var(--display);font-weight:900;font-size:26px;color:var(--olive);line-height:1.1}
.mbrand{display:none;align-items:center;gap:10px;margin:-16px -16px 16px;padding:12px 16px;background:var(--olive);color:var(--olive-ink);position:sticky;top:env(safe-area-inset-top,0px);z-index:30;box-shadow:0 6px 18px -12px rgb(0 0 0 / .4)}
.mbrand .slogo,.mbrand svg{width:36px;height:36px}
.mbrand .ib{border:0;background:rgb(255 255 255 / .14);color:inherit;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;cursor:pointer;flex:none}
.mbrand .ib svg{width:20px;height:20px}
.mbrand .t{flex:1;min-width:0}
.mbrand .t b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mbrand b{font-family:var(--display);font-weight:800;font-size:18px;color:inherit}
.mbrand small{display:block;opacity:.8;font-size:11px;line-height:1.2}
.brand small{display:block;color:var(--muted);font-size:11px}
.nav{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;border:0;background:none;cursor:pointer;text-align:right;color:var(--muted);font-weight:500}
.nav:hover{background:var(--surface-2);color:var(--fg)}
.side .nav{color:#9ca3af;padding:10px 12px;border-radius:10px}
.side .nav:hover{background:rgb(255 255 255 / .06);color:#fff}
.side .nav[aria-current="page"]{background:var(--olive);color:var(--olive-ink)}
.side .brand b{color:#fff}
.side .brand small,.side .powered{color:#9ca3af}
.side .powered b{color:#fff}
.nav[aria-current="page"]{background:var(--olive-soft);color:var(--olive);font-weight:700}
.nav svg{width:18px;height:18px;flex:none}
.side .foot{margin-top:auto;font-size:12px;color:var(--muted);padding:8px}
main{flex:1;min-width:0;padding-block:24px 96px;padding-inline:28px}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:20px}
h1{font-family:var(--display);font-weight:800;font-size:28px;margin:0;line-height:1.3}
h2{font-size:16px;margin:0 0 12px;font-weight:800}
.sub{color:var(--muted);font-size:13px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--surface);padding:10px 16px;min-height:42px;border-radius:12px;cursor:pointer;font-weight:500;white-space:nowrap}
.btn:hover{border-color:var(--olive)}
a.btn{text-decoration:none;color:inherit}
a.btn.pri{color:var(--olive-ink)}
textarea{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 10px;width:100%;resize:vertical}
.btn.pri{background:var(--olive);color:var(--olive-ink);border-color:var(--olive);font-weight:700}
.btn.gold{background:var(--gold);border-color:var(--gold);color:#1b1503;font-weight:700}
.btn.danger{color:var(--bad);border-color:var(--bad)}
.btn.sm{padding:4px 10px;font-size:12px;min-height:30px;border-radius:9px}
.btn.sm svg{width:15px;height:15px}
.btn svg{width:18px;height:18px;flex:none}
:focus-visible{outline:2px solid var(--olive);outline-offset:2px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--olive);box-shadow:0 0 0 3px var(--olive-soft)}
.demo{background:var(--gold-soft);border:1px dashed var(--gold);color:var(--fg);padding:8px 14px;border-radius:8px;font-size:13px;margin-bottom:18px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:space-between}
.grid{display:grid;gap:16px}
.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.kpi{position:relative;overflow:hidden;isolation:isolate;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:4px;min-width:0;box-shadow:var(--shadow)}
.kpi .h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.kpi .l{color:var(--muted);font-size:12.5px;font-weight:500}
.kpi .ic{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;flex:none;background:var(--olive-soft);color:var(--olive)}
.kpi .ic svg{width:19px;height:19px}
.kpi .ic.gold{background:var(--gold-soft);color:var(--gold)}
.kpi .ic.red{background:var(--bad-soft);color:var(--bad)}
.kpi .v{font-size:clamp(17px,4.3vw,25px);font-weight:800;font-variant-numeric:tabular-nums;line-height:1.25;overflow-wrap:anywhere;letter-spacing:-.3px}
.kpi .u{font-size:11.5px;color:var(--muted)}
.kpi.hl{background:linear-gradient(145deg,var(--hl-a),var(--hl-b));border-color:transparent;color:var(--hl-ink)}
.kpi.hl .l,.kpi.hl .u{color:var(--hl-ink);opacity:.82}
.kpi.tint-red{background:var(--bad-soft);border-color:transparent}
.kpi.tint-red .v{color:var(--bad)}
.kpi.hl .ic{background:rgb(255 255 255 / .16);color:var(--hl-ink)}
.kpi .wm{position:absolute;inset-inline-start:-14px;bottom:-22px;width:110px;height:110px;opacity:.13;z-index:-1;pointer-events:none}
.two{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);margin-top:16px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;min-width:0;box-shadow:var(--shadow)}
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
th{font-size:12px;color:var(--muted);font-weight:500;text-align:right;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
tr:last-child td{border-bottom:0}
td.n,th.n{text-align:left}
tbody tr.click{cursor:pointer}
tbody tr.click:hover{background:var(--surface-2)}
.chip{display:inline-block;font-size:11px;padding:1px 9px;border-radius:99px;font-weight:700;background:var(--surface-2);color:var(--muted)}
.chip.sale{background:var(--olive-soft);color:var(--olive)}
.chip.purchase{background:var(--gold-soft);color:var(--gold)}
.chip.return{background:var(--bad-soft);color:var(--bad)}
.chip.low{background:var(--bad-soft);color:var(--bad)}
.chip.ok{background:var(--olive-soft);color:var(--good)}
.pos{color:var(--good)} .neg{color:var(--bad)}
.tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.tabs{display:flex;background:var(--surface-2);border-radius:8px;padding:3px;gap:2px}
.tabs button{border:0;background:none;padding:5px 12px;border-radius:6px;cursor:pointer;color:var(--muted);font-weight:500}
.tabs button[aria-pressed="true"]{background:var(--surface);color:var(--fg);box-shadow:0 1px 2px rgb(0 0 0 / .08)}
input[type=search],input[type=text],input[type=password],input[type=number],input[type=tel],select,textarea{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:11px 12px;min-width:0;width:100%}
.tools input[type=search]{width:220px;max-width:100%}
.low-list li{display:flex;justify-content:space-between;gap:8px;padding:7px 0;border-bottom:1px solid var(--line)}
.low-list{list-style:none;margin:0;padding:0}
.low-list li:last-child{border-bottom:0}
.low-list li{align-items:center;flex-wrap:wrap}
.panel.alert{border-color:var(--gold);background:linear-gradient(0deg,var(--surface),var(--surface)) padding-box}
.panel.alert h2{display:flex;align-items:center;gap:8px;color:var(--gold)}
.panel.alert h2 svg{width:20px;height:20px}
.nbadge{background:var(--bad);color:#fff;border-radius:99px;font-size:10.5px;font-weight:700;padding:0 6px;margin-inline-start:auto;line-height:1.6}
.empty{color:var(--muted);text-align:center;padding:28px 8px}
.bar-l{fill:var(--muted);font-size:10px;font-family:var(--body)}
.bars rect{fill:var(--olive)} .bars rect.today{fill:var(--gold)}
.gridl{stroke:var(--line);stroke-width:1}
/* modal */
.ov{position:fixed;inset:0;background:rgb(10 12 6 / .55);display:flex;align-items:flex-start;justify-content:center;padding:24px 16px;overflow-y:auto;z-index:50}
.modal{background:var(--surface);border-radius:14px;width:100%;max-width:760px;padding:20px;border:1px solid var(--line)}
.modal.sm{max-width:440px}
.mh{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.mh h2{margin:0}
.x{border:0;background:none;font-size:22px;cursor:pointer;color:var(--muted);line-height:1}
.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.form .full{grid-column:1/-1}
.lines td{padding:5px 4px}
.lines input,.lines select{padding:8px 8px}
.lines select{min-width:170px}
.lines input{min-width:80px}
.tot{display:grid;grid-template-columns:auto auto;gap:4px 18px;justify-content:end;margin-top:12px;font-variant-numeric:tabular-nums}
.tot b{font-size:18px}
.mf{display:flex;gap:8px;justify-content:flex-start;margin-top:18px;flex-wrap:wrap}
.err{color:var(--bad);font-size:12px;min-height:1em}
.inv-head{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;border-bottom:2px solid var(--olive);padding-bottom:10px;margin-bottom:12px}
.toast{position:fixed;bottom:calc(84px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);background:var(--fg);color:var(--bg);padding:8px 18px;border-radius:99px;font-size:13px;z-index:60}
.mob-nav{display:none}
.slogo{border-radius:12px;object-fit:cover;flex:none;background:var(--surface-2)}
.powered{display:flex;align-items:center;justify-content:center;gap:6px;font-size:11.5px;color:var(--muted);padding:8px}
.powered b{font-family:var(--display);font-weight:900;font-size:14px;color:var(--olive)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.chips .chip{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;padding:3px 6px 3px 10px;background:var(--olive-soft);color:var(--olive)}
.chips .chip button{border:0;background:none;cursor:pointer;color:inherit;font-size:15px;line-height:1;padding:0 2px}
.addrow{display:flex;gap:6px;margin-top:8px}.addrow input{flex:1}
.setgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.setgrid .panel h2{margin-bottom:14px}
.logo-pick{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.steps{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.steps li{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap}
.steps .n{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--olive-soft);color:var(--olive);font-weight:800;flex:none}
.steps .done .n{background:var(--olive);color:var(--olive-ink)}
.setup{max-width:520px}
.setup .opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media (max-width:860px){.setgrid,.setup .opts{grid-template-columns:minmax(0,1fr)}}
.scan{display:flex;align-items:center;gap:8px;margin-top:14px;border:1.5px dashed var(--olive);border-radius:10px;padding:4px 10px;background:var(--olive-soft);color:var(--olive)}
.scan svg{width:20px;height:20px;flex:none}
.scan input{border:0;background:none;padding:6px 0}
.rcpt{display:flex;justify-content:center;background:var(--surface-2);border-radius:12px;padding:16px;max-height:52vh;overflow:auto}
.rcpt canvas{background:#fff;box-shadow:0 4px 18px -8px rgb(0 0 0 / .4);max-width:100%;height:auto}
.pstat{font-size:12.5px;min-height:1.4em;margin-top:8px}
.pstat.ok{color:var(--good)} .pstat.bad{color:var(--bad)}
body[data-mode="login"] .side,body[data-mode="login"] .mob-nav,body[data-mode="portal"] .side,body[data-mode="portal"] .mob-nav{display:none}
body[data-mode="login"] main,body[data-mode="portal"] main{padding-block:24px 48px}
.login{max-width:400px;margin:6vh auto 0;display:flex;flex-direction:column;gap:16px}
.login .card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:var(--shadow)}
.login .hd{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;margin-bottom:18px}
.login .hd b{font-family:var(--display);font-weight:900;font-size:30px;color:var(--olive);line-height:1.2}
.wm-lat{font:800 11px/1 var(--body);letter-spacing:.45em;color:var(--muted);margin-top:-4px;padding-inline-start:.45em}
.swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}
.sw{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;border:1.5px solid var(--line);border-radius:12px;background:var(--surface);cursor:pointer;font-size:12.5px}
.sw[aria-pressed="true"]{border-color:var(--olive);box-shadow:0 0 0 3px var(--olive-soft)}
.sw i{width:34px;height:34px;border-radius:50%;display:block;box-shadow:inset 0 0 0 2px rgb(255 255 255 / .35)}
.modes{display:flex;margin-top:14px}.modes button{flex:1}
.login .tabs{margin-bottom:16px}.login .tabs button{flex:1}
.login label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);margin-bottom:12px}
.login .btn.pri{width:100%;justify-content:center;padding:10px}
.creds{font-size:12.5px;color:var(--muted);background:var(--gold-soft);border:1px dashed var(--gold);border-radius:12px;padding:10px 14px}
.creds code{font-family:inherit;font-weight:700;color:var(--fg);direction:ltr;unicode-bidi:isolate}
.ptop{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.ptop .who{display:flex;align-items:center;gap:12px}
.ptop .who b{font-family:var(--display);font-weight:900;font-size:24px;color:var(--olive);display:block;line-height:1.2}
.chip.pending{background:var(--gold-soft);color:var(--gold)}
.chip.cleared{background:var(--olive-soft);color:var(--good)}
.chip.bounced{background:var(--bad-soft);color:var(--bad)}
tr.soon td{background:var(--gold-soft)}
.chq{display:flex;flex-direction:column;gap:0}
@media (max-width:860px){
  .side{display:none}
  .mbrand{display:flex}
  main > .top h1{font-size:22px}
  body[data-mode] .mbrand{display:none}
  .kpi{padding:14px}
  .kpi .ic{width:32px;height:32px}
  main{padding-inline:16px;padding-block:16px 100px}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .two{grid-template-columns:minmax(0,1fr)}
  .mob-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px));z-index:40;justify-content:space-around}
  .mob-nav .nav{flex:1;flex-direction:column;gap:3px;font-size:11px;padding:6px 2px;position:relative;border-radius:12px}
  .mob-nav .nav svg{width:22px;height:22px}
  .mob-nav .nav[aria-current="page"]{background:none;color:var(--olive)}
  .mob-nav .nbadge{position:absolute;top:2px;inset-inline-start:calc(50% + 6px);margin:0}
  .more-list{display:grid;gap:6px}
  .more-list .nav{padding:14px;font-size:15px;color:var(--fg);background:var(--surface-2);border-radius:12px}
  .form{grid-template-columns:minmax(0,1fr)}
  h1{font-size:24px}
}
@media (max-width:600px){.hm{display:none}.lines select{min-width:120px}.lines input{min-width:58px}.lines th:nth-child(3),.lines td:nth-child(3) input{width:100px}}
/* motion: everything below is switched off for people who ask for reduced motion */
.btn,.nav,.sw,.kpi,.panel,.tabs button,.chip,.ib{transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .2s,background-color .2s,border-color .2s,color .2s}
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn:hover{transform:translateY(-1px);box-shadow:0 6px 16px -10px rgb(0 0 0 / .35)}
.btn.pri{background:linear-gradient(180deg,color-mix(in srgb,var(--olive) 88%,#fff),var(--olive))}
.btn.pri:hover{box-shadow:0 10px 22px -10px var(--olive)}
.btn:active,.nav:active,.sw:active,.ib:active{transform:scale(.96)}
.kpi:hover{transform:translateY(-3px);box-shadow:0 18px 34px -22px rgb(0 0 0 / .45)}
.rip{position:absolute;border-radius:50%;pointer-events:none;background:currentColor;opacity:.22;transform:scale(0);animation:rip .6s ease-out forwards;z-index:-1}
@keyframes rip{to{transform:scale(1);opacity:0}}
.ov{animation:fade .2s ease-out}
.ov .modal{animation:pop .28s cubic-bezier(.2,.9,.25,1.15)}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.97)}}
@keyframes sheet{from{transform:translateY(100%)}}
@keyframes rise{from{opacity:0;transform:translateY(16px)}}
@keyframes grow{from{transform:scaleY(0)}}
@keyframes growx{from{transform:scaleX(0)}}
@keyframes toastin{from{opacity:0;transform:translate(-50%,20px) scale(.95)}}
@keyframes bump{0%{transform:scale(1)}40%{transform:scale(1.25) translateY(-2px)}100%{transform:scale(1)}}
@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--bad) 60%,transparent)}70%{box-shadow:0 0 0 7px transparent}100%{box-shadow:0 0 0 0 transparent}}
@keyframes ring{0%,100%{transform:rotate(0)}15%{transform:rotate(14deg)}30%{transform:rotate(-12deg)}45%{transform:rotate(8deg)}60%{transform:rotate(-5deg)}75%{transform:rotate(2deg)}}
body.fresh main > *{animation:rise .5s cubic-bezier(.2,.8,.2,1) both}
body.fresh main > *:nth-child(2){animation-delay:.04s} body.fresh main > *:nth-child(3){animation-delay:.08s} body.fresh main > *:nth-child(4){animation-delay:.12s}
body.fresh main > *:nth-child(5){animation-delay:.16s} body.fresh main > *:nth-child(6){animation-delay:.2s} body.fresh main > *:nth-child(n+7){animation-delay:.24s}
body.fresh main > .mbrand{animation:none}
body.fresh .kpi{animation:rise .55s cubic-bezier(.2,.8,.2,1) both}
body.fresh .kpi:nth-child(2){animation-delay:.07s} body.fresh .kpi:nth-child(3){animation-delay:.14s} body.fresh .kpi:nth-child(4){animation-delay:.21s}
body.fresh .bars rect{transform-box:fill-box;transform-origin:50% 100%;animation:grow .8s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(.25s + var(--i) * 45ms)}
body.fresh .catfill{transform-origin:100% 50%;animation:growx .9s cubic-bezier(.2,.8,.2,1) .3s both}
body.fresh .mob-nav .nav[aria-current="page"] svg,body.fresh .side .nav[aria-current="page"] svg{animation:bump .45s ease-out}
.toast{animation:toastin .35s cubic-bezier(.2,.9,.25,1.2);display:flex;align-items:center;gap:8px;box-shadow:0 14px 30px -12px rgb(0 0 0 / .45)}
.toast svg{width:18px;height:18px;color:var(--olive)}
.bell{position:relative}
.bell .dot{position:absolute;top:5px;inset-inline-end:5px;min-width:16px;height:16px;padding:0 4px;border-radius:99px;background:var(--bad);color:#fff;font-size:10px;font-weight:800;display:grid;place-items:center;line-height:1;animation:pulse 1.8s infinite}
.bell.has svg{animation:ring 1.2s ease-in-out 2;transform-origin:50% 10%}
.side .bell{margin-inline-start:auto;border:0;background:rgb(255 255 255 / .08);color:#fff;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;cursor:pointer;flex:none}
.side .bell svg{width:19px;height:19px}
.ntf{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ntf li button{width:100%;display:flex;gap:12px;align-items:flex-start;text-align:right;border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:12px;cursor:pointer;color:inherit}
.ntf li button:hover{border-color:var(--olive);transform:translateX(-2px)}
.ntf .ni{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;flex:none;background:var(--olive-soft);color:var(--olive)}
.ntf .ni svg{width:19px;height:19px}
.ntf .ni.red{background:var(--bad-soft);color:var(--bad)} .ntf .ni.gold{background:var(--gold-soft);color:var(--gold)}
.ntf b{display:block;font-size:13.5px} .ntf small{color:var(--muted);font-size:12px}
.ov .modal .ntf li{animation:rise .4s cubic-bezier(.2,.8,.2,1) both}
.ov .modal .ntf li:nth-child(2){animation-delay:.05s}.ov .modal .ntf li:nth-child(3){animation-delay:.1s}.ov .modal .ntf li:nth-child(n+4){animation-delay:.15s}
@media (max-width:860px){
  .ov{align-items:flex-end;padding:0}
  .ov .modal,.ov .modal.sm{max-width:none;border-radius:22px 22px 0 0;max-height:92vh;overflow-y:auto;padding-bottom:calc(20px + env(safe-area-inset-bottom,0px));animation:sheet .34s cubic-bezier(.2,.9,.25,1)}
  .ov .modal::before{content:"";display:block;width:42px;height:5px;border-radius:99px;background:var(--line);margin:-8px auto 12px}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* connection state pill: green = in sync, amber = sending, red = offline with queued changes */
.net{font-size:11px;font-weight:700;padding:3px 9px;border-radius:99px;white-space:nowrap;flex:none}
.net:empty{display:none}
.net.ok{background:rgb(255 255 255 / .18);color:inherit}
.net.busy{background:var(--gold-soft);color:var(--gold)}
.net.off{background:var(--bad-soft);color:var(--bad)}
.side .net{display:inline-block;margin:0 8px 6px}
.side .net.ok{background:rgb(255 255 255 / .08);color:#9ca3af}
.netrow{display:flex;justify-content:flex-end;margin-bottom:8px}
.netrow .net.ok{background:var(--olive-soft);color:var(--olive)}
.boot{display:grid;place-items:center;min-height:60vh;color:var(--muted)}
.toast.bad svg{color:var(--bad)}
label.btn input[type=file]{display:none}
