/* CDI Pricelist */
:root{
  --navy:#0A1A33; --navy-2:#13284a; --ink:#0f172a; --text:#1e293b; --muted:#64748b; --line:#e2e8f0; --line-2:#eef2f7;
  --bg:#f4f6fa; --card:#fff; --blue:#2E7FE8; --blue-soft:#e8f1fd; --gold:#FFB020; --gold-soft:#fff5dd;
  --green:#12B76A; --green-soft:#e3f8ee; --red:#e5484d; --red-soft:#fdeaea; --violet:#7c5cff; --violet-soft:#efebff;
  --r:10px; --side:208px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font:14px/1.45 Figtree,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}
a{color:var(--blue)}
button,input,select,textarea{font:inherit;color:inherit}
.hidden{display:none!important}

/* shell — compact sidebar, collapses to icons (desktop); app bar + bottom tabs (phone) */
.side{position:fixed;inset:0 auto 0 0;width:var(--side);background:var(--navy);color:#cbd5e1;display:flex;flex-direction:column;z-index:30;transition:width .18s ease}
.brand{padding:16px 14px 12px;border-bottom:1px solid rgba(255,255,255,.07)}
.brand-mini{display:none;width:36px;border-radius:9px;margin:0 auto}
.brand-app{margin-top:9px;color:#fff;font-weight:800;font-size:11px;letter-spacing:.22em;text-transform:uppercase;display:flex;align-items:center;gap:8px}
.brand-app::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(255,176,32,.7),transparent)}
.lockup{display:flex;align-items:center;gap:7px}
.lockup img{display:block;height:auto}
.lockup .lk-cdi{width:32px;border-radius:8px}
.lockup .lk-x{color:#8ea0bd;font-weight:600;font-size:12px}
.lockup .lk-cx{width:114px}
.lockup.lk-login{justify-content:center;gap:14px}
.lockup.lk-login .lk-cdi{width:64px;border-radius:14px}
.lockup.lk-login .lk-cx{width:190px}
.lockup.lk-login .lk-x{font-size:20px}
.lockup.lk-print{display:none}
.side nav{display:flex;flex-direction:column;gap:2px;padding:8px;flex:1;overflow:auto}
.side nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:#cbd5e1;text-decoration:none;font-weight:500;font-size:13.5px;white-space:nowrap}
.side nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.side nav a.on{background:rgba(46,127,232,.2);color:#fff;box-shadow:inset 3px 0 0 var(--gold)}
.side nav a svg{opacity:.85;flex:none}
.me{border-top:1px solid rgba(255,255,255,.08);padding:12px 12px 12px 14px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;position:relative}
.me .who{display:flex;align-items:center;gap:9px;width:100%;min-width:0}
.avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--blue),#1b5fc0);color:#fff;display:grid;place-items:center;font-weight:800;font-size:13px;flex:none}
.whotext{min-width:0}
.me b{color:#fff;display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.me small{color:#8ea0bd;font-size:11.5px}
.melinks{display:flex;gap:12px;padding-left:39px}
.me a{color:#8ea0bd;font-size:12px;text-decoration:none}.me a:hover{color:#fff}
.collapse{position:absolute;right:10px;bottom:12px;width:26px;height:26px;border-radius:7px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#8ea0bd;display:grid;place-items:center;cursor:pointer;padding:0}
.collapse:hover{color:#fff;background:rgba(255,255,255,.1)}
.topbar,.bottomnav,.scrim{display:none}
.main{margin-left:var(--side);padding:22px 26px 60px;min-width:0;transition:margin-left .18s ease}
body.bare .main{margin:0;padding:0}
/* mini sidebar (icons only) */
body.side-mini{--side:66px}
body.side-mini .lockup,body.side-mini .brand-app,body.side-mini .side nav a span,body.side-mini .whotext,body.side-mini .melinks{display:none}
body.side-mini .brand-mini{display:block}
body.side-mini .brand{padding:14px 8px}
body.side-mini .side nav a{justify-content:center;padding:10px 0}
body.side-mini .me{justify-content:center;padding:12px 6px 44px}
body.side-mini .me .who{justify-content:center}
body.side-mini .collapse{left:50%;right:auto;transform:translateX(-50%) rotate(180deg)}

.phead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:0 0 16px;flex-wrap:wrap}
.phead h1{margin:0;font-size:24px;line-height:1.15;color:var(--ink);letter-spacing:-.01em}
.phead p{margin:5px 0 0;color:var(--muted);max-width:760px}
.pact{display:flex;gap:8px;flex-wrap:wrap}

.flash{padding:11px 14px;border-radius:8px;margin:0 0 14px;background:var(--green-soft);color:#05603a;border:1px solid #b5ebd0}
.flash.err{background:var(--red-soft);color:#9b1c1f;border-color:#f6c2c3}
.flash.warn{background:var(--gold-soft);color:#7a4b00;border-color:#ffe2a3}

/* buttons + inputs */
.btn{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:8px;border:1px solid var(--blue);background:var(--blue);color:#fff;font-weight:600;text-decoration:none;cursor:pointer;white-space:nowrap}
.btn:hover{filter:brightness(1.06)}
.btn.ghost{background:#fff;color:var(--text);border-color:var(--line)}
.btn.ghost:hover{border-color:#cbd5e1;filter:none;background:#f8fafc}
.btn.danger{background:#fff;color:var(--red);border-color:#f6c2c3}
.btn.sm{height:30px;padding:0 10px;font-size:13px}
.btn:disabled{opacity:.5;cursor:not-allowed}
input[type=text],input[type=password],input[type=search],input[type=number],select,textarea{height:36px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 10px;outline:none}
textarea{height:auto;padding:8px 10px}
input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(46,127,232,.15)}
.link{all:unset;cursor:pointer;display:block}
.chk{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-weight:500;cursor:pointer;white-space:nowrap}

/* toolbar */
.toolbar{display:flex;flex-direction:column;gap:10px;margin-bottom:12px;position:sticky;top:0;z-index:12;background:var(--bg);padding:6px 0 8px}
.tabs{display:flex;gap:6px;overflow-x:auto;scrollbar-width:thin;padding-bottom:2px}
.tab{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 13px;font-weight:600;cursor:pointer;white-space:nowrap;color:var(--text)}
.tab i{font-style:normal;color:var(--muted);font-weight:500;margin-left:3px;font-size:12px}
.tab.on{background:var(--navy);border-color:var(--navy);color:#fff}.tab.on i{color:#9fb3d4}
.filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.search{position:relative;flex:1;min-width:200px;max-width:380px}
.search svg{position:absolute;left:10px;top:10px;color:var(--muted)}
.search input{width:100%;padding-left:32px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}
.seg a{padding:7px 14px;text-decoration:none;color:var(--text);font-weight:600}
.seg a.on{background:var(--navy);color:#fff}
.settabs a{padding:9px 22px;font-size:14px}
.settabs a.on{background:#e00000}

/* price table — brand rows with logo, merged model name, coloured price columns */
.tablewrap{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:auto;max-height:calc(100vh - 250px);box-shadow:0 1px 2px rgba(15,23,42,.04)}
table.pl{border-collapse:separate;border-spacing:0;width:100%;font-variant-numeric:tabular-nums}
table.pl th{position:sticky;top:0;z-index:3;background:#13284a;color:#fff;font-weight:700;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;text-align:center;padding:11px 10px;border-right:1px solid rgba(255,255,255,.08);white-space:nowrap}
table.pl th small{text-transform:none;font-weight:500;opacity:.7;letter-spacing:0}
table.pl th.num{text-align:center}
table.pl td{padding:6px 9px;border-bottom:1px solid var(--line-2);border-right:1px solid var(--line-2);vertical-align:middle;white-space:nowrap;font-size:13.5px}
table.pl .num{text-align:right;white-space:nowrap}
table.pl .c{text-align:center}
table.pl td.strong{font-weight:800;color:var(--ink)}
table.pl td.muted{color:var(--muted)}
.picurl{display:flex;gap:6px;margin-top:6px}
.picurl input{flex:1;min-width:0;height:32px}
.searchrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:-4px 0 12px}
.bact a.link{display:inline;color:var(--blue);font-size:12.5px;font-weight:600;text-decoration:underline;text-underline-offset:2px}
table.pl .dash{color:#cbd5e1}
table.pl td.code{font-family:ui-monospace,Consolas,monospace;font-size:11.5px;color:#334155;white-space:normal;overflow-wrap:anywhere;min-width:96px;max-width:150px;line-height:1.3}
table.pl tr.it.clickable{cursor:pointer}
table.pl tr.it.clickable:hover td{background-image:linear-gradient(rgba(46,127,232,.06),rgba(46,127,232,.06))}
table.pl tr.it.picked td{background-image:linear-gradient(rgba(46,127,232,.12),rgba(46,127,232,.12))}
th.ck,td.ck{width:34px;text-align:center;padding-left:6px!important;padding-right:6px!important}
td.ck input,th.ck input{width:16px;height:16px;cursor:pointer;accent-color:var(--blue)}
th.pic,td.pic{width:42px;padding:4px 6px!important;text-align:center}
.thumb{width:32px;height:32px;border-radius:7px;object-fit:cover;display:block;margin:auto;background:#f1f5f9;border:1px solid var(--line)}
.thumb.none{display:grid;place-items:center;color:#d5dde8;background:transparent;border-color:transparent}
/* MODEL NAME looks merged per series: only the first row of a run shows the name */
td.series em{font-style:normal;color:#94a3b8;font-weight:700}
table.pl td.vendor{font-size:12.5px}
table.pl td.series{white-space:normal;overflow-wrap:break-word;min-width:170px;max-width:230px;line-height:1.3;text-align:center;font-weight:800;color:#1b4f9c;font-size:12.5px;letter-spacing:.02em;text-transform:uppercase;background:#fbfdff}
table.pl td.series{position:relative;vertical-align:top}
table.pl td.simg{position:relative;vertical-align:top;width:120px;min-width:110px;background:#fff}
table.pl tr.it.sfirst td.simg > span{position:absolute;left:0;right:0;top:0;display:flex;align-items:center;justify-content:center;padding:6px;z-index:1;pointer-events:none;overflow:hidden}
table.pl td.simg img{max-width:104px;max-height:78px;width:auto;height:auto;object-fit:contain;display:block}
table.pl tr.it.sfirst td.simg > span.flow{position:static;height:auto!important}
tr.it:not(.sfirst) td.simg > span{display:none}
tr.it:not(.slast) td.simg{border-bottom-color:transparent}
.noimg{font-style:normal;font-size:10.5px;color:#cbd5e1}
table.pl tr.it.sfirst td.series > span{position:absolute;left:0;right:0;top:0;display:flex;align-items:center;justify-content:center;padding:4px 10px;z-index:1;pointer-events:none;overflow:hidden}
table.pl tr.it.sfirst td.series > span.flow{position:static;height:auto!important;padding:0}
tr.it:not(.sfirst) td.series > span{display:none}
tr.it:not(.slast) td.series{border-bottom-color:transparent}
/* column tones */
td.t-blue{background:#eef5ff}td.t-green{background:#effaf3}td.t-sun{background:#fffbea}td.t-violet{background:#f5f2ff}
td.t-pink{background:#fdf2f8}td.t-teal{background:#ecfbfa}
td.t-final{background:#fff1e3;color:#9a3412!important;font-size:14px}
th.t-final{background:#7c2d12!important}
td.rule{color:#94a3b8;font-style:italic}
td.own{color:#8a5a00;font-weight:700;position:relative}
td.own::after{content:"";position:absolute;top:7px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--gold)}
.vbadge{display:inline-block;padding:2px 7px;border-radius:6px;font-size:10.5px;font-weight:700;line-height:1.3;letter-spacing:.01em;color:var(--vc);background:color-mix(in srgb,var(--vc) 11%,#fff);border:1px solid color-mix(in srgb,var(--vc) 28%,#fff);white-space:nowrap}
.swatches{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.swatches input[type=color]{width:42px;height:32px;padding:2px;border:1px solid var(--line);border-radius:8px;background:#fff}
.swatch{width:22px;height:22px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);background:var(--vc);cursor:pointer;padding:0}
.vbadge img{height:16px;width:auto;max-width:40px;object-fit:contain;vertical-align:middle;margin:-2px 6px 0 -3px;border-radius:3px;background:#fff}
.vlogo-row{display:flex;gap:12px;align-items:flex-start}
.vlogo{width:64px;height:48px;object-fit:contain;border:1px solid var(--line);border-radius:8px;background:#fff;padding:3px}
.vlogo.none{display:grid;place-items:center;font-size:11px;color:var(--muted);background:#f8fafc}
.vdot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--vc);margin-right:6px;vertical-align:middle}

/* list + credit card views look like the CDI MASTERFILE sheets */
table.pl[data-mode=list] thead th,table.pl[data-mode=card] thead th{background:#d9d9d9;color:#e00000;font-size:12px;border-right:1px solid #bfbfbf}
table.pl[data-mode=list] thead th.t-profit{background:#20124d;color:#fff}
table.pl[data-mode=list] tr.gt td{background:#20124d;font-size:13px;letter-spacing:.14em}
table.pl[data-mode=list] td.t-net,table.pl[data-mode=list] td.t-profit,table.pl[data-mode=list] td.t-sell{background:#fff}
td.t-srp{color:#e00000!important;text-decoration:line-through;font-weight:700;background:#fff}
table.pl[data-mode=list] td.t-sell{color:var(--ink)!important;font-weight:800;font-size:14px}
table.pl[data-mode=list] td.t-profit:not(.rule):not(.own){color:var(--ink)}
th .ccset{display:block;font-size:9.5px;letter-spacing:.08em;opacity:.75;margin-bottom:1px}
.cchide{display:none!important}
.cctoggle{background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 10px}
table.pl[data-mode=list] thead th.cc{background:#ffff00;color:#e00000}
/* credit card */
table.pl[data-mode=card] thead th{background:#ffff00;color:#e00000}
table.pl[data-mode=card] tr.gt td{background:#9900ff;font-size:13px;letter-spacing:.14em}
table.pl[data-mode=card] tr.gt[data-type=split] td{background:#1155cc}
table.pl[data-mode=card] tr.gt[data-type=window] td{background:#38761d}
table.pl[data-mode=card] tr.gt[data-type=floor] td{background:#e69138}
table.pl[data-mode=card] tr.gt[data-type=cassette] td{background:#cc0000}
table.pl[data-mode=card] tr.gt[data-type=suspended] td{background:#9900ff}
td.t-cc-sell{color:#e00000!important;font-weight:800;font-size:15px;background:#fff}
td.t-cc-straight{font-weight:800;color:var(--ink);background:#fff}
td.t-cc-green{background:#d9ead3}
td.t-cc-peach{background:#fce5cd}
td.t-cc-blue{background:#c9daf8}
td.t-cc-lilac{background:#d9d2e9}
td.t-cc-month{background:#f4cccc;color:#c00000;font-size:12.5px}

/* group rows */
tr.grp td{position:sticky;left:0}
tr.gt td{background:var(--navy);color:#fff;font-weight:800;letter-spacing:.12em;text-transform:uppercase;font-size:11.5px;padding:8px 14px}
tr.gb td{background:#fff;border-bottom:1px solid var(--line);padding:8px 12px}
.bhead{display:inline-flex;align-items:center;gap:12px;flex-wrap:wrap;position:sticky;left:12px}
.gtl{position:sticky;left:14px}
.blogo{height:34px;width:auto;max-width:90px;object-fit:contain;border:1px solid var(--line);border-radius:8px;padding:3px 6px;background:#fff}
.blogo.none{display:inline-grid;place-items:center;width:44px;height:34px;padding:0;font-weight:800;color:var(--muted);background:#f1f5f9;font-size:13px}
.bhead b{font-size:16px;color:var(--ink);letter-spacing:.02em}
.bcount{color:var(--muted);font-size:12.5px}
.bcount i{font-style:normal;font-weight:700;color:var(--text)}
.bact{display:inline-flex;gap:12px;margin-left:6px}
.bact .link{display:inline;color:var(--blue);font-size:12.5px;font-weight:600;text-decoration:underline;text-underline-offset:2px}
.bact .link.red{color:var(--red)}
.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}
.s-same{background:var(--green-soft);color:#05603a}
.s-extra{background:var(--blue-soft);color:#174ea6}
.s-update{background:var(--gold-soft);color:#8a5a00}
.s-noprice{background:var(--red-soft);color:#9b1c1f}
table.pl.cust .int{display:none}
.print-head{display:none}
/* brand tabs + bulk bar */
.btabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
.btab{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;border-radius:9px;padding:5px 10px;font-weight:600;font-size:13px;cursor:pointer;white-space:nowrap;color:var(--text)}
.btab i{font-style:normal;color:var(--muted);font-weight:500;font-size:11.5px}
.btab.on{border-color:var(--blue);background:var(--blue-soft);color:#174ea6;box-shadow:inset 0 0 0 1px var(--blue)}
.bmini{height:18px;width:auto;max-width:44px;object-fit:contain}
.bmini.none{display:none}
.bulkbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--navy);color:#fff;border-radius:10px;padding:8px 12px}
.bulkbar b{color:var(--gold)}
.bulkbar .btn.ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.3)}
.bulkbar .btn.danger{background:#fff}
.bulkbar .clearsel{color:#9fb3d4;font-size:12.5px;margin-left:auto;cursor:pointer}

/* cards / forms */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;margin-bottom:16px}
.card h2{margin:0 0 4px;font-size:16px;color:var(--ink)}
.card h3{margin:16px 0 8px;font-size:14px}
.card > p.sub{margin:0 0 14px;color:var(--muted)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.stat{background:#f8fafc;border:1px solid var(--line-2);border-radius:8px;padding:10px 12px}
.stat b{display:block;font-size:22px;color:var(--ink)}
.stat span{color:var(--muted);font-size:12px}
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
.field label{font-weight:600;font-size:13px}
.field small{color:var(--muted)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
table.simple{border-collapse:collapse;width:100%}
table.simple th,table.simple td{padding:8px 10px;border-bottom:1px solid var(--line-2);text-align:left;vertical-align:top}
table.simple th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;background:#f8fafc}
table.simple .num{text-align:right}
.list{margin:6px 0 0;padding-left:18px;max-height:220px;overflow:auto;color:var(--muted)}
.empty{text-align:center;padding:50px 20px;color:var(--muted)}
.empty h2{color:var(--ink);margin:0 0 6px}
code,.mono{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;background:#f1f5f9;border-radius:5px;padding:1px 5px}
.keybox{font-family:ui-monospace,Consolas,monospace;background:var(--navy);color:#fff;padding:12px 14px;border-radius:8px;word-break:break-all;margin:8px 0}

.vgrid .row2{grid-template-columns:1fr}
.vgrid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:16px;align-items:start}
@media (max-width:1100px){.vgrid{grid-template-columns:1fr}}
.kinds{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.ev{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:700;white-space:nowrap}
.ev-login{background:var(--green-soft);color:#05603a}.ev-logout{background:#f1f5f9;color:#475569}.ev-login_failed{background:var(--red-soft);color:#9b1c1f}
.ev-price{background:var(--blue-soft);color:#174ea6}.ev-formula{background:var(--violet-soft);color:#5b3fd6}.ev-import{background:var(--gold-soft);color:#8a5a00}.ev-settings{background:#ecfbfa;color:#0f766e}

.accbox{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:4px 0 14px;background:#fafcff}
.accgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.accgrid>div{display:flex;flex-direction:column;gap:6px}
.accgrid .chk{color:var(--text)}
.accgrid.off{opacity:.45;pointer-events:none}
@media (max-width:900px){.accgrid{grid-template-columns:1fr}}

.cardhead{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.logogrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.logotile{border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;background:#fff}
.logotile.ok{border-color:var(--green);background:var(--green-soft)}
.lt-imgs{display:flex;align-items:center;gap:8px}
.lt-imgs span:not(.lt-arrow){flex:1;height:44px;border:1px dashed var(--line);border-radius:8px;display:grid;place-items:center;background:#fff;overflow:hidden}
.lt-imgs img{max-height:38px;max-width:90%;object-fit:contain}
.lt-imgs em{font-size:11px;color:var(--muted);font-style:normal}
.lt-arrow{color:var(--muted)}
.lt-msg{color:var(--muted);font-size:11.5px}
.synctbl td{vertical-align:middle}
.synctbl .sthumb{width:56px;height:44px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:6px}
.synctbl .chg{background:#fff3c4;border-radius:4px;padding:0 3px}
.synctbl tr.isdone{opacity:.55}
.c-high{background:var(--green-soft);color:#05603a}.c-medium{background:var(--gold-soft);color:#8a5a00}.c-low{background:var(--red-soft);color:#9b1c1f}

/* formula grid */
.fgrid{border-collapse:separate;border-spacing:0;width:100%;font-variant-numeric:tabular-nums}
.fgrid th,.fgrid td{padding:6px 8px;border-bottom:1px solid var(--line-2);text-align:left;white-space:nowrap}
.fgrid th{font-size:12px;color:var(--muted);background:#f8fafc;text-transform:uppercase;letter-spacing:.03em}
.fgrid td.hp{font-weight:700;color:var(--ink)}
.fgrid tr.typedef td{background:var(--gold-soft)}
.rulecell{display:flex;gap:4px;align-items:center}
.rulecell input{width:96px;height:32px;text-align:right}
.rulecell select{height:32px;padding:0 4px;font-size:12px}
.rulecell .cnt{font-size:11px;color:var(--muted);min-width:46px}
.formula-eq{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 2px}
.eq{background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-weight:600}
.eq b{color:var(--blue)}

/* modal */
.modal{position:fixed;inset:0;background:rgba(10,26,51,.5);display:none;align-items:flex-start;justify-content:center;z-index:50;padding:32px 16px;overflow:auto}
.modal.open{display:flex}
body.modal-open{overflow:hidden}
.modal .box{background:#fff;border-radius:14px;width:100%;max-width:720px;padding:0;box-shadow:0 24px 70px rgba(10,26,51,.35);overflow:hidden}
.modal .box.wide{max-width:900px}
.mhead{display:flex;align-items:center;gap:14px;padding:16px 20px;background:linear-gradient(135deg,var(--navy),#1b3a6b);color:#fff}
.mhead h2{margin:0;font-size:18px;color:#fff;line-height:1.25}
.mhead small{color:#9fb3d4;font-size:12.5px}
.mtitle{flex:1;min-width:0}
.mpic:empty{display:none}
.mpic img{width:52px;height:52px;border-radius:10px;object-fit:cover;background:#fff}
.mhead .x{background:rgba(255,255,255,.1);border:0;color:#fff;width:34px;height:34px;border-radius:8px;font-size:22px;line-height:1;cursor:pointer}
.mtabs{display:flex;gap:4px;padding:0 16px;border-bottom:1px solid var(--line);background:#f8fafc}
.mtab{border:0;background:none;padding:12px 14px;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-1px}
.mtab.on{color:var(--navy);border-bottom-color:var(--gold)}
#itemForm{padding:18px 20px 16px}
.mpane{display:none}
.mpane.on{display:block}
.modal .foot{display:flex;justify-content:space-between;gap:8px;margin-top:10px;padding-top:14px;border-top:1px solid var(--line);flex-wrap:wrap}
.foot-r{display:flex;gap:8px;margin-left:auto}
.row4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.chkrow{display:flex;gap:14px;flex-wrap:wrap}
.chkrow .chk{color:var(--text)}
.small-link{font-weight:600;font-size:12px;margin-left:6px}
.picrow{display:flex;gap:16px;align-items:center;margin-bottom:14px;padding:12px;border:1px dashed var(--line);border-radius:10px;background:#fafcff}
.picbox{width:96px;height:96px;border-radius:10px;background:#f1f5f9;display:grid;place-items:center;overflow:hidden;flex:none;border:1px solid var(--line)}
.picbox img{width:100%;height:100%;object-fit:cover}
.picbox .none{color:var(--muted);font-size:12px;text-align:center;padding:6px}
.picrow b{display:block}.picrow small{display:block;color:var(--muted)}
.picbtns{display:flex;gap:8px;margin:8px 0 4px}
.muted{color:var(--muted)}
.picurl{display:flex;gap:6px;margin-top:6px}
.picurl input{flex:1;min-width:0;height:32px}
.searchrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:-4px 0 12px}
.bact a.link{display:inline;color:var(--blue);font-size:12.5px;font-weight:600;text-decoration:underline;text-underline-offset:2px}
.setgrp{margin-top:14px}
.setgrp h4{margin:0 0 6px;font-size:14px;color:var(--ink)}
.setgrp h4 small{font-weight:500;color:var(--muted)}
.settbl{width:100%;border-collapse:collapse}
.settbl th,.settbl td{padding:7px 8px;border-bottom:1px solid var(--line-2);text-align:left}
.settbl th{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;background:#f8fafc}
.settbl .num{text-align:right}
.settbl tr.isown td{background:#fffaf0}
.pin{display:flex;gap:8px;align-items:center}
.pin input{width:150px;height:34px;text-align:right}
.pin .reset{font-size:12px;color:var(--blue);cursor:pointer;white-space:nowrap}
.owntag{display:inline-block;font-size:10.5px;font-weight:700;color:#8a5a00;background:var(--gold-soft);border-radius:999px;padding:1px 7px;margin-left:4px}
.hist{max-height:52vh;overflow:auto}
.hist td.nowrap{white-space:nowrap}

/* login */
.auth{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(1200px 600px at 10% -10%,#1d3a6b 0,transparent 60%),var(--navy)}
.auth .box{background:#fff;border-radius:14px;padding:28px;width:100%;max-width:380px;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.auth h1{margin:12px 0 4px;font-size:22px;color:var(--ink)}
.auth p{margin:0 0 18px;color:var(--muted)}
.auth .field input{height:42px}
.auth .btn{width:100%;justify-content:center;height:42px}
.auth .sso{display:block;text-align:center;margin-top:14px;font-size:13px}

@media (max-width:900px){
  /* app shell: top app bar, bottom tabs, sidebar becomes a sheet */
  body.has-nav{--side:0px;padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  .side{width:272px;transform:translateX(-100%);transition:transform .22s ease;box-shadow:12px 0 40px rgba(0,0,0,.25)}
  body.side-mini .lockup,body.side-mini .brand-app,body.side-mini .side nav a span,body.side-mini .whotext,body.side-mini .melinks{display:revert}
  body.side-mini .brand-mini,.collapse{display:none}
  body.side-mini .side nav a{justify-content:flex-start;padding:8px 10px}
  body.nav-open .side{transform:none}
  body.nav-open .scrim{display:block;position:fixed;inset:0;background:rgba(10,26,51,.45);z-index:25}
  .side nav a{padding:11px 12px;font-size:15px}
  .topbar{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:20;background:var(--navy);color:#fff;padding:calc(8px + env(safe-area-inset-top)) 14px 8px;min-height:54px}
  .topbar b{flex:1;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .tb-logo{width:30px;height:30px;border-radius:8px}
  .tb-user{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--blue),#1b5fc0);display:grid;place-items:center;font-weight:800;font-size:13px}
  .bottomnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:22;background:#fff;border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -6px 20px rgba(15,23,42,.06)}
  .bottomnav a,.bottomnav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 2px;color:var(--muted);text-decoration:none;font-size:10.5px;font-weight:600;background:none;border:0;cursor:pointer;min-width:0}
  .bottomnav span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .bottomnav .on{color:var(--blue)}
  .bottomnav .on svg{background:var(--blue-soft);border-radius:999px;padding:3px 12px;box-sizing:content-box;margin:-3px 0}
  .main{margin-left:0;padding:14px 14px 30px}
  .phead h1{font-size:21px}
  .phead p{font-size:13px}
  .row2,.row3{grid-template-columns:1fr}
  .row4{grid-template-columns:1fr 1fr}
  .tablewrap{max-height:none}
  .toolbar{position:static}
  .search{max-width:none;min-width:100%}
  .bact{margin-left:0}
  .modal{padding:0}
  .modal .box,.modal .box.wide{border-radius:0;min-height:100%}
  .pin input{width:110px}
  .btn{height:40px}
}

/* phones: every price row becomes a card */
@media (max-width:700px){
  .tablewrap{background:transparent;border:0;box-shadow:none;overflow:visible}
  table.pl,table.pl tbody{display:block;width:100%}
  table.pl thead{display:none}
  table.pl tr.grp{display:block}
  table.pl tr.grp td{display:block;position:static;border:0}
  tr.gt td{border-radius:10px;margin:14px 0 6px}
  tr.gb td{background:transparent!important;padding:10px 2px 4px!important}
  table.pl tr.it{display:grid;grid-template-columns:1fr 1fr;gap:2px 14px;position:relative;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 8px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
  table.pl tr.it::before{content:attr(data-title);grid-column:1/-1;font-weight:800;color:var(--ink);font-size:14px;line-height:1.3;margin:0 34px 6px 0}
  table.pl tr.it.picked{border-color:var(--blue);box-shadow:0 0 0 2px var(--blue-soft)}
  table.pl tr.it td{display:flex;justify-content:space-between;align-items:baseline;gap:8px;border:0!important;padding:3px 0!important;background:transparent!important;white-space:normal;font-size:13px;min-width:0;max-width:none;text-align:right}
  table.pl tr.it td::before{content:attr(data-l);color:var(--muted);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;text-align:left;flex:none}
  table.pl tr.it td.series,table.pl tr.it td.pic,table.pl tr.it td.muted{display:none}
  table.pl tr.it td.simg{grid-column:1/-1;order:-1;justify-content:center;padding:0 0 6px!important}
  table.pl tr.it td.simg::before{content:none}
  table.pl tr.it td.simg > span{position:static!important;height:auto!important;visibility:visible!important;padding:0}
  table.pl tr.it td.simg img{max-height:90px;max-width:160px}
  table.pl tr.it td.simg .noimg{display:none}
  table.pl tr.it td.ck{position:absolute;top:10px;right:10px;padding:0!important}
  table.pl tr.it td.ck::before{content:none}
  table.pl tr.it td.t-final{order:10;grid-column:1/-1;background:#fff1e3!important;border-radius:8px;padding:7px 9px!important;margin-top:6px;font-size:15px}
  table.pl tr.it td.rule::before{font-style:normal}
  table.pl tr.it td.code{font-size:12px}
  table.pl tr.it td.own::after{top:6px;right:-6px}
  table.pl.cust tr.it td.int{display:none}
  .bulkbar{position:sticky;top:60px;z-index:15}
}

@media print{
  @page{size:A4 landscape;margin:10mm}
  body{background:#fff;font-size:10.5px}
  .side,.topbar,.bottomnav,.scrim,.toolbar,.flash,.phead,.pact,.modal,#noRows{display:none!important}
  body.has-nav{padding:0}
  .main{margin:0;padding:0}
  .print-head{display:flex;gap:10px;align-items:center;margin:0 0 6px;font-size:13px}
  .lockup.lk-print{display:flex;gap:6px}
  .lockup.lk-print .lk-cdi{width:26px;border-radius:5px}.lockup.lk-print .lk-cx{width:84px}.lockup.lk-print .lk-x{font-size:11px;color:#555}
  .print-head .pdate{margin-left:auto;color:#555}
  .tablewrap{border:0;overflow:visible;max-height:none}
  table.pl th{position:static}
  table.pl[data-mode=master] th{background:#13284a!important;color:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  table.pl td{padding:3px 6px;border-bottom:1px solid #ddd}
  tr.gt td{background:#0A1A33!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  tr.gb td{background:#fff!important}
  .blogo{height:22px}
  tr{break-inside:avoid}
  th.ck,td.ck,.bact,.btabs{display:none!important}
  td.t-final,td.t-cc-sell,td.t-cc-green,td.t-cc-peach,td.t-cc-blue,td.t-cc-lilac,td.t-cc-month,table.pl thead th,tr.gt td{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  td.t-final{background:#fff1e3!important}
  .thumb{width:26px;height:26px}
  td.own::after{display:none}
  td.rule{color:inherit;font-style:normal}
  .badge{padding:0;background:none!important}
}
