:root{--navy:#0f3d5e;--navy2:#0a2c45;--accent:#e8a33d;--bg:#f3f5f8;--card:#fff;--line:#e2e7ee;--txt:#1d2733;--mut:#6b7785;--ok:#1f9d55;--warn:#d9822b;--bad:#d64545;--wa:#25d366}
*{box-sizing:border-box}body{margin:0;font:14px/1.45 "Segoe UI",system-ui,-apple-system,Arial,sans-serif;color:var(--txt);background:var(--bg)}
.hidden{display:none!important}a{color:var(--navy)}
.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,var(--navy),#1f6f8b)}
.login-card{background:#fff;padding:34px;border-radius:14px;width:min(380px,92vw);box-shadow:0 20px 50px #0004}
.brand-big{font-size:30px;font-weight:800;color:var(--navy)}.brand-big span,.brand span{color:var(--accent)}
label{display:block;margin:10px 0;font-size:12.5px;color:var(--mut);font-weight:600}
input,select,textarea{width:100%;font-weight:400;padding:8px 10px;border:1px solid var(--line);border-radius:7px;font:inherit;color:var(--txt);background:#fff;margin-top:3px}
textarea{min-height:90px;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid #1f6f8b33;border-color:#1f6f8b}
.err{color:var(--bad);min-height:18px}.muted{color:var(--mut)}.small{font-size:12px}
#app{display:flex;min-height:100vh}
aside{width:225px;background:var(--navy);color:#cfe0ec;flex-shrink:0;position:sticky;top:0;height:100vh;overflow:auto}
.brand{font-size:21px;font-weight:800;color:#fff;padding:18px 20px}
nav a{display:flex;gap:10px;align-items:center;padding:9px 20px;color:#cfe0ec;text-decoration:none;border-left:3px solid transparent}
nav a:hover{background:#ffffff10}nav a.active{background:var(--navy2);color:#fff;border-left-color:var(--accent)}
nav .sec{font-size:11px;text-transform:uppercase;letter-spacing:.08em;padding:14px 20px 4px;color:#8fb1c9}
.main{flex:1;min-width:0}
header{display:flex;align-items:center;gap:12px;background:#fff;border-bottom:1px solid var(--line);padding:10px 22px;position:sticky;top:0;z-index:5}
header h1{font-size:18px;margin:0;flex:1}.hdr-right{display:flex;align-items:center;gap:12px;position:relative}
.me{text-decoration:none;font-weight:600}
.bell{cursor:pointer;position:relative;font-size:18px}.bell b{position:absolute;top:-6px;right:-9px;background:var(--bad);color:#fff;font-size:10px;border-radius:9px;padding:1px 5px}
.notif{position:absolute;right:0;top:36px;width:340px;max-height:420px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px #0002;z-index:20}
.notif a{display:block;padding:9px 12px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--txt);font-size:13px}.notif a.unread{background:#fff8ec}
#view{padding:22px}
.icon-btn{background:none;border:0;font-size:18px;cursor:pointer;padding:4px 8px}#menuBtn{display:none}
.btn{border:1px solid var(--line);background:#fff;padding:7px 13px;border-radius:7px;cursor:pointer;font:inherit;font-weight:600;color:var(--txt);text-decoration:none;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.btn:hover{border-color:#b9c4d0}.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn.primary:hover{background:var(--navy2)}
.btn.wa{background:var(--wa);border-color:var(--wa);color:#fff}.btn.danger{color:var(--bad)}.btn.ghost{border-color:transparent}
.btn.sm{padding:4px 9px;font-size:12.5px}.btn.wide{width:100%;justify-content:center;padding:10px;margin-top:8px}
.bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}.bar input,.bar select{width:auto;margin:0}.bar .grow{flex:1}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:16px}
.card h3{margin:0 0 12px;font-size:15px}
.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.g4{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}.stat .n{font-size:26px;font-weight:800;color:var(--navy)}.stat .l{color:var(--mut);font-size:12.5px}
table.t{width:100%;border-collapse:collapse;background:#fff}.t th{text-align:left;font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:.03em;padding:9px 10px;border-bottom:1px solid var(--line);background:#fafbfc}
.t td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}.t tr:hover td{background:#fafcff}
.tw{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
.pill{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:700;background:#eef2f6;color:#4a5866;text-transform:capitalize}
.s-lead{background:#e8f1fb;color:#1e5f9e}.s-potential{background:#fff3e0;color:#b25e00}.s-running{background:#e5f6ec;color:#16784a}.s-inactive{background:#eee;color:#777}
.s-requested{background:#fff3e0;color:#b25e00}.s-confirmed,.s-sent{background:#e8f1fb;color:#1e5f9e}.s-in_production,.s-sampling,.s-quality_check,.s-packing,.s-sending{background:#efe9fb;color:#5b3fa0}
.s-shipped,.s-delivered,.s-accepted,.s-done{background:#e5f6ec;color:#16784a}.s-cancelled,.s-rejected,.s-failed{background:#fdeaea;color:#b23030}.s-preview,.s-pending,.s-draft,.s-open{background:#f1f3f5;color:#555}
.s-high{background:#fdeaea;color:#b23030}
.modal{position:fixed;inset:0;background:#0b1a2a88;display:grid;place-items:center;z-index:50;padding:16px}
.modal-card{background:#fff;border-radius:14px;width:min(860px,100%);max-height:92vh;overflow:auto;padding:0 20px 20px}
.modal-head{display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:#fff;padding:14px 0;border-bottom:1px solid var(--line);margin-bottom:8px;z-index:2}.modal-head h3{margin:0}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 14px}.fgrid .full{grid-column:1/-1}
.actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#1d2733;color:#fff;padding:10px 18px;border-radius:8px;z-index:60}
.toast.bad{background:var(--bad)}
.items td{padding:4px}.items input,.items select{margin:0;padding:6px}
.chat{display:flex;flex-direction:column;gap:8px;max-height:58vh;overflow:auto;padding:10px;background:#f7f9fb;border-radius:10px}
.msg{max-width:72%;padding:8px 12px;border-radius:12px;background:#fff;border:1px solid var(--line);white-space:pre-wrap}.msg.me{align-self:flex-end;background:#e4f0fa;border-color:#cfe2f3}
.msg small{display:block;color:var(--mut);font-size:11px;margin-top:3px}
.threads a{display:block;padding:10px 12px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--txt)}.threads a.active{background:#eef5fb}
.timeline{border-left:2px solid var(--line);margin-left:6px;padding-left:16px}.timeline div{position:relative;margin-bottom:12px}.timeline div:before{content:"";position:absolute;left:-22px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--navy)}
.steps{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0}.steps span{flex:1;min-width:70px;text-align:center;font-size:11px;padding:5px 2px;background:#eef2f6;border-radius:4px;color:#7a8794;text-transform:capitalize}.steps span.on{background:var(--navy);color:#fff}
.pcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}.pcard{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.pcard img{width:100%;height:160px;object-fit:cover;background:#eef2f6;display:block}.pcard .b{padding:12px}
.ph{height:160px;background:linear-gradient(135deg,#dfe8f0,#f5f8fa);display:grid;place-items:center;color:#9aabbb;font-size:34px}
.checklist{max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:6px 10px}.checklist label{display:flex;gap:8px;align-items:center;margin:4px 0;color:var(--txt);font-weight:400}.checklist input{width:auto;margin:0}
.chk{display:flex;gap:8px;align-items:center;color:var(--txt);font-weight:400}.chk input{width:auto;margin:0}
.codes img{height:70px;margin-right:10px;border:1px solid var(--line);border-radius:6px;padding:4px;background:#fff}
/* sticker sheet */
.sheet{display:flex;flex-wrap:wrap;gap:3mm;background:#fff;padding:4mm;border:1px dashed #ccc}
.sticker{border:1px solid #333;padding:1.5mm 2mm;display:flex;flex-direction:column;gap:1mm;overflow:hidden;font-family:Arial;color:#000;page-break-inside:avoid;break-inside:avoid;background:#fff}
.sticker .top{display:flex;gap:2mm;flex:1;min-height:0}.sticker .info{flex:1;min-width:0;overflow:hidden}.sticker .nm{font-weight:700;line-height:1.1;margin:.5mm 0}.sticker .meta{font-size:6.5pt;line-height:1.2}
.sticker .qr{height:100%;max-width:40%;object-fit:contain;align-self:flex-start}.sticker .bc{width:100%;height:34%;object-fit:contain;display:block}
@media print{body *{visibility:hidden}#printArea,#printArea *{visibility:visible}#printArea{position:absolute;left:0;top:0}.sheet{border:0;padding:0}}
@media(max-width:860px){aside{position:fixed;left:-240px;z-index:30;transition:left .2s}aside.open{left:0}#menuBtn{display:block}#view{padding:14px}.hdr-right .me{display:none}}
/* ===== v2 ===== */
.modal-card.wide{width:min(1100px,100%)}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:2px;font-style:normal}
nav a span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sec-h{font-weight:700;color:var(--navy);border-bottom:2px solid #e8eef4;padding:14px 0 4px;margin-bottom:2px;font-size:13.5px}
.w{display:block;margin:8px 0}.wl{display:block;margin:0 0 4px;font-size:12.5px;color:var(--mut);font-weight:600}
label.w select{margin-top:3px}.w .oth{margin-top:5px}
.chipset{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chipset.scroll{max-height:150px;overflow:auto;padding:2px}
.chip{border:1px solid #d5dde6;background:#fff;border-radius:18px;padding:5px 11px;font:inherit;font-size:12.5px;cursor:pointer;color:#33414f;line-height:1.2}
.chip:hover{border-color:#8fb1c9}.chip.on{background:var(--navy);border-color:var(--navy);color:#fff}
.chip.add{border-style:dashed;color:var(--mut)}.chipset .oth{width:200px;margin:0;padding:5px 9px}
.chipfind{margin:0 0 6px;padding:5px 9px;font-size:12.5px;max-width:260px}
.chip.ed{cursor:default;display:inline-flex;gap:6px}.chip.ed b{cursor:pointer;opacity:.7}
.quick{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}.qd{border:0;background:#eef3f8;color:#2b5c80;border-radius:5px;padding:2px 7px;font-size:11.5px;cursor:pointer}
.mhead{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.tabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:2px solid var(--line);margin-bottom:12px}.mhead .tabs{margin-bottom:0;border:0;background:#e9eef3;border-radius:9px;padding:3px}
.tab{padding:7px 13px;text-decoration:none;color:#4b5a69;font-weight:600;border-radius:7px;font-size:13.5px}.tab.on{background:#fff;color:var(--navy);box-shadow:0 1px 3px #0001}
.tabs:not(.mhead .tabs) .tab.on{border-bottom:2px solid var(--accent);border-radius:0;margin-bottom:-2px;background:none;box-shadow:none}
.badge{background:var(--bad);color:#fff;border-radius:9px;padding:0 6px;font-size:11px}
.tag{display:inline-block;background:#eef3f8;color:#2b5c80;border-radius:4px;padding:1px 6px;margin:1px 3px 1px 0;font-size:11.5px}
.bulk{background:#fff8ec;border:1px solid #f1d9ad;border-radius:10px;padding:8px 12px;margin-bottom:10px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.bulk select{width:auto;margin:0}
.empty{text-align:center;color:var(--mut);padding:26px!important}
.hero{display:flex;gap:16px;justify-content:space-between;align-items:flex-start}.hero h2{margin:0 0 4px;font-size:20px}.hero-r{text-align:right;min-width:170px}
.grid.g2x{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}@media(max-width:1000px){.grid.g2x{grid-template-columns:1fr}}
.t.kv td:first-child{color:var(--mut);width:34%}
a.stat{text-decoration:none;color:inherit;display:block;transition:transform .1s}a.stat:hover{transform:translateY(-2px);border-color:#b8cadb}
.st-warn{border-color:#f1c27d;background:#fffaf1}.st-warn .n{color:#c26a00}.st-pre_lead .n{color:#d07a2c}.st-lead .n{color:#2f74bd}.st-customer .n{color:#1f8a57}
.funnel{display:flex;flex-direction:column;align-items:center;gap:4px}.funnel div{color:#fff;padding:8px;text-align:center;border-radius:6px;min-width:150px}
.legend{display:inline-flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--mut)}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.t.bars td{border:0;padding:4px 6px}.bl{width:34%;font-size:12.5px}.bn{width:40px;text-align:right;font-weight:700}
.barrow{display:flex;height:14px;background:#f1f4f7;border-radius:4px;overflow:hidden}.barrow span{display:block;height:100%}
.prog{display:inline-block;width:90px;height:8px;background:#e8edf2;border-radius:5px;overflow:hidden;vertical-align:middle;margin-right:5px}.prog span{display:block;height:100%;background:linear-gradient(90deg,#2fa36b,#58c08a)}
.over{color:var(--bad)!important;font-weight:700}.nowrap{white-space:nowrap}
.welcome{font-size:18px;font-weight:700;margin-bottom:12px}
.quickbar{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.taskrow{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.tr-r{text-align:right;min-width:190px}.pq{display:flex;gap:3px;justify-content:flex-end;margin-top:4px}
.dhead{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-left:6px solid var(--dc);border-radius:12px;padding:14px 18px;margin-bottom:12px}.dhead h2{margin:0}
.dgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.dcard{background:#fff;border:1px solid var(--line);border-top:4px solid var(--dc);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:4px}.dcard.link{text-decoration:none;color:inherit}.dc-h{font-size:15px}
.seg{display:inline-flex;background:#e9eef3;border-radius:9px;padding:3px}.seg a{padding:6px 12px;border-radius:7px;text-decoration:none;color:#4b5a69;font-weight:600;font-size:13px}.seg a.on{background:#fff;color:var(--navy);box-shadow:0 1px 3px #0001}
/* org chart */
.orgwrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;min-height:300px}
.orgzoom{transform-origin:top left;transition:transform .15s;width:max-content;min-width:100%}
.tree,.tree ul{padding-top:18px;position:relative;display:flex;justify-content:center;margin:0;padding-left:0}
.tree li{list-style:none;text-align:center;position:relative;padding:18px 6px 0}
.tree li::before,.tree li::after{content:'';position:absolute;top:0;right:50%;border-top:2px solid #c7d3de;width:50%;height:18px}
.tree li::after{right:auto;left:50%;border-left:2px solid #c7d3de}
.tree li:only-child::after,.tree li:only-child::before{display:none}.tree li:only-child{padding-top:0}
.tree li:first-child::before,.tree li:last-child::after{border:0 none}
.tree li:last-child::before{border-right:2px solid #c7d3de;border-radius:0 6px 0 0}.tree li:first-child::after{border-radius:6px 0 0 0}
.tree ul ul::before,.tree li>ul::before{content:'';position:absolute;top:0;left:50%;border-left:2px solid #c7d3de;width:0;height:18px}
.tree>li{padding-top:0}.tree>li::before,.tree>li::after{display:none}
.onode{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid #d5dde6;border-top:4px solid var(--dc);border-radius:10px;padding:8px 10px;min-width:170px;max-width:220px;text-align:left;cursor:pointer;position:relative;box-shadow:0 2px 6px #0000000d}
.onode:hover{border-color:#8fb1c9}.onode.over{outline:3px dashed var(--accent)}.onode.dragging{opacity:.4}
.onode .av{width:34px;height:34px;border-radius:50%;background:var(--dc);color:#fff;display:grid;place-items:center;font-weight:700;font-size:12px;flex-shrink:0;overflow:hidden}.onode .av img{width:100%;height:100%;object-fit:cover}
.on-b{display:flex;flex-direction:column;min-width:0}.on-b b{font-size:13px}.on-b small{font-size:11px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.on-b .dp{color:#2b5c80}
.onode.lv-top{background:#fffaf0}.onode.lv-middle{background:#f5f9ff}
.oadd{position:absolute;bottom:-11px;left:50%;transform:translateX(-50%);border:1px solid #c7d3de;background:#fff;border-radius:50%;width:22px;height:22px;cursor:pointer;font-size:13px;line-height:1;display:none;color:var(--navy)}.onode:hover .oadd{display:block}
.legend .lv-top,.legend .lv-middle,.legend .lv-low{border:1px solid #ccc}.legend .lv-top{background:#fffaf0}.legend .lv-middle{background:#f5f9ff}.legend .lv-low{background:#fff}
.droproot{margin:24px auto 0;max-width:420px;border:2px dashed #c7d3de;border-radius:10px;padding:10px;text-align:center;color:var(--mut);font-size:12.5px}.droproot.over{border-color:var(--accent);color:var(--txt)}
.lanes{display:grid;grid-template-columns:repeat(3,minmax(240px,1fr));gap:14px}.lane{background:#f7f9fb;border-radius:10px;padding:10px}.lane h3{margin:4px 0 10px;font-size:14px}
.lanegroup{margin-bottom:10px}.lg-h{font-size:12px;font-weight:700;color:#4b5a69;margin-bottom:4px}.lane .onode{margin:0 0 6px;max-width:none;width:100%}
.dnode{display:inline-flex;flex-direction:column;gap:2px;background:#fff;border:1px solid #d5dde6;border-left:5px solid var(--dc);border-radius:9px;padding:8px 12px;min-width:160px;text-align:left}.dnode small{color:var(--mut);font-size:11.5px}
/* files, codes, products */
.files .thumbs{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.files .thumbs img{width:84px;height:84px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.codes{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}.codes>div{text-align:center}
.taxrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0}.taxrow .tl{width:120px;font-size:12px;color:var(--mut);font-weight:600}
.skuprev{background:#f1f7ff;border:1px dashed #a9c6e3;border-radius:8px;padding:8px 12px;margin-top:6px;font-size:13px}.skuprev:empty{display:none}
.imgpick{display:flex;gap:14px;align-items:flex-start}.imgprev{width:120px;height:120px;border-radius:10px;background:#eef2f6;display:grid;place-items:center;font-size:40px;overflow:hidden;flex-shrink:0}.imgprev img{width:100%;height:100%;object-fit:cover}
.ext{border-style:dashed;background:#fbfcfd}
.audcount{background:#f1f7ff;border-radius:8px;padding:8px 12px;font-size:13px}
.matrix select{width:auto;min-width:82px;padding:4px;font-size:12.5px;margin:0}.matrix td{white-space:nowrap}tr.dirty td{background:#fffaf0}
.listed.dirty{border-color:var(--accent)}
.taxed,.taxed ul{list-style:none;padding-left:22px;margin:0}.taxed{padding-left:0}.txn{display:flex;gap:6px;align-items:center;margin:5px 0;flex-wrap:wrap}.txn input{width:auto;margin:0}.txn .tn{width:200px}.txn .tc{width:70px}.txn .muted{width:110px}
.steps-ol{padding-left:18px;line-height:1.9}
.acc select{width:auto;margin:0;padding:4px;font-size:12.5px}
/* pills */
.s-pre_lead{background:#fff1e3;color:#b85f0c}.s-lead{background:#e8f1fb;color:#1e5f9e}.s-customer{background:#e5f6ec;color:#16784a}
.s-on_hold{background:#fff3e0;color:#b25e00}.s-urgent{background:#d64545;color:#fff}.s-high{background:#fdeaea;color:#b23030}.s-low{background:#f1f3f5;color:#888}.s-normal{background:#eef2f6;color:#4a5866}
.s-lv_top{background:#fff1d6;color:#9a6200}.s-lv_middle{background:#e8f1fb;color:#1e5f9e}.s-lv_low{background:#f1f3f5;color:#555}.s-head{background:var(--navy);color:#fff}
.s-hot{background:#fdeaea;color:#c0392b}.s-warm{background:#fff3e0;color:#b25e00}.s-cold{background:#e8f1fb;color:#1e5f9e}.s-admin{background:#0f3d5e;color:#fff}
.s-interested,.s-requested_samples,.s-requested_price,.s-negotiating,.s-converted_to_order{background:#e5f6ec;color:#16784a}.s-not_interested,.s-wrong_contact{background:#fdeaea;color:#b23030}.s-no_answer,.s-call_back_later,.s-not_interested_now{background:#fff3e0;color:#b25e00}
@media(max-width:860px){.lanes{grid-template-columns:1fr}.hero{flex-direction:column}.hero-r{text-align:left}.taxrow .tl{width:100%}}
.grow{flex:1}.grid+.grid,.grid+.card,.card+.grid{margin-top:14px}
/* ===== v3 ===== */
.phone{display:flex;gap:6px;margin-top:3px}.phone .cc{width:92px;flex-shrink:0;margin:0}.phone .num{margin:0}
.w.dm{margin:4px 0}.dm details{border:1px solid var(--line);border-radius:8px;background:#fff}.dm summary{cursor:pointer;padding:8px 10px;font-size:13px;font-weight:600;color:#33414f;list-style:none}
.dm summary::after{content:'▾';float:right;color:var(--mut)}.dm details[open] summary{border-bottom:1px solid var(--line)}.dm .dmn{color:var(--accent)}.dmbox{padding:8px}
.formtop{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:6px 0 4px}.formtop .seg a{cursor:pointer}
.dup{background:#fff6e5;border:1px solid #f1c27d;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:13px}.dup div{margin-top:3px}
.scanok{background:#e9f7ef;border:1px solid #a6dcbc;border-radius:8px;padding:8px 12px;margin:6px 0;font-size:13px}.scanning{padding:8px 0;color:var(--mut)}
pre{white-space:pre-wrap;font-size:12px;background:#f6f8fa;padding:8px;border-radius:6px;max-height:220px;overflow:auto}
.journey{display:flex;gap:4px;margin:0 0 14px;flex-wrap:wrap}.journey span{flex:1;min-width:150px;text-align:center;padding:7px 10px;background:#eef2f6;color:#7a8794;font-weight:700;font-size:12.5px;clip-path:polygon(0 0,94% 0,100% 50%,94% 100%,0 100%,6% 50%)}
.journey span.on{background:var(--navy);color:#fff}.journey span.done{background:#cfe8da;color:#16784a}
.kanban{display:grid;grid-template-columns:repeat(6,minmax(170px,1fr));gap:10px;overflow:auto}.kcol{background:#eef2f6;border-radius:10px;padding:8px;min-height:200px}.kh{display:flex;justify-content:space-between;margin-bottom:6px}
.kcard{display:block;background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px;margin-bottom:6px;text-decoration:none;color:inherit;font-size:13px}.kcard:hover{border-color:#8fb1c9}
.warnbox{background:#fffaf0;border-color:#f1c27d}
.ckitem{padding:12px 14px}.ckitem.done{background:#f6fbf8;border-color:#bfe3cd}.ckhead{display:flex;gap:12px;align-items:flex-start}.ckbody{margin-top:8px;border-top:1px dashed var(--line);padding-top:6px}
.tick{position:relative;width:28px;height:28px;flex-shrink:0;margin:0;cursor:pointer}.tick input{opacity:0;position:absolute;inset:0;margin:0;cursor:pointer}.tick span{position:absolute;inset:0;border:2px solid #b8c4d0;border-radius:7px;background:#fff}
.tick input:checked+span{background:#2fa36b;border-color:#2fa36b}.tick input:checked+span::after{content:'✓';color:#fff;position:absolute;inset:0;display:grid;place-items:center;font-weight:800}.tick input:disabled+span{opacity:.6}
.cklist .ckh{font-size:10.5px;max-width:70px;white-space:normal;text-align:center}.cklist .ckc{text-align:center}
.big{font-size:30px;font-weight:800;color:var(--navy)}
.aibtn{border:1px solid #d5dde6;background:linear-gradient(135deg,#f3f8ff,#fff7ec);border-radius:18px;padding:5px 11px;cursor:pointer;font:inherit;font-size:13px;font-weight:600;color:#2b3f55}.aibtn:hover{border-color:#8fb1c9}
.voicebox{position:fixed;right:20px;bottom:20px;width:min(420px,92vw);background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 40px #0003;padding:12px 14px;z-index:70}
.voicebox select{width:auto;margin:0;padding:3px}#vState{margin:6px 0;font-weight:600}#vHeard{min-height:18px;font-style:italic}
.isprev{max-width:100%;max-height:200px;border-radius:8px;margin:8px 0;display:block}.mini{width:38px;height:38px;object-fit:cover;border-radius:5px}
.s-repeat{background:#efe9fb;color:#5b3fa0}.s-done{background:#e5f6ec;color:#16784a}
.ckbody .thumbs img,.thumbs img{width:70px;height:70px;object-fit:cover;border-radius:6px;border:1px solid var(--line);margin:4px 4px 0 0}
@media(max-width:860px){.aibtn span{display:none}.kanban{grid-template-columns:repeat(6,200px)}}
/* ===== v4 ===== */
.brand img,.brand-big img{height:30px;vertical-align:middle;margin-right:8px;border-radius:4px}.brand-big img{height:44px}
.adminhidden{opacity:.45;outline:1px dashed #c0392b}
.navedit{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px}.nsec{border:1px solid var(--line);border-radius:10px;padding:8px}.nsn{font-weight:700;margin-bottom:6px}
.navedit .t td{padding:4px}.navedit input.nl{margin:0;padding:5px 8px}.brand-prev img{height:40px;border-radius:6px}
.sticky-save{position:sticky;bottom:0;background:var(--bg);padding:10px 0;z-index:3}
table.log td{vertical-align:top}.warnrow td{background:#fff5f5}.diff{background:#f6f8fa;border-radius:6px;padding:4px 6px;margin-bottom:4px}
input[type=color]{height:38px;padding:2px}
