/* دفتر سرویس‌ها — clean ledger UI.
   Layout: white top bar, page title + actions, a strip of balance figures, then one card per service
   (rates table, service total, metrics row, collapsible accounts and payouts).
   Fonts are served from this server (no Google Fonts) so the site also works from Iran. */

@font-face{font-family:"Vazirmatn";src:url("fonts/Vazirmatn-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Vazirmatn";src:url("fonts/Vazirmatn-Medium.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Vazirmatn";src:url("fonts/Vazirmatn-SemiBold.woff2") format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Vazirmatn";src:url("fonts/Vazirmatn-Bold.woff2") format("woff2");font-weight:700;font-display:swap}

:root{
  --bg:#f4f6f9; --paper:#ffffff; --raise:#fafbfc; --ink:#17202b; --muted:#5d6878; --line:#e4e8ee; --line-strong:#d2d9e2;
  --petrol:#1f63c6; --petrol-soft:#ebf2fd; --on-accent:#ffffff;
  --amber:#8f5708; --amber-soft:#fdf3e2; --good:#167a4a; --good-soft:#e7f5ed; --bad:#c23a2e; --bad-soft:#fdecea;
  --shadow:0 1px 2px rgba(20,32,50,.05),0 1px 1px rgba(20,32,50,.03); --field:#8792a3;
  --f-body:"Vazirmatn",Tahoma,"Segoe UI",Arial,sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0d1218; --paper:#151c25; --raise:#18202a; --ink:#e6ebf1; --muted:#8f9bab; --line:#232d3a; --line-strong:#2e3a49;
  --petrol:#6aa8f5; --petrol-soft:#172638; --on-accent:#0d1218;
  --amber:#e4b55a; --amber-soft:#2c2414; --good:#52c48d; --good-soft:#12271d; --bad:#f2897d; --bad-soft:#331a1a;
  --shadow:0 1px 2px rgba(0,0,0,.35); --field:#5d6a7c; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0d1218; --paper:#151c25; --raise:#18202a; --ink:#e6ebf1; --muted:#8f9bab; --line:#232d3a; --line-strong:#2e3a49;
  --petrol:#6aa8f5; --petrol-soft:#172638; --on-accent:#0d1218;
  --amber:#e4b55a; --amber-soft:#2c2414; --good:#52c48d; --good-soft:#12271d; --bad:#f2897d; --bad-soft:#331a1a;
  --shadow:0 1px 2px rgba(0,0,0,.35); --field:#5d6a7c; color-scheme:dark}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:14.5px;font-weight:400;line-height:1.75;direction:rtl;
  -webkit-font-smoothing:antialiased}
.wrap{max-width:1200px;margin:0 auto;padding-left:max(18px,env(safe-area-inset-left,0px));padding-right:max(18px,env(safe-area-inset-right,0px))}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";direction:ltr;unicode-bidi:isolate;white-space:nowrap}
h1,h2,h3{font-weight:600;letter-spacing:0;text-wrap:balance}
h1{font-size:21px;margin:0}
h1.pg{font-size:21px;margin:0 0 4px}
.sub{color:var(--muted);font-size:12.5px}
a{color:var(--petrol)}
:focus-visible{outline:2px solid var(--petrol);outline-offset:2px}

/* ---------- top bar ---------- */
nav.top{position:sticky;top:0;z-index:20;background:var(--paper);border-bottom:1px solid var(--line)}
nav.top .wrap{display:flex;gap:4px 6px;align-items:center;flex-wrap:wrap;padding-block:10px}
nav.top a,nav.top button.linkbtn{color:var(--muted);text-decoration:none;font:inherit;font-size:13.5px;font-weight:500;background:none;border:0;cursor:pointer;padding:6px 10px;border-radius:8px}
nav.top a:hover,nav.top button.linkbtn:hover{color:var(--ink);background:var(--bg)}
nav.top a[aria-current="page"]{color:var(--petrol);background:var(--petrol-soft)}
nav.top .logout{color:var(--bad)}
.skip{position:absolute;inset-inline-start:12px;top:-60px;z-index:50;background:var(--petrol);color:var(--on-accent);padding:8px 14px;border-radius:8px}
.skip:focus{top:10px}
nav.top .brand{color:var(--ink);font-weight:700;font-size:15.5px;margin-left:10px;display:inline-flex;align-items:center;gap:8px}
nav.top .brand img{width:28px;height:28px;border-radius:7px;display:block}
.login-logo{display:flex;justify-content:center;margin-bottom:10px}
.login-logo img{border-radius:14px;box-shadow:0 4px 14px rgba(19,73,168,.25)}
.login h1{text-align:center}
.login > .muted{text-align:center}
nav.top .sp{flex:1}
nav.top form{display:inline}
.theme-btn{font:inherit;font-size:13px;color:var(--muted);background:var(--bg);border:1px solid var(--line-strong);border-radius:999px;padding:4px 12px;min-height:34px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.theme-btn svg{width:16px;height:16px;flex:none}
.theme-btn .i-sun{display:none}
:root[data-theme="dark"] .theme-btn .i-sun{display:block}:root[data-theme="dark"] .theme-btn .i-moon{display:none}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .theme-btn .i-sun{display:block}:root:not([data-theme="light"]) .theme-btn .i-moon{display:none}}
.theme-btn:hover{color:var(--ink)}
.page{padding-block:26px 48px}

/* ---------- buttons & forms ---------- */
.btn{font:inherit;font-size:13.5px;font-weight:500;border:1px solid transparent;border-radius:9px;padding:8px 16px;min-height:38px;touch-action:manipulation;background:var(--petrol);color:var(--on-accent);cursor:pointer;transition:filter .15s}
.btn:hover{filter:brightness(1.07)}
.btn[disabled]{opacity:.55;cursor:default}
.btn.ghost{background:var(--paper);color:var(--ink);border-color:var(--line-strong)}
.btn.ghost:hover{background:var(--bg)}
.btn.ghost.on{background:var(--amber-soft);color:var(--ink);border-color:var(--amber)}
.btn.small{padding:5px 11px;font-size:12.5px}
.btn.danger{background:var(--bad);color:#fff}
a.btn{display:inline-block;text-decoration:none;line-height:1.5}
.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
label{display:block;font-size:13px;color:var(--muted);margin:12px 0 5px}
input[type=text],input[type=password],input[type=file],select,textarea{font:inherit;font-size:14px;width:100%;max-width:440px;padding:9px 12px;min-height:42px;border:1px solid var(--field);border-radius:9px;background:var(--paper);color:var(--ink)}
input:focus,select:focus{outline:none;border-color:var(--petrol);box-shadow:0 0 0 3px var(--petrol-soft)}
.check{display:flex;gap:8px;align-items:center;color:var(--ink);margin:6px 0}
.check input{width:auto}

/* ---------- generic blocks ---------- */
.card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin-bottom:16px;box-shadow:var(--shadow)}
.card h3{margin:0 0 8px;font-size:15.5px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.cust{display:block;text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s}
.cust:hover{border-color:var(--petrol);transform:translateY(-1px)}
.cust h2,.cust h3{margin:0 0 2px;font-size:16.5px}
.cust .row{display:flex;justify-content:space-between;font-size:13.5px;color:var(--muted);padding:5px 0;border-top:1px solid var(--line)}
.cust .row:first-of-type{margin-top:10px}
.cust .row b{color:var(--ink);font-weight:600}
.flash{border-radius:10px;padding:10px 14px;margin-bottom:12px;font-size:13.5px;border:1px solid transparent}
.flash.ok{background:var(--good-soft);color:var(--good);border-color:color-mix(in srgb,var(--good) 25%,transparent)}
.flash.err{background:var(--bad-soft);color:var(--bad);border-color:color-mix(in srgb,var(--bad) 25%,transparent)}
.login{max-width:400px;margin:9vh auto 0}
.login h1{font-size:21px;margin:0 0 4px}
.muted{color:var(--muted);font-size:12.5px}
.secret{font-family:ui-monospace,Consolas,monospace;font-size:16px;letter-spacing:2px;background:var(--bg);border:1px solid var(--line);padding:8px 12px;border-radius:9px;display:inline-block;direction:ltr;user-select:all}
table.list{width:100%;border-collapse:collapse;font-size:13.5px}
table.list th,table.list td{padding:9px 12px;border-bottom:1px solid var(--line);text-align:right;vertical-align:top}
table.list th{color:var(--muted);font-weight:500;font-size:12.5px;background:var(--raise)}
.badge{display:inline-block;font-size:11.5px;font-weight:500;border-radius:999px;padding:1px 10px;background:var(--petrol-soft);color:var(--petrol)}
.badge.off{background:var(--bad-soft);color:var(--bad)}
.row-actions{display:flex;gap:6px;flex-wrap:wrap}
details.box{border:1px solid var(--line);border-radius:12px;padding:0 14px;margin:8px 0;background:var(--paper)}
details.box summary{padding:10px 0}
.ok{color:var(--good)} .ko{color:var(--bad)}
.neg{color:var(--bad)} .pos{color:var(--good)}

/* ---------- ledger page ---------- */
#dbmsg{font-size:12.5px;color:var(--muted)}
.strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;padding-block:20px 18px}
.fig{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:14px 18px;min-width:0;box-shadow:var(--shadow)}
.fig .k{font-size:12.5px;color:var(--muted)}
.fig .v{font-size:24px;font-weight:600;line-height:1.5;margin-top:2px}
.fig .c{font-size:12.5px;margin-top:2px;color:var(--muted)}
.fig .c.ok{color:var(--good)} .fig .c.ko{color:var(--bad)}
.chips{display:flex;flex-wrap:wrap;gap:6px;padding-bottom:14px}
.chip{display:inline-flex;align-items:center;gap:4px;text-decoration:none;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:4px 13px;min-height:32px;font-size:13px;font-weight:500}
.chip:hover{border-color:var(--petrol)}
.chip.p{background:var(--amber-soft);border-color:color-mix(in srgb,var(--amber) 45%,transparent)}
.chip.open{border-color:var(--petrol);color:var(--petrol)}
.legend{display:flex;gap:18px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);padding-bottom:16px}
.sw{display:inline-block;width:12px;height:12px;border-radius:4px;vertical-align:-2px;margin-left:6px;border:1px solid var(--line)}
section.svc{background:var(--paper);border:1px solid var(--line);border-radius:16px;margin-bottom:18px;overflow:hidden;scroll-margin-top:80px;box-shadow:var(--shadow)}
.svc-h{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:14px 20px;border-bottom:1px solid var(--line)}
.svc-h h2{margin:0;font-size:17px;font-weight:600}
.pill{font-size:12px;font-weight:500;border-radius:999px;padding:2px 11px;background:var(--petrol-soft);color:var(--petrol)}
.pill.wait{background:var(--amber-soft);color:var(--amber)}
.pill.none{background:var(--bg);color:var(--muted)}
.pill.over{background:var(--bad-soft);color:var(--bad)}
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{padding:9px 20px 9px 12px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}
th{font-size:12px;color:var(--muted);font-weight:500;background:var(--raise)}
td.n,th.n{text-align:left}
td .num,td.num{font-weight:500}
tbody tr:hover td{background:var(--raise)}
tr.pend td{background:var(--amber-soft)}
tr.pend td:first-child{box-shadow:inset -3px 0 0 var(--amber)}
tr.edit td{background:var(--good-soft)}
tr.edit td:first-child{box-shadow:inset -3px 0 0 var(--good)}
tr.tot td{background:var(--petrol-soft);font-weight:600;border-bottom:0}
tr.tot.over td{background:var(--bad-soft);color:var(--bad)}
tr.subt td{font-weight:600;border-bottom:1px solid var(--line-strong)}
tr.split td{background:var(--bad-soft)}
.tag{font-size:11.5px;font-weight:600;color:var(--amber)}
.tag.ok{color:var(--good)} .tag.bad{color:var(--bad)}
.mets{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;background:var(--line);border-top:1px solid var(--line)}
.met{background:var(--paper);padding:12px 20px;min-width:0}
.met .k{font-size:12px;color:var(--muted)}
.met .v{font-size:16px;font-weight:600}
.met .x{font-size:12px;color:var(--muted)}
details{border-top:1px solid var(--line)}
summary{cursor:pointer;padding:11px 20px;font-size:13.5px;font-weight:500;color:var(--petrol);list-style-position:inside}
summary:hover{background:var(--raise)}
details .tw{max-height:440px;overflow:auto}
details .tw thead th{position:sticky;top:0;z-index:1}
td.desc{white-space:normal;min-width:280px;color:var(--muted);font-size:12.5px;line-height:1.6}
td.ib{font-size:12px;color:var(--muted)}
.seg{display:inline-flex;margin:2px 20px 12px;border:1px solid var(--line-strong);border-radius:9px;overflow:hidden}
.seg button{font:inherit;font-size:12.5px;border:0;background:var(--paper);color:var(--muted);padding:5px 15px;cursor:pointer}
.seg button.on{background:var(--petrol);color:var(--on-accent);font-weight:500}
.notes{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:8px 22px 14px;margin:24px 0 18px;box-shadow:var(--shadow)}
.notes h3{font-size:15.5px;margin:12px 0 8px}
.notes li{margin-bottom:8px;max-width:85ch;color:var(--ink)}
.editbar{margin-top:16px;background:var(--amber-soft);border:1px solid color-mix(in srgb,var(--amber) 40%,transparent);border-radius:12px;padding:12px 16px;font-size:13.5px}
.sel{width:auto;max-width:68px;min-width:54px;font:inherit;font-size:13px;padding:3px 8px;min-height:30px;border:1px solid var(--field);border-radius:7px;background:var(--paper);color:var(--ink)}
.mini{font:inherit;font-size:12px;font-weight:500;border:0;border-radius:7px;padding:3px 10px;min-height:28px;background:var(--good);color:var(--on-accent);cursor:pointer}
.mini.ghost{background:transparent;color:var(--muted);border:1px solid var(--line-strong)}
#editlog{margin-top:8px}
.loghead{font-weight:600;font-size:13px;margin-top:6px}
#editlog ul{margin:4px 0 0;padding-right:18px;max-height:200px;overflow:auto}
#editlog li{font-size:13px;margin-bottom:3px}

@media (max-width:640px){
  body{font-size:14px}
  input[type=text],input[type=password],select{font-size:16px}
  .strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .fig{padding:12px 14px}
  .fig .v{font-size:18px;overflow-wrap:anywhere}
  th,td{padding:8px 12px 8px 10px}
  .svc-h,.met{padding-inline:14px}
  summary{padding-inline:14px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* bigger targets on touch screens */
@media (pointer:coarse){
  .chip{min-height:40px}
  .mini,.sel{min-height:40px}
  nav.top a,nav.top button.linkbtn{padding:10px 12px}
  .seg button{min-height:40px}
}
.pw-wrap{position:relative;max-width:440px}
.pw-wrap input{padding-right:46px}
.pw-wrap .pw-toggle{position:absolute;right:5px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;color:var(--muted);background:none;border:0;border-radius:8px;padding:0;cursor:pointer}
.pw-wrap .pw-toggle:hover{color:var(--petrol);background:var(--petrol-soft)}

/* ---------- review mode: tables fit the card, descriptions wrap ---------- */
.editing td.desc{min-width:0;width:40%;white-space:normal;overflow-wrap:anywhere}
.editing td.ib{white-space:normal;overflow-wrap:anywhere;min-width:120px}
.editing th,.editing td{padding-inline:8px}
.editing td:last-child{white-space:nowrap}
td.desc{overflow-wrap:anywhere}

/* ---------- customer note ---------- */
.cnote{display:inline-flex;align-items:center;gap:6px;margin-top:4px;font-size:13px;color:var(--ink);background:var(--raise);border:1px dashed var(--line-strong);border-radius:8px;padding:2px 10px;min-height:28px;max-width:100%}
.cnote.empty{color:var(--muted)}
.cnote[data-editable]{cursor:text}
.cnote[data-editable]:hover{border-color:var(--petrol)}
.cnote input{font:inherit;font-size:13px;border:0;background:transparent;color:var(--ink);min-width:240px;padding:0;outline:none}
.cust .cnote{display:flex;margin:6px 0 0}

/* ---------- duplicate rates ---------- */
tr.dupbad td{background:var(--bad-soft)}
tr.dupbad td:first-child{box-shadow:inset -3px 0 0 var(--bad)}
.dupbtns{display:inline-flex;gap:4px;margin-inline-start:6px;vertical-align:middle}
.mini.warn{background:var(--bad);color:#fff}
.tag.src{color:var(--muted);font-weight:500}

/* ---------- upload ---------- */
.filelist{list-style:none;padding:0;margin:10px 0 0;max-width:640px}
.filelist li{display:block;padding:7px 12px;border:1px solid var(--line);border-radius:9px;margin-bottom:6px;background:var(--raise);font-size:13px}
.filelist li .muted{white-space:nowrap}
.filelist li.bad{border-color:var(--bad);background:var(--bad-soft)}
.pv{border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:10px;background:var(--paper)}
.pv.err{border-color:var(--bad);background:var(--bad-soft)}
.pv.warn{border-color:var(--amber);background:var(--amber-soft)}
.pv h3{margin:0 0 4px;font-size:14.5px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pv ul{margin:4px 0 0;padding-right:18px;font-size:13px}
.pv li.e{color:var(--bad)} .pv li.w{color:var(--amber);font-weight:500}

/* ---------- senders checklist ---------- */
.senders{list-style:none;padding:0;margin:6px 0;max-width:560px}
.senders li{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.senders li input{width:auto;min-height:0}
.senders .muted{margin-inline-start:auto}

/* ---------- guide ---------- */
.guide{max-width:900px}
.guide .toc{columns:2;font-size:13.5px;padding-right:18px}
.guide h2{font-size:18px;margin:28px 0 8px;scroll-margin-top:80px}
.guide h3{font-size:15px;margin:18px 0 6px}
.guide p,.guide li{max-width:80ch}
.guide li{margin-bottom:5px}
.guide dl{display:grid;grid-template-columns:minmax(150px,auto) 1fr;gap:6px 16px;margin:8px 0}
.guide dt{font-weight:600}
.guide dd{margin:0;color:var(--ink)}
.guide .tip{background:var(--petrol-soft);border-radius:10px;padding:10px 14px;margin:10px 0}
.guide .warnbox{background:var(--amber-soft);border-radius:10px;padding:10px 14px;margin:10px 0}
.guide table.list td{white-space:normal}
@media (max-width:640px){.guide .toc{columns:1}.guide dl{grid-template-columns:1fr}.guide dd{margin-bottom:8px}}
.cnote:empty{display:none}

/* ---------- WhatsApp vs Hamyar rate check ---------- */
section.checks.has{border-color:color-mix(in srgb,var(--bad) 35%,var(--line))}
section.checks td{white-space:normal;vertical-align:top}
section.checks td:first-child{width:28%}
section.checks .wtxt{white-space:pre-line;unicode-bidi:plaintext;text-align:start;font-size:12px;margin-top:2px;max-width:40ch}
section.checks hr{border:0;border-top:1px dashed var(--line-strong);margin:6px 0}
section.checks td:last-child{white-space:nowrap;width:1%}

/* ---------- upload progress bar ---------- */
.prog{margin:4px 0 2px;max-width:640px}
.prog .bar{height:5px;border-radius:999px;background:var(--line);overflow:hidden;position:relative}
.prog .bar i{display:block;height:100%;width:2%;border-radius:inherit;background:linear-gradient(90deg,var(--petrol),#3fa0f0);transition:width .3s ease}
.prog.busy .bar i{width:35%!important;position:absolute;animation:prog-slide 1.3s ease-in-out infinite}
@keyframes prog-slide{0%{right:-35%}100%{right:100%}}
.prog .ptxt{font-size:12.5px;color:var(--muted);margin-top:6px;font-variant-numeric:tabular-nums}
@media (prefers-reduced-motion:reduce){.prog.busy .bar i{animation:none;width:100%!important;opacity:.5}}

/* ---------- «درباره» window ---------- */
.info-btn{font:inherit;font-size:15px;line-height:1;color:var(--muted);background:none;border:0;border-radius:999px;width:30px;height:30px;cursor:pointer;margin-inline-start:-6px;margin-inline-end:6px}
.info-btn:hover{color:var(--petrol);background:var(--petrol-soft)}
dialog.about{border:0;border-radius:16px;padding:28px 28px 0;width:min(360px,calc(100vw - 32px));background:var(--paper);color:var(--ink);text-align:center;box-shadow:0 20px 60px rgba(10,20,40,.3)}
dialog.about::backdrop{background:rgba(10,18,30,.45)}
dialog.about img{border-radius:14px;display:block;margin:0 auto 10px}
dialog.about h2{font-size:18px;margin:0}
dialog.about p{margin:10px 0 14px;color:var(--muted)}
dialog.about .tg{display:inline-flex;align-items:center;gap:8px;background:var(--bg);color:var(--petrol);font-weight:600;font-size:13.5px;text-decoration:none;border-radius:10px;padding:9px 18px}
dialog.about .tg:hover{background:var(--petrol-soft)}
dialog.about form{border-top:1px solid var(--line);margin:22px -28px 0;padding:14px 28px}
dialog.about form .btn{width:100%}
.textlink{font:inherit;color:var(--petrol);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline}

/* ---------- whose photos to read (upload page) ---------- */
.filelist .frow{display:flex;justify-content:space-between;gap:10px;align-items:center}
.filelist .fact{display:inline-flex;gap:8px;align-items:center}
.picker{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-strong)}
.picker .ph{font-weight:600;font-size:13px}
.picker .senders li{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:center;padding:8px 0}
.picker .senders li .check{margin:0;grid-column:1}
.picker .senders li > .muted{grid-column:2;justify-self:start;margin:0}
.picker .sample{grid-column:1 / -1;font-size:12px;color:var(--muted);unicode-bidi:plaintext;overflow-wrap:anywhere}
.picker .thumbs{grid-column:1 / -1;display:flex;gap:6px;flex-wrap:wrap}
.picker .thumbs img{width:56px;height:56px;object-fit:cover;border-radius:6px;border:1px solid var(--line);background:var(--bg)}
.filelist .picker .muted{white-space:normal}
.picker .pname{font-weight:700}

table.members input[type=text]{min-height:34px;padding:4px 10px;max-width:220px}
table.members input[type=checkbox]{width:18px;height:18px}
table.members td{vertical-align:middle;white-space:normal}

/* ---------- upload history: incomplete / failed rows ---------- */
.flash.warn{background:var(--amber-soft);color:var(--ink);border-color:color-mix(in srgb,var(--amber) 45%,transparent)}
.flash.warn b{color:var(--amber)}
.badge.warn{background:var(--amber-soft);color:var(--amber)}
table.list tr.up-partial td{background:var(--amber-soft)}
table.list tr.up-partial td:first-child{box-shadow:inset -3px 0 0 var(--amber)}
table.list tr.up-error td{background:var(--bad-soft)}
table.list tr.up-error td:first-child{box-shadow:inset -3px 0 0 var(--bad)}

.tw.bars{border-top:1px solid var(--line)}
.tw.bars th{background:var(--raise)}
