/* ============ New ERP — design system ============ */
:root{
  --bg:#f4f6fa; --panel:#ffffff; --ink:#15202e; --muted:#5d6b7e; --faint:#94a1b2;
  --line:#e5e9f0; --line2:#eef1f6;
  /* corporate blue accent (restrained, enterprise) */
  --brand:#1f5fd1; --brand2:#2f6fe0; --brand-d:#184fb0; --brand-ink:#173f8a;
  --ok:#0e9c66; --ok-bg:#e6f6ef; --warn:#c9791b; --danger:#d63d4a; --danger-bg:#fbeaec;
  --amber:#d9a406;
  /* deep-navy sidebar; blue gradient reserved for primary buttons only */
  --nav:linear-gradient(180deg,#1b2942 0%,#111a2c 100%);
  --grad:linear-gradient(135deg,#2160cf,#184fb0);
  --shadow-sm:0 1px 2px rgba(20,27,45,.05),0 1px 3px rgba(20,27,45,.04);
  --shadow:0 3px 12px rgba(20,35,65,.07),0 1px 4px rgba(20,35,65,.05);
  --shadow-lg:0 18px 48px rgba(15,25,50,.16);
  --r:12px; --r-sm:9px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font:14.5px/1.5 -apple-system,"Segoe UI",Roboto,"PingFang TC","Microsoft JhengHei",system-ui,sans-serif;
  background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}
.hidden{display:none!important}
button{font:inherit;cursor:pointer;border:0;border-radius:var(--r-sm);transition:.15s}
input,select,textarea{font:inherit;color:var(--ink)}
a{color:inherit;text-decoration:none}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#c9cee0;border-radius:20px;border:2px solid transparent;background-clip:content-box}

/* ---------- login ---------- */
.login-wrap{min-height:100%;display:grid;place-items:center;padding:24px;background:var(--nav)}
.login-card{background:rgba(255,255,255,.97);padding:36px 32px;border-radius:22px;
  box-shadow:var(--shadow-lg);width:min(380px,92vw);display:flex;flex-direction:column;gap:14px}
.login-logo{width:52px;height:52px;border-radius:12px;background:var(--brand);display:grid;place-items:center;
  font-size:26px;margin-bottom:4px}
.login-card h1{margin:0;font-size:23px;font-weight:800;letter-spacing:-.3px}
.login-card .sub{color:var(--muted);font-size:13px;margin:-6px 0 6px}
.login-card input{padding:13px 15px;border:1.5px solid var(--line);border-radius:12px;transition:.15s}
.login-card input:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 4px rgba(31,95,209,.12)}
.login-card button{padding:13px;background:var(--brand);color:#fff;font-weight:700;font-size:15px}
.login-card button:hover{background:var(--brand-d)}
.ver{font-size:12px;color:var(--faint);font-weight:500}
.err{color:var(--danger);font-size:13px;min-height:16px}

/* ---------- app shell ---------- */
#app{display:flex;min-height:100vh}
.sidebar{width:236px;flex-shrink:0;background:var(--nav);color:#e8edf5;display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;border-right:1px solid #0c1424;z-index:30}
.side-brand{display:flex;align-items:center;gap:11px;padding:20px 20px 16px;font-weight:800;font-size:18px}
.side-brand .mark{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.18);display:grid;place-items:center;font-size:18px}
.side-brand small{display:block;font-size:11px;font-weight:500;opacity:.7;letter-spacing:.5px}
.side-nav{flex:1;overflow-y:auto;padding:6px 12px 12px}
.side-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25)}
.nav-group{margin-top:14px}
.nav-title{font-size:11px;text-transform:uppercase;letter-spacing:.9px;opacity:.6;padding:0 12px 6px;font-weight:700}
.nav-item{display:flex;align-items:center;gap:11px;padding:10px 13px;border-radius:11px;color:rgba(255,255,255,.86);
  font-weight:600;font-size:14px;cursor:pointer;margin-bottom:2px;transition:.14s}
.nav-item .ic{font-size:16px;width:20px;text-align:center}
.nav-item:hover{background:rgba(255,255,255,.12);color:#fff}
.nav-item.active{background:var(--brand);color:#fff}
.nav-item.active .ic{opacity:1}
.side-foot{padding:14px 16px;border-top:1px solid rgba(255,255,255,.15);display:flex;align-items:center;gap:10px}
.side-foot .avatar{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.2);display:grid;place-items:center;font-weight:700}
.side-foot .who{flex:1;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.side-foot .who small{display:block;opacity:.65;font-weight:500}
.side-foot .out{background:rgba(255,255,255,.16);color:#fff;padding:7px 9px;font-size:13px}
.side-foot .out:hover{background:rgba(255,255,255,.28)}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.appbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;padding:14px 24px;
  background:rgba(238,241,247,.82);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.appbar h1{margin:0;font-size:20px;font-weight:800;letter-spacing:-.3px}
.menu-btn{display:none;background:var(--panel);box-shadow:var(--shadow-sm);width:38px;height:38px;font-size:18px}
.tools{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.search{width:230px;max-width:44vw;padding:10px 14px 10px 36px;border:1.5px solid var(--line);border-radius:11px;background:var(--panel) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="%239aa4bd" stroke-width="2" stroke-linecap="round"><circle cx="7" cy="7" r="5"/><path d="M15 15l-4-4"/></svg>') 12px center no-repeat}
.search:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 4px rgba(31,95,209,.1)}
.chk{color:var(--muted);font-size:13px;display:flex;align-items:center;gap:6px;user-select:none;background:var(--panel);
  padding:8px 12px;border-radius:10px;border:1px solid var(--line)}
.daterange{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px;background:var(--panel);padding:6px 10px;border-radius:10px;border:1px solid var(--line)}
.daterange input{border:0;background:transparent;color:var(--ink)}
.btn-new{background:var(--brand);color:#fff;font-weight:600;padding:10px 16px;box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:6px}
.btn-new:hover{background:var(--brand-d)}

.view{padding:22px 24px 40px;flex:1}

/* ---------- KPI cards ---------- */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-bottom:20px}
.kpi{background:var(--panel);border-radius:var(--r);padding:18px 18px 16px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.kpi::after{content:"";position:absolute;right:-20px;top:-20px;width:76px;height:76px;border-radius:50%;background:var(--kpi-tint,rgba(31,95,209,.08))}
.kpi .kicon{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;font-size:19px;margin-bottom:12px;background:var(--kpi-tint,rgba(31,95,209,.1))}
.kpi .klabel{color:var(--muted);font-size:12.5px;font-weight:600}
.kpi .kval{font-size:25px;font-weight:800;letter-spacing:-.5px;margin-top:2px}
.kpi .ksub{font-size:12px;color:var(--faint);margin-top:3px}
.kval.pos{color:var(--ok)} .kval.neg{color:var(--danger)}

/* ---------- cards / grid ---------- */
.grid2{display:grid;grid-template-columns:1.6fr 1fr;gap:16px}
@media(max-width:900px){.grid2{grid-template-columns:1fr}}
.panel-card{background:var(--panel);border-radius:var(--r);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:16px}
.panel-card h3{margin:0 0 14px;font-size:14px;font-weight:800;display:flex;align-items:center;gap:8px}
.panel-card h3 .hint{margin-left:auto;font-size:12px;font-weight:600;color:var(--faint)}

/* chart */
.chart{width:100%;height:230px}
.chart .bar{transition:.3s}
.legend{display:flex;gap:16px;font-size:12.5px;color:var(--muted);margin-top:6px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}

/* mini lists (top customers / recent) */
.mini{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line2)}
.mini:last-child{border:0}
.mini .rank{width:26px;height:26px;border-radius:8px;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:700;font-size:12px;flex-shrink:0;opacity:.9}
.mini .rank.r2{background:#8b93ad}.mini .rank.r3{background:#c0885a}
.mini .m-main{flex:1;min-width:0}
.mini .m-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini .m-sub{font-size:12px;color:var(--faint)}
.mini .m-val{font-weight:700;color:var(--brand-ink)}

/* ---------- list rows ---------- */
.toolbar-inline{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.count{color:var(--muted);font-size:13px}
.totalsbar{padding:12px 16px;background:linear-gradient(100deg,#eef0ff,#f4eeff);border:1px solid #e0e2f7;
  border-radius:var(--r);font-size:13.5px;margin-bottom:14px;display:flex;gap:18px;flex-wrap:wrap;align-items:center}
.totalsbar b{color:var(--ink)} .totalsbar .pf{color:var(--ok);font-weight:800}
.list{display:grid;gap:9px}
.row{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:13px 16px;
  display:grid;gap:4px;cursor:pointer;transition:.13s}
.row:hover{border-color:#c9cdf0;box-shadow:var(--shadow);transform:translateY(-1px)}
.row .r1{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.row .code{font-weight:800;color:var(--brand-ink)}
.row .name{font-weight:600}
.row .cn{color:var(--muted)}
.row .meta{color:var(--muted);font-size:12.5px;display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.tag{font-size:11px;padding:2px 8px;border-radius:20px;background:#eef0ff;color:var(--brand-ink);font-weight:600}
.tag.sup{background:#fff2e6;color:var(--warn)} .tag.off{background:#eef0f4;color:var(--muted)}
.tag.ok{background:var(--ok-bg);color:var(--ok)} .tag.native{background:#e6f8f0;color:var(--ok)}
.price{color:var(--ok);font-weight:700}
.empty{color:var(--muted);text-align:center;padding:56px 20px}
.empty .emoji{font-size:40px;display:block;margin-bottom:10px;opacity:.7}
.pgrid{display:flex;gap:16px;flex-wrap:wrap;color:var(--muted);font-size:13px;margin-top:2px}
.pgrid b{color:var(--ink)}
.pf-pos,.pf-pos b{color:var(--ok)} .pf-neg,.pf-neg b{color:var(--danger)}

/* pager */
.pager{display:flex;align-items:center;justify-content:center;gap:16px;padding:20px 0 6px}
.pager button{background:var(--panel);border:1px solid var(--line);color:var(--muted);padding:8px 14px;font-weight:600}
.pager button:hover:not(:disabled){border-color:var(--brand);color:var(--brand-ink)}
.pager button:disabled{opacity:.4;cursor:default}
#pageInfo{color:var(--muted);font-size:13px}

/* ---------- drawer (detail/edit) ---------- */
.drawer{position:fixed;inset:0;z-index:60}
.drawer-bg{position:absolute;inset:0;background:rgba(20,27,45,.42);backdrop-filter:blur(2px);animation:fade .2s}
@keyframes fade{from{opacity:0}}
.drawer-panel{position:absolute;top:0;right:0;height:100%;width:min(620px,97vw);background:var(--bg);
  box-shadow:var(--shadow-lg);overflow:auto;animation:slidein .26s cubic-bezier(.2,.8,.2,1)}
@keyframes slidein{from{transform:translateX(40px);opacity:.4}}
.drawer-head{position:sticky;top:0;z-index:2;background:var(--bg);display:flex;align-items:center;gap:12px;
  padding:16px 22px;border-bottom:1px solid var(--line)}
.drawer-head .dh-title{font-size:18px;font-weight:800;flex:1;min-width:0}
.drawer-head .dh-title small{display:block;font-size:12.5px;font-weight:500;color:var(--muted);margin-top:1px}
.icon-btn{background:var(--panel);box-shadow:var(--shadow-sm);width:36px;height:36px;font-size:16px;color:var(--muted);border-radius:10px}
.icon-btn:hover{color:var(--ink)}
.btn-edit{background:var(--brand);color:#fff;padding:9px 15px;font-weight:700;box-shadow:var(--shadow-sm)}
.btn-edit:hover{filter:brightness(1.06)}
.drawer-body{padding:18px 22px 48px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:12px}
.card h4{margin:0 0 12px;font-size:12px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);font-weight:800}
.kv{display:grid;grid-template-columns:132px 1fr;gap:8px 14px;font-size:14px}
.kv dt{color:var(--muted)} .kv dd{margin:0;word-break:break-word}
.pfbig{font-size:22px;font-weight:800;margin:6px 0 2px}
.tblwrap{overflow-x:auto;margin:0 -4px}
table.lines{width:100%;border-collapse:collapse;font-size:12.5px;min-width:360px}
table.lines th,table.lines td{border-bottom:1px solid var(--line);padding:8px 8px;text-align:right;white-space:nowrap}
table.lines th:nth-child(2),table.lines td:nth-child(2){text-align:left;white-space:normal;min-width:130px}
table.lines th:first-child,table.lines td:first-child{text-align:left}
table.lines thead th{color:var(--muted);background:#f6f7fc;position:sticky;top:0;font-weight:700}
table.pack{width:100%;border-collapse:collapse;font-size:12.5px}
table.pack th,table.pack td{border:1px solid var(--line);padding:6px 8px;text-align:right}
table.pack th:first-child,table.pack td:first-child{text-align:left;color:var(--muted)}
table.pack thead th{background:#f6f7fc;color:var(--muted)}
.sup-row{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.sup-row:last-child{border:0}.star{color:var(--amber)}

/* ---------- forms ---------- */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}
.form-grid .full{grid-column:1/-1}
.fld{display:flex;flex-direction:column;gap:5px}
.fld label{font-size:12px;font-weight:700;color:var(--muted)}
.fld input,.fld select,.fld textarea{padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;background:var(--panel);transition:.15s}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 4px rgba(31,95,209,.1)}
.fld.chkline{flex-direction:row;align-items:center;gap:8px}
.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}
.btn-save{background:var(--brand);color:#fff;font-weight:600;padding:11px 22px;box-shadow:var(--shadow-sm)}
.btn-save:hover{background:var(--brand-d)} .btn-save:disabled{opacity:.6;cursor:progress}
.btn-cancel{background:var(--panel);border:1px solid var(--line);color:var(--muted);padding:11px 18px;font-weight:600}
.btn-ghost{background:#eef0ff;color:var(--brand-ink);font-weight:700;padding:8px 12px}
/* line item editor */
.litem{display:grid;grid-template-columns:1.4fr 2fr .8fr .8fr auto;gap:8px;align-items:end;padding:10px;border:1px solid var(--line);border-radius:11px;margin-bottom:8px;background:var(--panel)}
.litem .fld label{font-size:11px}
.litem .del{background:var(--danger-bg);color:var(--danger);width:34px;height:38px;font-size:15px;align-self:end}
@media(max-width:620px){.litem{grid-template-columns:1fr 1fr;}.form-grid{grid-template-columns:1fr}}
.picker-wrap{position:relative}
.picker-list{position:absolute;z-index:5;left:0;right:0;top:calc(100% + 4px);background:var(--panel);border:1px solid var(--line);
  border-radius:11px;box-shadow:var(--shadow-lg);max-height:260px;overflow:auto}
.picker-list div{padding:9px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--line2)}
.picker-list div:hover{background:#f3f4fd}
.picker-list .p-code{font-weight:700;color:var(--brand-ink)}

/* toast */
#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(20px);z-index:90;
  background:var(--ink);color:#fff;padding:12px 22px;border-radius:12px;font-weight:600;box-shadow:var(--shadow-lg);
  opacity:0;pointer-events:none;transition:.25s}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#toast.ok{background:linear-gradient(120deg,#0fae6e,#12b886)}
#toast.err{background:linear-gradient(120deg,#e5484d,#e5484d)}

/* ---------- mobile ---------- */
.scrim{position:fixed;inset:0;background:rgba(20,27,45,.4);z-index:29;display:none}
@media(max-width:860px){
  .sidebar{position:fixed;left:0;top:0;transform:translateX(-100%);transition:.25s}
  #app.nav-open .sidebar{transform:none}
  #app.nav-open .scrim{display:block}
  .menu-btn{display:grid;place-items:center}
  .view{padding:16px 14px 40px} .appbar{padding:12px 14px}
}

/* doc action bar in detail drawer */
.doc-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.doc-actions .btn-ghost{padding:9px 14px}

/* ---------- AI operation wizard ---------- */
.ai-fab{position:fixed;right:22px;bottom:22px;z-index:70;width:56px;height:56px;border-radius:50%;
  background:var(--brand);color:#fff;font-size:24px;box-shadow:0 8px 22px rgba(31,95,209,.4);display:grid;place-items:center}
.ai-fab:hover{background:var(--brand-d);transform:translateY(-2px)}
.ai-panel{position:fixed;right:22px;bottom:22px;z-index:71;width:min(400px,94vw);height:min(560px,80vh);
  background:var(--panel);border-radius:16px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden;
  animation:aiin .22s cubic-bezier(.2,.8,.2,1)}
@keyframes aiin{from{transform:translateY(20px) scale(.97);opacity:.4}}
.ai-head{background:var(--nav);color:#fff;padding:13px 14px;display:flex;align-items:center;gap:8px}
.ai-head b{font-size:15px}.ai-head span{font-size:11.5px;opacity:.7;flex:1}
.ai-head .icon-btn{background:rgba(255,255,255,.16);color:#fff;width:30px;height:30px;box-shadow:none}
.ai-head .icon-btn:hover{background:rgba(255,255,255,.28)}
.ai-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;background:#f7f9fc}
.ai-msg{max-width:86%;padding:10px 13px;border-radius:14px;font-size:13.5px;line-height:1.65;white-space:normal;word-break:break-word}
.ai-msg.bot{background:#fff;border:1px solid var(--line);border-top-left-radius:4px;align-self:flex-start}
.ai-msg.me{background:var(--brand);color:#fff;border-top-right-radius:4px;align-self:flex-end}
.ai-chips{display:flex;flex-direction:column;gap:7px;align-self:flex-start;max-width:100%}
.ai-chip{background:#eaf1fc;color:var(--brand-ink);border:1px solid #d5e3f8;padding:8px 12px;border-radius:12px;font-size:13px;text-align:left;font-weight:600}
.ai-chip:hover{background:#dce9fb}
.ai-typing i{animation:blink 1.2s infinite;opacity:.3}.ai-typing i:nth-child(2){animation-delay:.2s}.ai-typing i:nth-child(3){animation-delay:.4s}
@keyframes blink{50%{opacity:1}}
.ai-input{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);background:var(--panel)}
.ai-input input{flex:1;padding:11px 13px;border:1.5px solid var(--line);border-radius:11px}
.ai-input input:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px rgba(31,95,209,.12)}
.ai-input button{background:var(--brand);color:#fff;font-weight:600;padding:0 18px;border-radius:11px}
.ai-input button:hover{background:var(--brand-d)}.ai-input button:disabled{opacity:.5}
@media(max-width:480px){.ai-panel{right:0;bottom:0;width:100vw;height:82vh;border-radius:16px 16px 0 0}}

/* ---------- quick-add modal ---------- */
.qf{position:fixed;inset:0;z-index:80;display:grid;place-items:center}
.qf-bg{position:absolute;inset:0;background:rgba(20,27,45,.45)}
.qf-card{position:relative;background:var(--panel);border-radius:16px;box-shadow:var(--shadow-lg);width:min(420px,94vw);padding:22px}
.qf-title{font-size:16px;font-weight:800;margin-bottom:14px}
.qf-fields{display:grid;gap:10px}
.qf-fields .fld label{font-size:12px;font-weight:700;color:var(--muted)}
.qf-fields input,.qf-fields select{padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;width:100%}
.qf-fields input:focus{outline:0;border-color:var(--brand)}
.qf-fields .chkline{display:flex;align-items:center;gap:8px;flex-direction:row}
.qf-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}
/* detail sub-sections */
.subhead{display:flex;align-items:center;gap:8px;margin:0 0 10px}
.subhead h4{margin:0;flex:1}
.mini-add{background:#eaf1fc;color:var(--brand-ink);font-weight:700;padding:6px 11px;border-radius:9px;font-size:12.5px}
.mini-add:hover{background:#dce9fb}
.rowline{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}
.rowline:last-child{border:0}.rowline .grow{flex:1;min-width:0}
.rowline .del-x{background:var(--danger-bg);color:var(--danger);width:26px;height:26px;border-radius:7px;font-size:13px;flex-shrink:0}
.rowline .mini-btn{background:#eef1f6;color:var(--muted);padding:4px 9px;border-radius:8px;font-size:12px;font-weight:600}
.rowline .mini-btn:hover{background:#e2e6ee;color:var(--ink)}
.act-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}

/* ---------- reports center ---------- */
.rep-panel{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}
.rep-ctl{display:flex;flex-direction:column;gap:4px}
.rep-ctl label{font-size:11.5px;font-weight:700;color:var(--muted)}
.rep-ctl select,.rep-ctl input{padding:9px 11px;border:1.5px solid var(--line);border-radius:9px;background:var(--panel);min-width:150px}
.rep-ctl select:focus,.rep-ctl input:focus{outline:0;border-color:var(--brand)}
.rep-panel .btn-new,.rep-panel .chk{align-self:flex-end}
.rep-bars{display:flex;flex-direction:column;gap:8px}
.rep-bar-row{display:flex;align-items:center;gap:10px;font-size:13px}
.rep-bar-row .rl{width:130px;flex-shrink:0;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rep-bar-row .rb{flex:1;background:#eef1f6;border-radius:6px;height:16px;overflow:hidden}
.rep-bar-row .rb i{display:block;height:100%;background:var(--brand);border-radius:6px;transition:.3s}
.rep-bar-row .rv{width:110px;text-align:right;font-weight:700;color:var(--ink)}
table.rep-table{width:100%;border-collapse:collapse;font-size:13px;min-width:400px}
table.rep-table th,table.rep-table td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;white-space:nowrap}
table.rep-table th.r,table.rep-table td.r{text-align:right}
table.rep-table thead th{background:#f6f7fc;color:var(--muted);font-weight:700;position:sticky;top:0}
table.rep-table tr.rep-tot td{border-top:2px solid var(--brand);font-weight:800;background:#f4f7ff}

/* v0.7.1: packing editor grid + product photo */
.pack-edit{width:100%;border-collapse:collapse;font-size:12.5px}
.pack-edit th{background:#f2f6fc;color:#4a5a75;font-weight:600;padding:5px 4px;border:1px solid var(--line);text-align:center}
.pack-edit td{border:1px solid var(--line);padding:0}
.pack-edit td.pt{background:#f8fafd;font-weight:600;padding:5px 8px;white-space:nowrap}
.pack-edit input{width:100%;min-width:52px;border:0;padding:6px 5px;font-size:12.5px;text-align:right;background:transparent}
.pack-edit input:focus{outline:2px solid var(--brand);background:#fff}
.photo-card{text-align:center}
.prod-photo{max-width:100%;max-height:260px;border-radius:8px;cursor:zoom-in}
