/* Palette B "Reef Navy": navy neutrals, coral accent (nudged to orange); warning red nudged to crimson. */
:root{
  --bg:#f2f4f8; --surface:#ffffff; --ink:#14213d; --muted:#5a6680; --line:#d7dce6;
  --accent:#bd4428; --accent-soft:#fbe7e1; --chip:#eceff5;
  --good:#1f7a3f; --good-soft:#e2f3e7; --sib:#2456a6; --sib-soft:#e3ecfb; --warn:#a15c00; --warn-soft:#fbefd9; --bad:#a8173a; --bad-soft:#fbe3e8;
  --display:"Bricolage Grotesque","Segoe UI",system-ui,sans-serif;
  --body:"Instrument Sans","Segoe UI",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,Consolas,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0b1222; --surface:#121b30; --ink:#e4e9f3; --muted:#98a3ba; --line:#24304a;
  --accent:#ff8f6b; --accent-soft:#3a2219; --chip:#1a2540;
  --good:#6fd08f; --good-soft:#163323; --sib:#8db4ff; --sib-soft:#17264a; --warn:#f0b65a; --warn-soft:#3a2a12; --bad:#ff7d96; --bad-soft:#3d1622; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0b1222; --surface:#121b30; --ink:#e4e9f3; --muted:#98a3ba; --line:#24304a;
  --accent:#ff8f6b; --accent-soft:#3a2219; --chip:#1a2540;
  --good:#6fd08f; --good-soft:#163323; --sib:#8db4ff; --sib-soft:#17264a; --warn:#f0b65a; --warn-soft:#3a2a12; --bad:#ff7d96; --bad-soft:#3d1622; color-scheme:dark}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:14px;line-height:1.5;padding-inline:16px;padding-block:16px 48px;padding-top:max(16px, env(safe-area-inset-top))}
.wrap{max-width:1240px;margin:0 auto;display:grid;gap:14px}
h1,h2,h3{font-family:var(--display);margin:0;text-wrap:balance;letter-spacing:-.01em}
h1{font-size:1.45rem} h2{font-size:1.08rem} h3{font-size:.95rem}
p{margin:0}
.muted{color:var(--muted)} .note{font-size:.78rem;color:var(--muted)}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
header.top{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}
.ask{display:flex;gap:6px;flex:1 1 320px;max-width:560px;min-width:0}
.ask input{flex:1;min-width:0;font-size:.92rem;padding:7px 12px;border-radius:999px;background:var(--surface)}
.usermenu{position:relative}
.menu{position:absolute;right:0;top:calc(100% + 4px);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:4px;z-index:30;min-width:140px;box-shadow:0 6px 20px rgba(0,0,0,.12)}
.menu button{display:block;width:100%;text-align:left;font:inherit;border:0;background:transparent;color:var(--ink);padding:7px 10px;border-radius:6px;cursor:pointer}
.menu button:hover{background:var(--chip)}
.brand{display:grid;gap:2px;min-width:0}
#status{font-size:.8rem}
.topright{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:var(--surface)}
.seg button{font:inherit;font-size:.76rem;font-weight:600;border:0;background:transparent;color:var(--muted);padding:5px 11px;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--surface)}
nav.roles{display:flex;flex-wrap:wrap;gap:6px;position:sticky;top:env(safe-area-inset-top, 0px);z-index:20;background:var(--bg);padding-block:6px}
nav.roles button{font:inherit;font-weight:600;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 13px;cursor:pointer}
nav.roles button[aria-selected="true"]{background:var(--accent);border-color:var(--accent);color:var(--surface)}
button:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.btn{font:inherit;font-size:.82rem;font-weight:600;border:1px solid var(--line);background:var(--chip);color:var(--ink);border-radius:999px;padding:6px 13px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--surface)}
.btn.ghost{background:var(--surface)}
.btn.small{font-size:.72rem;padding:3px 9px}
.btn[disabled]{opacity:.5;cursor:default}
.controls{display:flex;flex-wrap:wrap;gap:8px;align-items:end;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.controls label,.form label{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:grid;gap:2px}
select,input,textarea{font:inherit;font-size:.88rem;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:5px 8px;min-width:0}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips button{font:inherit;font-size:.8rem;border:1px solid var(--line);background:var(--chip);color:var(--ink);border-radius:999px;padding:5px 11px;cursor:pointer}
.chips button[aria-pressed="true"]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:8px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 10px;display:grid;gap:1px;align-content:start;min-width:0}
.kpi .label{font-size:.63rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .val{font-family:var(--display);font-size:1.12rem;font-variant-numeric:tabular-nums;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kpi .sub{font-size:.68rem;color:var(--muted);line-height:1.3}
.kpi .delta{font-size:.66rem;font-family:var(--mono)}
.kpi .delta.up{color:var(--good)} .kpi .delta.down{color:var(--bad)}
.kpi.bad{border-color:var(--bad)} .kpi.bad .val{color:var(--bad)}
.kpi.warn .val{color:var(--warn)}
.spark{display:block;width:100%;height:20px;margin-top:2px}
.grid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,460px),1fr));gap:14px}
.chartbox{max-width:760px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:grid;gap:8px;min-width:0}
.panel-head{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:baseline}
.exp{display:inline-flex;gap:4px;margin-left:auto}
.tools{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tools input{font-size:.8rem;padding:3px 8px;width:160px}
.tablebox{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{border-collapse:collapse;width:100%;font-size:.84rem}
th{font-size:.66rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);text-align:left;font-weight:600;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap;cursor:pointer;user-select:none;background:var(--surface);position:sticky;top:0}
th.sorted::after{content:" ▾"} th.sorted.asc::after{content:" ▴"}
td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}
td.r,th.r{text-align:right}
td.r{white-space:nowrap}      /* v1.80.0 numbers never wrap */
.tablebox td:first-child{min-width:150px}
td.num{white-space:nowrap}
tr:last-child td{border-bottom:0}
tbody tr.click{cursor:pointer} tbody tr.click:hover td{background:var(--chip)}
.pill{display:inline-block;font-size:.7rem;font-weight:600;border-radius:999px;padding:1px 8px;white-space:nowrap;background:var(--chip);color:var(--muted)}
.p-bad{background:var(--bad-soft);color:var(--bad)} .p-warn{background:var(--warn-soft);color:var(--warn)} .p-good{background:var(--good-soft);color:var(--good)} .p-info{background:var(--accent-soft);color:var(--accent)} .p-ex{background:var(--chip);color:var(--muted)}
.alerts{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.alerts li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;padding:6px 0;border-bottom:1px solid var(--line)}
.alerts li:last-child{border-bottom:0}
.chartbox{position:relative}
.chartbox svg{width:100%;height:auto;display:block}
.tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--surface);font-size:.72rem;font-family:var(--mono);padding:3px 7px;border-radius:5px;white-space:nowrap;transform:translate(-50%,-120%)}
.search{display:flex;gap:8px;flex-wrap:wrap}
.search input{flex:1;font-size:1.05rem;padding:9px 12px;min-width:200px}
.answer{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px}
.answer .box{border:1px solid var(--line);border-radius:10px;padding:10px;display:grid;gap:3px;align-content:start}
.big{font-family:var(--display);font-size:1.5rem;line-height:1.15}
.verdict{border-radius:10px;padding:10px 12px;font-weight:600}
.verdict.good{background:var(--good-soft);color:var(--good)} .verdict.warn{background:var(--warn-soft);color:var(--warn)} .verdict.bad{background:var(--bad-soft);color:var(--bad)}
.form{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;align-items:end}
.drop{border:2px dashed var(--line);border-radius:12px;padding:18px;text-align:center;color:var(--muted)}
.drop.over{border-color:var(--accent);color:var(--ink)}
.log{font-family:var(--mono);font-size:.75rem;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px;max-height:220px;overflow:auto;white-space:pre-wrap}
.banner{font-size:.82rem;background:var(--warn-soft);color:var(--warn);border-radius:8px;padding:8px 12px}
.err{color:var(--bad);font-size:.85rem}
.skeleton{height:120px;border-radius:12px;background:linear-gradient(90deg,var(--chip),var(--surface),var(--chip));background-size:200% 100%;animation:sk 1.2s linear infinite}
@keyframes sk{to{background-position:-200% 0}}
.toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom, 0px));transform:translateX(-50%);background:var(--ink);color:var(--surface);font-size:.84rem;padding:8px 14px;border-radius:999px;z-index:40;max-width:calc(100% - 32px)}
.overlay{position:fixed;inset:0;background:rgba(11,18,34,.55);display:grid;place-items:center;z-index:50;padding:16px}
.loginbox{width:min(360px,100%)}
.loginbox label{display:grid;gap:4px;font-size:.8rem;color:var(--muted)}
footer{font-size:.76rem}
main.screen{display:grid;gap:14px;min-width:0}
/* v1.1: filter bar, chips, margin chips, drawer, pivot, back-office */
.filterbar{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 10px;display:grid;gap:6px}
.frow{display:flex;flex-wrap:wrap;gap:6px;align-items:end}
.frow label{font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:grid;gap:2px}
.frow select,.frow input{font-size:.82rem;padding:4px 6px;max-width:190px}
.fchips{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.fchip{display:inline-flex;align-items:center;gap:4px;font-size:.74rem;background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:2px 4px 2px 9px}
.fchip button{font:inherit;border:0;background:transparent;color:inherit;cursor:pointer;padding:0 5px;font-size:.9rem;line-height:1}
.linkbtn{font:inherit;font-size:.74rem;border:0;background:transparent;color:var(--muted);text-decoration:underline;cursor:pointer;padding:2px 4px}
.mchip{display:inline-block;font-family:var(--mono);font-size:.68rem;font-weight:500;border-radius:999px;padding:0 6px;margin-left:5px;vertical-align:1px;background:var(--chip);color:var(--muted)}
.mchip.good{background:var(--good-soft);color:var(--good)} .mchip.warn{background:var(--warn-soft);color:var(--warn)} .mchip.bad{background:var(--bad-soft);color:var(--bad)}
.kpi .mchip{margin-left:0;justify-self:start}
.kpi.click{cursor:pointer} .kpi.click:hover{border-color:var(--accent)}
.split{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:14px}
.insights{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.insights li{display:grid;grid-template-columns:8px minmax(0,1fr);gap:9px;align-items:start;font-size:.86rem}
.insights li::before{content:"";width:8px;height:8px;border-radius:50%;margin-top:6px;background:var(--muted)}
.insights li.good::before{background:var(--good)} .insights li.bad::before{background:var(--bad)} .insights li.warn::before{background:var(--warn)}
.score td,.score th{padding:5px 6px}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(620px,100%);background:var(--bg);border-left:1px solid var(--line);z-index:46;overflow:auto;padding:14px 16px 40px;display:grid;gap:10px;align-content:start;box-shadow:-10px 0 30px rgba(0,0,0,.15);overflow-x:hidden}
.drawer > *, .p360, .p360 > *, #drawerBody{min-width:0}
.p360 .chartbox svg,.p360 svg{max-width:100%}
.drawer-head{display:flex;justify-content:space-between;align-items:center;gap:8px;position:sticky;top:-14px;background:var(--bg);padding:6px 0;z-index:2}
.scrim{position:fixed;inset:0;background:rgba(11,18,34,.35);z-index:45}
.p360 .facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(130px,46%),1fr));gap:6px}
.p360 .fact{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:7px 9px;display:grid;gap:1px}
.p360 .fact .k{font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.p360 .fact > .mchip,.p360 .fact > .pill{justify-self:start;margin-left:0}
.p360 .fact .v{font-family:var(--display);font-size:1.05rem}
.reading{font-size:.84rem;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:7px 10px}
.pivot td.heat{position:relative}
.pivot .lab{max-width:280px}
.pivot tfoot td{font-weight:600;border-top:1px solid var(--line)}
.qtabs{display:flex;flex-wrap:wrap;gap:6px}
.inline{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.inline input,.inline select{font-size:.8rem;padding:3px 6px}
.acts{display:flex;gap:4px;flex-wrap:nowrap;justify-content:flex-end;white-space:nowrap}
td .note{display:inline}
[data-table^=q_] td{max-width:260px}
.gridtbl td,.gridtbl th{text-align:center}
.gridtbl td:first-child,.gridtbl th:first-child{text-align:left}
.kpis.small{grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}
.kpis.small .kpi .val{font-size:.98rem}
.recent{font-size:.78rem;color:var(--muted);display:grid;gap:3px;margin:0;padding:0;list-style:none}
.sub-tabs{display:flex;flex-wrap:wrap;gap:6px}
.hint{font-size:.78rem;color:var(--muted)}
tr.editrow td{background:var(--chip)}
.checks{display:flex;flex-wrap:wrap;gap:8px}
.checks label{display:flex;gap:4px;align-items:center;font-size:.8rem;text-transform:none;letter-spacing:0;color:var(--ink)}
@media (max-width:720px){
  .ask{order:3;flex-basis:100%;max-width:none}
  .drawer{padding:10px 12px 90px}
  .frow select,.frow input{max-width:150px}
  body{padding-block:12px 100px}
  nav.roles{position:fixed;top:auto;left:0;right:0;bottom:0;flex-wrap:nowrap;overflow-x:auto;gap:4px;padding:8px 10px calc(8px + env(safe-area-inset-bottom, 0px));background:var(--surface);border-top:1px solid var(--line);scrollbar-width:none}
  nav.roles button{flex:0 0 auto;font-size:.78rem;padding:7px 12px}
  nav.roles{overflow:visible}
  .moremenu{top:auto;bottom:calc(100% + 6px);left:auto;right:0}
  .tools input{width:120px}
  .kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .kpi{padding:6px 8px}
  .kpi .val{font-size:1rem}
  .kpi .sub,.kpi .delta{font-size:.62rem}
}

/* v1.3: badges, compact tiles, attention list, sheet, phone cards */
.bdg{display:inline-block;font-size:.62rem;font-weight:600;letter-spacing:.02em;border-radius:4px;padding:0 5px;margin-left:4px;vertical-align:1px;white-space:nowrap;background:var(--chip);color:var(--muted)}
.bdg.own{background:var(--good-soft);color:var(--good)} .bdg.risk{background:var(--bad-soft);color:var(--bad)} .bdg.good{background:var(--good-soft);color:var(--good)}
.bdg.info{background:var(--accent-soft);color:var(--accent)} .bdg.dim{background:var(--chip);color:var(--muted)}
.s{display:block;font-size:.72rem;color:var(--muted);line-height:1.3}
.s.bad,.badtxt{color:var(--bad)}
.warnnote{background:var(--warn-soft);color:var(--warn);border-radius:8px;padding:6px 10px}
.sortsel{display:none;font-size:.8rem;padding:3px 6px}
.home2{grid-template-columns:repeat(auto-fit,minmax(min(100%,520px),1fr));align-items:start}
.key{display:inline-block;width:10px;height:8px;margin:0 3px 0 8px;vertical-align:0}
.key.bar{background:var(--accent);border-radius:2px} .key.ln{height:2px;background:var(--ink);vertical-align:3px}
.attn{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.attn button{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;font:inherit;font-size:.86rem;text-align:left;
  background:transparent;color:var(--ink);border:0;border-bottom:1px solid var(--line);padding:7px 2px;cursor:pointer}
.attn li:last-child button{border-bottom:0}
.attn button:hover{background:var(--chip)} .attn button[disabled]{cursor:default}
.attn .go{color:var(--muted);font-size:1.1rem}
.vpick{padding:8px 12px}
.vpick select{max-width:min(420px,100%)}
.p360{display:grid;gap:10px}
.ptiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:5px}
.ptiles .t{background:var(--surface);border:1px solid var(--line);border-radius:7px;padding:5px 7px;display:grid;gap:0;min-width:0}
.ptiles .k{font-size:.58rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.ptiles .v{font-family:var(--display);font-size:.95rem;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ptiles .mchip{margin-left:0;justify-self:start}
.mini{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:6px 8px}
.mini .chartbox{max-width:520px}
table.compact td,table.compact th{padding:4px 6px}
.kinds{margin:0;padding-left:18px;font-size:.8rem;color:var(--muted);display:grid;gap:2px}
.kinds b{color:var(--ink);font-weight:600}
.upres{display:grid;gap:6px}
.upok{display:grid;gap:2px;font-size:.82rem;background:var(--good-soft);border-radius:8px;padding:6px 10px}
.upok span{color:var(--muted)}
.upok.wait{background:var(--accent-soft)}
details.adv summary{cursor:pointer;font-family:var(--display);font-weight:600}
.menu .seg{margin:4px 6px 6px}
.own-name{color:var(--good);font-weight:600}
td .own-name{color:var(--good)}
.sku{font-family:var(--mono);font-size:.66rem;color:var(--muted);font-weight:400;white-space:nowrap}
.legend{font-size:.72rem;color:var(--muted)}
table.alts tr.sec td{background:var(--chip);font-weight:600;font-size:.76rem;padding:4px 6px}
.chips.small button{font-size:.7rem;padding:2px 8px}
#rxtext{width:100%;font-size:.95rem;padding:8px 10px;border-radius:8px}
.rxl{display:grid;gap:6px;margin-top:8px}
.rxi{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--surface)}
.rxi a{color:inherit;text-decoration:none}
.rxi a.own-name{color:var(--good)}

/* v1.5: data status badges, sticky filter summary */
.dstat{display:flex;flex-wrap:wrap;gap:6px;margin-top:-6px}
.dstat:empty{display:none}
.dbadge{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:2px 9px 2px 7px;white-space:nowrap}
.dbadge b{color:var(--ink);font-weight:600}
.dbadge i{width:8px;height:8px;border-radius:50%;background:var(--muted);display:inline-block}
.dbadge.good i{background:var(--good)} .dbadge.warn i{background:var(--warn)} .dbadge.bad i{background:var(--bad)} .dbadge.info i{background:var(--accent);animation:pulse 1s infinite alternate}
.dbadge.bad{border-color:var(--bad)}
@keyframes pulse{to{opacity:.3}}
.fsum{position:fixed;top:0;left:50%;transform:translateX(-50%);z-index:35;font:inherit;font-size:.8rem;background:var(--ink);color:var(--surface);border:0;border-radius:0 0 12px 12px;padding:6px 14px;cursor:pointer;max-width:calc(100% - 24px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 4px 14px rgba(0,0,0,.25)}
.fsum .fs-k{opacity:.65}
.bigstat{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}
.bigstat .bs{border:1px solid var(--line);border-left:4px solid var(--muted);border-radius:8px;padding:7px 10px;display:grid;gap:1px;background:var(--surface)}
.bigstat .bs.good{border-left-color:var(--good)} .bigstat .bs.warn{border-left-color:var(--warn)} .bigstat .bs.bad{border-left-color:var(--bad)} .bigstat .bs.info{border-left-color:var(--accent)}
.bigstat .k{font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.bigstat .v{font-weight:600}

/* v1.6 */
.panel.collapsed .tbody-wrap,.panel.collapsed .tools{display:none}
.tgl{cursor:pointer;user-select:none}
.tgl .chev{display:inline-block;font-size:.8em;color:var(--muted);transition:transform .15s}
.panel.collapsed .tgl .chev{transform:rotate(-90deg)}
.tbody-wrap{display:grid;gap:8px;min-width:0}
th{position:sticky}
th .rsz{position:absolute;top:0;right:0;width:7px;height:100%;cursor:col-resize}
th .rsz:hover{background:var(--line)}
tr.colf th{padding:3px 4px;cursor:default;text-transform:none;letter-spacing:0}
tr.colf input{width:100%;min-width:50px;font-size:.74rem;padding:2px 5px}
.colpanel{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--bg)}
.collist{list-style:none;margin:6px 0;padding:0;display:grid;gap:3px;max-height:280px;overflow:auto}
.collist li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:3px 6px;border:1px solid var(--line);border-radius:6px;background:var(--surface);font-size:.8rem;cursor:grab}
.collist li.drag{opacity:.5}
.collist label{display:flex;gap:6px;align-items:center}
.homebar{position:sticky;top:var(--navh,0px);z-index:18;background:var(--bg);padding:6px 0;display:grid;gap:6px}
.hb-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.hb-row button{font:inherit;font-size:.8rem;font-weight:600;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:5px 12px;cursor:pointer;white-space:nowrap}
.hb-row .hb-o[aria-pressed="true"]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.hb-row .hb-per{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.hb-pop{display:flex;flex-wrap:wrap;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px}
.hb-pop button{font:inherit;font-size:.78rem;border:1px solid var(--line);background:var(--chip);color:var(--ink);border-radius:999px;padding:4px 10px;cursor:pointer}
.hb-pop button[aria-pressed="true"]{background:var(--accent);color:var(--surface);border-color:var(--accent)}
.p360{gap:16px}
.psec{display:grid;gap:6px;padding-top:12px;border-top:1px solid var(--line)}
.phead{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.ptiles .t.st-good{border-color:var(--good);background:var(--good-soft)} .ptiles .t.st-good .v{color:var(--good)}
.ptiles .t.st-warn{border-color:var(--warn);background:var(--warn-soft)} .ptiles .t.st-warn .v{color:var(--warn)}
.ptiles .t.st-bad{border-color:var(--bad);background:var(--bad-soft)} .ptiles .t.st-bad .v{color:var(--bad)}
.goodtxt{color:var(--good)}
.p360 td .spark{display:inline-block;width:90px;vertical-align:middle;margin:0}
.drop.small{padding:10px;font-size:.85rem}
.rxthumb{max-height:110px;border-radius:6px;border:1px solid var(--line);margin-right:8px;vertical-align:middle}
#rxup{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* v1.6.1: More menu, compact data status, spacing */
.more{position:relative;display:inline-block}
.moreb{font:inherit;font-weight:600;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 13px;cursor:pointer}
.moreb[aria-selected="true"]{background:var(--accent);border-color:var(--accent);color:var(--surface)}
.moremenu{position:absolute;left:0;top:calc(100% + 4px);z-index:40;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:4px;min-width:170px;box-shadow:0 8px 24px rgba(0,0,0,.2);display:grid}
.moremenu button{font:inherit;text-align:left;border:0;background:transparent;color:var(--ink);padding:8px 10px;border-radius:6px;cursor:pointer}
.moremenu button:hover,.moremenu button.on{background:var(--chip)}
.dsum summary{list-style:none;cursor:pointer;display:inline-block}
.dsum summary::-webkit-details-marker{display:none}
.dlist{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
main.screen{gap:18px}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px;vertical-align:1px;background:var(--muted)}
.dot.st-good{background:var(--good)} .dot.st-bad{background:var(--bad)}
.mini-sel{font-size:.72rem;color:var(--muted);display:inline-flex;gap:4px;align-items:center}
.mini-sel select{font-size:.76rem;padding:2px 6px}
@media (max-width:720px){
  body{padding-inline:12px}
  #status{display:none}
  h1{font-size:1.2rem}
  .panel{padding:10px 10px;border-radius:10px}
  .panel-head h2{font-size:1rem}
  .tools{width:100%}
  .tools input[type=search]{flex:1;width:auto}
  .sortsel{display:inline-block}
  .hide-sm{display:none}
  .p360 table.compact{font-size:.8rem}
  [data-table] > .note{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer}
  [data-table] > .note.open{display:block}
  .tools .btn.small{padding:3px 7px}
  .fsum{top:auto;bottom:calc(58px + env(safe-area-inset-bottom, 0px));border-radius:999px}
  .hb-row{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  th .rsz{display:none}
  [data-table] tr.colf{display:none}
  .dstat{margin-top:0;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
  /* tables become cards: first cell is the title, the rest label: value */
  [data-table] .tablebox{overflow:visible}
  [data-table] table, [data-table] tbody{display:block}
  [data-table] thead{display:none}
  [data-table] tbody tr{display:grid;grid-template-columns:1fr 1fr;gap:2px 12px;padding:8px 2px;border-bottom:1px solid var(--line)}
  [data-table] tbody tr:last-child{border-bottom:0}
  [data-table] td{display:flex;justify-content:space-between;gap:6px;border:0;padding:1px 0;min-width:0;font-size:.82rem;text-align:right}
  [data-table] td::before{content:attr(data-label);color:var(--muted);font-size:.68rem;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--body)}
  [data-table] td:first-child{grid-column:1/-1;display:block;text-align:left;font-weight:600;font-size:.88rem;min-width:0}
  [data-table] td:first-child::before{content:none}
  [data-table] td.empty{display:none}
  [data-table] td{align-items:baseline}
  [data-table] td .mchip,[data-table] td .pill{align-self:center;flex:0 0 auto}
  .drawer [data-table] .panel-head h2{display:none}
  [data-table] td.act{grid-column:1/-1;justify-content:flex-end}
  [data-table] td.act::before{content:none}
  [data-table] td[colspan]{grid-column:1/-1}
  .tablebox td:first-child{min-width:0}
  .ptiles{grid-template-columns:repeat(3,minmax(0,1fr))}
  .drawer{width:100%}
}
@media (prefers-reduced-motion:no-preference){
  nav.roles button,.chips button{transition:background .15s,color .15s}
  .screen.enter{animation:enter .2s ease-out}
  @keyframes enter{from{opacity:.4;transform:translateY(5px)}to{opacity:1;transform:none}}
}
@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}

/* v1.7 */
.rxbest{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 12px;display:grid;gap:6px}
.rxbest .rxb{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.rxbest .rxb .num{margin-left:auto;font-weight:600}
.rxbest .rxb .s{flex-basis:100%;padding-left:16px}
.rxbest .rxb.top{font-weight:600}
/* v1.7.1: info icon (hover on PC, tap on phone), row tones */
.panel-head{position:relative}
.ibtn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:1px solid var(--muted);color:var(--muted);background:transparent;font:italic 600 11px/1 Georgia,serif;cursor:help;padding:0;margin:0 auto 0 6px;position:relative;flex:none}
.ibtn:hover,.ibtn:focus-visible,.ibtn.open{color:var(--ink);border-color:var(--ink)}
.ibtn .tip{display:none;position:absolute;top:24px;left:-8px;z-index:30;width:min(420px,80vw);padding:10px 12px;border-radius:10px;background:var(--surface);color:var(--ink);border:1px solid var(--line);box-shadow:0 8px 24px rgba(0,0,0,.25);font:400 12.5px/1.45 var(--body);font-style:normal;text-align:left;white-space:normal}
@media (hover:hover){.ibtn:hover .tip{display:block}}
.ibtn.open .tip,.ibtn:focus-visible .tip{display:block}
tr.tone-bad td{background:rgba(220,60,60,.09)}
tr.tone-warn td{background:rgba(230,160,40,.08)}
.vpick input[list]{min-width:260px}

/* v1.7.3: smaller tables, draggable headers */
table{font-size:.78rem}
th{font-size:.62rem;padding:5px 7px}
td{padding:5px 7px}
td.num,.num{font-size:.95em}
th[draggable=true]{cursor:grab}
th.dragging{opacity:.45}
th.dropto{box-shadow:inset 3px 0 0 var(--accent)}

/* v1.8.1: prescription upload: file picker + camera */
.rxpick{display:flex;gap:8px}
.rxpick .drop{flex:1;text-align:center}
/* v1.8.2: phone bottom bar: More opens upwards, above the bar */
@media (max-width:720px){
  nav.roles .moremenu{position:fixed;top:auto;left:auto;right:10px;bottom:calc(64px + env(safe-area-inset-bottom, 0px));max-height:60vh;overflow:auto;min-width:200px}
}

/* Checkpoint 60: mobile containment */
/* Layout-only changes: no changes to role checks, medicine matching, or stock rules. */
.wrap, .screen, .screen > *, .panel, .panel > *, .p360, .psec, .filterbar, .chartbox, .tbody-wrap{min-width:0;max-width:100%}
img,video,canvas{max-width:100%}
.confirmation-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;align-items:end}
.confirmation-form label{display:grid;gap:4px;min-width:0;font-size:.78rem}
.confirmation-form input,.confirmation-form select{display:block;width:100%;min-width:0}
.confirmation-form > button{justify-self:start}
.p360 .tablebox{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
@media (max-width:720px){
  html{width:100%;overflow-x:clip}
  body{width:100%;padding-inline:12px;overflow-x:clip}
  .wrap{width:100%;grid-template-columns:minmax(0,1fr);gap:12px}
  header.top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 8px;align-items:center;max-width:100%}
  header.top .brand{grid-column:1;grid-row:1;min-width:0}
  header.top h1{font-size:1.2rem;overflow-wrap:anywhere}
  header.top .topright{grid-column:2;grid-row:1;min-width:0;max-width:100%;justify-content:flex-end;flex-wrap:nowrap}
  header.top .topright .usermenu{min-width:0}
  header.top .topright #userBtn{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
  header.top .ask{grid-column:1/-1;grid-row:2;order:initial;width:100%;max-width:100%;min-width:0;flex-basis:auto}
  header.top .ask input{width:0;flex:1 1 0;min-width:0}
  header.top .ask button{flex:0 0 auto}
  nav.roles{max-width:100%;min-width:0;justify-content:flex-start}
  nav.roles button{white-space:nowrap}
  .kpis,.kpis.small{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .kpi{min-width:0}
  .grid2,.home2,.split,.bigstat{grid-template-columns:minmax(0,1fr)}
  .panel{width:100%;min-width:0}
  .panel-head{min-width:0}
  .panel-head h2,.phead h2{overflow-wrap:anywhere}
  .search{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;gap:8px}
  .search input{width:100%;min-width:0;font-size:16px}
  .search .btn{justify-content:center}
  .rxpick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .rxpick .drop{min-width:0;padding:12px 5px;overflow-wrap:anywhere}
  #rxtext{min-width:0;width:100%;font-size:16px}
  .confirmation-form{grid-template-columns:minmax(0,1fr);gap:10px}
  .confirmation-form label{font-size:.85rem}
  .confirmation-form input,.confirmation-form select{min-height:42px;font-size:16px}
  .confirmation-form > button{width:100%;justify-content:center;min-height:42px}
  .frow label{min-width:0;max-width:100%}
  .frow select,.frow input{max-width:100%;min-width:0}
  .filterbar,.tools,.fchips{min-width:0;max-width:100%}
  .tools input[type=search]{min-width:0}
  .hb-row,.dstat{max-width:100%;min-width:0}
  .p360 .psec{min-width:0;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .p360 .psec table{width:max-content;min-width:100%}
  .p360 .facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .p360 .fact{min-width:0}
  .p360 .fact .v{overflow-wrap:anywhere}
  .ptiles{grid-template-columns:repeat(3,minmax(0,1fr))}   /* v1.36.0 K4 small tiles: 3 a row on the phone */
  .ptiles .t{padding:4px 6px}.ptiles .v{font-size:.86rem}.ptiles .k{font-size:.54rem}
  .chartbox{width:100%;max-width:100%;overflow:hidden}
  .chartbox svg{max-width:100%}
  .rxi,.rxbest{min-width:0;overflow-wrap:anywhere}
  [data-table] tbody tr{grid-template-columns:repeat(2,minmax(0,1fr))}
  [data-table] td{overflow-wrap:anywhere}
}
@media (max-width:360px){
  .kpis,.kpis.small{grid-template-columns:minmax(0,1fr)}
  .rxpick{grid-template-columns:minmax(0,1fr)}
  header.top .topright #userBtn{max-width:115px}
}

/* Checkpoint 64: one visible search surface; no data animations. */
:root { --ease-out: cubic-bezier(0.23, 1, 0.32, 1); }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.ask #searchMode { flex:0 0 auto; max-width:125px; min-height:38px; border-radius:999px; padding-inline:10px; background:var(--surface); }
.search-guide { display:flex; flex-wrap:wrap; gap:10px; align-items:center; justify-content:space-between; color:var(--muted); font-size:.88rem; }
.search-guide button { white-space:nowrap; }
button, a, [role="button"] { touch-action:manipulation; -webkit-tap-highlight-color:transparent; }
button, [role="button"] { -webkit-user-select:none; user-select:none; }
.btn, nav.roles button, .chips button { transition:transform 120ms var(--ease-out), background-color 120ms var(--ease-out), border-color 120ms var(--ease-out); }
.btn:active:not([disabled]), nav.roles button:active, .chips button:active { transform:scale(.97); }
@media (hover:hover) and (pointer:fine) { .search-guide button:hover { border-color:var(--accent); } }
@media (max-width:720px) {
  .ask input { font-size:16px; }
  .ask #searchMode { max-width:110px; font-size:14px; }
  .search-guide { align-items:stretch; }
  .search-guide button { min-height:40px; }
}
@media (prefers-reduced-motion:reduce) {
  .btn, nav.roles button, .chips button { transition:background-color 120ms var(--ease-out), border-color 120ms var(--ease-out); }
  .btn:active:not([disabled]), nav.roles button:active, .chips button:active { transform:none; }
}

/* CP65: lightweight medicine suggestions; no layout shifting. */
.ask { position:relative; }
.search-suggestions { position:absolute; z-index:60; left:0; right:0; top:calc(100% + 5px); max-height:min(340px,55vh); overflow-y:auto; padding:6px; background:var(--surface); border:1px solid var(--border); border-radius:14px; box-shadow:0 12px 26px rgba(0,0,0,.26); }
.search-suggestions[hidden] { display:none; }
.search-suggestions button { display:block; width:100%; text-align:left; background:transparent; border:0; border-radius:8px; color:var(--text); padding:10px 12px; cursor:pointer; white-space:normal; }
.search-suggestions button:hover,.search-suggestions button:focus-visible { background:var(--surface2,var(--surface)); outline:2px solid var(--accent); }
.search-suggestions .s { display:block; font-size:.82rem; opacity:.8; }
@media(max-width:720px) { .search-suggestions { left:0; right:0; } #photoSearchButton { min-width:42px; } }

/* CP68: small, keyboard-accessible product photo intake; independent of Rx intake. */
.photo-search-menu,.photo-review{position:absolute;z-index:65;right:0;top:calc(100% + 6px);width:min(440px,96vw);background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:12px;box-shadow:0 12px 26px rgba(0,0,0,.26)}
.photo-search-menu[hidden],.photo-review[hidden]{display:none}
.photo-search-menu button{display:block;width:100%;text-align:left;border:0;border-radius:8px;background:transparent;color:var(--text);padding:10px;cursor:pointer}
.photo-search-menu button:hover,.photo-search-menu button:focus-visible{outline:2px solid var(--accent)}
.photo-search-menu p,.photo-review p{font-size:.8rem;color:var(--muted);margin:8px 0}
.photo-review{max-height:min(70dvh,560px);overflow:auto}
.photo-review label{display:block;font-size:.83rem;margin:10px 0 5px}
.photo-review input{width:100%;font-size:16px;box-sizing:border-box}
.photo-candidates{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.photo-candidates button{white-space:normal;text-align:left}
.photo-review-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
@media(max-width:720px){.photo-search-menu,.photo-review{left:0;right:0;width:100%;box-sizing:border-box}}

/* v1.11.0: the photo box input must not inherit the phone search-bar squeeze; prescription reader extras */
header.top .ask .photo-review input,.ask .photo-review input{width:100%;flex:none;min-width:0;border-radius:10px;padding:9px 12px}
.rxturn{margin-left:8px}
.rxi .pick{font-weight:600}
.pill.p-dim{opacity:.85}

/* ---------- v1.12.0: quick buttons, camera button, text size, big pills, motion (all motion off with reduced motion) ---------- */
html.bigtext{font-size:18px}
html.bigtext body{font-size:16px}
.seg .tsbig{font-size:1.05rem;font-weight:800}
.qbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:12px}
.qb{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px;min-height:104px;cursor:pointer;
  display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;gap:10px;text-align:left}
.qb .qi{color:var(--accent);display:flex}
.qb .qt{font-weight:800;font-size:1rem;line-height:1.2}
.qb .qs{display:block;font-weight:500;font-size:.82rem;color:var(--muted);margin-top:3px}
.qb.primary{background:var(--accent);border-color:var(--accent);color:var(--surface)}
.qb.primary .qi,.qb.primary .qs{color:inherit}
.qb.t-bad .qi{color:var(--bad)}.qb.t-warn .qi{color:var(--warn)}
.qb:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.qbar.simple{grid-template-columns:1fr}
.qbar.simple .qb{flex-direction:row;align-items:center;justify-content:flex-start;min-height:110px;gap:16px;border-radius:22px}
.qbar.simple .qb .qi{width:60px;height:60px;border-radius:16px;background:var(--chip);align-items:center;justify-content:center;flex:0 0 auto}
.qbar.simple .qb.primary .qi{background:rgba(255,255,255,.18)}
.qbar.simple .qt{font-size:1.2rem}
.fab{display:none}
@media (max-width:720px){
  .qbar:not(.simple){grid-template-columns:repeat(2,minmax(0,1fr))}
  .fab:not([hidden]){display:flex;position:fixed;right:16px;bottom:calc(76px + env(safe-area-inset-bottom, 0px));width:60px;height:60px;border-radius:50%;border:0;
    background:var(--accent);color:var(--surface);align-items:center;justify-content:center;z-index:30;box-shadow:0 8px 22px rgba(0,0,0,.3);cursor:pointer}
}
.pill.lg{display:inline-flex;align-items:center;gap:5px;font-size:.86rem;font-weight:800;padding:6px 11px;flex:0 0 auto}
.rxi .pick{display:inline-block;padding:6px 10px;margin:4px 4px 0 0;border:1px solid var(--line);border-radius:10px;background:var(--chip);font-weight:700}
.stockasof{margin:6px 0 0}
.rxscan{position:relative;display:inline-block;overflow:hidden;border-radius:6px;vertical-align:middle;margin-right:8px}
.rxscan .rxthumb{margin-right:0;display:block}
.rxscan .scanline{position:absolute;left:0;right:0;top:10%;height:3px;background:var(--accent);box-shadow:0 0 12px 4px color-mix(in srgb,var(--accent) 45%,transparent)}
.rxscan.done .scanline{display:none}
.dots{display:inline-flex;gap:4px;margin-left:6px;vertical-align:middle}
.dots i{width:5px;height:5px;border-radius:50%;background:var(--accent);display:block}
.syncbar{border:1px solid var(--line);border-radius:14px;padding:12px;margin-top:10px;background:var(--surface)}
.sb-head{display:flex;justify-content:space-between;align-items:baseline}
.sb-head span{color:var(--accent);font-weight:700}
.sb-track{height:12px;border-radius:999px;background:var(--chip);overflow:hidden;margin-top:8px}
.sb-fill{height:100%;border-radius:999px;background:var(--accent);transition:width .6s ease}
.sb-sub{font-size:.78rem;color:var(--muted);margin-top:6px}
.sb-steps{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:2px;font-size:.86rem}
.sb-steps li{padding:3px 0 3px 22px;position:relative;color:var(--muted)}
.sb-steps li::before{content:"";position:absolute;left:2px;top:8px;width:10px;height:10px;border-radius:50%;border:2px solid currentColor}
.sb-steps li.done{color:var(--ink)}.sb-steps li.done::before{background:var(--good);border-color:var(--good)}
.sb-steps li.now{color:var(--accent);font-weight:800}
.syncdone{color:var(--good);font-weight:700}
.ptr{position:fixed;left:50%;top:-44px;transform:translate(-50%,0);display:flex;align-items:center;gap:8px;background:var(--surface);color:var(--muted);border:1px solid var(--line);
  border-radius:999px;padding:8px 14px;font-size:.8rem;z-index:60;opacity:0;pointer-events:none}
.ptr.on{opacity:1;top:8px}
.ptr i{width:14px;height:14px;border-radius:50%;border:2px solid var(--accent);border-right-color:transparent;display:block}
@media (prefers-reduced-motion:no-preference){
  .qb{transition:transform .12s ease}.qb:active{transform:scale(.97)}
  .qbar .qb{animation:qrise .45s ease-out both;animation-delay:var(--d,0ms)}
  @keyframes qrise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  .fab:not([hidden]){animation:fabring 2.4s ease-out 2}   /* v1.53.0 K70: twice on arrival, not forever */
  @keyframes fabring{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 55%,transparent)}70%{box-shadow:0 0 0 14px transparent}100%{box-shadow:0 0 0 0 transparent}}
  .rxscan:not(.done) .scanline{animation:scanmove 2s ease-in-out infinite}
  @keyframes scanmove{0%{top:6%}50%{top:90%}100%{top:6%}}
  .dots i{animation:dotb 1.2s infinite}.dots i:nth-child(2){animation-delay:.2s}.dots i:nth-child(3){animation-delay:.4s}
  @keyframes dotb{0%,20%{opacity:.2}50%{opacity:1}100%{opacity:.2}}
  .rxl > .rxi{animation:qrise .35s ease-out both;animation-delay:var(--d,0ms)}
  .ptr.busy i{animation:ptrspin .8s linear infinite}
  @keyframes ptrspin{to{transform:rotate(360deg)}}
  .screen.enter{animation:slidein .28s ease-out}
  @keyframes slidein{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:none}}
}

/* ---------- v1.12.1: one camera (phone and PC), big prescription box for counter staff, no search picker ---------- */
.ask #searchMode[hidden]{display:none}
.fab:not([hidden]){display:flex;position:fixed;right:20px;bottom:24px;width:60px;height:60px;border-radius:50%;border:0;background:var(--accent);color:var(--surface);
  align-items:center;justify-content:center;z-index:30;box-shadow:0 8px 22px rgba(0,0,0,.3);cursor:pointer}
/* v1.41.1 K36 camera speed dial: dimmed page, round buttons rise above the camera button, labels on the left */
.camdim{position:fixed;inset:0;z-index:29;background:color-mix(in srgb,var(--bg) 62%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.camdim[hidden]{display:none}
.cammenu{position:fixed;right:25px;bottom:100px;z-index:31;display:flex;flex-direction:column;align-items:flex-end;gap:12px}
.cammenu[hidden]{display:none}
.cammenu .di{font:inherit;display:flex;align-items:center;gap:12px;background:none;border:0;padding:0;cursor:pointer;color:var(--ink);text-align:right;
  animation:dialin .22s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i,0) * 35ms)}
.cammenu .di[hidden]{display:none}
.cammenu .dl{display:grid;justify-items:end}
.cammenu .dl b{font-size:.95rem;text-shadow:0 1px 6px var(--bg)}
.cammenu .dl small{font-size:.76rem;color:var(--muted);text-shadow:0 1px 6px var(--bg)}
.cammenu .dic{width:50px;height:50px;border-radius:50%;display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);color:var(--ink);box-shadow:0 6px 18px rgba(0,0,0,.28);flex:none;transition:transform .12s,border-color .12s}
.cammenu .di.main .dic{background:var(--accent);border-color:var(--accent);color:var(--surface)}
.cammenu .di:hover .dic,.cammenu .di:focus-visible .dic{border-color:var(--accent);transform:scale(1.06)}
.cammenu .di:focus-visible{outline:none}.cammenu .di:focus-visible .dic{outline:2px solid var(--accent);outline-offset:2px}
@keyframes dialin{from{opacity:0;transform:translateY(14px) scale(.9)}to{opacity:1;transform:none}}
.fab .fabx{display:none}
.fab[aria-expanded="true"] .fabx{display:block;animation:fabturn .18s ease-out}
.fab[aria-expanded="true"] .fabc{display:none}
@keyframes fabturn{from{transform:rotate(-90deg)}to{transform:none}}
.fab[aria-expanded="true"]{z-index:32}
@media (prefers-reduced-motion:reduce){.cammenu .di,.fab .fabx{animation:none}.camdim{-webkit-backdrop-filter:none;backdrop-filter:none}}
@media (max-width:720px){
  .fab:not([hidden]){bottom:calc(76px + env(safe-area-inset-bottom, 0px));right:16px}
  .cammenu{right:21px;bottom:calc(150px + env(safe-area-inset-bottom, 0px))}
  .qbar:not(.simple){grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
}
.rxbig .rxpick .drop{min-height:72px;font-size:1.1rem;font-weight:800;display:flex;align-items:center;justify-content:center}
.rxbig textarea{font-size:1.05rem;min-height:150px}
.rxbig #rxgo,.rxbig #rxclear{min-height:52px;font-size:1.05rem;padding-inline:22px}
.rxbig .panel-head h2{font-size:1.3rem}

/* ---------- v1.13.0: slim tiles (one short row), upload tile with Product / Prescription choice ---------- */
.qbar:not(.simple) .qb{min-height:0;padding:10px 14px;border-radius:14px;flex-direction:row;align-items:center;justify-content:flex-start;gap:12px;text-align:left}
.qbar:not(.simple) .qb .qt{font-size:.95rem;display:flex;flex-direction:column}
.qbar:not(.simple) .qb .qs{margin-top:1px;font-size:.78rem}
.qbar:not(.simple){grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.upchoice{grid-column:1/-1;display:flex;gap:8px}
.upchoice[hidden]{display:none}
.upchoice .btn{flex:1;min-height:44px;font-weight:800}
@media (max-width:720px){.qbar:not(.simple){grid-template-columns:1fr}}
/* v1.13.0 live Today, sales switch, customer outstanding, vendor health cards, item chips */
.hb-live{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:700;color:var(--good,#1f8a5b);white-space:nowrap;padding:0 6px}
.hb-live i{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}
@media (prefers-reduced-motion:no-preference){.hb-live i{animation:livepulse 1.6s ease-in-out infinite}@keyframes livepulse{50%{opacity:.3}}}
.smswitch,.vichips{display:flex;gap:6px;margin:0 0 10px;flex-wrap:wrap}
.smswitch button,.vichips button{font:inherit;font-size:.85rem;font-weight:700;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 14px;cursor:pointer}
.smswitch button[aria-pressed=true],.vichips button[aria-pressed=true]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.vhcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;margin-top:10px}
.vhcard{border:1px solid var(--line);border-left-width:5px;border-radius:14px;background:var(--surface)}
.vhcard.t-good{border-left-color:var(--good,#1f8a5b)}.vhcard.t-warn{border-left-color:var(--warn,#b7791f)}.vhcard.t-bad{border-left-color:var(--bad,#c0392b)}
.vhcard summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding:12px 14px}
.vhcard summary::-webkit-details-marker{display:none}
.vhn{font-weight:800}
.vhpct{font-weight:800;font-size:1.25rem;text-align:right;line-height:1}
.vhpct small{display:block;font-size:.7rem;font-weight:500;color:var(--muted)}
.t-good .vhpct{color:var(--good,#1f8a5b)}.t-warn .vhpct{color:var(--warn,#b7791f)}.t-bad .vhpct{color:var(--bad,#c0392b)}
.vhmini{grid-column:1/-1;display:flex;gap:12px;flex-wrap:wrap;font-size:.82rem;color:var(--muted)}
.vhmini .bad{color:var(--bad,#c0392b);font-weight:700}
.vhmore{padding:0 14px 12px;display:grid;gap:4px}
.vhr{display:flex;justify-content:space-between;font-size:.86rem;border-top:1px dashed var(--line);padding-top:4px}
.vhmore .btn{margin-top:8px}
/* v1.14.0 sign-in: an arrow instead of "Open" */
.loginbox{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}
.loginbox h2,.loginbox label[for=loginUser],.loginbox .err{grid-column:1/-1}
.loginbox .logingo{width:52px;height:52px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center;align-self:end}

/* ---------- v1.14.0: small vendor tiles with a ring, breakdown window, movable item window, item cells ---------- */
.vhcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;margin-top:10px}
.vhtile{font:inherit;color:var(--ink);text-align:left;cursor:pointer;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:14px;
  background:var(--surface);border:1px solid var(--line);min-width:0}
.vhtile:hover{border-color:var(--accent)}
.vhtile:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.vhring{--c:var(--muted);flex:0 0 auto;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;
  background:conic-gradient(var(--c) calc(var(--p)*1%),var(--line) 0)}
.vhring b{width:38px;height:38px;border-radius:50%;background:var(--surface);display:grid;place-items:center;font-size:.85rem;font-weight:800;color:var(--c);line-height:1}
.vhring small{font-size:.6rem;font-weight:700}
.vhring.sm{width:40px;height:40px}.vhring.sm b{width:31px;height:31px;font-size:.75rem}
.t-good .vhring{--c:var(--good)}.t-warn .vhring{--c:var(--warn)}.t-bad .vhring{--c:var(--bad)}
.vhtx{display:grid;gap:2px;min-width:0}
.vhtx .vhn{font-weight:800;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vhst{display:flex;flex-wrap:wrap;gap:2px 8px;font-size:.72rem;color:var(--muted)}
.vhst .bad{color:var(--bad);font-weight:700}
.miniwin{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.35);display:grid;place-items:center;padding:16px}
.miniwin[hidden]{display:none}
.mw-card{width:min(340px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:18px;
  padding:14px;box-shadow:0 18px 40px rgba(0,0,0,.35);display:grid;gap:10px}
.mw-head{display:flex;align-items:center;gap:10px}.mw-head h3{margin:0;flex:1;font-size:1.05rem}
.mw-body{display:grid;gap:4px}
.mw-body .vhr{display:flex;justify-content:space-between;font-size:.86rem;border-top:1px dashed var(--line);padding-top:4px}
.mw-body .vhr.bad b{color:var(--bad)}
@media (max-width:720px){
  .vhcards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .vhtile{padding:7px 8px;gap:8px}.vhring{width:42px;height:42px}.vhring b{width:33px;height:33px;font-size:.78rem}
  .miniwin{place-items:end center;padding:0}
  .mw-card{width:100%;border-radius:18px 18px 0 0;padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))}
}
@media (prefers-reduced-motion:no-preference){.mw-card{animation:mwin .18s ease-out}@keyframes mwin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}}
/* item cells: small SKU line above a short name */
.nmcell{display:inline-grid;line-height:1.2}
.nmcell .sku{font-size:.62rem}
th.sorted2::after{content:" ▾²"} th.sorted2.asc::after{content:" ▴²"}
/* item window on a PC: movable, resizable; the table keeps its header, name column and left/right scroll bar in view */
@media (min-width:721px){
  .drawer.floating{right:auto;bottom:auto;resize:both;border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 50px rgba(0,0,0,.35);min-width:360px;min-height:260px}
  .drawer.floating .drawer-head{cursor:move;top:-14px}
  .drawer.moving{user-select:none;opacity:.95}
  .drawer .drawer-head{cursor:move}
  .drawer [data-table] .tablebox{max-height:calc(100vh - 240px);overflow:auto}
  .drawer.floating [data-table] .tablebox{max-height:max(160px,calc(var(--dh,600px) - 230px))}
  .drawer [data-table] thead th{position:sticky;top:0;background:var(--surface);z-index:2}
  .drawer [data-table] td:first-child,.drawer [data-table] th:first-child{position:sticky;left:0;background:var(--surface);z-index:1}
  .drawer [data-table] thead th:first-child{z-index:3}
}
/* v1.14.1 "Why it moved" lines open their table */
.insights .insbtn{font:inherit;color:inherit;background:none;border:0;padding:0;text-align:left;cursor:pointer;display:flex;gap:8px;align-items:flex-start;width:100%}
.insights .insbtn:hover{color:var(--accent)}
.insights .insbtn .go{margin-left:auto;color:var(--muted);font-weight:700}
.dstat[hidden]{display:none}

/* ---------- v1.15.0: grouped headers, first 4 columns frozen, short transfer cells, window blocks ---------- */
thead tr.grp th{font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);text-align:left;border-bottom:2px solid var(--line);height:26px;padding-top:4px;padding-bottom:2px;white-space:nowrap}
thead tr.grp th:not(:empty){border-bottom-color:var(--accent)}
table.frzt .frz{position:sticky;background:var(--surface);z-index:6}
table.frzt thead .frz{z-index:8}
table.frzt .frzlast{box-shadow:6px 0 8px -6px rgba(0,0,0,.35)}
@media (min-width:721px){
  .drawer [data-table] table.frzt td:first-child,.drawer [data-table] table.frzt th:first-child{left:auto}
  .drawer [data-table] thead tr.grp th{top:0}
  .drawer [data-table] thead tr.grp + tr th{top:26px}
}
@media (max-width:720px){thead tr.grp{display:none}}
.xf{display:block;white-space:nowrap}
.ibtn.xs{width:16px;height:16px;font-size:.6rem;vertical-align:middle}
.mw-hot{font:inherit;color:inherit;text-align:left;cursor:pointer;display:flex;align-items:center;gap:10px;background:var(--bad-soft);border:1px solid var(--bad);border-radius:12px;padding:8px 10px}
.mw-hot b{font-size:1.3rem;color:var(--bad)}.mw-hot span{font-size:.82rem}.mw-hot .go{margin-left:auto;font-weight:800}
.mw-own{border:1px dashed var(--line);border-radius:12px;padding:8px 10px;display:grid;gap:4px;background:var(--bg)}
.mw-ownh{font-weight:800;font-size:.85rem}.mw-ownh small{font-weight:500;color:var(--muted)}
.mw-own .vhr{display:flex;justify-content:space-between;font-size:.86rem;border-top:1px dashed var(--line);padding-top:4px}
.mw-own .vhr.bad b{color:var(--bad)}
.vhst .hot{color:var(--surface);background:var(--bad);border-radius:999px;padding:0 6px;font-weight:700}
/* v1.15.1 left/right scroll bar: thin and dim, clear when the mouse is over the table */
.tablebox{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--muted) 25%,transparent) transparent}
.tablebox:hover{scrollbar-color:color-mix(in srgb,var(--muted) 70%,transparent) transparent}
.tablebox::-webkit-scrollbar{height:7px;width:7px}
.tablebox::-webkit-scrollbar-track{background:transparent}
.tablebox::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 22%,transparent);border-radius:8px}
.tablebox:hover::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 65%,transparent)}
/* v1.15.2 outlets list on the counter: ours first, then "Sister outlets" */
.rxbest .rxb{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.rxbest .rxbn{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rxbest .rxbq{flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;font-weight:700}
.rxbest .rxb .s{flex-basis:100%}
.rxbsep{text-align:center;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:10px 0 4px;
  display:flex;align-items:center;gap:8px}
.rxbsep::before,.rxbsep::after{content:"";flex:1;border-top:1px solid var(--line)}
.s.stores{color:var(--ink)}
.rxbest,#rxres{min-width:0;max-width:100%}
.rxbest{overflow:hidden}
/* v1.15.3 photo full screen with zoom; subs mark */
.photozoom{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.92);overflow:hidden;touch-action:none;display:grid;place-items:center}
.photozoom[hidden]{display:none}
.photozoom img{max-width:96vw;max-height:88vh;transform-origin:center;user-select:none;-webkit-user-drag:none}
.photozoom .pz-close{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));right:12px;z-index:2}
.photozoom .pz-hint{position:absolute;bottom:calc(14px + env(safe-area-inset-bottom,0px));left:0;right:0;text-align:center;color:#ddd;font-size:.8rem}
.rxthumb[data-zoom]{cursor:zoom-in}
.subsmark{font-size:.66rem;padding:1px 6px}
/* v1.16.0 product photo: likely catalogue products */
.photo-matches{display:grid;gap:6px;margin:6px 0}
.photo-matches .pm{text-align:left;justify-content:flex-start;white-space:normal}
#photoAI{margin-top:6px}
/* v1.17.0 Moves (layout B) and table badges */
.tbadges{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:4px 0 8px}
.tbadges .cnt{opacity:.65;font-size:.78em;margin-left:2px}
.tbadges .xreq{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-left:auto}
.tbadges .xreq select{margin-left:4px}
.mvtop{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:4px 0 8px}
.mvh{margin:0;font-size:1.3rem}
.mvsearch{flex:1 1 320px;max-width:460px;margin-left:auto}
.mvsearch input{width:100%;min-height:42px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.mvchips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 0}
.mvchips .mvchip[aria-pressed=true]{background:var(--accent);color:#fff;border-color:transparent}
.mvchips label{display:flex;gap:6px;align-items:center;font-size:.85rem}
.mvwrap{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}
.mvroutes{flex:0 1 210px;display:flex;flex-direction:column;gap:6px;max-height:75vh;overflow:auto}
.mvroute{font:inherit;text-align:left;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:7px 10px;display:flex;flex-direction:column;gap:3px;cursor:pointer;min-height:44px}
.mvroute[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}
.mvroute b{font-size:.84rem}
.mvc{display:flex;gap:6px;font-size:.72rem;font-family:var(--mono,monospace)}
.mvc i{font-style:normal}.mvc .e{color:var(--bad)}.mvc .d{color:var(--warn)}.mvc .o{color:var(--ink)}.mvc .s{color:var(--good)}.mvc .m{margin-left:auto;color:var(--muted)}
.mvmain{flex:999 1 620px;min-width:0;display:flex;flex-direction:column;gap:10px}
.mvdetail{border-color:var(--accent)}
.mvgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;margin:6px 0}
.mvb{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px;font-size:.86rem}
.mvb .neg{color:var(--bad);font-weight:600}
@media (max-width:720px){.mvroutes{flex-direction:row;max-height:none;overflow-x:auto;flex:1 1 100%}.mvroute{flex:0 0 190px}}
.tbadges .hb-o{font:inherit;font-size:.82rem;background:var(--chip);color:var(--ink);border:1px solid var(--line);border-radius:999px;padding:5px 11px;cursor:pointer;min-height:32px}
.tbadges .hb-o[aria-pressed=true]{background:var(--accent);color:#fff;border-color:transparent}
.photo-matches .pm.sim{border-style:dashed}
/* v1.18.0 product pictures next to matches and on Product 360 */
.photo-matches .pm{display:flex;gap:10px;align-items:center}
.pmimg{width:44px;height:44px;object-fit:contain;background:#fff;border-radius:8px;flex:0 0 44px}
.pmimg.none{background:var(--chip)}
.p360img{width:96px;height:96px;object-fit:contain;background:#fff;border-radius:12px;border:1px solid var(--line);cursor:zoom-in}
/* v1.19.0 live barcode scan, suggestions with stock */
.scanwin{position:fixed;inset:0;z-index:75;background:#000;display:grid;place-items:center}
.scanwin[hidden]{display:none}
.scanwin video{width:100%;height:100%;object-fit:cover}
.scanwin .scanbox{position:absolute;width:min(78vw,420px);height:min(34vw,180px);border:3px solid var(--accent);border-radius:14px;box-shadow:0 0 0 9999px rgba(0,0,0,.35)}
.scanwin p{position:absolute;bottom:calc(84px + env(safe-area-inset-bottom,0px));left:0;right:0;text-align:center;color:#fff;margin:0}
.scanwin #scanClose{position:absolute;top:calc(14px + env(safe-area-inset-top,0px));right:14px}
#searchSuggestions .same{opacity:.92}
#searchSuggestions .neg{color:var(--bad)}
/* v1.20.0 one window: tiles, Do-this chips */
.ttiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:2px 0 10px}
.ttile{font:inherit;text-align:left;color:var(--ink);background:var(--surface);border:2px solid var(--line);border-radius:12px;padding:9px 12px;display:flex;flex-direction:column;gap:1px;cursor:pointer;min-height:44px}
.ttile[aria-pressed=true]{border-color:var(--accent)}
.ttile .tl{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.ttile .tn{font-family:var(--mono);font-size:1.45rem;font-weight:700;line-height:1.1}
.ttile .ts{font-size:.75rem;color:var(--muted)}
.ttile.act-s .tl{color:var(--good)}.ttile.act-t .tl{color:#3b7dd8}.ttile.act-o .tl{color:var(--bad)}
.actchip{font-size:.75rem;font-weight:700;border-radius:999px;padding:3px 9px;white-space:nowrap}
.actchip.act-s{background:var(--good-soft);color:var(--good)}
.actchip.act-t{background:#dde9fb;color:#1d4f9a}
.actchip.act-o{background:var(--bad-soft);color:var(--bad)}
:root[data-theme="dark"] .actchip.act-t{background:#13243f;color:#93c5fd}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .actchip.act-t{background:#13243f;color:#93c5fd}:root:not([data-theme="light"]) .ttile.act-t .tl{color:#93c5fd}}
:root[data-theme="dark"] .ttile.act-t .tl{color:#93c5fd}
.muted.xs{font-size:.72rem}
@media (max-width:720px){.ttiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
.unk{display:grid;gap:6px;margin:6px 0}
.unk p{margin:0}
/* v1.21.0 results with filters, richer suggestions, favourites, voice */
.rfbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:4px 0 10px}
.rf{display:flex;gap:6px;align-items:center;font-size:.85rem;color:var(--muted)}
.rfbar .btn[aria-pressed=true]{background:var(--accent);color:#fff;border-color:transparent}
.resrows{display:flex;flex-direction:column;gap:4px;max-height:420px;overflow:auto}
.resrow{font:inherit;color:inherit;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 10px;display:flex;gap:10px;align-items:center;cursor:pointer;min-height:44px}
.resrow:hover{border-color:var(--accent)}
.resrow .rmain{flex:1;display:flex;flex-direction:column;min-width:0}
.resrow .rside{display:flex;flex-direction:column;align-items:flex-end;font-size:.85rem;white-space:nowrap}
.resrow .neg,.sg .neg{color:var(--bad)}
.sg{display:flex!important;gap:10px;align-items:center}
.sgimg{width:36px;height:36px;object-fit:contain;background:#fff;border-radius:6px;flex:0 0 36px}
.sgimg.none{background:var(--chip)}
.sgt{display:flex;flex-direction:column;min-width:0}
.sgh{margin:6px 10px 2px}
.star{font:inherit;background:none;border:0;cursor:pointer;font-size:1.2rem;color:#e0a800;padding:0 4px;vertical-align:middle}
.tog{display:grid;gap:6px}
.tog .pm{display:flex;gap:10px;align-items:center;text-align:left;justify-content:flex-start}
.mic{background:none;border:0;color:var(--muted);cursor:pointer;padding:0 6px;min-height:40px}
.mic.on{color:var(--bad)}

/* ---------- v1.22.0: phone sizing, full screen pop-ups ---------- */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
.drawer.full,.drawer.full.floating{inset:0!important;width:100%!important;height:100%!important;max-width:none;left:0!important;top:0!important;border-radius:0;resize:none}
.drawer.full [data-table] .tablebox{max-height:calc(100vh - 200px)}
.sgh{margin:8px 0 2px;font-weight:700;color:var(--accent);font-size:.78rem;text-transform:uppercase;letter-spacing:.05em}
@media (max-width:720px){
  body{font-size:clamp(13px,3.6vw,15px)}
  h1{font-size:clamp(1rem,4.6vw,1.2rem)} h2{font-size:clamp(.92rem,4vw,1.05rem)}
  header.top h1{font-size:clamp(1rem,4.8vw,1.2rem)}
  header.top #status{font-size:.75rem}
  body{padding-inline:max(10px,env(safe-area-inset-left)) max(10px,env(safe-area-inset-right))}
  .overlay#login{place-items:start center;padding-top:max(8vh,24px)}
  #drawerFull{display:none}
}
.mfdapick{list-style:none;padding:0;margin:6px 0;display:grid;gap:4px;max-height:260px;overflow:auto}
/* v1.31.0 E1 Item match: the Apply buttons and the Shorten box stay on screen while scrolling; row buttons stay visible on wide tables */
.floatbar{position:sticky;bottom:max(8px,env(safe-area-inset-bottom,0px));z-index:15;display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;
  margin-top:10px;padding:8px 12px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 -6px 20px rgba(0,0,0,.28)}
.floatbar label{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.floatbar .shorten{display:flex;flex-wrap:wrap;align-items:center;gap:6px;flex:1 1 320px;min-width:0}
.floatbar .shorten input{flex:1 1 220px;min-width:0}
.floatbar output{font-weight:600;color:var(--ink);overflow-wrap:anywhere}
@media (min-width:701px){td.act{position:sticky;right:0;z-index:1;background:var(--surface);box-shadow:-6px 0 8px -6px rgba(0,0,0,.35)}}
@media (max-width:700px){.floatbar{bottom:calc(64px + env(safe-area-inset-bottom,0px));padding:6px 8px;gap:6px}}
/* v1.34.0 I5 / I6 actions float on every tab; on a phone one row, the rest behind "More" */
.floatbar .fb-main,.floatbar .fb-more{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}
.floatbar .fb-more{flex:1 1 100%}
.floatbar .fb-toggle{display:none}
@media (max-width:700px){
  .floatbar .fb-toggle{display:inline-flex;margin-left:auto}
  .floatbar .fb-more{display:none}
  .floatbar.open .fb-more{display:flex;max-height:55vh;overflow:auto}
}
/* v1.33.0 F4 / F6 suggestions wrap; picked line; Shorten box with its own short form and buttons */
.pendbox th.ptick,.pendbox .tablebox td.ptick{width:1%;min-width:0;white-space:nowrap}
.pendbox .pdesc .btn{white-space:nowrap}
.pendbox .pdesc{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:6px;max-width:340px}
.pendbox .pdesc .note{overflow-wrap:anywhere}
.pendbox .pdiff{white-space:normal;max-width:220px;margin-top:4px}
.pendbox td{vertical-align:top}
tr.picked td{background:color-mix(in srgb,var(--accent) 14%,var(--surface))}
.floatbar #sh_for{flex-basis:100%;overflow-wrap:anywhere}
.floatbar #sh_out{flex:1 1 220px;min-width:0;font-weight:600}
.floatbar .btn.icon{white-space:nowrap}
/* v1.34.0 G1 phone export: the file is offered in a small box, the console stays open */
.sharebox{position:fixed;left:12px;right:12px;bottom:calc(80px + env(safe-area-inset-bottom,0px));z-index:60;display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 28px rgba(0,0,0,.35)}
.sharebox .note{flex:1 1 100%;overflow-wrap:anywhere}
#login{z-index:80}                                   /* v1.36.0 K1 the sign-in box is always on top (photo boxes are 65) */
.loginbox .loginlock{grid-column:1/-1;margin:0}
.loginbox .linkbtn{background:none;border:0;padding:0;color:var(--accent);font:inherit;cursor:pointer;text-decoration:underline}
.pastebox{width:min(380px,100%);display:grid;gap:10px}.pastebox img{max-width:100%;max-height:40vh;object-fit:contain;border-radius:10px;background:#fff}
button.drop{font:inherit;background:none;cursor:pointer}
@media (max-width:720px){.rxpick #rxpaste{grid-column:1/-1}.rxwin .rxpick #rxpaste{grid-column:auto}}
.ptiles .t.pl .k{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ptiles .t.mg .s{font-size:.68rem;color:var(--muted);white-space:normal}
/* v1.36.3 K7 Product 360 tiles: one height a row, never stretched by a long tile; the margin is a small pill */
.ptiles{align-items:start;grid-auto-rows:minmax(0,auto)}
.ptiles .t{align-content:start;height:100%;row-gap:2px}
.ptiles .t .mchip{justify-self:start;align-self:start;height:auto;line-height:1.5}
.ptiles .t.cnt,.ptiles .t.cnt .v{overflow:visible}
.ptiles .t.cnt .v{white-space:normal;display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;font-size:.86rem;line-height:1.25}
.ptiles .t.cnt .code{white-space:nowrap}
.ptiles .t.cnt .ibtn{margin:0;border-color:var(--warn);color:var(--warn)}
.ptiles .t.cnt .ibtn .tip{left:auto;right:-8px;color:var(--ink)}
.bdg.ess{background:var(--good-soft);color:var(--good)} .bdg.ess.maybe{background:var(--chip);color:var(--muted)}
/* table bands: a group heading in its own colour, centred, so it never reads as a row of data */
tr.band td{flex:1 1 100%;width:100%;box-sizing:border-box;text-align:center;font-weight:700;font-size:.74rem;letter-spacing:.02em;padding:5px 8px;border-top:2px solid currentColor}
tr.band.sib td{background:var(--sib-soft);color:var(--sib)}
tr.band.ask td{background:var(--warn-soft);color:var(--warn)}
table.alts tr.band td{background:var(--warn-soft)}
.ptiles .t.cnt .code+.code::before{content:"·";margin-right:6px;opacity:.7}
tr.band{display:table-row !important}tr.band td{display:table-cell !important}
/* v1.36.4 K9 Item match work table: one main step first, the rest under More; description tick; floating scroll bar */
th.dothis,td.dothis{width:1%;min-width:220px;white-space:nowrap}
.dothis-in{display:grid;gap:3px;justify-items:start}
.dothis-in .acts{display:flex;gap:6px;align-items:center;flex-wrap:nowrap}
.dothis-in .done{color:var(--good);font-weight:700;font-size:.8rem}
.dnote{font-size:.7rem;color:var(--muted);display:flex;gap:6px;align-items:center;white-space:normal}
.echip{font:600 .68rem/1.5 var(--body);border-radius:999px;padding:0 7px;background:var(--good-soft);color:var(--good)}
.echip.maybe{background:var(--chip);color:var(--muted)}
.rowmore{position:relative}
.rowmore summary{list-style:none;cursor:pointer;font-size:.78rem;padding:3px 9px;border:1px solid var(--line);border-radius:999px;color:var(--muted)}
.rowmore summary::-webkit-details-marker{display:none}
.rowmore[open] summary,.rowmore summary:hover{color:var(--ink);border-color:var(--ink)}
.rowmore .mmenu{display:none}
.mmenu.portal{position:fixed;z-index:75;display:grid;min-width:210px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:4px;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.mmenu .mitem{font:inherit;font-size:.82rem;text-align:left;background:none;border:0;color:var(--ink);padding:7px 10px;border-radius:7px;cursor:pointer;white-space:nowrap}
.mmenu .mitem:hover,.mmenu .mitem:focus-visible{background:var(--chip)}
.tick{font-weight:800;font-size:.95rem}.tick.on{color:var(--good)}.tick.off{color:var(--muted);opacity:.45}
.findbox{display:grid;gap:8px;padding:6px 2px}
.findhead{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.findhead input{min-width:min(300px,70vw)}
.findlist{display:grid;gap:6px}
.fpick{font:inherit;text-align:left;display:grid;gap:4px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:8px 10px;cursor:pointer}
.fpick:hover,.fpick:focus-visible{border-color:var(--accent)}
.fpick .fl{font-weight:600}
.fscroll{position:fixed;z-index:44;height:14px;overflow-x:auto;overflow-y:hidden;background:var(--surface);border:1px solid var(--line);border-radius:7px;box-shadow:0 4px 14px rgba(0,0,0,.25)}
.fscroll>div{height:1px}
.fscroll[hidden]{display:none}
@media (max-width:720px){
  [data-table] td.dothis{display:block;text-align:left}
  [data-table] td.dothis+td{grid-column:1/-1;display:block;text-align:left;font-weight:600;font-size:.88rem}
  [data-table] td.dothis+td::before{content:none}
  .findhead input{min-width:0;width:100%}.findhead .inline{width:100%}
}
.fchip2{font:600 .68rem/1.6 var(--body);border-radius:999px;padding:0 7px;background:var(--chip);color:var(--muted)}
.fchip2.good{background:var(--good-soft);color:var(--good)}.fchip2.warn{background:var(--warn-soft);color:var(--warn)}.fchip2.bad{background:var(--bad-soft);color:var(--bad)}
.fpick .fm{display:flex;flex-wrap:wrap;gap:5px}
.findlist .fpick{width:100%}
/* v1.36.5 K10 A / M / E marks: one letter per list, colour = state (text in the title for screen readers) */
.ame{display:inline-flex;gap:3px}
.mk{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:5px;font:700 .64rem/1 var(--body);border:1px solid var(--line);color:var(--muted);background:transparent}
.mk.ok{background:var(--good-soft);color:var(--good);border-color:transparent}
.mk.wait{background:var(--warn-soft);color:var(--warn);border-color:transparent}
.mk.bad{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)}
.dpick{font-size:.72rem;color:var(--warn);white-space:normal;max-width:280px}
.dwatch{font-size:.72rem;color:var(--bad);white-space:normal;max-width:260px}
.descbox{display:grid;gap:8px;padding:6px 2px}
.descbox .inline{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.descbox #dsi{flex:1 1 320px;min-width:0}
.dsugs{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dsug{font:inherit;font-size:.8rem;text-align:left;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:999px;padding:4px 10px;cursor:pointer}
.dsug:hover,.dsug:focus-visible{border-color:var(--accent)}
/* v1.36.6 K12 / K13 price side by side; a picked item over the old one */
.pp{display:inline-flex;align-items:baseline;gap:4px;white-space:nowrap}
.ppsep{color:var(--muted)}
.ppsign{font:600 .68rem/1.5 var(--body);border-radius:999px;padding:0 7px;background:var(--chip);color:var(--muted)}
.ppsign.good{background:var(--good-soft);color:var(--good)}.ppsign.bad{background:var(--bad-soft);color:var(--bad)}.ppsign.warn{background:var(--warn-soft);color:var(--warn)}
.newitem{display:block;color:var(--warn);font-weight:600}
.olditem{display:block;color:var(--muted);font-size:.78rem}
.dnote>span:not(.ame):not(.echip){white-space:normal}
.itemchg{display:grid;gap:2px;text-align:left}
.viagen{font:600 .64rem/1.5 var(--body);border-radius:999px;padding:0 6px;background:var(--chip);color:var(--muted)}
.dalso{font-size:.72rem;color:var(--muted);white-space:normal;max-width:280px}

/* v1.37.0 K21 Reports: tabs for the main question, one chip row, tiles, one main action, pins. Motion is short and answers a tap. */
@keyframes repRiseA{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes repRiseB{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes repPop{from{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}
@keyframes repSheet{from{transform:translateY(100%)}to{transform:none}}
.rep{display:grid;gap:14px}
.rin{display:flex;flex-direction:column;gap:14px;min-width:0}
.rhead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.rh1{font-family:var(--display);font-size:1.5rem;letter-spacing:-.02em}
.rh1.small{font-size:1.1rem}
.rtopics{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.rtopic,.rpin,.rcard{font:inherit;text-align:left;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:16px;cursor:pointer;transition:transform .15s ease,border-color .15s ease}
.rtopic{padding:16px;display:flex;flex-direction:column;gap:4px;min-height:92px}
.rtopic b{font-size:.98rem}
.rtopic span{font-size:.8rem;color:var(--muted)}
.rtopic:hover,.rpin:hover,.rcard:hover{transform:translateY(-2px);border-color:var(--accent)}
.rtopic:active,.rpin:active,.rcard:active{transform:scale(.98)}
.rpins{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.rpin{padding:16px 18px;display:flex;flex-direction:column;gap:4px;min-height:118px}
.rpl{font-size:.78rem;color:var(--muted)}
.rpv{font-family:var(--display);font-size:2rem;line-height:1.1;font-variant-numeric:tabular-nums}
.rps{font-size:.82rem}
.rpst{font-size:.72rem;color:var(--warn)}
.homepins:empty{display:none}
.homepins{display:grid;gap:10px}
.rask{gap:10px}
.raskrow{display:flex;gap:8px;flex-wrap:wrap}
.raskrow input{flex:1 1 260px;min-width:0;border-radius:999px;padding:10px 16px}
.raskres{display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:var(--bg);border-radius:12px;padding:10px 14px;animation:repPop .18s ease both}
.repdl summary{cursor:pointer;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.repdl table{margin-top:8px}
.rtop{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.rback{font:inherit;font-size:.85rem;color:var(--ink);background:transparent;border:1px solid var(--line);border-radius:999px;padding:7px 14px 7px 10px;display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.rasof{font-size:.78rem;color:var(--muted);display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border-radius:999px;background:var(--surface);border:1px solid var(--line)}
.rasof i{width:7px;height:7px;border-radius:50%;background:var(--good)}
.rasof.stale{color:var(--warn);background:var(--warn-soft);border-color:var(--warn)}
.rasof.stale i{background:var(--warn)}
.rtitle{font-family:var(--display);font-size:2rem;letter-spacing:-.02em;line-height:1.1}
.rtabs{display:flex;gap:2px;overflow-x:auto;border-bottom:1px solid var(--line);scrollbar-width:none}
.rtabs::-webkit-scrollbar{display:none}
.rtabs button{font:inherit;font-size:.95rem;font-weight:600;white-space:nowrap;color:var(--muted);background:transparent;border:0;border-bottom:3px solid transparent;margin-bottom:-1px;padding:10px 14px 12px;cursor:pointer;transition:color .15s ease,border-color .15s ease}
.rtabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent)}
.rtabs button:hover{color:var(--ink)}
.rchips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;position:relative;z-index:6}
.rpopw{position:relative;display:inline-block}
.rchip,.rtog{font:inherit;font-size:.85rem;font-weight:600;display:inline-flex;align-items:center;gap:7px;white-space:nowrap;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:8px 14px;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}
.rchip[aria-expanded="true"]{border-color:var(--accent)}
.rchip.on,.rtog.on{color:var(--accent);background:var(--accent-soft);border-color:var(--accent)}
.rchip.locked{cursor:default}
.rseg{display:inline-flex;align-items:center;gap:2px;padding:3px;background:var(--surface);border:1px solid var(--line);border-radius:999px;color:var(--muted)}
.rseg svg{margin:0 4px 0 8px}
.rseg button{font:inherit;font-size:.82rem;font-weight:600;white-space:nowrap;color:var(--ink);background:transparent;border:0;border-radius:999px;padding:6px 13px;cursor:pointer;transition:background-color .15s ease,color .15s ease}
.rseg button[aria-pressed="true"]{background:var(--accent);color:#1a0c06}
.rsw{position:relative;display:inline-block;width:30px;height:18px;border-radius:999px;background:var(--line);transition:background-color .15s ease}
.rsw span{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--surface);transition:left .15s cubic-bezier(.2,.8,.2,1)}
.rsw.on{background:var(--good)}
.rsw.on span{left:14px}
.rreset{font:inherit;font-size:.85rem;color:var(--muted);background:transparent;border:0;padding:8px 6px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.rpop{position:absolute;left:0;top:calc(100% + 8px);min-width:240px;max-width:320px;max-height:60vh;overflow-y:auto;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:6px;display:flex;flex-direction:column;gap:2px;box-shadow:0 18px 40px rgba(0,0,0,.35);z-index:40;animation:repPop .18s cubic-bezier(.2,.8,.2,1) both}
.rpop[hidden]{display:none}
.rpop.right{left:auto;right:0}
.rsheet-h{display:none}
.rgrp{font-size:.72rem;font-weight:600;color:var(--muted);padding:8px 10px 2px}
.ropt{font:inherit;text-align:left;display:flex;justify-content:space-between;align-items:center;gap:12px;color:var(--ink);background:transparent;border:0;border-radius:10px;padding:9px 12px;cursor:pointer;text-decoration:none;white-space:nowrap}
.ropt:hover{background:var(--chip)}
.ropt.sel{color:var(--accent);background:var(--accent-soft);font-weight:600}
.rscrim{position:fixed;inset:0;z-index:5;background:transparent}
.rscrim[hidden]{display:none}
.rres{display:flex;flex-direction:column;gap:14px;min-width:0}
.rres.in-a{animation:repRiseA .34s cubic-bezier(.2,.8,.2,1) both}
.rres.in-b{animation:repRiseB .34s cubic-bezier(.2,.8,.2,1) both}
.rtiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}
.rtile{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:2px;min-width:0}
.rtl{font-size:.78rem;color:var(--muted)}
.rtv{font-family:var(--display);font-size:1.75rem;line-height:1.2;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.rtv.txt{font-size:1.15rem;line-height:1.3}
.rtv small{font-family:var(--body);font-size:.8rem;color:var(--muted)}
.rts{font-size:.78rem;color:var(--muted)}
.rep .tone-bad,.homepins .tone-bad{color:var(--bad)}.rep .tone-warn,.homepins .tone-warn{color:var(--warn)}.rep .tone-good,.homepins .tone-good{color:var(--good)}.rep .tone-sib,.homepins .tone-sib{color:var(--sib)}
.rbody{gap:12px}
.rbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.rshort{font-size:.98rem;max-width:680px}
.racts{display:flex;align-items:center;gap:8px;position:relative;z-index:6}
.rprim{display:inline-flex;align-items:center;gap:8px;text-decoration:none}
.rstar{font:inherit;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;cursor:pointer;color:var(--muted);background:var(--surface);border:1px solid var(--line);transition:color .15s ease,background-color .15s ease,border-color .15s ease,transform .12s ease}
.rstar svg{fill:none}
.rstar.on{color:var(--warn);background:var(--warn-soft);border-color:var(--warn)}
.rstar.on svg{fill:currentColor}
.rstar:active{transform:scale(.92)}
.rcov{font-size:.8rem;color:var(--sib);background:var(--sib-soft);border-radius:10px;padding:6px 10px;align-self:flex-start}
.rempty{color:var(--muted);padding:14px 0}
.rcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.rcard{padding:16px;display:flex;flex-direction:column;gap:10px;background:var(--bg)}
.rch{display:flex;justify-content:space-between;align-items:center;gap:8px}
.rco{font-size:.7rem;font-weight:600;border-radius:999px;padding:2px 8px}
.rco.hnb{color:var(--sib);background:var(--sib-soft)}
.rco.sos{color:var(--good);background:var(--good-soft)}
.rcn{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;font-size:.82rem;color:var(--muted)}
.rcv{font-family:var(--display);font-size:1.7rem;line-height:1;color:var(--ink)}
.rcg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;font-size:.78rem}
.rcg span{display:flex;flex-direction:column}
.rcg i{font-style:normal;color:var(--muted)}
.rbarm{height:6px;border-radius:999px;background:var(--line);overflow:hidden}
.rbarm span{display:block;height:100%;background:var(--sib);border-radius:999px;transition:width .4s ease}
.tt.good{color:var(--good)}.tt.warn{color:var(--warn)}.tt.bad{color:var(--bad)}.tt.sib{color:var(--sib)}
.aqt td{vertical-align:top}
.aqdone{opacity:.5}
.aqo{display:block;margin-top:3px}
@media (max-width:640px){
  .rtitle{font-size:1.6rem}
  .rchips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:-2px;padding:2px}
  .rchips>*{flex-shrink:0}
  .rchips,.racts{z-index:auto}
  .rtiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rtile{padding:12px 14px}
  .rchips::-webkit-scrollbar{display:none}
  .rpopw{position:static}
  .rpop,.rpop.right{position:fixed;left:0;right:0;top:auto;bottom:0;z-index:1001;max-width:none;max-height:75vh;border-radius:22px 22px 0 0;padding:10px 12px calc(20px + env(safe-area-inset-bottom));animation:repSheet .26s cubic-bezier(.2,.8,.2,1) both}
  .rpop::before{content:"";align-self:center;width:40px;height:5px;border-radius:999px;background:var(--line);margin-bottom:6px}
  .rsheet-h{display:block;font-family:var(--display);font-size:1.1rem;padding:0 6px 6px}
  .ropt{padding:13px 12px;font-size:1rem;white-space:normal}
  .rscrim{background:rgba(5,9,18,.55);z-index:1000}
  .rbar{flex-direction:column;align-items:stretch}
  .racts{justify-content:flex-start}
  .rtv{font-size:1.5rem}
}
@media (prefers-reduced-motion:reduce){
  .rres.in-a,.rres.in-b,.rpop,.raskres{animation:none}
  .rtopic,.rpin,.rcard,.rchip,.rtog,.rseg button,.rtabs button,.rsw,.rsw span,.rstar{transition:none}
  .rtopic:hover,.rpin:hover,.rcard:hover{transform:none}
}

/* v1.38.0 K22 Home "All sales": the channel ring draws in once on entering Home; hover / press / month answer the user */
@keyframes ringDraw{from{stroke-dashoffset:754}to{stroke-dashoffset:0}}
@keyframes ringFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.aring{gap:14px}
.aring-in{display:grid;grid-template-columns:minmax(260px,330px) minmax(0,1fr);gap:32px;align-items:center}
.aring-chart{position:relative;width:100%;max-width:330px;aspect-ratio:1;margin-inline:auto}
.aring-chart svg{width:100%;height:100%;display:block;overflow:visible}
.aring .rmask{stroke-dashoffset:0}
.aring.draw .rmask{animation:ringDraw 1.1s cubic-bezier(.65,0,.35,1) .1s both}
.aring.draw .aring-ctr,.aring.draw .aring-side{animation:ringFade .45s ease .5s both}
.aring .seg{transition:stroke-dasharray .55s cubic-bezier(.2,.8,.2,1),stroke-dashoffset .55s cubic-bezier(.2,.8,.2,1),stroke-width .15s ease,opacity .15s ease}
.aring .wedge{opacity:0;transform:scale(.2);transform-origin:160px 160px;transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .15s ease;pointer-events:none}
.aring .wedge.on{opacity:.3;transform:scale(1)}
.aring .rh circle{cursor:pointer;outline:none}
.aring .rlab{fill:#fff;font:700 15px var(--body);pointer-events:none;paint-order:stroke;stroke:rgba(0,0,0,.35);stroke-width:3px}
.aring-ctr{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;text-align:center;pointer-events:none;padding:26%}
.aring-ctr .m2{font-size:.72rem;color:var(--muted)}
.aring-ctr .l{font-size:.78rem;color:var(--muted)}
.aring-ctr .v{font-family:var(--display);font-size:2rem;line-height:1.1;font-variant-numeric:tabular-nums}
.aring-ctr .s{font-size:.76rem;color:var(--muted)}
.aring-ctr .s.up,.arow .c.up,.orow .oc.up{color:var(--good)}
.aring-ctr .s.down,.arow .c.down,.orow .oc.down{color:var(--bad)}
.aring-side{display:flex;flex-direction:column;gap:14px;min-width:0}
.aring-rows{display:flex;flex-direction:column;gap:2px}
.arow{font:inherit;color:var(--ink);display:grid;grid-template-columns:12px minmax(0,1fr) 84px 48px 80px 92px;align-items:center;gap:12px;padding:9px 12px;border-radius:12px;border:1px solid transparent;background:transparent;cursor:pointer;text-align:left;transition:background-color .15s ease,opacity .15s ease,border-color .15s ease}
.arow i{width:12px;height:12px;border-radius:4px}
.arow .n{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arow .v,.arow .p{text-align:right}
.arow .p{color:var(--muted)}
.arow .c,.arow .m{font-size:.78rem;text-align:right;color:var(--muted)}
.arow.on{background:var(--chip)}
.arow[aria-pressed="true"]{border-color:var(--accent)}
.arow.dim{opacity:.5}
.aring-mon{display:grid;grid-template-columns:repeat(auto-fit,minmax(64px,1fr));gap:8px;border-top:1px solid var(--line);padding-top:12px}
.amon{font:inherit;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border-radius:12px;border:1px solid var(--line);background:transparent;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease}
.amon .bw{height:44px;display:flex;align-items:flex-end}
.amon .bb{display:block;width:18px;border-radius:4px 4px 0 0;background:var(--line);transition:background-color .15s ease}
.amon small{font-size:.68rem}
.amon[aria-pressed="true"]{color:var(--ink);border-color:var(--accent);background:var(--accent-soft)}
.amon[aria-pressed="true"] .bb{background:var(--accent)}
.amon:active,.arow:active,.orow:active{transform:scale(.98)}
.paybar{display:flex;height:12px;border-radius:999px;overflow:hidden;gap:2px;background:var(--surface)}
.paybar span{display:block;height:100%}
.paylist{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:6px 14px;font-size:.82rem;color:var(--muted);margin-top:10px}
.paylist span{display:flex;align-items:center;gap:7px}
.paylist i{width:10px;height:10px;border-radius:3px;flex-shrink:0}
.paylist b{color:var(--ink);margin-left:auto;font-variant-numeric:tabular-nums}
.pb0{background:#3987e5}.pb1{background:#d95926}.pb2{background:#199e70}.pb3{background:#c98500}.pb4{background:#d55181}
.orank{display:flex;flex-direction:column;gap:2px}
.orow{font:inherit;color:var(--ink);display:grid;grid-template-columns:90px minmax(0,1fr) 72px 64px 44px;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;border:0;background:transparent;cursor:pointer;text-align:left;transition:background-color .15s ease}
.orow:hover{background:var(--chip)}
.orow .on{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.orow .ob{height:8px;border-radius:999px;background:var(--chip);overflow:hidden}
.orow .ob span{display:block;height:100%;background:var(--accent);border-radius:999px}
.orow .ov{text-align:right}
.orow .oc{font-size:.78rem;text-align:right;color:var(--muted)}
.orow .om{font-size:.78rem;text-align:right;color:var(--muted)}
.aglance{gap:14px}
.agrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;text-align:center}
.agrid b{display:block;font-family:var(--display);font-size:1.6rem;line-height:1.2}
.agrid b.bad{color:var(--bad)}.agrid b.warn{color:var(--warn)}
.agrid span{font-size:.78rem;color:var(--muted)}
.aglance .btn{align-self:flex-start}
@media (max-width:760px){
  .aring-in{grid-template-columns:1fr;gap:18px}
  .aring-chart{max-width:300px}
  .arow{grid-template-columns:12px minmax(0,1fr) 70px 40px 66px;gap:8px}
  .arow .m{display:none}
  .orow{grid-template-columns:70px minmax(0,1fr) 62px 56px;gap:8px}
  .orow .om{display:none}
  .aring-mon{grid-template-columns:repeat(6,minmax(0,1fr));gap:4px}
  .amon{padding:6px 2px;border-radius:10px}
  .amon .bw{height:30px}
  .amon .bb{width:12px}
  .amon small{font-size:.6rem;letter-spacing:-.02em}
}
@media (prefers-reduced-motion:reduce){
  .aring.draw .rmask,.aring.draw .aring-ctr,.aring.draw .aring-side{animation:none}
  .aring .seg,.aring .wedge,.arow,.amon,.orow{transition:none}
}

/* ---------- v1.39.0 K24 Home option A "Command center" ---------- */
.hb-top{gap:10px}
.hb-sw{display:inline-flex;padding:3px;gap:2px;border:1px solid var(--line);border-radius:999px;background:var(--surface)}
.hb-row .hb-sw button{border:0;background:transparent;padding:6px 16px;font-size:.86rem}
.hb-row .hb-sw button[aria-pressed="true"]{background:var(--accent);color:#1a0c06}
.hb-sep{width:1px;height:24px;background:var(--line)}
.hb-outs{display:inline-flex;gap:6px;flex-wrap:wrap}
.hb-pers{gap:4px}
.hb-row .hb-p{background:transparent;border-color:transparent;color:var(--muted)}
.hb-row .hb-p:hover{color:var(--ink);background:var(--chip)}
.hb-row .hb-p[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.hb-row .hb-per{background:transparent;color:var(--muted)}
.kpis.homek{grid-template-columns:minmax(0,1.35fr) repeat(3,minmax(0,1fr));gap:10px}
.kpis.homek .kpi{padding:12px 14px;border-radius:14px}
.kpis.homek .kpi .val{font-size:1.55rem}
.kpis.homek .kpi.hero .val{font-size:2.3rem;line-height:1.1}
.kpis.homek .kpi .label{font-size:.72rem}
.hminor{display:flex;flex-wrap:wrap;gap:6px 22px;padding:2px 4px;font-size:.84rem;color:var(--muted)}
.hminor .hm{display:inline-flex;align-items:baseline;gap:6px;font:inherit;color:inherit;background:none;border:0;padding:0}
button.hm{cursor:pointer}button.hm:hover b{text-decoration:underline}
.hminor b{color:var(--ink)}.hminor b.bad{color:var(--bad)}
.hminor .up{color:var(--good)}.hminor .down{color:var(--bad)}
.fixtag{display:inline-block;font-size:.7rem;font-weight:700;color:var(--warn);background:var(--warn-soft);border-radius:999px;padding:1px 8px;margin-right:6px;white-space:nowrap}
.mline{width:100%;height:auto;display:block}
.mline .g{stroke:var(--line);stroke-width:1}
.mline .ax{fill:var(--muted);font-size:11px;font-family:var(--mono)}
.mline .cv{fill:none;stroke:#3987e5;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round}
.mline .pv{fill:none;stroke:var(--muted);stroke-width:1.8;stroke-dasharray:5 5}
.mline .dot{fill:#3987e5;stroke:var(--surface);stroke-width:2}
.mline .tip{fill:var(--ink);font-size:12px;font-weight:700}
.key.cv{height:3px;background:#3987e5;vertical-align:3px}.key.pv{height:0;border-top:2px dashed var(--muted);vertical-align:3px}
.paylist small{color:var(--muted)}
.paylist{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.paylist span{white-space:normal}
.hdeep{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:0}
.hdeep > summary{cursor:pointer;list-style:none;display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;padding:12px 16px}
.hdeep > summary::-webkit-details-marker{display:none}
.hdeep > summary::before{content:"▸";color:var(--muted)}
.hdeep[open] > summary::before{content:"▾"}
.hdeep[open]{display:grid;gap:14px;padding-bottom:14px}
.hdeep > .panel{margin:0 12px}
@media (max-width:720px){
  .hb-top{flex-wrap:wrap}
  .hb-sw{width:100%;display:grid;grid-template-columns:1fr 1fr}
  .hb-sep{display:none}
  .hb-outs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;max-width:100%}
  .hb-pers{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  .kpis.homek{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .kpis.homek .kpi.hero{grid-column:1 / -1}
  .kpis.homek .kpi .val{font-size:1.25rem}
  .kpis.homek .kpi.hero .val{font-size:1.9rem}
  .hminor{gap:4px 16px;font-size:.8rem}
  .hdeep > .panel{margin:0 6px}
}

/* ---------- v1.39.0 K25 wide screens: tables read across, small tables fit and sit in pairs ---------- */
.wrap{max-width:min(100%,1600px)}
/* low weight (:where) so row colours set elsewhere (warnings, picked, bands) still win */
:where(.panel.wide8 .tablebox) :where(tbody tr:nth-child(even)) > td{background:color-mix(in srgb, var(--chip) 45%, transparent)}   /* v1.40.0 K26 stripes only on 8+ columns */
:where(.tablebox, table.compact) :where(tbody tr:hover) > td{background:color-mix(in srgb, var(--accent) 12%, var(--surface))}
@media (min-width:701px){
  :where(.tablebox > table:not(.frzt)) :where(thead th:first-child:not(.frz), tbody td:first-child:not(.frz)){position:sticky;left:0;z-index:1;background:var(--surface)}
  :where(.panel.wide8 .tablebox > table:not(.frzt)) :where(tbody tr:nth-child(even) > td:first-child:not(.frz)){background:color-mix(in srgb, var(--chip) 45%, var(--surface))}
  :where(.tablebox > table:not(.frzt)) :where(tbody tr:hover > td:first-child:not(.frz)){background:color-mix(in srgb, var(--accent) 12%, var(--surface))}
}
@media (min-width:1100px){
  .panel.slim .tablebox > table{width:auto;min-width:min(100%,480px)}
  .tpair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
  .tpair > .panel{min-width:0}
  .tpair > .panel.slim .tablebox > table{width:100%}
}
.emptycols{font-size:.74rem;color:var(--muted);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.emptycols button{font:inherit;color:var(--accent);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline}
/* Product 360: three boxes on top, small tables in pairs when there is room (the panel, not the screen, decides) */
.p360{container-type:inline-size}
.ptop{display:grid;gap:12px}
.pbox{display:grid;gap:8px;align-content:start;min-width:0}
.pbox > h4{margin:0;font-family:var(--display);font-size:.86rem;color:var(--muted);font-weight:600}
.pchart .chartbox{margin-top:4px}
.ppair{display:grid;gap:16px}
.pcol{display:grid;gap:16px;align-content:start;min-width:0}
@container (min-width:1000px){
  .ptop{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr) minmax(0,.8fr);align-items:stretch}
  .pbox{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
  .pbox .ptiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .pbox:last-child .ptiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pbox .ptiles .t{padding:7px 9px}
  .pbox .ptiles .v{font-size:1.15rem}
  .pbox .ptiles .k{font-size:.62rem}
  .ppair{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
  .ppair .psec{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
  .ppair .psec table{width:100%}
}
/* Explore: the table builder on the left, the grid sized to its content */
.xsub{display:block;font-size:.72rem;color:var(--muted);font-weight:400}
.xgrid{display:grid;gap:14px;min-width:0}
@media (min-width:1280px){
  .xgrid{grid-template-columns:290px minmax(0,1fr);align-items:start}
  .xgrid > .panel:first-child .frow{flex-direction:column;align-items:stretch}
  .xgrid > .panel:first-child .frow label,.xgrid > .panel:first-child .frow select{width:100%}
  .xgrid > .panel:first-child .panel-head{flex-direction:column;align-items:flex-start}
  table.pivot.fitp{width:auto;min-width:min(100%,640px)}
  table.pivot.fitp td.heat,table.pivot.fitp th.r{min-width:64px}
}
/* Reports: topics five a row on a wide screen; downloads grouped by tab */
@media (min-width:1280px){.rtopics{grid-template-columns:repeat(5,minmax(0,1fr))}}
.dlgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:16px;margin-top:10px}
.dlg{display:grid;gap:5px;align-content:start}
.dlg > b{font-size:.84rem}
.dlr{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 8px;border-radius:8px;background:color-mix(in srgb, var(--chip) 45%, transparent);font-size:.84rem}
.dlb{display:inline-flex;gap:4px;flex-shrink:0}
@media (max-width:720px){.kpis.homek .kpi:last-child:nth-child(even){grid-column:1 / -1}}
@media (min-width:1280px){.xgrid > .panel:first-child .frow .btn{align-self:flex-start}}

/* v1.40.0 K29 pack size in Item match */
.packok{font-family:var(--mono);font-size:.78rem;color:var(--good);white-space:nowrap}
.packsug{font-family:var(--mono);font-size:.78rem;color:var(--warn);white-space:nowrap}

/* ---------- v1.40.0 K26-K28 table standards ---------- */
/* density: Compact 32 / Default 40 / Comfortable 52 px rows; table text 13 px */
table{letter-spacing:-.01em}
:root[data-density="c"] .tablebox td{padding-top:5px;padding-bottom:5px}
:root[data-density="d"] .tablebox td{padding-top:9px;padding-bottom:9px}
:root[data-density="f"] .tablebox td{padding-top:15px;padding-bottom:15px}
select.dens{max-width:150px}
/* a missing value is a dash, not a blank */
td .dash{color:var(--muted)}
/* wide tables: one line per row, long text cut with "…" (full text on hover); numbers never cut */
.panel.wide8 .tablebox td{white-space:nowrap}
.panel.wide8 .tablebox td:not(.r):not(.act):not(.frz):not(.dothis):not(.c-tog){max-width:300px;overflow:hidden;text-overflow:ellipsis}
/* row buttons show on hover / keyboard focus; touch screens keep them */
@media (hover:hover) and (min-width:721px){
  .tablebox td.act:not(.dothis) .acts,.tablebox td.act:not(.dothis) > .btn{opacity:0;transition:opacity .08s ease}
  .tablebox tr:hover td.act:not(.dothis) .acts,.tablebox tr:focus-within td.act:not(.dothis) .acts,
  .tablebox tr:hover td.act:not(.dothis) > .btn,.tablebox tr:focus-within td.act:not(.dothis) > .btn{opacity:1}
}
/* the "More" toggle only exists in card mode */
td.c-tog{display:none}
.ctog{font:inherit;font-size:.74rem;color:var(--accent);background:none;border:0;padding:2px 0;cursor:pointer}
/* K28 the table decides: narrower than 700 px (its own box, also in a drawer or a half-width pair) = cards */
[data-table]{container:tbl / inline-size}
@container tbl (max-width:700px){
  [data-table] .tablebox{overflow:visible}
  [data-table] table, [data-table] tbody{display:block}
  [data-table] thead{display:none}
  [data-table] tbody tr{display:grid;grid-template-columns:1fr 1fr;gap:2px 12px;padding:8px 2px;border-bottom:1px solid var(--line)}
  [data-table] tbody tr:last-child{border-bottom:0}
  [data-table] td{display:flex;justify-content:space-between;gap:6px;border:0;padding:1px 0;min-width:0;font-size:.82rem;text-align:right;align-items:baseline;position:static;max-width:none;white-space:normal}
  [data-table] td::before{content:attr(data-label);color:var(--muted);font-size:.68rem;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--body)}
  [data-table] td:first-child{grid-column:1/-1;display:block;text-align:left;font-weight:600;font-size:.88rem;min-width:0}
  [data-table] td:first-child::before{content:none}
  [data-table] td.empty{display:none}
  [data-table] td .mchip,[data-table] td .pill{align-self:center;flex:0 0 auto}
  [data-table] td.act{grid-column:1/-1;justify-content:flex-end}
  [data-table] td.act::before{content:none}
  [data-table] td[colspan]{grid-column:1/-1}

  [data-table].cards2 tbody tr{grid-template-columns:minmax(0,1fr) fit-content(48%);grid-template-areas:"name val" "state fact"}
  [data-table].cards2 td.c-name{grid-area:name;grid-column:auto}
  [data-table].cards2 td.c-val{grid-area:val;justify-content:flex-end;font-weight:600;font-size:.9rem}
  [data-table].cards2 td.c-state::before{content:none}
  [data-table].cards2 td.c-val::before{font-size:.64rem;font-weight:400}
  [data-table] tbody tr > td{background:none!important;padding-top:1px!important;padding-bottom:1px!important}
  :root[data-density="c"] [data-table] tbody tr{padding:5px 2px}
  :root[data-density="f"] [data-table] tbody tr{padding:12px 2px}
  [data-table].cards2 td.c-state{grid-area:state;justify-content:flex-start;text-align:left}
  [data-table].cards2 td.c-fact{grid-area:fact;justify-content:flex-end;gap:6px}
  [data-table].cards2 td.c-fact::before{font-size:.66rem}
  [data-table].cards2 td.c-more{display:none;grid-column:1/-1}
  [data-table].cards2 tr.copen td.c-more{display:flex}
  [data-table].cards2 tr.copen td.c-more.empty{display:flex}
  [data-table].cards2 td.c-tog{grid-column:1/-1;display:flex;justify-content:flex-end;padding:0}
  [data-table].cards2 td.c-tog::before{content:none}
  [data-table].cards2 td.act{grid-column:1/-1}
  [data-table] td.c-val.empty,[data-table] td.c-state.empty,[data-table] td.c-fact.empty{display:flex}
}
@media (max-width:720px){
  [data-table].cards2 tbody tr{grid-template-columns:minmax(0,1fr) fit-content(48%);grid-template-areas:"name val" "state fact"}
  [data-table].cards2 td.c-name{grid-area:name;grid-column:auto}
  [data-table].cards2 td.c-val{grid-area:val;justify-content:flex-end;font-weight:600;font-size:.9rem}
  [data-table].cards2 td.c-state::before{content:none}
  [data-table].cards2 td.c-val::before{font-size:.64rem;font-weight:400}
  [data-table] tbody tr > td{background:none!important;padding-top:1px!important;padding-bottom:1px!important}
  :root[data-density="c"] [data-table] tbody tr{padding:5px 2px}
  :root[data-density="f"] [data-table] tbody tr{padding:12px 2px}
  [data-table].cards2 td.c-state{grid-area:state;justify-content:flex-start;text-align:left}
  [data-table].cards2 td.c-fact{grid-area:fact;justify-content:flex-end;gap:6px}
  [data-table].cards2 td.c-fact::before{font-size:.66rem}
  [data-table].cards2 td.c-more{display:none;grid-column:1/-1}
  [data-table].cards2 tr.copen td.c-more{display:flex}
  [data-table].cards2 tr.copen td.c-more.empty{display:flex}
  [data-table].cards2 td.c-tog{grid-column:1/-1;display:flex;justify-content:flex-end;padding:0}
  [data-table].cards2 td.c-tog::before{content:none}
  [data-table].cards2 td.act{grid-column:1/-1}
  [data-table] td.c-val.empty,[data-table] td.c-state.empty,[data-table] td.c-fact.empty{display:flex}
}

/* v1.40.0 K28 undo toast: the count runs down from 10 */
.undotoast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:90;display:flex;align-items:center;gap:12px;
  background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:10px 14px;box-shadow:0 12px 30px rgba(0,0,0,.35);font-size:.86rem;max-width:calc(100vw - 32px)}
.undotoast .ut-n{font-family:var(--mono);width:26px;height:26px;border-radius:50%;border:2px solid var(--accent);display:grid;place-items:center;font-size:.76rem;flex:0 0 auto}

/* v1.40.0 a summary or chart beside a table, and the filter bar on one line, on a wide screen */
.xside{display:grid;gap:14px;min-width:0}
.xsum{display:grid;gap:10px;align-content:start}
.xbig{display:flex;align-items:baseline;gap:8px}.xbig b{font-family:var(--display);font-size:1.9rem}.xbig span{color:var(--muted)}
.xsum .btn{justify-self:start}
.xbar{display:grid;grid-template-columns:minmax(0,1fr) 90px 44px;gap:8px;align-items:center;font-size:.8rem}
.xbar > span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.xb{height:8px;border-radius:999px;background:var(--chip);overflow:hidden}.xb span{display:block;height:100%;background:var(--accent);border-radius:999px}
.xbar b{text-align:right}
@media (min-width:1280px){
  .xside{grid-template-columns:minmax(0,1fr) 380px;align-items:start}
  .filterbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 18px}
  .filterbar > .frow{margin:0}
  .filterbar > .trustrow{flex-wrap:nowrap;align-items:flex-end}
  .filterbar > .fchips{flex-basis:100%}
}

/* v1.41.0 K32 prescription window: one task at a time (add -> check one card per line -> what to do) */
.rxwin{container:rxw / inline-size}
.rxwin .rxlead{margin:4px 0 12px;font-weight:700;font-size:1.05rem}
.rxwin .rxpick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.rxch{display:grid;grid-template-columns:24px 1fr;column-gap:12px;row-gap:2px;align-items:center;text-align:left;font:inherit;color:var(--ink);
  background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;cursor:pointer;min-height:64px;transition:background-color .12s,border-color .12s}
.rxch:hover,.rxch:focus-visible{border-color:var(--accent);background:var(--chip)}
.rxch .rxchi{grid-row:span 2;color:var(--accent)}
.rxch b{font-size:1rem}.rxch span{font-size:.8rem;color:var(--muted)}
.rxwin[data-step="check"] .rxstart{display:none}
.rxwin[data-step="start"] .rxbody,.rxwin[data-step="start"] .rxbar{display:none}
.rxbody{display:grid;gap:12px}
.rxwin:not(.hasphoto) .rxleft{display:none}
.rxwin #rxup{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border:1px solid var(--line);border-radius:12px;padding:8px 12px;background:var(--surface);color:var(--ink)}
.rxwin #rxup .rxthumb{max-height:56px;margin:0;cursor:zoom-in}
.rxwin #rxstate{flex:1;min-width:180px}
.rxok{color:var(--good)}
.rxtap{display:block;margin-top:2px}
.rxhint{margin:0 0 8px}
.rxwin:not(.hasphoto) .rxhint{display:none}
.rxcards{display:grid;gap:8px}
.rxwin.astext .rxcards{display:none}
.rxwin:not(.astext) #rxtext{display:none}
.rxc{display:grid;grid-template-columns:28px minmax(0,1fr) auto auto;gap:8px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:10px 8px 10px 12px;background:var(--surface)}
.rxc.doubt{border-color:color-mix(in srgb,var(--warn) 55%,var(--line))}
.rxn{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--chip);font-size:.8rem;font-weight:700;color:var(--muted)}
.rxct{min-width:0;display:grid;gap:2px}.rxct b{overflow-wrap:anywhere}
.rxct .s{font-size:.8rem;color:var(--muted)}
.rxwarn{color:var(--warn);font-weight:700}
.rxwarn::before{content:"! "}
.rxc .ibtn{width:40px;height:40px;border-radius:10px;border:1px solid transparent;background:none;color:var(--muted);font-size:1rem;cursor:pointer}
.rxc .ibtn:hover,.rxc .ibtn:focus-visible{border-color:var(--line);color:var(--ink)}
.rxin{width:100%;font:inherit;padding:8px 10px;border:1px solid var(--accent);border-radius:8px;background:var(--bg);color:var(--ink)}
.rxlt{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.rxlt .ghost{background:none;border-color:transparent;color:var(--muted)}
.rxbar{display:flex;gap:8px;margin-top:12px}
.rxbar #rxgo{flex:1}
.rxbar #rxgo:disabled{opacity:.5;cursor:default}
.rxsum{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 12px}
.rxs{display:inline-flex;align-items:baseline;gap:6px;border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:.85rem;color:var(--muted)}
.rxs b{font-size:1rem;color:var(--ink)}
.rxs.good b{color:var(--good)}.rxs.warn b{color:var(--warn)}.rxs.bad b{color:var(--bad)}
.rxr{display:grid !important;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:12px !important;border-radius:12px !important}
.rxask{font-size:.8rem;color:var(--muted);overflow-wrap:anywhere}
.rxprod{margin-top:2px}.rxprod b{font-size:1rem}
.rxdo{font-size:.85rem;margin-top:4px}
.rxrs{display:grid;justify-items:end;align-content:start;gap:6px;text-align:right}
.rxhere{font-size:.8rem;color:var(--muted)}.rxhere b{font-size:1.05rem;color:var(--ink)}
.rxmore{margin-top:6px}.rxmore summary{cursor:pointer;color:var(--muted);font-size:.85rem;list-style:none}
.rxmore summary::-webkit-details-marker{display:none}
.rxmore[open] summary{margin-bottom:4px}
.rxend{display:flex;gap:8px;margin-top:12px}.rxend .btn{flex:1}
@media (max-width:720px){
  .rxwin .rxpick{grid-template-columns:minmax(0,1fr)}
  .rxwin .rxbar{position:sticky;bottom:calc(60px + env(safe-area-inset-bottom,0px));z-index:5;background:var(--surface);margin:12px -12px 0;padding:10px 84px 10px 12px;border-top:1px solid var(--line)}
  .rxwin .rxbar .btn{min-height:52px}
  .rxr .pill.lg{font-size:.8rem}
}
@container rxw (min-width:880px){
  .rxwin.hasphoto .rxbody{grid-template-columns:minmax(280px,38%) minmax(0,1fr);align-items:start}
  .rxwin.hasphoto #rxup{flex-direction:column;align-items:stretch;position:sticky;top:12px}
  .rxwin.hasphoto #rxup .rxthumb,.rxwin.hasphoto #rxup .rxscan{max-height:none;width:100%}
  .rxwin.hasphoto #rxup .rxscan .rxthumb{max-height:min(52vh,480px);object-fit:contain;background:var(--bg)}
  .rxbar #rxgo{flex:0 1 auto;min-width:260px}.rxend .btn{flex:0 1 auto;min-width:180px}
  .rxwin .rxpick{grid-template-columns:repeat(4,minmax(0,1fr))}
  .rxl{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* v1.41.1 K35 tabs: PC keeps the text pills; on the phone each tab is an icon and the open one grows into a pill with its name */
nav.roles .ti{display:none}
nav.roles .tl{display:inline}
@media (max-width:720px){
  html nav.roles{justify-content:space-around;align-items:center;gap:2px;padding:8px 8px calc(8px + env(safe-area-inset-bottom,0px));overflow:visible}
  html nav.roles > button,html nav.roles .moreb{flex:0 1 auto;min-width:46px;height:44px;display:inline-flex;align-items:center;justify-content:center;gap:0;
    padding:0 12px;border:0;border-radius:14px;background:transparent;color:var(--muted);font-size:.84rem;font-weight:700;white-space:nowrap;
    transition:background-color .15s cubic-bezier(.2,.7,.2,1),color .15s cubic-bezier(.2,.7,.2,1),gap .15s cubic-bezier(.2,.7,.2,1)}
  html nav.roles .ti{display:block;flex:none}
  html nav.roles > button .tl,html nav.roles .moreb .tl{display:inline-block;max-width:0;opacity:0;overflow:hidden;text-overflow:ellipsis;
    transition:max-width .15s cubic-bezier(.2,.7,.2,1),opacity .15s ease-out}
  html nav.roles .moreb .tc{display:none}
  html nav.roles > button[aria-selected="true"],html nav.roles .moreb[aria-selected="true"]{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);gap:7px}
  html nav.roles > button[aria-selected="true"] .tl,html nav.roles .moreb[aria-selected="true"] .tl{max-width:118px;opacity:1}
  html nav.roles .more{display:flex}
  html nav.roles .moremenu button{display:flex;align-items:center;gap:10px;padding:11px 12px}
  html nav.roles .moremenu .ti{color:var(--muted)}
}
@media (max-width:720px) and (prefers-reduced-motion:reduce){
  html nav.roles > button,html nav.roles .moreb,html nav.roles .tl{transition:none}
}

/* v1.41.1 K34 compact prescription start: four small tiles in one row; K37 today's look-ups */
.rxwin .rxpick{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.rxwin .rxch{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:0;padding:12px 4px 10px;text-align:center;border-radius:12px}
.rxwin .rxch b{font-size:.85rem}
.rxwin .rxch .rxchi{grid-row:auto}
.rxwin .rxch.main{background:var(--accent);border-color:var(--accent);color:var(--surface)}
.rxwin .rxch.main .rxchi{color:var(--surface)}
.rxwin .rxch.main:hover,.rxwin .rxch.main:focus-visible{background:var(--accent);filter:brightness(1.06)}
.rxwin .rxtip{margin:8px 0 0}
.rxrec{margin-top:16px;display:grid}
.rxrech{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--muted);margin-bottom:6px}
.rxrecr{font:inherit;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;background:var(--surface);color:var(--ink);
  border:1px solid var(--line);border-top-width:0;padding:11px 14px;cursor:pointer;min-height:44px}
.rxrecr:first-of-type{border-top-width:1px;border-radius:12px 12px 0 0}
.rxrecr:last-of-type{border-radius:0 0 12px 12px}
.rxrecr:only-of-type{border-radius:12px}
.rxrecr:hover{background:var(--chip)}
.rxrecn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.rxrecs{flex:none;font-size:.8rem;color:var(--muted)}
.rxrecs.k-here{color:var(--good)}.rxrecs.k-xfer,.rxrecs.k-check{color:var(--warn)}.rxrecs.k-none{color:var(--bad)}
@media (max-width:720px){.rxwin .rxpick{grid-template-columns:repeat(4,minmax(0,1fr))}}
@container rxw (min-width:880px){.rxwin .rxpick,.rxrec{max-width:560px}}

/* v1.43.0 audit #14: technical text folded, long paths wrap inside their card */
.techd{display:inline;color:var(--muted);font-size:.8rem}.techd summary{display:inline;cursor:pointer;text-decoration:underline}
.techd code{display:block;margin-top:4px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.75rem}
.bigstat .bs{min-width:0}.bigstat .v,.bigstat .s{overflow-wrap:anywhere;min-width:0}
/* v1.43.0 audit #15: tile comparisons one step up, in the text font, with an arrow; margin chips say "margin" */
.kpi .delta{font-size:.78rem;font-family:inherit;font-weight:600}
.kpi .chiplab{font-size:.74rem;color:var(--muted)}
@media (max-width:720px){.kpi .delta{font-size:.74rem}}
/* v1.43.0 K46 Owed by customers: total first, search by name, most overdue with ages */
.custtot{margin:2px 0 10px;color:var(--muted)}.custtot b{color:var(--ink);font-size:1.05rem}.custtot b.neg{color:var(--bad)}
.custq{display:grid;gap:4px;max-width:360px;margin-bottom:8px;font-size:.8rem;color:var(--muted)}
.custq input{font:inherit;font-size:16px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink)}
.custtab{width:100%;max-width:900px}.custtab td.warnt{color:var(--warn)}.custtab td.neg{color:var(--bad)}
.custtab tr.click{cursor:pointer}.custtab tr.click:hover,.custtab tr.click:focus-visible{background:var(--chip);outline:none}
.custsel{display:flex;align-items:center;gap:10px;margin-bottom:8px}
@media (max-width:720px){.custtab th:nth-child(3),.custtab td:nth-child(3),.custtab th:nth-child(4),.custtab td:nth-child(4){display:none}}

/* v1.44.0 audit phase 2: Home order, compact pins, section heading */
.homepins .pinrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0 12px}
.homepins .pinl{font-size:.8rem;color:var(--muted)}
.homepins .rpins.home{display:flex;gap:8px;flex-wrap:wrap;margin:0}
.homepins .rpins.home .rpin{display:flex;flex-direction:row;align-items:baseline;gap:8px;padding:6px 14px;border-radius:999px;min-height:36px;width:auto}
.homepins .rpin .rpl{font-size:.8rem;color:var(--muted)}
.homepins .rpin .rpv{font-size:1rem;font-weight:700}
.homepins .rpin .rps{font-size:.78rem}
h2.sect{font-size:1rem;margin:20px 0 8px;color:var(--muted);font-weight:600}
/* v1.44.0 table tools behind one button */
.tools .tmore{position:relative;display:inline-block}
.tools .tmore > summary{list-style:none;cursor:pointer;min-width:36px;text-align:center;font-weight:700;letter-spacing:.08em}
.tools .tmore > summary::-webkit-details-marker{display:none}
.tools .tmore[open] > summary{border-color:var(--accent);color:var(--accent)}
.tools .tmenu{position:absolute;right:0;top:calc(100% + 6px);z-index:45;display:grid;gap:6px;min-width:200px;padding:8px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 28px rgba(0,0,0,.3)}
.tools .tmenu .btn,.tools .tmenu select{width:100%;justify-content:flex-start;text-align:left}
.moved{margin:0 0 10px;font-size:.95rem;color:var(--ink)}
@media (max-width:720px){
  .homebar .hb-outs,.homebar .hb-pers{display:flex;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .homebar .hb-outs::-webkit-scrollbar,.homebar .hb-pers::-webkit-scrollbar{display:none}
  .homebar .hb-outs > *,.homebar .hb-pers > *{flex:none}
}

/* v1.45.0 K38 the highlight slides to the new choice */
.spill{position:absolute;z-index:0;pointer-events:none;transition:left .15s cubic-bezier(.2,.7,.2,1),top .15s cubic-bezier(.2,.7,.2,1),width .15s cubic-bezier(.2,.7,.2,1),height .15s cubic-bezier(.2,.7,.2,1)}
.pill-wait{background:transparent !important;border-color:transparent !important;box-shadow:none !important}
.hb-sw > button,.hb-outs > button,.hb-pers > button,[data-chipset] > button{position:relative;z-index:1}
@media (prefers-reduced-motion:reduce){.spill{display:none}}
/* v1.45.0 K44 j / K45 d: wide rows stay close to their names; phone strips line up */
@media (min-width:1280px){.aring-side{max-width:860px}.home2 + .panel [data-table] table,[data-table="pharmacies"] table{max-width:1240px}}
@media (max-width:720px){
  .hminor{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}
  .hminor .hm{min-width:0}
  .aring-rows .arow .n{white-space:normal;overflow:visible;text-overflow:clip}
}
.attn .attn-row{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;font-size:.86rem;padding:7px 2px;border-bottom:1px solid var(--line);color:var(--ink)}.attn li:last-child .attn-row{border-bottom:0}

/* v1.46.0 K49 */
[aria-disabled="true"][data-why]{opacity:.55;cursor:not-allowed}
.kpis{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
@media (min-width:1280px){.kpis:not(.homek):not(.small){grid-template-columns:repeat(auto-fill,minmax(max(150px,calc((100% - 40px) / 6)),1fr))}}
.bigstat .bs.good,.bigstat .bs.info{border-left-color:var(--line)}
@media (min-width:1280px){.xgrid{grid-template-columns:minmax(260px,3fr) minmax(0,9fr)}}
/* v1.46.0 K52 sales target */
.kpis.homek:has(> .kpi:nth-child(5)){grid-template-columns:minmax(0,1.35fr) repeat(4,minmax(0,1fr))}
@media (max-width:720px){.kpis.homek:has(> .kpi:nth-child(5)){grid-template-columns:repeat(2,minmax(0,1fr))}}
.mline .tg{stroke:var(--warn);stroke-width:1.4;stroke-dasharray:5 4}
.mline .tgl{fill:var(--warn);font-size:10.5px}
/* v1.46.0 K53 busy hours */
.bzgrid{display:grid;grid-template-columns:36px repeat(var(--n),minmax(0,1fr));gap:3px;align-items:center;max-width:980px}
.bzgrid .bz{height:26px;border-radius:5px;background:color-mix(in srgb,var(--accent) calc(var(--a) * 100%),var(--chip));display:grid;place-items:center;font:600 10px var(--mono);color:var(--surface)}
.bzgrid .bzh{font:10px var(--mono);color:var(--muted);text-align:center}.bzgrid .bzd{font-size:.78rem;color:var(--muted)}
@media (max-width:720px){.bzgrid{grid-template-columns:30px repeat(var(--n),minmax(0,1fr));gap:2px}.bzgrid .bz{height:20px;font-size:0}}
/* v1.46.0 K54 top movers */
.movers .panel-head{flex-wrap:wrap}
.movers .mvsw{margin-left:auto}
.mvgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.mvh{font-size:.82rem;margin:0 0 6px;font-weight:600}.mvh.up{color:var(--good)}.mvh.down{color:var(--bad)}
.mvl{list-style:none;margin:0;padding:0;display:grid}
.mvl li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:baseline;padding:7px 2px;border-bottom:1px solid var(--line);font-size:.86rem}
.mvl li:last-child{border-bottom:0}
.mvn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mvn a{color:inherit;text-decoration:none}
.mvv{color:var(--muted);font-size:.8rem}.mvchg{font-size:.8rem;font-weight:600}.mvchg.up{color:var(--good)}.mvchg.down{color:var(--bad)}
@media (max-width:720px){.mvgrid{grid-template-columns:1fr}}
.movers .mvsw,.peak .pksw{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:999px;background:var(--bg)}
.movers .mvsw button,.peak .pksw button{font:inherit;font-size:.8rem;font-weight:600;border:0;border-radius:999px;padding:5px 12px;background:transparent;color:var(--muted);cursor:pointer}
.movers .mvsw button[aria-pressed="true"],.peak .pksw button[aria-pressed="true"]{background:var(--accent);color:var(--surface)}

/* v1.47.0 K55 release cleanup */
.kpis.phk{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:1100px){.kpis.phk{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:720px){.kpis.phk{grid-template-columns:repeat(2,minmax(0,1fr))}.kpis.phk .kpi:first-child{grid-column:1 / -1}}
.xside > .panel.slim .tablebox > table{width:100%}   /* K55 i: a table with a side box fills its own panel */
/* K55 j: SKU codes quieter on the release screens */
.sku{font-size:.62rem;opacity:.7}
.mvroutes{flex-basis:240px}
.mvroute .mvc{display:flex;flex-wrap:wrap;gap:2px 6px;font-size:.74rem}
.mvroute .mvc .m{flex-basis:100%;margin-left:0;text-align:right;font-family:var(--mono)}
[data-table].cards2 td.c-fact{min-width:0;white-space:normal;overflow-wrap:anywhere;text-align:right}   /* a long "Get it from" wraps instead of squeezing the name */
@media (max-width:720px){[data-table].cards2 td.c-fact{flex-direction:column;align-items:flex-end;gap:0}[data-table].cards2 td.c-fact::before{max-width:none;overflow:visible;white-space:nowrap}}
/* v1.47.2 K56 busy hours in time blocks */
.bzline{margin:0 0 10px;color:var(--muted);font-size:.9rem}.bzline b{color:var(--ink)}
.busy .bzgrid{grid-template-columns:44px repeat(var(--n),minmax(0,1fr));gap:4px;max-width:760px}
.busy .bzgrid .bz{height:34px;font:600 12px var(--mono);color:var(--ink)}
.busy .bzgrid .bz.hot{color:var(--surface)}
.busy .bzgrid .bzh{display:grid;gap:0;text-align:center;font-family:var(--body)}.busy .bzgrid .bzh b{font-size:.8rem;color:var(--ink);font-weight:600}.busy .bzgrid .bzh small{font-size:.68rem;color:var(--muted)}
@media (max-width:720px){.busy .bzgrid{grid-template-columns:34px repeat(var(--n),minmax(0,1fr));gap:3px}.busy .bzgrid .bz{height:30px;font-size:11px}.busy .bzgrid .bzh b{font-size:.7rem}.busy .bzgrid .bzh small{display:none}}
/* v1.47.3 K57 compact busy hours */
.bzmini{display:grid;grid-template-columns:1fr 1fr;gap:10px 28px;max-width:980px}
.bzrow{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:end;gap:8px}
.bzrl{font-size:.78rem;color:var(--muted);padding-bottom:16px}
.bzbars{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:6px;align-items:end}
.bzb{display:grid;justify-items:center;gap:3px}
.bzb i{display:block;width:100%;max-width:34px;border-radius:4px 4px 2px 2px;background:color-mix(in srgb,var(--accent) 38%,var(--chip))}
.bzb.top i{background:var(--accent)}
.bzb small{font-size:.68rem;color:var(--muted);white-space:nowrap}.bzb.top small{color:var(--ink);font-weight:600}
.bzmore{margin-top:10px}.bzmore summary{cursor:pointer;color:var(--muted);font-size:.82rem}
.bzmore[open] summary{margin-bottom:8px}
@media (max-width:720px){.bzmini{grid-template-columns:1fr}.bzb small{font-size:.62rem}}
.bzb .bzv{font:500 10px var(--mono);color:var(--muted)}.bzb.top .bzv{color:var(--ink)}
.bzrl{padding-bottom:16px}

/* ---------- v1.48.0 K58 / K59 Home ---------- */
.upd{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:999px;background:var(--chip);color:var(--muted);font-size:.75rem;font-weight:500;white-space:nowrap;vertical-align:1px}
/* month so far card: two numbers, a pace bar, the chart drawn at its real width */
.mcard{display:flex;flex-direction:column;gap:12px}
.key.tg{height:0;border-top:2px dashed var(--warn);vertical-align:3px}
.mstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.mstat{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--chip)}
.mstat .l{font-size:.78rem;color:var(--muted)}
.mstat .v{font-family:var(--display);font-size:1.75rem;font-weight:500;line-height:1.15;font-variant-numeric:tabular-nums}
.mstat .s{font-size:.78rem;color:var(--muted)}
.mstat .s.up,.mprog .up{color:var(--good)} .mstat .s.down{color:var(--bad)} .mprog .warnt{color:var(--warn)}
.mprog{display:grid;gap:6px}
.mpt{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:.8rem;color:var(--muted)}
.mpt b{color:var(--ink)}
.mbar{position:relative;height:8px;border-radius:999px;background:var(--chip)}
.mbar i{position:absolute;left:0;top:0;bottom:0;border-radius:999px;min-width:4px;background:var(--warn)}
.mbar i.ok{background:var(--good)}
.mbar em{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;border-radius:2px;background:var(--ink);opacity:.75}
.mchart{position:relative;min-width:0;width:100%}
.mchart svg.mline{width:100%;height:auto;overflow:visible}
.mline .cv{stroke:#3987e5;stroke-width:2;fill:none}
.mline .pv{stroke:var(--muted);stroke-width:1.5;stroke-dasharray:none;opacity:.7;fill:none}
.mline .tg{stroke:var(--warn);stroke-width:1.5;stroke-dasharray:5 4}
.mline .tgl{fill:var(--warn);font-size:11px;font-weight:600}
.mline .ga{stop-color:#3987e5;stop-opacity:.28} .mline .gb{stop-color:#3987e5;stop-opacity:0}
.mline .xh{stroke:var(--muted);stroke-width:1;opacity:.6}
.mline .xd{fill:#3987e5;stroke:var(--surface);stroke-width:2}
.mline .dot{fill:#3987e5;stroke:var(--surface);stroke-width:2}
.mline .elab{font-size:12px;font-weight:700;fill:var(--ink)}
.mline .hit{cursor:crosshair}
.mtip{position:absolute;top:4px;transform:translateX(-50%);display:grid;gap:1px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:0 4px 14px rgba(0,0,0,.25);font-size:.75rem;color:var(--muted);pointer-events:none;white-space:nowrap}
.mtip b{color:var(--ink);font-size:.8rem}
/* outlets card */
.ocard{container-type:inline-size}
.ocard .panel-head .ototal{margin-left:auto;font-weight:600}
.ocard-in{display:grid;grid-template-columns:minmax(150px,190px) minmax(0,1fr);gap:16px;align-items:start}
.ohero{font:inherit;color:var(--ink);text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:3px;padding:16px;border-radius:12px;border:1px solid color-mix(in srgb,var(--good) 35%,var(--line));background:color-mix(in srgb,var(--good) 9%,var(--surface));transition:background-color .15s ease}
.ohero:hover{background:color-mix(in srgb,var(--good) 15%,var(--surface))}
.ohero .oic{width:26px;height:26px;fill:none;stroke:var(--good);stroke-width:2.6;stroke-linecap:round;margin-bottom:6px}
.ohero .ol{font-size:.78rem;color:var(--good);font-weight:600}
.ohero .on{font-family:var(--display);font-size:1.5rem;font-weight:500;line-height:1.15}
.ohero .ov{margin-top:6px}.ohero .ov b{font-size:1.15rem}.ohero .ov small,.ohero .os{color:var(--muted);font-size:.78rem}
.ohero .oc{font-size:.78rem}
.otab{display:flex;flex-direction:column;min-width:0}
.ohd,.orw{display:grid;grid-template-columns:22px minmax(64px,1fr) minmax(70px,96px) 64px 78px 52px;gap:10px;align-items:center;padding:7px 8px}
.ohd{font-size:.75rem;color:var(--muted);border-bottom:1px solid var(--line);padding-top:0}
.ohd .r,.orw .ov,.orw .oc,.orw .osh,.orw .ox2{text-align:right}
.orw{font:inherit;color:var(--ink);background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;cursor:pointer;text-align:left;transition:background-color .15s ease}
.orw:last-of-type{border-bottom:0}
.orw:hover{background:var(--chip)}
.orw .oi{color:var(--muted);font-size:.8rem}
.orw .on{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oc{font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums}
.oc.up{color:var(--good)} .oc.down{color:var(--bad)}
.orw .osh{position:relative;font-size:.8rem;color:var(--muted)}
.orw .osh i{position:absolute;right:0;bottom:-3px;height:3px;border-radius:2px;background:var(--muted);opacity:.45;max-width:100%}
.orw .ox2{font-size:.8rem;color:var(--muted)}
.oall{display:none;font:inherit;font-size:.82rem;font-weight:600;color:var(--accent);background:none;border:0;padding:10px 0 2px;cursor:pointer;min-height:44px}
@container (max-width:560px){
  .ocard-in{grid-template-columns:1fr;gap:10px}
  .ohero{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;column-gap:10px;row-gap:0;padding:10px 12px}
  .ohero .oic{grid-row:1/3;margin:0;align-self:center}
  .ohero .ol{grid-column:2}.ohero .on{grid-column:2;font-size:1.05rem}
  .ohero .ov{grid-column:3;grid-row:1;margin:0;text-align:right}.ohero .os{grid-column:3;grid-row:2;text-align:right}.ohero .oc{display:none}
  .ohd,.orw{grid-template-columns:20px minmax(0,1fr) 72px 58px 44px;gap:8px;padding:8px 4px}
  .ox2,.orw .osh i{display:none}
  .ocard:not(.all) .omore{display:none}
  .oall{display:block}
}
/* how customers pay */
.paycard{container-type:inline-size}
.pcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px}
.pcd{--t:#5b6784;display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:14px 10px;border-radius:12px;border:1px solid color-mix(in srgb,var(--t) 40%,var(--line));background:color-mix(in srgb,var(--t) 10%,var(--surface))}
.pt0{--t:#3987e5}.pt1{--t:#d95926}.pt2{--t:#199e70}.pt3{--t:#c98500}.pt4{--t:#d55181}
.pcd .pic{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;background:color-mix(in srgb,var(--t) 22%,transparent)}
.pcd .pic svg{width:22px;height:22px;fill:none;stroke:var(--t);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.pcd .pn{font-size:.82rem;font-weight:600;line-height:1.2;min-height:2.4em;display:flex;flex-direction:column;align-items:center;justify-content:center}
.pcd .pnx{font-weight:400;color:var(--muted);font-size:.72rem}
.pcd .pp{font-family:var(--display);font-size:1.6rem;font-weight:500;line-height:1.1}
.pcd .pm{color:var(--muted);font-size:.75rem}
@container (max-width:420px){
  .pcards{grid-template-columns:repeat(auto-fit,minmax(56px,1fr));gap:6px}
  .pcd .pnx{display:none}
  .pcd{padding:8px 4px;gap:2px}.pcd .pic{width:30px;height:30px}.pcd .pic svg{width:18px;height:18px}
  .pcd .pn{font-size:.7rem;min-height:2.4em}.pcd .pp{font-size:1.1rem}.pcd .pm{display:none}
}
/* where sales come from, compact */
.aring-in{grid-template-columns:minmax(160px,210px) minmax(0,1fr);gap:20px}
.aring-chart{max-width:210px}
.aring-ctr{padding:24%}
.aring-ctr .v{font-size:1.4rem}
.aring-ctr .l,.aring-ctr .s,.aring-ctr .m2{font-size:.68rem}
.aring-side{gap:10px}
.aring-mon{padding-top:8px;gap:4px}
@media (max-width:720px){ .aring-in{grid-template-columns:1fr;gap:12px} .aring-chart{max-width:190px} }
/* phone one-tap sections */
.hsec{border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.hsec > summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:48px;padding:0 16px}
.hsec > summary::-webkit-details-marker{display:none}
.hsec > summary .go{color:var(--muted);transition:transform .15s ease}
.hsec[open] > summary .go{transform:rotate(90deg)}
.hsec > .panel{border:0;margin:0;padding-top:0;background:transparent}
.hsec[open] > .panel > .panel-head h2{display:none}
/* owed: search first */
.custq{display:grid;gap:4px;max-width:420px;margin-bottom:8px;font-size:.8rem;color:var(--muted)}
.custqr{display:flex;gap:8px;align-items:center}
.custqr input{flex:1;min-width:0;font-size:16px}
.micbtn{min-width:44px;min-height:44px;display:grid;place-items:center;padding:0}
.micbtn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.micbtn.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.ofull{margin-top:0}
@media (prefers-reduced-motion:reduce){ .orw,.ohero,.hsec > summary .go{transition:none} }

/* ---------- v1.48.1 K60 transfer & recovery workbench (Prescriptions walking out) ---------- */
.tbadges.wb{display:grid;gap:10px;padding:2px 0 10px}
.wbsel{display:grid;grid-template-columns:minmax(150px,220px) auto minmax(150px,220px) 1fr;gap:6px 10px;align-items:end}
.wbf{display:grid;gap:4px;font-size:.75rem;color:var(--muted)}
.wbf select{min-height:40px;font-size:.88rem;background:var(--bg)}
.wbfix{display:flex;align-items:center;min-height:40px;color:var(--ink);font-size:.95rem}
.wbarrow{align-self:end;padding-bottom:9px;color:var(--muted);font-size:1.1rem}
.wbroute{margin:0;align-self:end;padding-bottom:10px;justify-self:end;color:var(--muted);font-size:.82rem;text-align:right}
.wbroute b{color:var(--ink)}
.wbchips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.wbstale{margin:0;padding:8px 12px;border-radius:8px;border:1px solid color-mix(in srgb,var(--warn) 45%,var(--line));background:var(--warn-soft);color:var(--ink);font-size:.82rem}
.wbstale b{color:var(--warn)}
th.tk,td.tk{width:40px;min-width:40px!important;text-align:center;padding-left:6px;padding-right:6px}
th.tk input,td.tk input{width:18px;height:18px;accent-color:var(--accent);cursor:pointer;margin:0}
tbody tr.ticked > td{background:color-mix(in srgb,var(--accent) 9%,var(--surface))}
.wbbar{position:sticky;bottom:calc(8px + env(safe-area-inset-bottom));z-index:6;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin-top:10px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 6px 20px rgba(0,0,0,.28);font-size:.85rem}
.wbbar .wbn b{font-variant-numeric:tabular-nums}
.wbbar .wbx{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap}
.wbbar .btn{min-height:40px;display:inline-flex;align-items:center}
.wbbar a[aria-disabled="true"]{opacity:.55}
@container tbl (max-width:700px){
  .wbsel{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
  .wbroute{grid-column:1/-1;grid-row:1;justify-self:start;text-align:left;padding:0}
  .wbchips{flex-wrap:nowrap;overflow-x:auto;mask-image:linear-gradient(90deg,#000 88%,transparent);-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .wbchips .hb-o{flex:0 0 auto}
  .wbbar .wbx{margin-left:auto}
  .wbbar{padding:8px 10px;gap:6px 10px}
  .wbbar .wblg{display:none}
}
.drawer .wbbar{bottom:8px;margin-right:0}
@media (max-width:720px){ .drawer .wbbar{bottom:-78px} }   /* the phone drawer keeps 90 px free at its foot */
@media (max-width:720px){
  .wbbar{bottom:calc(var(--tabh,64px) + 10px + env(safe-area-inset-bottom));padding:8px 10px;margin-right:72px}
  .wbbar .wbx{margin-left:0}
}
/* phone cards: the tick box sits left of the two lines */
@container tbl (max-width:700px){
  [data-table="lost"].cards2 tbody tr{grid-template-columns:30px minmax(0,1fr) fit-content(48%);grid-template-areas:"tk name val" "tk state fact"}
  [data-table="lost"] td.tk{grid-area:tk;grid-column:auto;display:flex;align-items:flex-start;justify-content:center;padding-top:3px;width:auto;min-width:0!important}
  [data-table="lost"] td.tk::before{content:none}
  [data-table="lost"].cards2 td.c-name{grid-column:auto;display:block;text-align:left;font-weight:600;font-size:.88rem}
  [data-table="lost"].cards2 td.c-name::before{content:none}
  [data-table="lost"].cards2 td.c-more,[data-table="lost"].cards2 td.c-tog{grid-column:2/-1}
}
@media (max-width:720px){
  [data-table="lost"].cards2 tbody tr{grid-template-columns:30px minmax(0,1fr) fit-content(48%);grid-template-areas:"tk name val" "tk state fact"}
  [data-table="lost"] td.tk{grid-area:tk;grid-column:auto;display:flex;align-items:flex-start;justify-content:center;padding-top:3px}
  [data-table="lost"].cards2 td.c-more,[data-table="lost"].cards2 td.c-tog{grid-column:2/-1}
}
/* K60 search is a main tool here: its own full row in a narrow box, wider on a PC */
[data-table="lost"] .tools input[data-filter],[data-table="moves"] .tools input[data-filter]{width:260px;min-height:36px}
@container tbl (max-width:700px){
  [data-table="lost"] .panel-head .tools,[data-table="moves"] .panel-head .tools{flex:1 1 100%}
  [data-table="lost"] .tools input[data-filter],[data-table="moves"] .tools input[data-filter]{flex:1 1 100%;width:auto;font-size:16px;min-height:40px;order:-1}
}

/* ---------- v1.49.0 K62 peak hours ---------- */
.peak{container-type:inline-size;display:flex;flex-direction:column;gap:10px}
.peak .panel-head .pksw{margin-left:auto}
.pkchips{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}
.pkchip{font:inherit;color:var(--ink);text-align:left;cursor:pointer;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;row-gap:2px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--chip);min-height:44px;transition:opacity .15s ease,border-color .15s ease}
.pkchip i{grid-row:1/3;width:12px;height:12px;border-radius:3px}
.pkchip .pkn{font-weight:600;font-size:.88rem}
.pkchip .pkv{font-size:.78rem;color:var(--muted)}
.pkchip .pkv b{color:var(--ink)}
.pkchip[aria-pressed="false"]{opacity:.45;background:transparent}
.pkchip[aria-pressed="false"] .pkn{text-decoration:line-through}
.pkchip:disabled{cursor:default}
.pkchart{position:relative;width:100%;min-width:0}
.pkchart svg{width:100%;height:auto;overflow:visible}
.pksvg .pkl{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.pksvg .pkdot{stroke:var(--surface);stroke-width:2}
.pkscale{margin:0;display:flex;justify-content:space-between;gap:8px;font-size:.78rem;color:var(--muted)}
.pkline{margin:0;font-size:.82rem;color:var(--muted)}
.pkline b{color:var(--ink)}
/* Top movers: Rising and Falling stack when the card is narrow (owner: "too compressed") */
.movers{container-type:inline-size}
.mvgrid{gap:14px 24px}
@container (max-width:840px){
  .mvgrid{grid-template-columns:1fr}
  .mvl li{padding:7px 0}
}
.mvl li{gap:10px}
@media (prefers-reduced-motion:reduce){ .pkchip{transition:none} }

/* ---------- v1.50.0 K66 Moves workbench ---------- */
.mvpick{display:grid;gap:10px}
.mvsel{grid-template-columns:minmax(150px,220px) auto minmax(150px,220px) 1fr}
.mvbusy{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.mvbusy .mvbl{font-size:.75rem;color:var(--muted);margin-right:2px}
.mvbusy .hb-o,.mvchips .hb-o{font:inherit;font-size:.82rem;background:var(--chip);color:var(--ink);border:1px solid var(--line);border-radius:999px;padding:5px 11px;cursor:pointer;min-height:32px}
.mvbusy .hb-o[aria-pressed=true],.mvchips .hb-o[aria-pressed=true]{background:var(--accent);color:#fff;border-color:transparent}
.mvbusy .cnt{opacity:.7;font-size:.78em;margin-left:3px}
.mvchips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.mvmore{display:contents}
.mvmore > summary{list-style:none}
.mvmore > summary::-webkit-details-marker{display:none}
.mvmore[open] .mvmore-in{flex-basis:100%;display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-top:4px}
.mvmain{min-width:0}
input.qtyin{width:84px;text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;min-height:32px;padding:3px 8px;background:var(--bg)}
input.qtyin.over{border-color:var(--warn);color:var(--warn)}
@container tbl (max-width:700px){ input.qtyin{width:84px;font-size:16px} }
@media (max-width:720px){
  .mvsel{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
  .mvsel .wbroute{grid-column:1/-1;grid-row:1;justify-self:start;text-align:left;padding:0}
  .mvbusy,.mvchips{flex-wrap:nowrap;overflow-x:auto;mask-image:linear-gradient(90deg,#000 88%,transparent);-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .mvbusy > *,.mvchips > *{flex:0 0 auto}
  .mvmore[open] .mvmore-in{flex-wrap:wrap}
}
[data-table="moves"].cards2 tbody tr{grid-template-columns:30px minmax(0,1fr) fit-content(48%);grid-template-areas:"tk name val" "tk state fact"}
@container tbl (max-width:700px){
  [data-table="moves"].cards2 tbody tr{grid-template-columns:30px minmax(0,1fr) fit-content(48%);grid-template-areas:"tk name val" "tk state fact"}
  [data-table="moves"] td.tk{grid-area:tk;grid-column:auto;display:flex;align-items:flex-start;justify-content:center;padding-top:3px;width:auto;min-width:0!important}
  [data-table="moves"] td.tk::before{content:none}
  [data-table="moves"].cards2 td.c-name{grid-column:auto;display:block;text-align:left;font-weight:600;font-size:.88rem}
  [data-table="moves"].cards2 td.c-name::before{content:none}
  [data-table="moves"].cards2 td.c-more,[data-table="moves"].cards2 td.c-tog{grid-column:2/-1}
}

/* ---------- v1.50.0 K65 Product 360: availability first ---------- */
.pavailbox{display:grid;gap:6px;margin-top:10px}
.pavh{margin:0;font-size:.82rem;color:var(--muted)}
.pavh b{color:var(--ink)}
.pavail{display:flex;flex-wrap:wrap;gap:6px}
.pav{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);background:var(--chip);font-size:.8rem;white-space:nowrap}
.pav i{width:8px;height:8px;border-radius:50%;background:var(--good)}
.pav b{font-weight:600}
.pav.low i{background:var(--warn)} .pav.low b{color:var(--warn)}
.pav.out{opacity:.85} .pav.out i{background:var(--bad)} .pav.out b{color:var(--bad)}
.pav.wh{border-style:dashed}
.pav.sis i{background:var(--sib)}
.pwhere{display:grid;gap:2px}
.pw > summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:minmax(110px,200px) minmax(80px,1fr) 84px 44px;gap:10px;align-items:center;padding:8px 6px;border-radius:8px;font-size:.85rem;min-height:40px}
.pw > summary::-webkit-details-marker{display:none}
.pw > summary:hover{background:var(--chip)}
.pw[open] > summary{background:var(--chip)}
.pwn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pwb{height:8px;border-radius:999px;background:var(--chip);overflow:hidden;display:block}
.pw[open] .pwb,.pw > summary:hover .pwb{background:var(--surface)}
.pwb i{display:block;height:100%;border-radius:999px;background:#3987e5}
.pwv,.pws{text-align:right;font-size:.82rem}
.pws{color:var(--muted)}
.pwin{display:grid;gap:8px;padding:8px 6px 12px 12px;border-left:2px solid var(--line);margin:2px 0 6px 8px}
.pwsw{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:999px;background:var(--bg);justify-self:start}
.pwsw button{font:inherit;font-size:.78rem;font-weight:600;border:0;border-radius:999px;padding:4px 12px;background:transparent;color:var(--muted);cursor:pointer;min-height:30px}
.pwsw button[aria-pressed="true"]{background:var(--accent);color:var(--surface)}
.pwsw button[aria-disabled="true"]{opacity:.5}
.pwt{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.82rem;color:var(--muted)}
.pwt b{color:var(--ink)}
.pwor{display:grid;grid-template-columns:minmax(70px,110px) 1fr auto;gap:10px;align-items:center;font-size:.82rem;padding:2px 0}
.pwhere{max-width:860px}

/* ---------- v1.50.0 K64 customer statement window ---------- */
.mw-card.stmtwin{width:min(980px,96vw);max-height:90vh;overflow:auto;display:grid;gap:12px}
.stmtbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.stmtsw{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:999px;background:var(--bg);flex-wrap:wrap}
.stmtsw button{font:inherit;font-size:.78rem;font-weight:600;border:0;border-radius:999px;padding:5px 12px;background:transparent;color:var(--muted);cursor:pointer;min-height:32px}
.stmtsw button[aria-pressed="true"]{background:var(--accent);color:var(--surface)}
.stmtdl{display:flex;gap:6px}
.stmtsum{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.82rem;color:var(--muted)}
.stmtsum b{color:var(--ink)} .stmtsum .neg b{color:var(--bad)} .stmtsum .warnt b{color:var(--warn)}

/* v1.50.0 Moves tiles are filters: the picked one is outlined */
#mvtiles .kpi[aria-pressed="true"]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}

/* v1.51.0 K67 statement: older unpaid bills */
.stmth{margin:14px 0 6px;font-size:.88rem}
/* v1.51.0 K68 peak hours: own period, outlet, By outlet */
.pkbar{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}
.pkper,.peak .pksw{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:999px;background:var(--bg)}
.pkper button{font:inherit;font-size:.8rem;font-weight:600;border:0;border-radius:999px;padding:5px 12px;background:transparent;color:var(--muted);cursor:pointer;min-height:32px}
.pkper button[aria-pressed="true"]{background:var(--chip);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}
.pkout select{min-height:36px;font-size:.85rem}
.pksvg .pku{stroke-width:1.5;stroke-dasharray:4 4;opacity:.65}
.pko{display:flex;flex-direction:column}
.pkoh,.pkor{display:grid;grid-template-columns:minmax(70px,1fr) minmax(96px,1.1fr) minmax(96px,1.1fr) minmax(70px,auto) 90px;gap:10px;align-items:center;padding:8px 6px}
.pkoh{font-size:.72rem;color:var(--muted);border-bottom:1px solid var(--line)}
.pkoh .r,.pkor .r{text-align:right}
.pkor{font:inherit;font-size:.85rem;color:var(--ink);text-align:left;background:transparent;border:0;border-bottom:1px solid var(--line);cursor:pointer;min-height:44px;transition:background-color .15s ease}
.pkor:hover{background:var(--chip)}
.pkor i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px;vertical-align:1px}
.pkon{font-weight:600}
.pksp{width:90px;height:24px}
@container (max-width:560px){
  .pkoh{display:none}
  .pkor{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"n b" "a o";row-gap:2px}
  .pkor .pkon{grid-area:n}.pkor .r{grid-area:b}.pkor > span:nth-child(2){grid-area:a;font-size:.78rem;color:var(--muted)}.pkor > span:nth-child(3){grid-area:o;font-size:.78rem;color:var(--muted);text-align:right}
  .pkor .pksp{display:none}
}
@media (prefers-reduced-motion:reduce){ .pkor{transition:none} }

/* v1.52.0 K69 health check */
.hcpanel{display:grid;gap:10px}
.hcbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.hccount{display:flex;flex-wrap:wrap;gap:6px}
.hcgrp h3{margin:0 0 6px;font-size:.95rem}
.hcgrp > summary{list-style:none;cursor:pointer}
.hcgrp > summary::-webkit-details-marker{display:none}
.hcgrp ul{list-style:none;margin:0;padding:0;display:grid}
.hci{display:grid;grid-template-columns:minmax(120px,190px) 1fr;column-gap:12px;row-gap:2px;padding:8px 2px;border-bottom:1px solid var(--line);font-size:.85rem}
.hci:last-child{border-bottom:0}
.hca{grid-row:1/4;color:var(--muted);font-size:.78rem}
.hcd{color:var(--ink)}
.hcw{color:var(--muted);font-size:.76rem}
@media (max-width:720px){ .hci{grid-template-columns:1fr} .hca{grid-row:auto} }

.p360empty{display:grid;gap:8px;max-width:none}.p360empty h2{margin:0}.p360empty h3{margin:8px 0 0;font-size:.88rem}
.p360recent{display:flex;flex-wrap:wrap;gap:6px}
.hcdl{display:inline-flex;gap:6px;margin-left:auto}

/* ---------- v1.53.0 K70 1 one chip bar on every tab ---------- */
.fbar2{background:transparent;border:0;padding:4px 0 2px;gap:8px;position:relative}
.fbar2 .fb-pers{position:relative}
.fbar2 .fb-pop{position:absolute;top:calc(100% + 4px);left:0;z-index:30;max-width:min(560px,92vw);box-shadow:0 8px 24px rgba(0,0,0,.25)}
.fbar2 .fb-custom{display:flex;gap:8px;flex-wrap:wrap;width:100%;padding-top:6px;border-top:1px solid var(--line);margin-top:4px}
.fbar2 .fb-custom label{display:grid;gap:2px;font-size:.75rem;color:var(--muted)}
.fb-row2{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}
.fb-label{margin-left:auto}
.fmore{position:relative}
.fmore > summary{list-style:none;cursor:pointer;min-height:32px;display:inline-flex;align-items:center}
.fmore > summary::-webkit-details-marker{display:none}
.fmore[open] > summary{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.fmore-in{position:absolute;top:calc(100% + 6px);left:0;z-index:40;width:min(880px,92vw);display:grid;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 10px 30px rgba(0,0,0,.3)}
.fmore-head{display:flex;justify-content:space-between;align-items:center}
.fmore-in .frow{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-end}
.fmore-in .fviews{border-top:1px solid var(--line);padding-top:8px}
.fbar2 .fchip{display:inline-flex;align-items:center;gap:4px;padding:3px 4px 3px 10px;border-radius:999px;background:var(--chip);border:1px solid var(--line);font-size:.78rem}
.fbar2 .fchip button{border:0;background:none;color:var(--muted);cursor:pointer;font-size:1rem;line-height:1;min-width:24px;min-height:24px}
@media (max-width:720px){
  .fbar2 .hb-row{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;mask-image:linear-gradient(90deg,#000 88%,transparent);-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .fbar2 .fb-pop{position:fixed;left:8px;right:8px;top:auto;bottom:calc(var(--tabh,64px) + 12px);max-width:none}
  .fmore-in{position:fixed;left:0;right:0;bottom:0;top:auto;width:auto;max-height:82vh;overflow:auto;border-radius:16px 16px 0 0;padding:16px 16px calc(20px + env(safe-area-inset-bottom));z-index:80}
  .fmore-in .frow > label,.fmore-in .frow select,.fmore-in .frow input{width:100%;font-size:16px}
  .fb-label{flex-basis:100%;margin-left:0}
}

/* v1.53.0 K70 7 page head on older tabs */
.pagehead{display:flex;align-items:center;gap:8px;margin:2px 0 2px}
.pagehead h1{margin:0;font-size:1.25rem;font-weight:600;font-family:var(--body)}
.pagehead p{margin:0;color:var(--muted);font-size:.86rem;max-width:72ch}

/* v1.53.0 K70 2: on the phone the camera button steps aside while scrolling down, so it never sits on chips or rows */
@media (max-width:720px){
  .fab:not([hidden]){transition:transform .15s ease-out,opacity .15s ease-out}
  .fab.fab-away:not([aria-expanded="true"]){transform:translateY(120px);opacity:0;pointer-events:none}
}
@media (prefers-reduced-motion:reduce){ .fab:not([hidden]){transition:none} }

/* v1.53.0 K70 9 Admin tab groups */
.agroups{display:flex;flex-wrap:wrap;gap:8px 16px}
.agrp{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;padding-left:10px;border-left:2px solid var(--line)}
.agrp:first-child{padding-left:0;border-left:0}
.agl{font-size:.72rem;color:var(--muted);margin-right:2px}
@media (max-width:720px){ .agroups{flex-direction:column;gap:8px} .agrp{padding-left:0;border-left:0} .agl{width:100%} }

/* v1.54.0 K73 Face ID sign-in */
.loginbox .loginpk{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:auto;min-height:48px;border-radius:12px;padding:10px 14px;margin:2px 0 4px;font-weight:600}
.loginbox .loginpk[hidden]{display:none}
.pkoffer{max-width:520px}

/* v1.55.0 K76 phone cards are two lines: name + main number, then status + one fact; tap the row for the rest.
   No "More" link, no label stacked over a value, the code (SKU) only in the details, numbers never wrap. */
@container tbl (max-width:700px){
  [data-table].cards2 tbody tr{gap:2px 12px;padding:9px 2px;align-items:baseline}
  [data-table].cards2 td.c-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.9rem}
  [data-table].cards2 td.c-name .sku,[data-table].cards2 td.c-name .bdg{display:none}
  [data-table].cards2 td.c-name .nmcell{display:inline}
  [data-table].cards2 td.c-val{white-space:nowrap;gap:5px;font-size:.95rem}
  [data-table].cards2 td.c-val::before{font-size:.68rem;color:var(--muted);font-weight:400}
  [data-table].cards2 td.c-state{min-width:0;font-size:.78rem;color:var(--muted)}
  [data-table].cards2 td.c-state.empty .dash{visibility:hidden}
  [data-table].cards2 td.c-fact{flex-direction:row;align-items:baseline;gap:5px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.78rem;color:var(--muted);display:block;text-align:right}
  [data-table].cards2 td.c-fact::before{margin-right:5px}
  [data-table].cards2 td.c-fact.empty{visibility:hidden}
  [data-table].cards2 td.c-tog{display:none}
  [data-table].cards2 tr.ctap{cursor:pointer}
  [data-table].cards2 tr.ctap td.c-name::after{content:"";display:inline-block;width:6px;height:6px;margin-left:7px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:translateY(-3px) rotate(45deg);opacity:.7}
  [data-table].cards2 tr.ctap.copen td.c-name::after{transform:translateY(0) rotate(-135deg)}
  [data-table].cards2 tr.copen td.c-more{display:flex;font-size:.8rem;padding:3px 0!important}
  [data-table].cards2 td.num,[data-table].cards2 td .num{white-space:nowrap;overflow-wrap:normal}
}
@media (max-width:720px){
  [data-table].cards2 td.c-fact{flex-direction:row;display:block}
}
/* K76 the Pharmacy table folds under one title: no second title or tag inside it */
.hdeep.ofull [data-table] > .panel-head h2,.hdeep.ofull [data-table] > .panel-head .fixtag,.hdeep.ofull [data-table] > .panel-head .info{display:none}
.hdeep.ofull [data-table]{border:0;padding-top:0;background:none}
/* v1.55.0 K78 2 / K79 3 compact tiles on the phone: 2 x 2, label, number, one line; footnotes in the tile's long-press text */
@media (max-width:720px){
  .kpis,.kpis.small,.kpis.homek,.kpis.phk,.kpis.homek:has(> .kpi:nth-child(5)){grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .kpis .kpi.hero,.kpis.homek .kpi.hero,.kpis.phk .kpi:first-child,.kpis.homek .kpi:last-child:nth-child(even){grid-column:auto}
  .kpis .kpi,.kpis.homek .kpi{padding:8px 10px;border-radius:10px;gap:0}
  .kpis .kpi .label,.kpis.homek .kpi .label{font-size:.6rem;letter-spacing:.06em}
  .kpis .kpi .val,.kpis.homek .kpi .val,.kpis.homek .kpi.hero .val{font-size:1.28rem;line-height:1.25}
  .kpi .delta,.kpi .sub,.kpi .chiplab{font-size:.7rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.35}
  .kpi .spark,.kpi svg.spark{height:14px;margin-top:2px}
}
/* a tile with nothing to show yet is grey, not red */
.kpi.none{border-color:var(--line)} .kpi.none .val{color:var(--muted)}
/* v1.55.0 K77 11 phone filter bar: Filters sits at the end of the pharmacy row; the period words live in the chips */
@media (max-width:720px){
  .fbar2{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:6px;align-items:center}
  .fbar2 > .fb-pers{grid-column:1 / -1}
  .fbar2 > .fb-outs{grid-column:1;min-width:0}
  .fbar2 > .fb-row2{grid-column:2;display:flex;align-items:center;gap:6px;margin:0}
  .fbar2 > .fb-row2:has(.fchip){grid-column:1 / -1;flex-wrap:wrap}
  .fbar2:not(:has(.fb-outs)) > .fb-row2{grid-column:1 / -1}
  .fbar2 .fb-label{display:none}
}
.orank .orankl{margin:2px 0 0;font-size:.95rem;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px}
.orank .orankl b{font-size:1.15rem}
.orank .orankl .up{color:var(--good);font-weight:600} .orank .orankl .down{color:var(--bad);font-weight:600}
.orank .orankl .linkbtn{margin-left:auto}
.split.home2:has(> .orank){align-items:start}
/* v1.55.0 K77 10 Explore: pickers in one row above a full-width table */
.xgrid,.xgrid:has(> .xctl){grid-template-columns:minmax(0,1fr)!important}
.xgrid > .xctl{padding:10px 14px}
.xgrid > .xctl .frow{flex-direction:row!important;flex-wrap:wrap;align-items:flex-end!important;gap:8px 12px}
.xgrid > .xctl .frow label,.xgrid > .xctl .frow select{width:auto!important}
.xgrid > .xctl .xexp{display:flex;gap:6px;margin-left:auto}
.xgrid [data-pivot] table.pivot{width:100%}
@media (max-width:720px){
  .xgrid > .xctl .frow{display:grid;grid-template-columns:1fr 1fr;align-items:end!important}
  .xgrid > .xctl .xexp{margin-left:0}
  .pivot .xsub{display:none}
  .pivot td.lab{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw}
}
/* v1.55.0 K77 10 question / work-area chips: one sideways row on the phone, title beside them */
.qpanel{gap:6px}
@media (max-width:720px){
  .qpanel{padding:10px 12px}
  .qpanel .chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -12px;padding:0 12px 2px;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .qpanel .chips::-webkit-scrollbar{display:none}
  .qpanel .chips button{flex:0 0 auto}
}
.qpanel .vpick.vin{margin-top:4px}
.qpanel .vpick.vin .frow{gap:6px 10px;align-items:flex-end}
.ptxt{color:var(--muted);font-size:.8rem;white-space:nowrap}
.mvchips .mvsearch{flex:1 1 220px;max-width:340px;margin-left:auto}
.mvchips .mvsearch input{min-height:36px}
@media (max-width:720px){.mvchips .mvsearch{flex-basis:100%;max-width:none;margin-left:0}}
/* v1.55.0 K78 4 Counter: one box to type or paste into, the gallery inside it, the camera as the one main button */
.rxwin .panel-head{align-items:center}
.rxout select{min-height:34px;padding:4px 28px 4px 10px;font-size:.85rem;border-radius:999px}
.rxone{display:flex;gap:8px;align-items:stretch}
.rxqbox{position:relative;flex:1 1 auto;min-width:0}
.rxqbox textarea{width:100%;min-height:48px;resize:none;padding:13px 48px 11px 14px;border-radius:12px;font-size:16px;line-height:1.35}
.rxqi{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:38px;height:38px;border-radius:10px;color:var(--muted);cursor:pointer}
.rxqi:hover{color:var(--ink);background:var(--chip)}
.rxcambtn{display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:0 16px;border-radius:12px;white-space:nowrap;cursor:pointer}
.rxcambtn .rxchi{width:20px;height:20px}
.rxwin.rxbig .rxcambtn{min-height:56px;padding:0 20px;font-size:1.05rem}
.rxwin.rxbig .rxqbox textarea{min-height:56px}
.p360empty.slim{padding:10px 14px}
.p360empty .panel-head{margin-bottom:6px}
.hstack{display:grid;gap:14px;align-content:start;min-width:0}
.hstack > .panel{margin:0}
/* Owed by customers: total and search side by side when there is room */
@container (min-width:620px){ .custpanel .custq{max-width:420px} }
.tempty{margin:4px 0 2px;color:var(--muted);font-size:.88rem}
.panel.isempty .tools .sortsel,.panel.isempty .tools input[type=search]{display:none}
/* v1.55.0 K77 13 on the PC a text column ("Get it from", "Batch · expiry") reads from the left like all text */
@container tbl (min-width:701px){ [data-table].cards2 td.c-fact:not(.num),[data-table] td.c-fact:not(.num){text-align:left} }
.bigstat{align-items:start}
@media (max-width:720px){.bigstat{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* v1.55.0 K80 statement: one table, brought-forward rows muted, total ruled */
.stmtt tr.k-bf td{color:var(--muted)}
.stmtt tr.k-total td{border-top:1.5px solid var(--ink);font-weight:700}
.stmtsum .stc b{font-size:1.05em}
.rxwin .rxqbox textarea#rxquick{padding:13px 50px 11px 14px;text-overflow:ellipsis;overflow:hidden}

/* v1.56.0 K82 sign-in: Face ID first, then the PIN as one box per digit. The box being typed glows; right = the boxes
   glow and fold into one box with a tick; wrong = a short shake in red. Motion off with reduced motion. */
.loginbox{width:min(400px,100%);padding:22px 20px 18px;border-radius:20px}
.loginbox .pinwrap{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;align-items:center}
.loginbox .pinlab{grid-column:1/-1;font-size:.8rem;color:var(--muted)}
.pinrow{position:relative;min-width:0;height:58px;display:flex;align-items:center}
.pinboxes{display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,52px));gap:10px;width:100%;justify-content:start}
.loginbox:not(.pinfree) .pinboxes{justify-content:center}
.pinboxes .pb{height:58px;border-radius:14px;border:1.5px solid var(--line);background:var(--bg);display:grid;place-items:center;
  transition:border-color .12s ease-out,box-shadow .15s ease-out,transform .35s cubic-bezier(.2,.7,.2,1),opacity .3s ease-out}
.pinboxes .pb i{width:11px;height:11px;border-radius:50%;background:var(--ink);transform:scale(0);transition:transform .12s ease-out}
.pinboxes .pb.on i{transform:scale(1)}
.pinboxes .pb.cur{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent),0 0 22px color-mix(in srgb,var(--accent) 30%,transparent)}
#loginPin{position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:16px;color:transparent;caret-color:transparent;border:0;background:none;cursor:pointer;z-index:2}
.loginbox .logingo{display:none}
.loginbox.pinfree .logingo{display:flex}
.pindone{position:absolute;left:50%;top:50%;width:58px;height:58px;margin:-29px 0 0 -29px;border-radius:16px;display:grid;place-items:center;
  color:var(--ink);border:1.5px solid var(--accent);background:color-mix(in srgb,var(--accent) 16%,var(--bg));opacity:0;transform:scale(.6);pointer-events:none;z-index:3}
.pindone svg path{stroke-dasharray:24;stroke-dashoffset:24}
/* right: glow, fold together, tick */
.loginbox.pinok .pinboxes .pb{border-color:var(--accent);box-shadow:0 0 18px color-mix(in srgb,var(--accent) 45%,transparent);
  transform:translateX(calc(var(--m) * 62px)) scale(.92);opacity:0;transition-delay:.12s}
.loginbox.pinok .pinboxes .pb i{transform:scale(1)}
.loginbox.pinok .pindone{animation:pindone .42s .3s cubic-bezier(.2,.8,.2,1) forwards;box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 16%,transparent),0 0 34px color-mix(in srgb,var(--accent) 45%,transparent)}
.loginbox.pinok .pindone svg path{animation:pintick .3s .55s ease-out forwards}
.loginbox.pinok .logingo,.loginbox.pinok .loginpk,.loginbox.pinok .pinlab{opacity:.25;transition:opacity .15s}
@keyframes pindone{to{opacity:1;transform:scale(1)}}
@keyframes pintick{to{stroke-dashoffset:0}}
/* wrong: shake, red */
.loginbox.pinbad .pinboxes{animation:pinshake .42s cubic-bezier(.36,.07,.19,.97)}
.loginbox.pinbad .pinboxes .pb{border-color:var(--bad);box-shadow:0 0 14px color-mix(in srgb,var(--bad) 35%,transparent)}
@keyframes pinshake{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(4px)}30%,50%,70%{transform:translateX(-7px)}40%,60%{transform:translateX(7px)}}
@media (max-width:420px){ .pinboxes{gap:8px} .pinboxes .pb,.pinrow{height:54px} }
@media (prefers-reduced-motion:reduce){
  .pinboxes .pb,.pinboxes .pb i{transition:none}
  .loginbox.pinok .pinboxes .pb{transform:none;opacity:.25}
  .loginbox.pinok .pindone{animation:none;opacity:1;transform:none}
  .loginbox.pinok .pindone svg path{animation:none;stroke-dashoffset:0}
  .loginbox.pinbad .pinboxes{animation:none}
}
/* K84 1 the period box before the months: same box, dashed edge so it reads as "the period at the top" */
.aring-mon .amon.aper{border-style:dashed}
@media (max-width:720px){ .aring-mon{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)} }
/* K84 2 top movers: name on its own line when the column is narrow, sales + change under it */
.mvgrid > div{container-type:inline-size}
.mvspan{margin-left:6px}
.mvl .mvout{font-size:.66rem;padding:1px 6px;margin-left:4px;vertical-align:1px}
@container (max-width:430px){
  .mvl li{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"n n" "v c";gap:2px 10px}
  .mvl li .mvn{grid-area:n} .mvl li .mvv{grid-area:v;color:var(--muted)} .mvl li .mvchg{grid-area:c;text-align:right}
}
/* v1.56.1 K84 4 peak hours: the usual-day lines a lighter tint of each colour, clearly visible; Bills / MVR switch;
   By outlet: busiest hour + MVR columns, no shape */
.pksvg .pku{stroke-width:1.8;stroke-dasharray:5 4;opacity:.5}
.peak .pkunit{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:999px;background:var(--bg)}
.peak .pkunit button{font:inherit;font-size:.78rem;font-weight:600;border:0;border-radius:999px;padding:5px 11px;background:transparent;color:var(--muted);cursor:pointer}
.peak .pkunit button[aria-pressed="true"]{background:var(--chip);color:var(--ink)}
.pkoh,.pkor{grid-template-columns:minmax(70px,1fr) minmax(90px,1fr) minmax(90px,1fr) minmax(80px,auto) minmax(90px,auto) minmax(90px,auto)}
.pkor .pkmv{color:var(--ink)}
@container (max-width:560px){
  .pkor{grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"n mv1 mv2" "a o b";column-gap:12px}
  .pkor > span:nth-child(4){grid-area:b;font-size:.78rem;color:var(--muted)}
  .pkor > span:nth-child(5){grid-area:mv1}.pkor > span:nth-child(6){grid-area:mv2}
  .pkor > span:nth-child(5)::before{content:"Aas ";color:var(--muted);font-size:.7rem}
  .pkor > span:nth-child(6)::before{content:"Other ";color:var(--muted);font-size:.7rem}
}
/* K84 1 the period box + 6 months always sit in one row */
.aring-mon{grid-template-columns:none!important;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
.aring-mon .amon{min-width:0}
.aring-mon .amon.aper b{white-space:nowrap;font-size:.74rem}

/* v1.58.0 K85 Top movers: calm, compact rows - regular weight, small arrows, small figures; tiny pickers in the head */
.movers .panel-head{gap:8px 10px}
.movers .mvctl{display:inline-flex;gap:6px;margin-left:auto}
.movers .mvsw{margin-left:0}
.mvpick select{appearance:none;-webkit-appearance:none;font:inherit;font-size:.76rem;font-weight:600;color:var(--ink);background:var(--bg);border:1px solid var(--line);
  border-radius:999px;padding:5px 26px 5px 11px;min-height:30px;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 13px) 52%,calc(100% - 9px) 52%;background-size:4px 4px,4px 4px;background-repeat:no-repeat;transition:border-color .12s ease-out}
.mvpick select:hover,.mvpick select:focus-visible{border-color:var(--accent)}
.movers .mvspan{margin:-4px 0 2px;font-size:.76rem;color:var(--muted)}
.movers .mvbody.mvload{opacity:.5;transition:opacity .12s}
.movers .mvh{font-size:.78rem;font-weight:600;margin:0 0 2px}
.movers .mvl{list-style:none;margin:0;padding:0;display:grid;counter-reset:mv}
.movers .mvl li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:baseline;padding:6px 2px;border-bottom:1px solid var(--line);font-size:.8rem;font-weight:400}
.movers .mvl li:last-child{border-bottom:0}
.movers .mvn{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.movers .mvn a{color:var(--ink);text-decoration:none}
.movers .mvn a:hover{text-decoration:underline}
.movers .mvf{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.72rem;color:var(--muted);white-space:nowrap}
.movers .mvf i{font-style:normal;margin:0 5px;opacity:.6}
.movers .mvchg{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.74rem;font-weight:400;white-space:nowrap;text-align:right;min-width:9.5em}
.movers .mvchg .mva{font-style:normal;font-size:.6rem;margin-right:4px;vertical-align:1px}
.movers .mvchg small{margin-left:6px;color:var(--muted);font-size:.68rem}
.movers .mvchg.up{color:var(--good)} .movers .mvchg.down{color:var(--bad)}
.movers .mvout{font-size:.62rem;color:var(--bad);border:1px solid color-mix(in srgb,var(--bad) 45%,transparent);border-radius:999px;padding:0 6px;margin-left:4px;vertical-align:1px}
/* narrow card (phone, half width): name + change on one line, the small facts under it */
@container (max-width:520px){
  .movers .mvl li{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"n c" "f f";row-gap:1px;padding:6px 0}
  .movers .mvn{grid-area:n} .movers .mvchg{grid-area:c;min-width:0} .movers .mvf{grid-area:f;font-size:.68rem}
}
@media (max-width:720px){
  .movers .panel-head{flex-wrap:wrap}
  .movers .mvctl{margin-left:0;order:3}
  .movers .mvsw{order:4;width:100%;display:flex}
  .movers .mvsw button{flex:1}
}
/* phone: 5 a side first, "Show all 10 each" for the rest (the PC shows all 10) */
.movers .mvmore{display:none}
@media (max-width:720px){
  .movers:not(.mvall) .mvl li:nth-child(n+6){display:none}
  .movers .mvmore{display:block;margin:6px auto 0}
}

/* v1.59.0 K88 phone first screen: search behind an icon, one-line header, tighter Home so the 4 tiles and the chart
   under them fit the first screen of an iPhone Pro */
.stoggle{display:none}
@media (max-width:720px){
  .stoggle{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;flex:0 0 auto}
  .stoggle[aria-expanded="true"]{border-color:var(--accent);color:var(--accent)}
  body.sfold header.top .ask{display:none!important}
  header.top .ask{animation:sdrop .15s ease-out}
  @keyframes sdrop{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
  header.top h1{font-size:1.08rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}
  header.top #status{display:none}
  header.top .topright{gap:6px}
  header.top .topright #userBtn{max-width:130px;font-size:.82rem;padding:7px 11px}
  .wrap{gap:10px}
  .homebar{padding:2px 0;gap:4px}
  .homebar .upd{font-size:.7rem}
  .hminor{gap:2px 12px;font-size:.76rem;display:grid;grid-template-columns:1fr 1fr;padding:0 2px}
  .hminor .hm{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .split.home2{gap:10px}
  .panel{padding:12px}
  .mcard .mstats{gap:8px}
  .mcard .mstat{padding:9px 11px}
  .mcard .mstat .v{font-size:1.4rem}
  .mcard .mstat .s{font-size:.74rem}
}
@media (prefers-reduced-motion:reduce){ header.top .ask{animation:none} }

/* v1.59.0 K86 wide screens / zoomed out: the page uses the width (up to 2,400 px); Home goes to 3 columns from 1,900 px */
@media (min-width:1900px){
  .wrap{max-width:min(100% - 48px,2400px)}
  #main:has(> .homebar){display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}
  #main:has(> .homebar) > *{grid-column:1 / -1}
  #main:has(> .homebar) > .split.home2{display:contents}
  /* v1.63.0 K105 the Sales cards packed in 3 columns that each fill downward: no holes under short cards */
  #main:has(> .homebar) > .hcards{display:block;column-count:3;column-gap:14px}
  #main:has(> .homebar) > .hcards > .split.home2,#main:has(> .homebar) > .hcards .hstack{display:contents}
  #main:has(> .homebar) > .hcards .panel,#main:has(> .homebar) > .hcards > details{break-inside:avoid;margin:0 0 14px;width:100%}
  #main:has(> .homebar) > .split.home2 > *,
  #main:has(> .homebar) > .movers,#main:has(> .homebar) > .peak,#main:has(> .homebar) > .custpanel{grid-column:auto;min-width:0}
  #main:has(> .homebar) > .kpis.homek{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}
  .kpis:not(.homek):not(.small){grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
}
@media (min-width:2600px){
  html{font-size:17px}
}

/* v1.60.0 K91 phone check from the owner's recording */
/* 3 the (i) beside the section title; an empty card head takes no line */
.hsec > summary{justify-content:flex-start}
.hsec > summary .go{margin-left:auto}
.hsec > summary > [data-info]{margin-left:2px}
.hsec[open] > .panel > .panel-head:empty{display:none}
/* 4 peak hours: small pickers like Top movers, Lines / By outlet beside them */
.peak .pkctl{display:inline-flex;flex-wrap:wrap;gap:6px;margin-left:auto}
.peak .panel-head .pksw{margin-left:0}
@media (max-width:720px){
  .peak .panel-head{align-items:center;gap:8px}
  .peak .pkctl{margin-left:0}
  .peak .panel-head .pksw{margin-left:auto}
  .pkchips{grid-template-columns:1fr 1fr;gap:6px}
  .pkchip{padding:6px 8px;column-gap:6px;border-radius:10px;min-height:44px}
  .pkchip i{grid-row:1;width:10px;height:10px}
  .pkchip .pkn{font-size:.8rem}
  .pkchip .pkv{grid-column:1/-1;font-size:.68rem;line-height:1.35}
}
/* 2 where sales come from on the phone: a small ring with the channels beside it, the month boxes in one row under */
@media (max-width:720px){
  .aring-in{grid-template-columns:128px minmax(0,1fr);gap:12px 14px;align-items:center}
  .aring-chart{max-width:128px;margin:0}
  .aring-side{display:contents}
  .aring-rows{grid-column:2;min-width:0}
  .aring-mon{grid-column:1/-1}
  .aring-ctr{padding:20%}
  .aring-ctr .v{font-size:1rem}
  .aring-ctr .l,.aring-ctr .m2{font-size:.56rem;line-height:1.2}
  .aring-ctr .s{font-size:.56rem;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .aring .rl{display:none}
  .arow{grid-template-columns:10px minmax(0,1fr) auto;grid-template-areas:"i n v" ". p c";gap:0 8px;padding:6px 6px;border-radius:10px}
  .arow i{grid-area:i;width:10px;height:10px;border-radius:3px}
  .arow .n{grid-area:n;font-size:.84rem}
  .arow .v{grid-area:v;font-size:.84rem}
  .arow .p{grid-area:p;text-align:left;font-size:.7rem}
  .arow .c{grid-area:c;font-size:.7rem}
  .arow .m{display:none}
}
@media (max-width:720px){ .peak .panel-head .pksw{width:auto;display:inline-flex} }
/* K91 also: in a narrow card on the PC (the 3-column wide Home) the channel rows lost their names; two short lines */
.aring-rows{container-type:inline-size}
@media (min-width:721px){
  @container (max-width:440px){
    .aring-rows .arow{grid-template-columns:12px minmax(0,1fr) auto auto;grid-template-areas:"i n n v" ". p m c";gap:1px 10px;padding:7px 10px}
    .aring-rows .arow i{grid-area:i} .aring-rows .arow .n{grid-area:n} .aring-rows .arow .v{grid-area:v}
    .aring-rows .arow .p{grid-area:p;text-align:left;font-size:.74rem} .aring-rows .arow .m{grid-area:m;font-size:.74rem} .aring-rows .arow .c{grid-area:c;font-size:.74rem}
  }
}
/* v1.60.0 K92 Product 360 match list: rows never squeeze into each other (a scrolling flex column shrank them, so long
   names overlapped the next row); the filter selects stay inside the card on a phone */
.resrows > .resrow{flex-shrink:0}
.resrow .rmain b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.resrow .rmain .note{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rfbar .rf{min-width:0;max-width:100%}
.rfbar .rf select{min-width:0;max-width:min(260px,100%)}
@media (max-width:720px){ .rfbar .rf select{max-width:calc(100vw - 140px)} }
/* v1.61.0 K93 1 owed: the full list with age chips + sort in one row */
.custctl{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0 6px}
.custctl .custage{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:999px;background:var(--bg);width:auto}
.custctl .custage button{font:inherit;font-size:.78rem;font-weight:600;border:0;border-radius:999px;padding:5px 10px;background:transparent;color:var(--muted);cursor:pointer;min-height:30px}
.custctl .custage button small{font-weight:400;opacity:.8;margin-left:2px}
.custctl .custage button[aria-pressed="true"]{background:var(--accent);color:var(--surface)}
.custctl .mvpick{margin-left:auto}
.custsum{margin:0 0 6px;font-size:.8rem}
.custfoot{display:flex;gap:12px;align-items:center;margin-top:8px}
@media (max-width:720px){ .custctl .custage{display:inline-flex;width:auto} .custtab td small{display:block} }
/* v1.61.0 K93 2 Busy hours: one line (all orders or Aasandha orders), a slim summary line, Compare outlets in 4 columns */
.peak .pksum{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin:2px 0 6px;font-size:.8rem;color:var(--muted)}
.peak .pksum b{color:var(--ink);font-weight:600}
.peak .pksum i{width:10px;height:10px;border-radius:3px;display:inline-block}
.pko1 .pkoh,.pko1 .pkor{grid-template-columns:minmax(80px,1.2fr) minmax(100px,1fr) minmax(70px,auto) minmax(80px,auto)}
@container (max-width:560px){
  .pko1 .pkoh,.pko1 .pkor{grid-template-columns:minmax(0,1fr) auto minmax(44px,auto) minmax(56px,auto);grid-template-areas:none;column-gap:10px}
  .pko1 .pkor > span{grid-area:auto!important;font-size:.78rem}
  .pko1 .pkor > span::before{content:none!important}
  .pko1 .pkor > span:nth-child(2){color:var(--muted);text-align:left}
}
/* K93 3 card heads in one line: title + (i) + one row of controls */
.movers .mvtabpick{display:none}
@media (max-width:720px){
  .movers .mvtabpick{display:inline-flex;order:3}
  .movers .mvsw{display:none!important}
  .movers .mvctl{order:2}
  .movers .panel-head,.peak .panel-head{flex-wrap:nowrap;gap:6px}
  .peak .pkctl,.movers .mvctl{flex-wrap:nowrap}
  .hsec .mvpick select{padding:5px 22px 5px 9px;background-position:calc(100% - 11px) 52%,calc(100% - 7px) 52%}
}
@media (max-width:720px){ .pko1 .pkoh{display:grid} }
@media (max-width:720px){ .custctl{flex-wrap:nowrap} .custctl .custage button{padding:5px 8px} }
.pko1{max-width:820px}.custctl{max-width:900px}
/* K93 3 table heads on a phone: the title + (i) on one line, the tools in ONE row (search, Sort, Excel, ⋯) */
@media (max-width:720px){
  .panel-head > .tools{flex-wrap:nowrap}
  .panel-head > .tools input[type=search]{flex:1 1 auto;min-width:0;width:auto}
  .panel-head > .tools > .sortsel{flex:0 1 auto;max-width:130px;min-width:0}
  [data-table="lost"] .panel-head > .tools,[data-table="moves"] .panel-head > .tools{flex-wrap:wrap}
  .tools .tmenu .sortsel{max-width:none}
}
/* v1.62.0 K94 owed: Excel + ⋯ (PDF) in the control row; tap-to-sort column names; K95 unmatched payment mark */
.custctl .tmore{position:relative;display:inline-block}
.custctl .tmore > summary{list-style:none;cursor:pointer;min-width:36px;text-align:center;font-weight:700;letter-spacing:.08em}
.custctl .tmore > summary::-webkit-details-marker{display:none}
.custctl .tmenu{position:absolute;right:0;top:calc(100% + 6px);z-index:45;display:grid;gap:6px;min-width:140px;padding:8px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 28px rgba(0,0,0,.3)}
.custctl .mvpick{margin-left:auto}
.custtab th.csort,.osort{cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.osort{font:inherit;color:inherit;background:none;border:0;padding:0;text-align:left;min-height:28px}
.osort.r{text-align:right}
.custtab th.csort:hover,.osort:hover{color:var(--ink)}
.sarrow{font-size:.6rem;margin-left:3px;vertical-align:1px;color:var(--accent)}
.umatch{display:inline-block;font-size:.66rem;color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 45%,transparent);border-radius:999px;padding:0 6px;margin-left:4px;vertical-align:1px}
@media (max-width:720px){ .custctl .mvpick select{max-width:118px} .custtab td .umatch{display:inline-block;margin:2px 0 0} }
.custctl .custsmenu{display:none}
.custctl .custsrow + .btn{margin-left:0}
@media (max-width:720px){ .custctl .custsrow{display:none} .custctl .custsmenu{display:grid} .custctl > .btn.small{margin-left:auto} .custctl .custsmenu select{max-width:none;width:100%} }
/* v1.63.0 K106 2 outlets: sales (with GST) and Aasandha side by side */
.ohd:has(.oxa),.orw:has(.oxa){grid-template-columns:22px minmax(64px,1fr) minmax(70px,96px) 64px 64px minmax(84px,104px) 52px}
.orw .oxa,.ohd .oxa{text-align:right}
.orw .oxa{font-size:.84rem}
.orw .oxa small{color:var(--muted);font-size:.7rem;margin-left:2px}
@media (max-width:720px){
  .ohd:has(.oxa),.orw:has(.oxa){grid-template-columns:20px minmax(0,1fr) 70px minmax(64px,auto) 50px}
  .ohd:has(.oxa) > :nth-child(5),.orw:has(.oxa) > .osh{display:none}
  .ohd:has(.oxa) > :nth-child(4),.orw:has(.oxa) > .oc{order:9}
}
/* v1.63.0 K96 1 every page of a prescription in the big view */
.photozoom .pz-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:44px;height:64px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--surface) 80%,transparent);color:var(--ink);font-size:1.6rem;line-height:1;cursor:pointer}
.photozoom .pz-prev{left:8px}.photozoom .pz-next{right:8px}
.photozoom .pz-pg{color:var(--ink)}
.rxscan{position:relative}
.rxpgs{position:absolute;right:-6px;bottom:-6px;font-size:.62rem;font-weight:700;background:var(--accent);color:var(--surface);border-radius:999px;padding:2px 6px;pointer-events:none}
/* v1.63.0 K98 windows never slide sideways; Close always visible at the top-right while scrolling */
.mw-card{overflow-x:hidden;overflow-y:auto;max-width:100%}
.mw-head{position:sticky;top:-14px;z-index:5;background:var(--surface);margin:-14px -14px 0;padding:14px 14px 8px}
.mw-head [data-mwclose]{flex:none}
.mw-head h3{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stmtbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
.stmtbar .stmtsw{max-width:100%;overflow-x:auto;scrollbar-width:none}
.stmtsum{display:flex;flex-wrap:wrap;gap:4px 14px}
.stmtwin .tablebox{overflow-x:auto;max-width:100%}
@media (max-width:720px){
  .mw-card.stmtwin{width:100%;max-height:92vh}
  .stmtbar{flex-wrap:nowrap}
  .stmtbar .stmtsw{flex:1 1 auto;min-width:0}
  .stmtbar .stmtsw button{padding:6px 9px;font-size:.78rem}
  .stmtdl{display:inline-flex;gap:6px;flex:none}
  .stmtt thead{display:none}
  .stmtt,.stmtt tbody{display:block;width:100%}
  .stmtt tr{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"d n b" "r r a" "u u u";column-gap:10px;row-gap:2px;padding:8px 2px;border-bottom:1px solid var(--line)}
  .stmtt td{padding:0;border:0;min-width:0}
  .stmtt td:nth-child(1){grid-area:d;color:var(--muted)}
  .stmtt td:nth-child(2){grid-area:n;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .stmtt td:nth-child(7){grid-area:b}
  .stmtt td:nth-child(3){grid-area:r;font-size:.78rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .stmtt td:nth-child(5),.stmtt td:nth-child(6){grid-area:a;font-size:.8rem}
  .stmtt td:nth-child(6):not(:empty){color:var(--good)}
  .stmtt td:nth-child(6):not(:empty)::before{content:"paid ";color:var(--muted);font-size:.7rem}
  .stmtt td:nth-child(5):not(:empty)::before{content:"bill ";color:var(--muted);font-size:.7rem}
  .stmtt td:nth-child(4){grid-area:u;font-size:.72rem;color:var(--muted)}
  .stmtt td:nth-child(4):not(:empty)::before{content:"due "}
  .stmtt td:nth-child(4):empty{display:none}
}
@media (max-width:720px){ .stmtbar .stmtsw{flex-wrap:nowrap} }
/* v1.63.0 K99 every Home card folds on its title; folded = the head + its one-line summary */
#main .panel.foldable > .panel-head > h2{cursor:pointer;user-select:none;-webkit-user-select:none}
#main .panel.foldable > .panel-head > h2::after{content:"";display:inline-block;width:7px;height:7px;margin-left:8px;border-right:1.6px solid var(--muted);border-bottom:1.6px solid var(--muted);transform:translateY(-3px) rotate(45deg);transition:transform .15s ease-out}
#main .panel.foldable.folded > .panel-head > h2::after{transform:translateY(0) rotate(-45deg)}
#main .panel.foldable.folded > :not(.panel-head):not(.csum){display:none}
#main .panel.foldable.folded{padding-bottom:10px}
.panel-head .csum{display:none}
#main .panel.foldable.folded > .panel-head .csum{display:inline;margin-left:auto}
#main .panel.foldable:not(.folded) > .panel-head .csum{display:none}
#main .panel.foldable.folded > .csum{margin:2px 0 0}
/* v1.63.0 K102 the outlet chips are the outlet picker for Stock and demand */
button.pav{font:inherit;font-size:.8rem;color:var(--ink);cursor:pointer;min-height:32px;transition:border-color .15s ease-out,background-color .15s ease-out}
button.pav:hover{border-color:color-mix(in srgb,var(--accent) 50%,var(--line))}
button.pav.on,button.pav[aria-pressed="true"]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--chip))}
.pav.allo{font-weight:600}
/* v1.63.0 K104 "‹ Back" when there is a step to go back to */
.navback{font:inherit;font-size:.86rem;font-weight:600;color:var(--ink);background:var(--chip);border:1px solid var(--line);border-radius:999px;padding:6px 12px;min-height:36px;cursor:pointer;flex:none}
.navback[hidden]{display:none}

/* K105 below the wide layout the card wrapper adds nothing */
.hcards{display:contents}
/* K105 the page is centred at every width */
.wrap{margin-left:auto;margin-right:auto}
/* v1.63.0 K100 Paid (12 months) in a mid green, the last payment date under it */
.custtab td.cpaid{white-space:nowrap}
.custtab .paidv{color:var(--good);font-weight:600}
.custtab td.cpaid small{display:block;font-size:.66rem}
.custtab .paidm{display:none;color:var(--good);font-size:.68rem}
@media (max-width:720px){ .custtab .cpaid{display:none} .custtab .paidm{display:block} }
/* K100 the owner's "not light, not so dark" green for money received (one token, light and dark) */
:root{--paid:#2e9e5b}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--paid:#4cb873}}
:root[data-theme="dark"]{--paid:#4cb873}
.custtab .paidv,.custtab .paidm{color:var(--paid)}
/* v1.63.0 K108 Admin › Blocked on Aasandha */
.blkrow{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.blkrow label{display:grid;gap:4px;font-size:.78rem;color:var(--muted)}
.blkrow input{font:inherit;font-size:16px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);min-height:40px}
.blkrow .blkq{flex:1 1 260px}.blkrow .blkq input{width:100%}
.blkrow .blkn{flex:1 1 180px}.blkrow .blkn input{width:100%}
.blksug{display:grid;gap:2px;max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:4px;background:var(--surface)}
.blksug .sg{text-align:left;font:inherit;background:none;border:0;padding:8px 10px;border-radius:8px;color:var(--ink);cursor:pointer;min-height:40px}
.blksug .sg:hover{background:var(--chip)}
.bbill .bbflag{margin:0 0 6px}
/* K98 statement rows on the phone: two tight lines (date · document · balance / due · details · amount) */
@media (max-width:720px){
  .stmtt tr{grid-template-areas:"d n b" "u r a";align-items:baseline;row-gap:1px;padding:7px 2px}
  .stmtt td{height:auto!important;min-height:0!important;line-height:1.3;padding:0!important;background:none!important}
  .stmtt td:nth-child(4){grid-area:u;font-size:.7rem}
  .stmtt td:nth-child(4):not(:empty)::before{content:"due "}
  .stmtt td:nth-child(4):empty{display:block}
  .stmtt tr:hover td{background:none}
  .stmtbar .stmtsw button{white-space:nowrap}
}
@media (max-width:720px){ .stmtt td:empty{display:none} .stmtt tr.k-total,.stmtt tfoot tr{grid-template-areas:"d n b"} }
.mvbrand select{min-width:140px}
/* K106 2 with Aasandha beside sales the Share column gives way (the top outlet still shows its share) */
.ohd:has(.oxa),.orw:has(.oxa){grid-template-columns:22px minmax(64px,1fr) minmax(70px,96px) 64px minmax(84px,108px) 46px}
.ohd:has(.oxa) > :nth-child(5),.orw:has(.oxa) > .osh{display:none}
@media (max-width:720px){ .ohd:has(.oxa),.orw:has(.oxa){grid-template-columns:20px minmax(0,1fr) 70px minmax(64px,auto) 50px} }
/* K106 2 in a narrow outlets card: no wrapping; the Rx count and the margin give way first */
.orw .oxa{white-space:nowrap}
.otab{container-type:inline-size}
@container (max-width:560px){
  .ohd:has(.oxa) > .ox2,.orw:has(.oxa) > .ox2{display:none}
  .ohd:has(.oxa),.orw:has(.oxa){grid-template-columns:20px minmax(0,1fr) minmax(64px,90px) 56px minmax(56px,80px)}
  .orw .oxa small{display:none}
}
/* K110 "How to use" link in the user menu, same look as the menu buttons */
.menu .menulink{display:block;color:var(--ink);text-decoration:none;padding:7px 10px;border-radius:6px}
.menu .menulink:hover{background:var(--chip)}
/* v1.65.0 K114 owed list: on a PC Excel sits in the row, on a phone inside ⋯ (the age chips keep one row) */
.custxlm{display:none}
@media (max-width:720px){.custctl .custxl{display:none}.custxlm{display:inline-flex}.custctl .custage button{padding:5px 7px;white-space:nowrap}}
/* v1.66.0 K107 Godown / Care Pharma rows: what went to our sister companies and the open orders, one small line */
.orw .on .ostore{display:block;font-size:.7rem;font-weight:400;color:var(--muted);white-space:normal;line-height:1.25}
.orw.ost .on{white-space:normal;line-height:1.2}
/* v1.67.0 K118 Product 360: the Expiry tile opens its batches (tap again, Close or Back hides them) */
.ptiles .t.pexp{cursor:pointer}
.ptiles .t.pexp:hover{border-color:var(--bad)}
.pexgo{font-size:.8em;color:var(--muted);margin-left:4px}
.pexl{margin-top:10px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--surface)}
.pexh{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px;font-size:.85rem}
.pexl tr.pexg th{text-align:left;padding-top:8px;color:var(--ink);font-weight:600;border-bottom:1px solid var(--line)}
.pexl tr.pexg th.r{text-align:right}
/* v1.68.0 K122 / K123 statement window: Statement / Summary switch in the head line; "Dates" opens From / To on the bar */
.stmtview{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:999px;background:var(--bg);flex:none}
.stmtview button{font:inherit;font-size:.78rem;font-weight:600;border:0;border-radius:999px;padding:5px 12px;background:transparent;color:var(--muted);cursor:pointer;min-height:32px}
.stmtview button[aria-pressed="true"]{background:var(--accent);color:var(--surface)}
.stmtrng{display:flex;flex-wrap:wrap;align-items:center;gap:8px;width:100%}
.stmtrng[hidden]{display:none}
.stmtrng label{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--muted)}
.stmtrng input{font:inherit;font-size:16px;padding:4px 8px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink)}
.stmtm td.paidv{color:var(--paid)}
@media (max-width:520px){.stmtview button{padding:5px 9px}}
/* v1.68.0 the statement window never scrolls sideways (7 period choices + Dates): the chip row scrolls inside itself */
.mw-card.stmtwin{overflow-x:hidden;grid-template-columns:minmax(0,1fr)}
.mw-card.stmtwin > *{min-width:0}
@media (max-width:520px){.stmtwin .mw-head h3{font-size:.95rem}}
/* v1.69.0 K129 Admin › Blocked on Aasandha: verdict words carry their meaning in text, colour only helps */
.blkt .vd{font-size:.82rem}
.blkt .vd.v-good{color:var(--good)} .blkt .vd.v-warn{color:var(--warn)} .blkt .vd.v-dim{color:var(--muted)}
.blkt .s,.blkl .s{display:block;font-size:.75rem;color:var(--muted)}
.blktools{display:flex;gap:6px;flex-wrap:wrap}
.blkup{cursor:pointer}
.blkpick{position:relative;display:block;min-width:200px}
.blkpick input{width:100%;font-size:16px}
.blkpick .blksug{position:absolute;z-index:6;left:0;right:0;top:100%;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:4px;display:grid}
details.blkform > summary{cursor:pointer;padding:4px 0;list-style:none}
details.blkform[open] > summary{margin-bottom:8px}
/* v1.69.0 K127 compact item card (drawer): the table's own part first, one short head, folded sections */
.itemcard{display:grid;gap:12px}
.itemcard h4{margin:0 0 6px;font-size:.95rem}
.icsec{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--surface)}
.icsec .vd{margin:0 0 6px;font-weight:600}
.icsec .vd.v-good{color:var(--good)} .icsec .vd.v-warn{color:var(--warn)} .icsec .vd.v-dim{color:var(--muted)}
.ichead{display:flex;gap:12px;align-items:flex-start}
.icimg{width:64px;height:64px;object-fit:contain;border-radius:10px;background:#fff;flex:none;cursor:zoom-in}
.icname{margin:0;font-weight:700;font-size:1.02rem}
.icprices{display:flex;flex-wrap:wrap;gap:6px 14px;margin:6px 0 0}
.icprices small{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.03em}
.icfold{border:1px solid var(--line);border-radius:12px;padding:8px 12px;background:var(--surface)}
.icfold > summary{cursor:pointer;font-weight:600;list-style:none;min-height:28px;display:flex;align-items:center}
.icfold > summary::after{content:"›";margin-left:auto;color:var(--muted);transition:transform .15s ease-out}
.icfold[open] > summary::after{transform:rotate(90deg)}
.icfold[open] > summary{margin-bottom:6px}
.itemcard,.itemcard > *{min-width:0}
.itemcard .tablebox{overflow-x:auto;max-width:100%}
@media (max-width:520px){.icot th:nth-child(6),.icot td:nth-child(6),.icot th:nth-child(7),.icot td:nth-child(7){display:none}.icot th,.icot td{padding-left:4px;padding-right:4px}}
/* v1.70.0 K130 / K131 Admin blocked: one line per item, list lines with item chips */
.blkt1 td,.blkt1 th{white-space:nowrap}
.blkt1 tbody tr{cursor:pointer}
.blkt1 .bk-item{max-width:300px;overflow:hidden;text-overflow:ellipsis}
.blkt1 .bk-alt{max-width:220px;overflow:hidden;text-overflow:ellipsis}
.blkt1 .bk-alt.own{color:var(--good)}
.blkm{font-family:var(--mono, ui-monospace, monospace);font-variant-numeric:tabular-nums;white-space:nowrap}
.blkm.good{color:var(--good)} .blkm.warn{color:var(--warn)}
.blkt2 .bk-line{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.blkt2 .bk-items{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.blkt2 tr.bk-blocked td{opacity:.75}
.blkchip{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:999px;padding:1px 2px 1px 10px;font-size:12.5px;max-width:280px}
.blkchip.on{border-color:var(--good);color:var(--good)}
.blkchip button{background:none;border:0;color:var(--muted);font-size:15px;min-width:28px;min-height:28px;cursor:pointer;border-radius:999px}
.blkchip button:hover{color:var(--ink);background:var(--chip)}
.blkt2 .blkpick input{width:110px;font-size:13px;padding:3px 8px}
@media (max-width:640px){
  .blkt1 .bk-by,.blkt1 .bk-since,.blkt1 .bk-aq{display:none}
  .blkt1 .bk-item{max-width:150px} .blkt1 .bk-alt{max-width:110px}
  .blkt2 .bk-line{max-width:130px;white-space:normal}
  .blkt2 .blkpick input{font-size:16px;width:96px}
}
/* v1.71.0 K133 Quote check: one line per item; the full Why on hover / tap the row */
[data-table="quote"] table td.c-fact{max-width:520px!important;white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis}
[data-table="quote"] td.c-name{max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qpick .frow{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
/* v1.71.1 K135 Aasandha code on the chips */
.blkchip .s{font-family:var(--mono, ui-monospace, monospace);font-size:11px}
.blkcode{background:none;border:1px dashed var(--line)!important;border-radius:999px;color:var(--muted);font-size:11.5px!important;min-width:auto!important;min-height:24px!important;padding:0 8px;cursor:pointer}
.blkcode:hover{color:var(--ink)}
.blkcodein{width:78px;font-size:13px;padding:2px 6px;text-transform:uppercase}
.blksug .sg .sku,.blksug .sg .s{font-size:11px;margin-left:4px}
@media (max-width:640px){.blkcodein{font-size:16px}}
/* v1.72.0 K136 / K137 marks on item names (same look everywhere) */
.nmblk{display:inline-flex;align-items:center;justify-content:center;color:var(--bad);background:var(--bad-soft);border-radius:6px;font-size:11px;font-weight:700;line-height:1;padding:2px 4px;margin-right:5px;vertical-align:1px}
.mk{display:inline-flex;align-items:center;margin-left:5px;font-size:12px;line-height:1;color:var(--warn);vertical-align:1px}
.mk.mk-x{color:var(--sib)} .mk.mk-i{color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:1px 4px;font-size:10px;font-weight:700;letter-spacing:.02em}
.mkdot{display:inline-block;width:8px;height:8px;border-radius:50%} .mkdot.out{background:var(--bad)} .mkdot.low{background:var(--warn)}
.mkbox{display:flex;flex-wrap:wrap;gap:4px;align-items:center;padding:6px 0;border-top:1px solid var(--line);margin-top:6px}
.mkbox .note{width:100%}
.mkbox button{font-size:12px;padding:4px 8px;border:1px solid var(--line);border-radius:999px;background:none;color:var(--muted);cursor:pointer;min-height:32px}
.mkbox button.on{color:var(--ink);border-color:var(--ink)}
/* v1.72.1 K139 the "+ item" list floats over the page */
.blksug.blkfloat{position:fixed!important;right:auto!important;z-index:60;max-height:300px;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:4px;box-shadow:0 10px 28px rgba(0,0,0,.35);display:grid}
.blksug.blkfloat .sg{white-space:normal;display:block;width:100%}
/* v1.73.0 K142 e new quotations badge */
.rfqb{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;border-radius:999px;background:var(--accent);color:#1a1a1a;font-size:11px;font-weight:700;line-height:1;vertical-align:2px}
#tabs [role=tab]{position:relative}
@media (max-width:720px){#tabs .rfqb{position:absolute;top:2px;right:6px;margin:0}}
/* v1.73.0 K141 share from WhatsApp / Viber */
.sharebox{max-width:560px}
.shsteps{margin:4px 0 8px 18px;padding:0;display:grid;gap:4px}
.shk{display:grid;grid-template-columns:auto 1fr auto;gap:6px;align-items:center;margin:6px 0}
.shk span{font-size:12px;color:var(--muted)} .shk input{font-family:var(--mono, ui-monospace, monospace);font-size:13px;min-width:0}
@media (max-width:640px){.shk input{font-size:16px}}
/* v1.74.0 K143 supplier offer in the item card */
.icoffer summary{cursor:pointer;color:var(--muted);font-size:13px;padding:4px 0}
.icofrow{display:grid;grid-template-columns:1.4fr 1fr auto auto;gap:8px;align-items:end;margin-top:6px}
.icofrow label{display:grid;gap:2px} .icofrow span{font-size:11px;color:var(--muted)}
.icofrow input,.icofrow select{min-width:0}
@media (max-width:520px){.icofrow{grid-template-columns:1fr 1fr}.icofrow input,.icofrow select{font-size:16px}}
/* v1.75.0 K144 paste a quote */
.qpaste{margin-top:8px;border:1px dashed var(--line);border-radius:12px;padding:10px;display:grid;gap:8px}
.qpaste.drag{border-color:var(--accent);background:var(--chip)}
.qpaste textarea{width:100%;min-height:140px;font-family:var(--mono, ui-monospace, monospace);font-size:13px;box-sizing:border-box}
@media (max-width:640px){.qpaste textarea,.qpaste input{font-size:16px}}
/* v1.76.0 K146 Vendor plan picker; K148 the board note */
.ppick .frow{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ppick .plspend{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;color:var(--muted)}
.ppick .plspend input{width:170px;font-variant-numeric:tabular-nums}
.ppick #plv{max-width:320px}
[data-table="vplan"] td.c-name{max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rboard{border:1px solid var(--line);border-left:3px solid var(--sib);border-radius:10px;padding:8px 12px;margin:4px 0 8px;background:var(--card, transparent)}
.rboard .rbh{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}
.rboard p{margin:0;font-size:.9rem;line-height:1.45}
@media (max-width:600px){.ppick .frow>label:first-child,.ppick #plv{flex:1 1 100%;max-width:none}.ppick .plspend{flex:1 1 calc(100% - 80px);min-width:0}.ppick .plspend input{width:100%;font-size:16px}}
/* v1.77.0 K149 one-line nudge on Home (Always in stock under the minimum) */
.hnudge{display:flex;align-items:center;gap:8px;width:100%;margin:0 0 8px;padding:8px 12px;min-height:44px;border:1px solid var(--line);border-radius:10px;background:transparent;color:var(--ink);font:inherit;font-size:.9rem;text-align:left;cursor:pointer}
.hnudge:hover{background:var(--chip)}
.hnudge>span:nth-child(2){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hnudge .hn-go{color:var(--accent);white-space:nowrap}
/* v1.78.0 K154 one quote line in the side window */
.qwhy{line-height:1.5;margin:0 0 12px}
.qkv{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;margin:0 0 16px;font-size:.9rem}
.qkv dt{color:var(--muted)}.qkv dd{margin:0;text-align:right;font-family:var(--mono, ui-monospace, monospace);font-variant-numeric:tabular-nums}
/* v1.78.1 K155 a quote whose vendor is not known yet: the picker asks */
.qpick .mvpick.ask select{border-color:var(--warn);box-shadow:0 0 0 1px var(--warn) inset}
/* v1.78.3 K157 the tab's picker(s) and one-tap action share one row */
.vfrow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
/* v1.79.0 K159 Compare quotes / link to our RFQ; match a line by hand */
.qcmp{margin-top:8px;border:1px solid var(--line);border-radius:12px;padding:10px;display:grid;gap:8px}
.qcmp .qcl{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px 12px;max-height:220px;overflow:auto}
.qcmp .qcl label{display:flex;gap:6px;align-items:center;font-size:13px;min-height:32px}
.qmatch{margin-top:12px;border-top:1px solid var(--line);padding-top:10px;display:grid;gap:8px}
.qmatch input{width:100%;box-sizing:border-box;min-height:40px}
/* v1.80.0 K160 the vendor's lead time on Quote check */
.mvpick.qlead{display:inline-flex;align-items:center;gap:4px;font-size:.78rem;color:var(--muted)}
.mvpick.qlead input{width:3.2em;font:inherit;font-family:var(--mono);font-size:.82rem;text-align:right;color:var(--ink);background:transparent;border:0;border-bottom:1px dashed var(--line);padding:2px 2px;min-height:28px}
@media (max-width:640px){.mvpick.qlead input{font-size:16px}}
/* v1.84.0 K170 Today: the person's steps in order; the current step in the accent, done steps quiet */
.today .tdk{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:4px 0 8px}
.tdkpi{font:inherit;text-align:left;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:12px;padding:8px 12px;cursor:pointer;display:flex;flex-direction:column;gap:2px;min-height:44px}
.tdkpi:hover{background:var(--chip)}
.tdkpi .l{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
.tdkpi b{font-family:var(--display);font-size:1.25rem}
.tdsteps{list-style:none;margin:0;padding:0}
.tdsteps li{border-top:1px solid var(--line)}
.tdsteps li:first-child{border-top:0}
.tdstep{font:inherit;color:inherit;background:none;border:0;width:100%;display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:center;padding:10px 2px;text-align:left;cursor:pointer;min-height:44px}
.tdstep:hover{background:var(--chip)}
.tdn{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem;background:var(--chip);color:var(--muted)}
.tdsteps li.now .tdn{background:var(--accent);color:#fff}
.tdsteps li.done .tdn{background:var(--good-soft);color:var(--good)}
.tdt{display:flex;flex-direction:column;min-width:0}
.tdt .note{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tdc{font-size:1.05rem;text-align:right}
.mvsecs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 8px}
