
:root{
  --brand:#3346E8;--brand-d:#2534C4;--brand-50:#EEF0FE;--brand-100:#DCE0FD;
  --ink:#0E1424;--ink-2:#2A3247;--muted:#69728A;--line:#E3E6EE;--line-2:#EEF0F5;
  --bg:#F5F6FA;--card:#fff;--ok:#0E9F6E;--warn:#C26A04;--err:#E5484D;
  --sh:0 1px 2px rgba(14,20,36,.05),0 2px 10px rgba(14,20,36,.035);
  --sh-lg:0 18px 50px rgba(14,20,36,.18),0 2px 8px rgba(14,20,36,.06);
}
*{box-sizing:border-box}
[hidden],.only-m[hidden],.only-d[hidden]{display:none!important}
html,body{margin:0}
body{font-family:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0}
input,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{margin:0}
svg.i{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.mono{font-variant-numeric:tabular-nums;letter-spacing:.01em}
.muted{color:var(--muted)}
.sm{font-size:12.5px}

/* ---------- layout ---------- */
.app{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}
.side{position:sticky;top:0;height:100vh;background:var(--ink);color:#C3CADB;display:flex;flex-direction:column;padding:18px 12px;z-index:60}
.brand{display:flex;gap:10px;align-items:center;padding:2px 8px 16px;color:#fff}
.logo{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#4C5CFF 0%,#21BFA2 100%);display:grid;place-items:center;font-weight:800;color:#fff;font-size:12px;letter-spacing:.02em;flex:none}
.brand b{display:block;font-size:14px;line-height:1.2}.brand small{font-size:11px;color:#8890A6}
.nav{display:flex;flex-direction:column;gap:2px;overflow:auto}
.nav-label{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:#646C83;padding:14px 10px 6px;font-weight:600}
.nav button{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:9px;color:#C3CADB;text-align:left;width:100%;font-weight:500;font-size:13.5px;transition:background .15s,color .15s}
.nav button:hover{background:rgba(255,255,255,.06);color:#fff}
.nav button.on{background:rgba(255,255,255,.1);color:#fff}
.nav button.on svg{color:#8D99FF}
.nav .soon{margin-left:auto;font-size:9.5px;padding:2px 7px;border-radius:99px;background:rgba(255,255,255,.07);color:#8890A6;font-weight:600}
.side-foot{margin-top:auto;padding:12px 10px 0;border-top:1px solid rgba(255,255,255,.08);font-size:11.5px;color:#7A829A}
.side-foot button{color:#9AA3BB;text-decoration:underline;text-underline-offset:2px;font-size:11.5px}
.main{min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:0;z-index:30;background:rgba(245,246,250,.86);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;align-items:center;gap:10px;padding:14px 28px;border-bottom:1px solid var(--line-2)}
.top-t{min-width:0;flex:1}
.top h1{font-size:17px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crumb{font-size:12px;color:var(--muted);display:flex;gap:6px;align-items:center}
.crumb button{color:var(--muted)}.crumb button:hover{color:var(--brand)}
.top-r{display:flex;align-items:center;gap:10px}
.me{width:36px;height:36px;border-radius:50%;background:#DDE2F3;color:var(--ink-2);display:grid;place-items:center;font-weight:700;font-size:12px}
.only-m{display:none!important}
.content{padding:20px 28px 48px;width:100%;max-width:1180px}
.scrim-nav{display:none}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:10px;font-weight:600;font-size:13.5px;white-space:nowrap;transition:background .15s,border-color .15s,box-shadow .15s,transform .05s}
.btn:active{transform:translateY(1px)}
.btn-pri{background:var(--brand);color:#fff;box-shadow:0 1px 2px rgba(51,70,232,.35)}
.btn-pri:hover{background:var(--brand-d)}
.btn-sec{background:#fff;border:1px solid var(--line);color:var(--ink-2)}
.btn-sec:hover{background:#F8F9FC;border-color:#D4D8E3}
.btn-ghost{color:var(--muted)}.btn-ghost:hover{background:var(--line-2);color:var(--ink)}
.btn-danger{background:var(--err);color:#fff}.btn-danger:hover{background:#CC3238}
.btn-sm{height:32px;padding:0 11px;font-size:12.5px;border-radius:8px}
.icon-btn{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;color:var(--ink-2);flex:none}
.icon-btn:hover{background:var(--line-2)}
.icon-btn.sm{width:32px;height:32px;border-radius:8px}
.icon-btn.danger:hover{background:#FDECEC;color:var(--err)}
.link{color:var(--brand);font-weight:600;font-size:13px}
.link:hover{text-decoration:underline}

/* ---------- dashboard ---------- */
.hello{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:6px 0 18px}
.hello h2{font-size:22px;font-weight:700;letter-spacing:-.01em}
.hello p{margin:4px 0 0;color:var(--muted);font-size:13px}
.ds-w{margin:-4px 0 18px;position:relative}
.ds-box{position:relative;display:flex;align-items:center}
.ds-box>svg{position:absolute;left:14px;width:18px;height:18px;color:var(--muted);pointer-events:none}
.ds-box .inp{height:48px;padding:0 44px 0 42px;border-radius:14px;font-size:15px;box-shadow:var(--sh)}
.ds-box .inp::-webkit-search-cancel-button{display:none}
.ds-x{position:absolute;right:8px;width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:var(--muted)}.ds-x svg{width:16px;height:16px}.ds-x:hover{background:var(--line-2)}
.ds-res{margin-top:8px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh);overflow:hidden}
.ds-cnt{font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:10px 14px 4px}
.ds-it{display:flex;align-items:center;gap:12px;width:100%;padding:10px 14px;text-align:left;border-top:1px solid var(--line-2)}
.ds-cnt+.ds-it{border-top:0}.ds-it:hover{background:#F7F8FB}
.ds-ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none}.ds-ic svg{width:18px;height:18px}
.ds-ic.run{background:#EEF0FE;color:#3346E8}.ds-ic.hold{background:#FDECEC;color:#B4262B}.ds-ic.ok{background:#E2F5F9;color:#0891B2}
.ds-it .mn{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.ds-it .mn b{font-size:14px}.ds-it .mn small{color:var(--muted);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ds-it mark{background:#FFE9A8;color:inherit;border-radius:3px;padding:0 1px}
.ds-st{font-size:12px;font-weight:700;text-align:right;display:flex;flex-direction:column;align-items:flex-end;white-space:nowrap}.ds-st small{font-weight:500;color:var(--muted);font-size:11.5px}
.ds-st.run{color:#3346E8}.ds-st.hold{color:#B4262B}.ds-st.ok{color:#0B7A55}
.ds-none,.ds-more{padding:14px;color:var(--muted);font-size:13px}.ds-more{border-top:1px solid var(--line-2);padding:10px 14px;font-size:12.5px}
.rp-selh{min-width:0}.rp-selh.sub-dept{height:auto}.rp-selh .sel-trigger{height:42px}.rp-selh.sub-dept .sel-trigger{height:38px}
@media(max-width:600px){.ds-it{gap:10px;padding:10px 12px}.ds-ic{width:32px;height:32px}}

.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--sh);display:flex;gap:12px;align-items:center}
.stat .si{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none}
.stat .si svg{width:18px;height:18px}
.stat small{display:block;color:var(--muted);font-size:12px;font-weight:500}
.stat b{font-size:20px;font-weight:700;line-height:1.2}
.sec-t{display:flex;justify-content:space-between;align-items:center;margin:26px 0 12px;gap:10px}
.sec-t h3{font-size:15px;font-weight:700}
.modules{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:12px}
.tile{position:relative;background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px 10px 14px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;box-shadow:var(--sh);transition:transform .15s,box-shadow .15s,border-color .15s}
.tile:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(14,20,36,.08);border-color:#D5D9E5}
.tile .ti{width:44px;height:44px;border-radius:12px;display:grid;place-items:center}
.tile .ti svg{width:22px;height:22px}
.tile span{font-weight:600;font-size:13px;color:var(--ink-2)}
.tile.soon .ti{filter:saturate(.35);opacity:.75}
.tile.soon span{color:var(--muted)}
.tile .tag{position:absolute;top:7px;right:7px;font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:99px;background:var(--line-2);color:var(--muted)}
.tile.live .tag{background:#E3F6EE;color:var(--ok)}

/* ---------- list ---------- */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.search{position:relative;flex:1;min-width:220px;max-width:420px}
.search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);width:17px;height:17px}
.search .inp{padding-left:38px}
.chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin-bottom:14px;padding-bottom:2px}
.chips::-webkit-scrollbar{display:none}
.chip{height:32px;padding:0 12px;border-radius:99px;border:1px solid var(--line);background:#fff;font-weight:600;font-size:12.5px;color:var(--ink-2);white-space:nowrap;display:inline-flex;align-items:center;gap:6px}
.chip em{font-style:normal;font-size:11px;color:var(--muted);font-weight:600}
.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.chip.on em{color:#AEB5C8}
.list{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh);overflow:hidden}
.lh,.row{display:grid;grid-template-columns:minmax(0,2.2fr) 150px 116px minmax(0,1.4fr) 76px 18px;gap:14px;align-items:center;padding:12px 16px}
.lh{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600;background:#FAFBFD;border-bottom:1px solid var(--line-2);padding-top:10px;padding-bottom:10px}
.row{width:100%;text-align:left;border-bottom:1px solid var(--line-2);transition:background .12s}
.row:last-child{border-bottom:0}
.row:hover{background:#FAFBFE}
.row>svg{color:#B3B9C9}
.cm{display:flex;align-items:center;gap:12px;min-width:0}
.mn{min-width:0}
.mn b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mn small{display:block;color:var(--muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-meta{display:none}
.cl{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted)}
.av{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-weight:700;font-size:13px;flex:none}
.av.lg{width:58px;height:58px;border-radius:16px;font-size:19px}
.av.sm{width:30px;height:30px;border-radius:9px;font-size:11px;background:var(--line-2);color:var(--ink-2)}
.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px;border-radius:99px;font-size:11.5px;font-weight:600;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.badge.ok{background:#E3F6EE;color:var(--ok)}
.badge.draft{background:#FEF3E0;color:var(--warn)}
.badge.id{background:var(--brand-50);color:var(--brand)}
.empty{padding:44px 20px;text-align:center;color:var(--muted)}
.empty .ei{width:52px;height:52px;border-radius:16px;background:var(--line-2);display:grid;place-items:center;margin:0 auto 12px;color:var(--muted)}
.empty b{display:block;color:var(--ink);font-size:15px;margin-bottom:4px}

/* ---------- form ---------- */
.form-wrap{max-width:860px}
.form-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin:4px 0 16px}
.form-top h2{font-size:20px;font-weight:700}
.form-top p{margin:4px 0 0;font-size:13px}
.idchip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:99px;background:#fff;border:1px solid var(--line);font-size:12.5px;font-weight:600;white-space:nowrap}
.idchip svg{width:15px;height:15px;color:var(--brand)}
.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--sh);margin-bottom:14px}
.card-h{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px}
.step{width:26px;height:26px;border-radius:8px;background:var(--brand-50);color:var(--brand);display:grid;place-items:center;font-weight:700;font-size:12.5px;flex:none;margin-top:1px}
.card-h h3{font-size:15px;font-weight:700}
.card-h p{margin:2px 0 0;font-size:12.5px;color:var(--muted)}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
.span2{grid-column:1/-1}
.mt{margin-top:14px}
.field label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.req{color:var(--err)}
.opt-t{color:var(--muted);font-weight:500}
.inp{width:100%;height:42px;border:1px solid var(--line);border-radius:10px;padding:0 12px;background:#fff;outline:none;transition:border-color .15s,box-shadow .15s;font-size:14px}
.inp:hover{border-color:#D3D7E2}
.inp:focus,.sel-trigger[aria-expanded=true]{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-100)}
.inp::placeholder{color:#A4ABBC}
.up{text-transform:uppercase}
.up::placeholder{text-transform:none}
.has-err .inp{border-color:var(--err)}
.has-err .inp:focus,.has-err .sel-trigger[aria-expanded=true]{box-shadow:0 0 0 3px #FBDADB}
.err-msg{display:none;color:var(--err);font-size:11.5px;margin-top:5px;font-weight:500}
.has-err .err-msg{display:block}
.has-err .hint{display:none}
.hint{font-size:11.5px;color:var(--muted);margin-top:5px;display:flex;gap:5px;align-items:center}
.hint.warn{color:var(--warn)}
.hint.bad{color:var(--err)}
.hint.good{color:var(--ok)}
.hint svg{width:13px;height:13px}
.ig{position:relative}
.ig .pre{position:absolute;left:1px;top:1px;bottom:1px;width:46px;display:grid;place-items:center;color:var(--ink-2);font-weight:600;font-size:13px;border-right:1px solid var(--line-2);border-radius:9px 0 0 9px;background:#FAFBFD;pointer-events:none}
.ig .inp{padding-left:56px}
.sel-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;cursor:pointer}
.sel-val{display:flex;align-items:center;gap:9px;min-width:0;overflow:hidden}
.sel-val .sv-t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ph{color:#A4ABBC}
.sel-trigger .chev{color:var(--muted);transition:transform .2s}
.sel-trigger[aria-expanded=true] .chev{transform:rotate(180deg)}
.opt-ic{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;flex:none}
.opt-ic svg{width:17px;height:17px}
.sub{border:1px solid var(--line);border-radius:13px;padding:14px;background:#FBFCFE;margin-bottom:12px}
.sub.primary{border-color:var(--brand-100);background:linear-gradient(180deg,#F7F8FF,#FBFCFE)}
.sub-h{display:flex;align-items:center;gap:8px;margin-bottom:12px;min-height:32px;flex-wrap:wrap}
.sub-h>b{font-size:13.5px;font-weight:700}
.sub-act{margin-left:auto;display:flex;gap:4px;align-items:center}
.tag{font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:99px;display:inline-flex;gap:4px;align-items:center;letter-spacing:.02em}
.tag svg{width:12px;height:12px}
.tag.del{background:#E3F6EE;color:var(--ok)}
.tag.bil{background:#F3EDFE;color:#7C3AED}
.add-btn{width:100%;height:44px;border:1.5px dashed #C9CFF9;border-radius:12px;color:var(--brand);font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;background:#FAFBFF;transition:background .15s,border-color .15s}
.add-btn:hover{background:var(--brand-50);border-color:var(--brand)}
.checks{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.check{display:inline-flex;align-items:center;gap:9px;height:40px;padding:0 13px;border:1px solid var(--line);border-radius:10px;background:#fff;font-weight:600;font-size:13px;color:var(--ink-2);user-select:none;transition:all .15s}
.check:hover{border-color:#C9CFE0}
.check .box{width:18px;height:18px;border-radius:5px;border:1.6px solid #B8BFD0;display:grid;place-items:center;transition:all .15s;flex:none}
.check .box svg{width:12px;height:12px;stroke-width:3;opacity:0;color:#fff}
.check.on{border-color:var(--brand);background:var(--brand-50);color:var(--brand)}
.check.on .box{background:var(--brand);border-color:var(--brand)}
.check.on .box svg{opacity:1}
.addr-err{display:none;background:#FDECEC;color:#B4262B;border-radius:10px;padding:10px 12px;font-size:12.5px;font-weight:500;margin-bottom:12px}
.addr-err.show{display:block}
.use-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}
.use{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 12px;border-radius:99px;border:1px solid var(--line);background:#fff;font-size:12.5px;font-weight:600;color:var(--ink-2);max-width:100%;transition:all .15s}
.use svg{width:15px;height:15px;color:var(--muted)}
.use em{font-style:normal;color:var(--muted);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}
.use:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}
.use.on{background:var(--brand);border-color:var(--brand);color:#fff}
.use.on svg,.use.on em{color:#D6DBFF}
.use:disabled{opacity:.45;cursor:not-allowed}
.tax{position:relative}
.tax .inp{padding-right:52px;letter-spacing:.06em;font-weight:600}
.tax .inp::placeholder{font-weight:400;letter-spacing:.04em}
.tax .cnt{position:absolute;right:11px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--muted);font-weight:600;pointer-events:none}
.tax.shake{animation:shake .28s}
.tax.shake .inp{border-color:var(--warn)}
@keyframes shake{25%{transform:translateX(-3px)}50%{transform:translateX(3px)}75%{transform:translateX(-2px)}}
.tax-guide{display:flex;gap:4px;margin-top:7px;flex-wrap:wrap}
.tg{display:flex;flex-direction:column;align-items:center;padding:4px 6px 3px;border-radius:7px;background:var(--line-2);min-width:0}
.tg b{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;letter-spacing:.08em;color:#A4ABBC;font-weight:600}
.tg i{font-style:normal;font-size:9.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}
.tg.cur{background:var(--brand-50)}.tg.cur b{color:var(--brand)}
.tg.done{background:#E3F6EE}.tg.done b{color:var(--ok)}
.bill-addr{margin-top:14px;border-radius:12px;background:#FAFBFD;border:1px solid var(--line-2);padding:12px 14px;display:flex;gap:10px;font-size:13px}
.bill-addr svg{color:#7C3AED;margin-top:1px}
.bill-addr small{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600;margin-bottom:2px}
.actions{position:sticky;bottom:0;z-index:20;display:flex;gap:10px;justify-content:flex-end;align-items:center;padding:12px 0 14px;margin-top:6px;background:rgba(245,246,250,.94);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line)}
.actions .sp{flex:1}

/* ---------- detail ---------- */
.hero{display:flex;align-items:center;gap:16px}
.hero-t{min-width:0;flex:1}
.hero-t h2{font-size:20px;font-weight:700;margin:6px 0 2px;overflow-wrap:anywhere}
.hero-t p{margin:0;font-size:13px}
.badges{display:flex;gap:6px;flex-wrap:wrap}
.hero-act{display:flex;gap:8px}

/* ---------- summary ---------- */
.sum-sec{padding:16px 0;border-bottom:1px solid var(--line-2)}
.sum-sec:first-child{padding-top:2px}
.sum-sec:last-child{border-bottom:0;padding-bottom:2px}
.sum-sec h4{font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:7px}
.sum-sec h4 svg{width:15px;height:15px}
.kv{display:grid;grid-template-columns:150px minmax(0,1fr);gap:9px 14px;font-size:13.5px}
.kv>span{color:var(--muted)}
.kv>b{font-weight:600;overflow-wrap:anywhere}
.cts{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.ct{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line-2);border-radius:11px;background:#FBFCFE;min-width:0}
.ct>div{min-width:0;flex:1}
.ct b{display:block;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ct small{color:var(--muted);font-size:12.5px}
.addrs{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.addr{padding:12px 14px;border:1px solid var(--line-2);border-radius:11px;background:#FBFCFE}
.addr-h{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.addr-h b{font-size:13px;margin-right:auto}
.addr p{margin:0;font-size:13px;color:var(--ink-2)}
.note{display:flex;gap:9px;align-items:flex-start;background:#FEF6E7;color:#8A4B02;border-radius:11px;padding:10px 12px;font-size:12.5px;font-weight:500;margin-bottom:14px}
.note svg{width:16px;height:16px;margin-top:1px}

/* ---------- popover / sheet ---------- */
.pop{position:fixed;z-index:230;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-lg);padding:6px;display:flex;flex-direction:column;outline:none;animation:popIn .14s ease-out}
@keyframes popIn{from{opacity:0;transform:translateY(-4px) scale(.985)}to{opacity:1;transform:none}}
.pop-search{position:relative;margin-bottom:4px;flex:none}
.pop-search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--muted)}
.pop-search input{width:100%;height:38px;border:1px solid var(--line);border-radius:9px;padding:0 10px 0 32px;outline:none;font-size:13.5px;background:#FAFBFD}
.pop-search input:focus{border-color:var(--brand);background:#fff}
.pop-list{overflow-y:auto;overscroll-behavior:contain;min-height:0}
.opt{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer;font-size:14px;color:var(--ink-2)}
.opt.active{background:var(--line-2)}
.opt.sel{color:var(--brand);font-weight:600}
.opt .ck{margin-left:auto;width:16px;height:16px;color:var(--brand);stroke-width:2.4}
.opt-group{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:10px 10px 4px;font-weight:700}
.opt-empty{padding:16px;text-align:center;color:var(--muted);font-size:13px}
.scrim{position:fixed;inset:0;background:rgba(14,20,36,.42);z-index:229;animation:fade .18s}
@keyframes fade{from{opacity:0}}
.pop.sheet{left:0;right:0;bottom:0;top:auto;border-radius:20px 20px 0 0;max-height:74vh;padding:6px 10px calc(14px + env(safe-area-inset-bottom));border:0;animation:sheetIn .24s cubic-bezier(.2,.8,.2,1)}
@keyframes sheetIn{from{transform:translateY(100%)}to{transform:none}}
.sheet-h{text-align:center;padding:6px 0 10px;flex:none}
.sheet-h .grab{display:block;width:38px;height:4px;border-radius:9px;background:#D5D9E3;margin:0 auto 10px}
.sheet-h b{font-size:15px}
.pop.sheet .opt{padding:13px 12px;font-size:15px}

/* ---------- modal ---------- */
.m-scrim{position:fixed;inset:0;z-index:200;background:rgba(14,20,36,.45);display:grid;grid-template-columns:minmax(0,1fr);place-items:center;padding:20px;animation:fade .16s}
.m-scrim.out{opacity:0;transition:opacity .15s}
.modal{background:#fff;border-radius:18px;width:min(460px,100%);max-height:calc(100vh - 40px);display:flex;flex-direction:column;box-shadow:var(--sh-lg);animation:popIn .18s ease-out}
.modal.wide{width:min(760px,100%)}
.m-h{display:flex;align-items:flex-start;gap:12px;padding:18px 20px 14px;border-bottom:1px solid var(--line-2)}
.m-h>div{flex:1}
.m-h h3{font-size:16px;font-weight:700}
.m-h p{margin:3px 0 0;font-size:12.5px;color:var(--muted)}
.m-b{padding:16px 20px;overflow-y:auto}
.m-b>p{margin:0;color:var(--ink-2)}
.m-f{display:flex;gap:10px;justify-content:flex-end;padding:14px 20px;border-top:1px solid var(--line-2);flex-wrap:wrap}

.tpl-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.tpl{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:12px;background:#FBFCFE;text-align:left;transition:all .15s;min-width:0}
.tpl:hover{border-color:var(--brand);background:var(--brand-50)}
.tpl .fi{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;flex:none}
.tpl b{display:block;font-size:14px}.tpl small{color:var(--muted);font-size:12px}
.tpl>svg{margin-left:auto;color:var(--brand)}
.tpl.busy{opacity:.55;pointer-events:none}
.colchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.colchips span{font-size:11.5px;padding:4px 9px;border-radius:7px;background:var(--line-2);color:var(--muted);font-weight:500}
.colchips span.r{background:var(--brand-50);color:var(--brand);font-weight:600}
.drop{display:flex;flex-direction:column;align-items:center;gap:4px;padding:28px 16px;border:1.5px dashed #C9CFF9;border-radius:14px;background:#FAFBFF;text-align:center;cursor:pointer;transition:all .15s}
.drop:hover,.drop.over{border-color:var(--brand);background:var(--brand-50)}
.drop .ui{width:46px;height:46px;border-radius:13px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;color:var(--brand);margin-bottom:6px}
.drop b{font-size:14.5px;color:var(--brand)}.drop small{color:var(--muted);font-size:12.5px}
#bkFileName{color:var(--ink-2);font-weight:600;margin-top:4px}
.bk-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}
.bk-s{border-radius:12px;padding:11px 14px}
.bk-s b{display:block;font-size:20px;line-height:1.2}.bk-s small{font-size:12px;font-weight:600}
.bk-s.ok{background:#EEF9F3;color:var(--ok)}.bk-s.bad{background:#FEF1F1;color:#B4262B}.bk-s.warn{background:#FEF7E9;color:var(--warn)}
.bkr{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line-2);align-items:start}
.bkr:last-child{border-bottom:0}
.bkr .rn{font-size:11.5px;color:var(--muted);font-weight:600;padding-top:11px;white-space:nowrap}
.bkr>.badge{margin-top:8px}
.bkr ul{margin:8px 0 0 50px;padding:0;list-style:none;font-size:12.5px}
.bkr li{display:flex;gap:6px;align-items:flex-start;margin-top:3px}
.bkr li svg{width:13px;height:13px;margin-top:2px}
.bkr li.e{color:var(--err)}.bkr li.w{color:var(--warn)}
.bk-opt{margin-top:14px;height:auto;min-height:40px;padding:9px 13px;text-align:left}
.btn:disabled{opacity:.45;cursor:not-allowed}
.fname{color:var(--ink-2)!important;font-weight:600;margin-top:4px}
.ex-box{margin-top:16px;padding:12px;border-radius:12px;background:#FAFBFD;border:1px solid var(--line-2)}
.ex-h{display:flex;align-items:center;gap:7px;margin-bottom:10px;font-size:12.5px;color:var(--ink-2)}
.ex-h svg{width:15px;height:15px;color:var(--ok)}
.ttable.ex{font-size:12px;background:#fff}
.ttable.ex td,.ttable.ex th{padding:7px 10px;white-space:nowrap}
.bkr .mn b .sku{font-size:10.5px;vertical-align:1px}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.pcard{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;text-align:left;box-shadow:var(--sh);transition:transform .15s,box-shadow .15s;display:flex;flex-direction:column;min-width:0}
.pcard:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(14,20,36,.08)}
.pimg{aspect-ratio:4/3;background:#F1F3F8;display:grid;place-items:center;color:#B3B9C9;overflow:hidden}
.pimg img{width:100%;height:100%;object-fit:cover;display:block}
.pimg svg{width:34px;height:34px;stroke-width:1.4}
.pbody{padding:12px 14px 14px;display:flex;flex-direction:column;gap:3px;min-width:0}
.sku{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;font-weight:600;color:var(--brand);background:var(--brand-50);padding:2px 7px;border-radius:6px;align-self:flex-start;letter-spacing:.03em;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pbody b{font-size:14px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:4px}
.pbody small{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfoot{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}
.price{font-weight:700;font-size:15px}
.pbody small.pcat{color:var(--ink-2);font-weight:600;font-size:11.5px}
.sel-trigger:disabled{background:#F7F8FB;cursor:not-allowed}
.sel-trigger:disabled:hover{border-color:var(--line)}
.subsec{margin-top:18px;padding-top:16px;border-top:1px solid var(--line-2)}
.subsec-h{margin-bottom:12px}.subsec-h b{font-size:13.5px}.subsec-h p{margin:2px 0 0;font-size:12.5px;color:var(--muted)}
.rng{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:6px;align-items:center}
.rdash{color:var(--muted);font-weight:600}
.shead,.srow{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 32px;gap:10px;align-items:start}
.shead{font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.srow{margin-bottom:8px}
.rm{margin-top:5px}
.size-chips,.qparts{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.qparts{margin-top:10px}
.lbl{font-size:12px;color:var(--muted);margin-right:2px;font-weight:500}
.schip{height:30px;min-width:40px;padding:0 10px;border-radius:8px;border:1px solid var(--line);background:#fff;font-weight:600;font-size:12.5px;color:var(--ink-2);display:inline-flex;align-items:center;justify-content:center;gap:4px;transition:all .12s}
.schip svg{width:13px;height:13px}
.schip:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-50)}
.schip.cus{color:var(--brand);border-style:dashed;border-color:#C9CFF9}
textarea.inp{height:auto;min-height:84px;padding:10px 12px;resize:vertical;line-height:1.45;display:block}
.phead,.prow{display:grid;grid-template-columns:24px repeat(4,minmax(0,1fr)) 32px;gap:10px;align-items:start}
.phead{font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.prow{margin-bottom:8px}
.pn{height:42px;display:grid;place-items:center;font-size:12px;font-weight:700;color:var(--muted)}
.prow .field label{display:none}
#parts .add-btn{margin-top:4px}
.imgcard{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#FBFCFE}
.thumb{width:72px;height:72px;border-radius:10px;overflow:hidden;background:#EEF0F5;flex:none;cursor:zoom-in;display:grid;place-items:center;color:#B3B9C9;padding:0}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb.lg{width:110px;height:110px}
.imgmiss{display:grid;place-items:center;width:100%;height:100%;color:#B3B9C9}
.imeta{min-width:0;flex:1}.imeta b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.imeta small{color:var(--muted);font-size:12px}
.wbadge{font-size:9.5px;font-weight:700;background:#E3F6EE;color:var(--ok);padding:1px 6px;border-radius:5px;margin-right:5px;letter-spacing:.04em}
.imgcard label.btn{cursor:pointer}
.drop.sm{padding:18px 14px}
.drop.sm .ui{width:40px;height:40px}
.pats{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px}
.pat{position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;min-width:0}
.pat .thumb{width:100%;height:auto;aspect-ratio:1;border-radius:0}
.pat .cap{padding:6px 8px 7px;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-2);font-weight:500}
.pat .cap small{display:block;color:var(--muted);font-size:10.5px;font-weight:500}
.pat .x{position:absolute;top:6px;right:6px;width:26px;height:26px;border-radius:8px;background:rgba(14,20,36,.62);color:#fff;display:grid;place-items:center}
.pat .x svg{width:14px;height:14px}
.pat-add{border:1.5px dashed #C9CFF9;border-radius:12px;background:#FAFBFF;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--brand);font-weight:600;font-size:12.5px;cursor:pointer;aspect-ratio:1;text-align:center;padding:10px;min-height:120px}
.pat-add:hover,.pat-add.over{background:var(--brand-50);border-color:var(--brand)}
.converting{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--brand);font-weight:600;margin-top:8px}
.spin{width:15px;height:15px;border:2px solid var(--brand-100);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite;flex:none}
@keyframes spin{to{transform:rotate(360deg)}}
.phero{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:22px;align-items:start}
.pmain{aspect-ratio:1;width:100%;border-radius:12px;background:#F1F3F8;overflow:hidden;display:grid;place-items:center;color:#B3B9C9}
.pmain[data-zoom]{cursor:zoom-in}
.pmain.noimg{aspect-ratio:auto;height:180px}
.pmain img{width:100%;height:100%;object-fit:cover;display:block}.pmain svg{width:52px;height:52px;stroke-width:1.3}
.pinfo{min-width:0}
.pinfo h2{font-size:21px;font-weight:700;margin:10px 0 6px;overflow-wrap:anywhere}
.mrp-l{font-size:22px;font-weight:700}.mrp-l small{font-size:12.5px;color:var(--muted);font-weight:500;margin-left:8px}
.pinfo .desc{color:var(--ink-2);margin:12px 0 0;white-space:pre-wrap;font-size:13.5px}
.pv-top{display:flex;gap:16px;align-items:flex-start}
.tbox{border:1px solid var(--line-2);border-radius:11px;overflow:auto}
.ttable{width:100%;border-collapse:collapse;font-size:13.5px}
.ttable th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700;padding:8px 12px;background:#FAFBFD;border-bottom:1px solid var(--line-2);white-space:nowrap}
.ttable td{padding:10px 12px;border-bottom:1px solid var(--line-2)}
.ttable tr:last-child td{border-bottom:0}
.ttable td.other{color:var(--muted);font-style:italic}
.lb{position:fixed;inset:0;z-index:260;background:rgba(10,14,24,.9);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;animation:fade .15s}
.lb img{max-width:100%;max-height:calc(100vh - 110px);border-radius:8px;background:#fff;object-fit:contain}
.lb .lbc{color:#fff;font-size:13px;margin-top:12px;opacity:.85;text-align:center}
.lb .lbx{position:absolute;top:14px;right:14px;color:#fff;background:rgba(255,255,255,.14)}
.lb .lbx:hover{background:rgba(255,255,255,.24)}
.acc{padding:0;overflow:hidden}
.acc-h{width:100%;display:flex;align-items:center;gap:12px;padding:18px 20px;text-align:left}
.acc-h:hover{background:#FAFBFD}
.acc-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:none}
.acc-t{flex:1;min-width:0}.acc-t b{display:block;font-size:15px}.acc-t small{color:var(--muted);font-size:12.5px}
.acc-h .chev{color:var(--muted);transition:transform .2s}
.acc.open>.acc-h .chev{transform:rotate(180deg)}
.acc-b{display:none;padding:0 20px 20px}
.acc.open>.acc-b{display:block}
.set-grp{border-top:1px solid var(--line-2);padding-top:14px;margin-top:2px}
.set-grp+.set-grp{margin-top:18px}
.grp-h{display:flex;align-items:center;gap:7px;font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700;margin-bottom:6px}
.grp-h svg{width:15px;height:15px}
.set-row{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid var(--line-2)}
.set-row:last-child{border-bottom:0}
.set-t{flex:1;min-width:0}.set-t b{display:block;font-size:14px;font-weight:600}.set-t small{color:var(--muted);font-size:12.5px}
.sw{position:relative;width:44px;height:26px;border-radius:99px;background:#CDD2DE;transition:background .2s;flex:none}
.sw::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(14,20,36,.25);transition:transform .2s cubic-bezier(.2,.8,.2,1)}
.sw.on{background:var(--brand)}
.sw.on::after{transform:translateX(18px)}
.sw:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.set-block{border:1px solid var(--line);border-radius:13px;padding:14px;background:#FBFCFE;margin:8px 0 6px}
.set-bh{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.set-bh>div{flex:1;min-width:0}.set-bh b{display:block;font-size:14px}.set-bh small{color:var(--muted);font-size:12.5px}
.cat-list{display:flex;flex-direction:column;gap:8px}
.cat-row{border:1px solid var(--line);border-radius:11px;background:#fff;overflow:hidden}
.cat-h{display:flex;align-items:center;gap:4px;padding:6px 8px 6px 6px}
.cat-tg{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:4px 6px;border-radius:8px;text-align:left}
.cat-tg:hover{background:var(--line-2)}
.cat-n{flex:1;min-width:0}.cat-n b{display:block;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cat-n small{color:var(--muted);font-size:12px}
.cat-tg .chev{color:var(--muted);transition:transform .2s}
.cat-row.open .cat-tg .chev{transform:rotate(180deg)}
.cat-b{border-top:1px solid var(--line-2);padding:12px;background:#FBFCFE}
.echips{display:flex;flex-wrap:wrap;gap:6px}
.echip{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:9px;background:#fff;overflow:hidden;max-width:100%}
.ech-t{padding:6px 4px 6px 11px;font-size:13px;font-weight:600;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ech-t:hover{color:var(--brand)}
.ech-x{width:28px;height:30px;display:grid;place-items:center;color:var(--muted)}
.ech-x svg{width:13px;height:13px}
.ech-x:hover{color:var(--err);background:#FDECEC}
.add-inline{display:flex;gap:8px;margin-top:12px}
.add-inline .inp{height:38px;flex:1;min-width:0}
.add-inline .btn{height:38px}
.icon-pick{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.ip{height:44px;border-radius:10px;border:1px solid var(--line);background:#fff;display:grid;place-items:center;color:var(--ink-2)}
.ip svg{width:20px;height:20px}
.ip:hover{border-color:var(--brand);color:var(--brand)}
.ip.on{border-color:var(--brand);background:var(--brand-50);color:var(--brand);box-shadow:0 0 0 2px var(--brand-100)}
.set-note{display:flex;gap:7px;align-items:flex-start;margin:16px 0 0}
.set-note svg{width:15px;height:15px;margin-top:1px;flex:none}
.phero.noimgcol{grid-template-columns:1fr}
.qsteps{display:flex;align-items:center;gap:8px;margin:0 0 14px;font-size:12.5px;font-weight:600;color:var(--muted)}
.qst{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.qst b{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#E5E8F0;color:var(--muted);font-size:11.5px}
.qst b svg{width:13px;height:13px;stroke-width:2.6}
.qst.on{color:var(--ink)}.qst.on b{background:var(--brand);color:#fff}
.qst.done{color:var(--ok)}.qst.done b{background:var(--ok);color:#fff}
.qln{flex:1;height:2px;background:#E5E8F0;border-radius:2px;max-width:80px}
.qsearch{position:relative}
.qsearch>svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted);width:19px;height:19px}
.qsearch .inp{height:50px;padding:0 44px 0 44px;font-size:15.5px;border-radius:12px}
.qclear{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:var(--muted)}
.qclear:hover{background:var(--line-2);color:var(--ink)}
#qsHint{margin-top:8px;min-height:16px}
#qsHint b{color:var(--ink-2)}
.qlabel{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700;margin:16px 0 8px}
.qlist{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.qlabel+.qlist{margin-top:0}
.qres{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;transition:border-color .12s,background .12s}
.qres:hover,.qres.active{border-color:var(--brand);background:#FAFBFF}
.qres .mn{flex:1;min-width:0}
.qres .mn b{font-size:14px}
.qres .why{color:var(--ink-2)!important}
.qres mark,.qsel mark{background:#FFF1B8;color:inherit;border-radius:3px;padding:0 1px}
.qbadges{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}
.qnone{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:26px 16px;margin-top:12px;border:1.5px dashed var(--line);border-radius:14px;background:#FBFCFE}
.qnone>svg,.qn-ic svg{width:26px;height:26px;color:var(--muted)}
.qn-ic{width:50px;height:50px;border-radius:15px;background:var(--line-2);display:grid;place-items:center;margin-bottom:4px}
.qnone b{font-size:15px}
.qnone span{color:var(--muted);font-size:13px;max-width:380px}
.qnone .btn{margin-top:10px}
.qadd-line{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:14px;font-size:13px;color:var(--muted)}
.qadd-line .link{display:inline-flex;align-items:center;gap:5px}
.qadd-line .link svg{width:15px;height:15px}
.qsel{border:1px solid var(--brand-100);border-radius:14px;padding:16px;background:linear-gradient(180deg,#F7F8FF,#fff)}
.qsel-top{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.qsel-top .mn{min-width:0}
.qsel-n{display:block;font-size:17px;margin:6px 0 2px;overflow-wrap:anywhere;white-space:normal!important}
.badge svg{width:12px;height:12px;stroke-width:2.4}
.qkv{grid-template-columns:130px minmax(0,1fr)}
.qsel .mn small b{display:inline}
.qsel-act{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}
.card.dim{opacity:.55}
.card.dim .step{background:var(--line-2);color:var(--muted)}
.seg{display:inline-flex;background:var(--line-2);border-radius:11px;padding:3px;gap:3px;width:100%}
.seg button{flex:1;height:36px;border-radius:8px;font-weight:700;font-size:13.5px;color:var(--muted);transition:all .15s}
.seg button.on{background:#fff;color:var(--brand);box-shadow:0 1px 3px rgba(14,20,36,.12)}
.ig.suf .inp{padding-right:56px;padding-left:12px}
.suf-t{position:absolute;right:1px;top:1px;bottom:1px;width:52px;display:grid;place-items:center;color:var(--muted);font-size:12.5px;font-weight:600;border-left:1px solid var(--line-2);background:#FAFBFD;border-radius:0 9px 9px 0;pointer-events:none}
.qaddr{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#FBFCFE}
.qaddr>svg{color:var(--ok);margin-top:2px}
.qaddr b{display:block;font-size:13.5px}.qaddr span{font-size:13px;color:var(--ink-2)}
.qlink{display:inline-flex;align-items:center;gap:6px;margin-top:10px;font-size:13px}
.qlink svg{width:15px;height:15px}
.qadd-btns{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.qadd-btns .btn{flex:1;min-width:160px;border-style:dashed;border-color:#C9CFF9;color:var(--brand);background:#FAFBFF}
.qadd-btns .btn:hover{background:var(--brand-50);border-color:var(--brand)}
.qempty{display:flex;align-items:center;gap:12px;padding:16px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);font-size:13px}
.qempty svg{width:26px;height:26px;flex:none;stroke-width:1.5}
.ql-head,.ql{display:grid;grid-template-columns:22px minmax(0,2.3fr) 84px 76px 120px 76px 110px 32px;gap:10px;align-items:start}
.ql-head{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;padding:0 0 8px;border-bottom:1px solid var(--line-2)}
.ql-head span:nth-child(7){text-align:right}
.ql{padding:12px 0;border-bottom:1px solid var(--line-2)}
.ql-n{font-size:12px;font-weight:700;color:var(--muted);padding-top:12px}
.ql-p{display:flex;gap:10px;min-width:0}
.ql-img{width:42px;height:42px;border-radius:9px;background:#F1F3F8;display:grid;place-items:center;color:#B3B9C9;overflow:hidden;flex:none}
.ql-img img{width:100%;height:100%;object-fit:cover}
.ql-img svg{width:20px;height:20px;stroke-width:1.5}
.ql-p .mn b{font-size:13.5px;white-space:normal;line-height:1.3;margin-top:3px}
.ql-band{margin-top:6px;max-width:260px}
.ql-band .inp{height:34px;font-size:12.5px}
.ql-f label{display:none}
.ql-f .inp{height:40px;padding:0 10px}
.ql-f .ig .inp{padding-left:40px}
.ql-f .ig .pre{width:30px}
.ql-mrp{display:block;padding-top:11px;font-size:13.5px;color:var(--ink-2)}
.ql-tot{text-align:right}
.ql-tot b{display:block;padding-top:11px;font-size:14px}
.ql .rm{margin-top:4px}
.ql .err-msg{font-size:11px}
.amt{max-width:560px;margin-left:auto}
.arow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px dashed var(--line-2);font-size:14px}
.arow>span{color:var(--ink-2)}
.arow>span small{color:var(--muted);font-size:11.5px;margin-left:4px}
.arow b{font-weight:600}
.arow .neg{color:var(--ok)}
.arow.sub{border-bottom:1px solid var(--line);font-weight:600}
.arow.sub>span{color:var(--ink);font-weight:600}
.arow.in{padding:7px 0}
.amt-in{width:170px;flex:none;text-align:right}
.amt-in .inp{height:38px;text-align:right}
.amt-in .ig .inp{padding-left:36px}
.amt-in .ig .pre{width:28px}
.amt-in .inp:disabled{background:#F4F5F8;color:var(--muted)}
.amt-reset{font-size:11.5px;margin-top:3px;display:inline-block}
.arow.grand{border:0;margin-top:6px;padding:14px 16px;background:var(--ink);color:#fff;border-radius:12px}
.arow.grand>span{color:#fff;font-weight:700;font-size:15px}
.arow.grand b{font-size:20px;font-weight:800}
.gst-box{margin-top:10px;padding:10px 14px;border-radius:11px;background:#F3EDFE;color:#5B21B6;font-size:13px}
.gst-box>div{display:flex;justify-content:space-between;gap:10px;padding:2px 0}
.gst-box small{display:block;color:#7C5BC0;font-size:11.5px;margin-top:4px}
.amt.pv{max-width:none}
.pk-s{margin-bottom:10px}
.pk-s .inp{height:44px;font-size:14.5px}
.pk-list{display:flex;flex-direction:column;gap:6px;max-height:min(52vh,460px);overflow-y:auto;overscroll-behavior:contain;padding:2px}
.pk-list>*{min-width:0}
.m-b{min-width:0}
.modal{max-width:100%}
.pk-item{min-width:0;display:flex;align-items:center;gap:12px;padding:9px 10px;border:1px solid var(--line);border-radius:12px;background:#fff;text-align:left;width:100%;transition:all .12s}
.pk-item:hover{border-color:var(--brand)}
.pk-item.on{border-color:var(--brand);background:var(--brand-50)}
.pk-item .mn{flex:1;min-width:0}
.pk-item .mn b{font-size:13.5px;margin-top:3px}
.pk-item .box{width:20px;height:20px;border-radius:6px;border:1.6px solid #B8BFD0;display:grid;place-items:center;flex:none;background:#fff}
.pk-item .box svg{width:12px;height:12px;stroke-width:3;color:#fff;opacity:0}
.pk-item.on .box{background:var(--brand);border-color:var(--brand)}
.pk-item.on .box svg{opacity:1}
.pk-plus{width:32px;height:32px;border-radius:9px;background:var(--brand-50);color:var(--brand);display:grid;place-items:center;flex:none}
.qrow{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 16px;border-bottom:1px solid var(--line-2)}
.qrow:last-child{border-bottom:0}
.qrow:hover{background:#FAFBFE}
.qrow .mn{flex:1;min-width:0}
.qrow>svg{color:#B3B9C9}
.qrow .av svg{width:18px;height:18px}
.qamt{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.qamt b{font-size:14.5px}
.qcards{display:flex;flex-direction:column;gap:10px}
.qcard{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh);overflow:hidden;transition:border-color .15s,box-shadow .15s}
.qcard:hover{border-color:#D3D8E5;box-shadow:0 6px 18px rgba(14,20,36,.06)}
.qc-main{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:14px 16px 10px}
.qc-main .mn{flex:1;min-width:0}
.qc-main .av svg{width:18px;height:18px}
.qc-foot{display:flex;justify-content:flex-end;padding:0 10px 10px}
.qc-acts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.qc-ic{height:34px;min-width:34px;padding:0 9px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:12.5px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--ink-2);transition:all .15s}
.qc-ic svg{width:17px;height:17px}
.qc-ic.conv{color:var(--brand);border-color:var(--brand-100);background:var(--brand-50)}
.qc-ic.conv:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
.qc-ic.conv.off{color:var(--muted);background:#F6F7FA;border-color:var(--line)}
.qc-ic.conv.off:hover{background:#F6F7FA;color:var(--muted)}
.qc-ic.del:hover{color:var(--err);border-color:#F7C7C8;background:#FDECEC}
.qstate{display:inline-flex;align-items:center;gap:6px;color:var(--ok);font-weight:600;font-size:13px;padding:0 6px}
.qstate svg{width:16px;height:16px}
.danger-t{color:var(--err)}
.danger-t:hover{background:#FDECEC;color:var(--err)}
.jg-list{display:flex;flex-direction:column;gap:8px}
.jg-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;transition:all .12s}
button.jg-row:hover{border-color:var(--brand)}
.jg-row.on{border-color:var(--brand);background:var(--brand-50)}
.jg-row .mn{flex:1;min-width:0}
.jg-row .mn b{font-size:13.5px;margin-top:3px}
.jg-row .box{width:20px;height:20px;border-radius:6px;border:1.6px solid #B8BFD0;display:grid;place-items:center;flex:none;background:#fff}
.jg-row .box svg{width:12px;height:12px;stroke-width:3;color:#fff;opacity:0}
.jg-row.on .box{background:var(--brand);border-color:var(--brand)}
.jg-row.on .box svg{opacity:1}
.jg-set{border:1.5px solid #DCCBFB;border-radius:13px;background:#FAF7FF;padding:10px;display:flex;flex-direction:column;gap:6px}
.jg-set-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:2px 4px 4px}
.jg-set-h b{font-size:14px}
.jg-ung{margin-left:auto;font-size:12.5px}
.jg-row.in-set{border-color:#E9E0FC}
.jg-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}
.ji{border:1px solid var(--line);border-radius:14px;background:#fff;margin-bottom:10px;overflow:hidden}
.ji.open{border-color:var(--brand-100);box-shadow:0 4px 16px rgba(51,70,232,.06)}
.ji-h{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 14px}
.ji-h:hover{background:#FAFBFD}
.ji-n{width:26px;height:26px;border-radius:8px;background:var(--line-2);display:grid;place-items:center;font-size:12px;font-weight:700;color:var(--muted);flex:none}
.ji.open .ji-n{background:var(--brand);color:#fff}
.ji-h .mn{flex:1;min-width:0}
.ji-h .mn b{font-size:14px}
.ji-h .tag{vertical-align:1px}
.ji-h .chev{color:var(--muted);transition:transform .2s;flex:none}
.ji.open .ji-h .chev{transform:rotate(180deg)}
.ji-st .badge{white-space:nowrap}
.ji-b{padding:4px 14px 16px;border-top:1px solid var(--line-2)}
.ji-b>.field{margin-top:12px}
.ji-sec{margin-top:16px}
.ji-sh{display:flex;align-items:center;gap:7px;font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700;margin-bottom:10px}
.ji-sh svg{width:15px;height:15px}
.ji-sh .opt-t{text-transform:none;letter-spacing:0;font-weight:500}
.jp{border:1px solid var(--line);border-radius:12px;padding:12px;background:#FBFCFE;margin-bottom:8px}
.jp-h{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.jp-h .mn{min-width:0}
.grid.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.jp-parts{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.jp-parts span{font-size:12px;padding:4px 9px;border-radius:7px;background:#fff;border:1px solid var(--line-2);color:var(--muted)}
.jp-parts b{color:var(--ink-2);margin-right:5px}
.gchips{display:flex;gap:8px;flex-wrap:wrap}
.gchip{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 14px;border:1px solid var(--line);border-radius:10px;background:#fff;font-weight:600;font-size:13.5px;color:var(--ink-2)}
.gchip .box{width:18px;height:18px;border-radius:5px;border:1.6px solid #B8BFD0;display:grid;place-items:center}
.gchip .box svg{width:12px;height:12px;stroke-width:3;color:#fff;opacity:0}
.gchip.on{border-color:var(--brand);background:var(--brand-50);color:var(--brand)}
.gchip.on .box{background:var(--brand);border-color:var(--brand)}
.gchip.on .box svg{opacity:1}
.gqty{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-top:12px}
.gqty .field{width:120px}
.gq-tot{display:flex;flex-direction:column;padding:0 6px 4px}
.gq-tot span{font-size:11.5px;color:var(--muted);font-weight:600}
.gq-tot b{font-size:20px;line-height:1.2}
.gq-tot small{font-size:11.5px;color:var(--muted)}
.warn-t{color:var(--warn)!important}
.err-t{color:var(--err)}
.warn-t svg,.err-t svg{width:13px;height:13px;vertical-align:-2px;margin-right:4px}
.roster-seg{max-width:420px}
.rs{margin-top:12px}
.rs-bar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.rs-bar label.btn{cursor:pointer}
.rs-count{margin-left:auto;font-size:12.5px;font-weight:600;color:var(--muted)}
.rs-t{border:1px solid var(--line);border-radius:12px;padding:6px;background:#FBFCFE;max-height:440px;overflow-y:auto}
.rs-r{display:grid;grid-template-columns:var(--cols);gap:6px;align-items:center;margin-bottom:6px}
.rs-r:last-child{margin-bottom:0}
.rs-hd span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rs-hd i{font-style:normal}
.rs-hd .hs{display:none}
.rs-hd{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;padding:4px 4px 2px;position:sticky;top:-6px;background:#FBFCFE;z-index:1}
.rs-r .inp{height:36px;padding:0 9px;font-size:13.5px;min-width:0}
.rs-r .inp.bad{border-color:var(--err);background:#FFF6F6}
.rs-g{height:36px;border-radius:9px;border:1px solid var(--line);background:#fff;font-weight:700;color:var(--brand)}
.rs-x{width:30px;height:36px;border-radius:8px}
.rs-sum{display:flex;flex-direction:column;gap:6px;margin-top:10px;font-size:12.5px}
.rs-sum>div{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.sz{padding:3px 8px;border-radius:7px;background:var(--line-2);font-weight:600;color:var(--ink-2)}
.sz b{color:var(--brand)}
.sz.bad{background:#FDECEC;color:var(--err)}
.rs-qty .note{align-items:center;margin:10px 0 0;flex-wrap:wrap}
.rs-qty .note span{flex:1;min-width:180px}
.kchip{font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:99px;flex:none;letter-spacing:.02em}
.kchip.top{background:var(--brand-50);color:var(--brand)}
.kchip.bottom{background:#E3F6EE;color:var(--ok)}
.kchip.none{background:var(--line-2);color:var(--muted)}
.jg-row.na{opacity:.7}
.jg-row .box.off{background:var(--line-2);border-color:var(--line)}
.paste-box{height:auto;min-height:180px;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.5;resize:vertical;white-space:pre;overflow:auto}
.paste-info{margin-top:10px;display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:600}
.ok-t{color:var(--ok)}.ok-t svg,.paste-info svg{width:14px;height:14px;vertical-align:-2px;margin-right:4px}
.paste-prev{border:1px solid var(--line);border-radius:10px;padding:6px 8px;background:#FBFCFE;font-weight:500}
.pp-r{display:grid;grid-template-columns:repeat(auto-fit,minmax(60px,1fr));gap:8px;padding:3px 2px;font-size:12.5px}
.pp-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}
.pp-r .bad{color:var(--err);font-weight:700}
.arr-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 8px}
.arr-top b{font-size:13.5px}
.arr-hd{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--ink-2);margin-left:auto}
.arr-top .link{display:inline-flex;align-items:center;gap:5px;font-size:12.5px}
.arr-top .link svg{width:14px;height:14px}
.arr-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:11px}
.arr{border-collapse:collapse;width:100%;font-size:13px;min-width:max-content}
.arr th{background:var(--brand-50);padding:7px 8px;text-align:left;border-right:1px solid #fff;vertical-align:top}
.arr th.unused{background:var(--line-2)}
.arr-h{display:flex;align-items:center;gap:8px;justify-content:space-between;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--brand);font-weight:800;white-space:nowrap}
.arr th.unused .arr-h{color:var(--muted)}
.arr th small{display:block;font-weight:500;color:var(--muted);font-size:11px;margin-top:2px}
.arr-btns{display:inline-flex;gap:3px}
.arr-btns button{width:24px;height:24px;border-radius:6px;background:#fff;border:1px solid var(--line);font-size:10px;color:var(--ink-2)}
.arr-btns button:disabled{opacity:.35}
.arr td{padding:6px 8px;border-top:1px solid var(--line-2);border-right:1px solid var(--line-2);white-space:nowrap}
.arr td.unused{color:var(--muted);background:#FAFBFD;text-decoration:line-through}
.arr td.bad{background:#FDECEC;color:var(--err);font-weight:600}
.fixbox{border:1px solid #F7C7C8;background:#FFF8F8;border-radius:11px;padding:10px 12px;margin-bottom:8px}
.fixbox b{font-size:13.5px}
.fixbox ul{list-style:none;margin:6px 0 0;padding:0;font-size:13px;color:#B4262B}
.fixbox li{display:flex;gap:6px;align-items:flex-start;margin-top:3px}
.fixbox li svg{width:14px;height:14px;margin-top:2px;flex:none}
.rmode{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.rm-opt{display:flex;gap:10px;align-items:flex-start;text-align:left;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;transition:all .15s}
.rm-opt b{display:block;font-size:13.5px}.rm-opt small{color:var(--muted);font-size:12px}
.rm-dot{width:18px;height:18px;border-radius:50%;border:2px solid #B8BFD0;flex:none;margin-top:1px;position:relative}
.rm-opt.on{border-color:var(--brand);background:var(--brand-50)}
.rm-opt.on .rm-dot{border-color:var(--brand)}
.rm-opt.on .rm-dot::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--brand)}
.rmode.dim .rm-opt{opacity:.5;cursor:not-allowed}
.both-row{padding:12px 2px 4px;border-bottom:0}
.rs-blk{border:1px solid var(--line);border-radius:13px;padding:10px 12px 12px;margin-top:12px;background:#fff}
.rs-bh{display:flex;align-items:center;gap:7px;font-size:12px;text-transform:uppercase;letter-spacing:.07em;font-weight:800;color:var(--brand)}
.rs-bh svg{width:15px;height:15px}
.rs-blk .rs{margin-top:8px}
.rs-total{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;padding:10px 12px;border-radius:11px;background:var(--line-2);font-size:13px}
.rs-total span{color:var(--muted);font-weight:600}
.rs-r .sq{text-align:center;font-size:14px;color:var(--brand)}
.rs-r .sn{grid-column:1/-1;margin:-2px 2px 2px;color:var(--muted);font-size:11.5px;min-height:0}
.rs-r .sn:empty{display:none}
.ji-next{display:flex;justify-content:flex-end;margin-top:16px}
.jp-note{display:flex;align-items:center;gap:6px;margin:0 0 10px}
.jp-note svg{width:14px;height:14px;flex:none}
.jpp{margin-top:10px}
.jpp-h,.jpp-r{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 28px;gap:6px;align-items:center}
.jpp-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;margin-bottom:5px}
.jpp-r{margin-bottom:6px}
.jpp-r .inp{height:36px;padding:0 9px;font-size:13px}
.jpp-r .sel-trigger{height:36px;font-size:13px;padding:0 9px}
.jpp-add{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;margin-top:2px}
.jpp-add svg{width:14px;height:14px}
.jqty{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.jqty-in{display:flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:11px;padding:3px;background:#fff}
.jqty-in .inp{width:76px;height:34px;border:0;text-align:center;font-size:16px;font-weight:700;box-shadow:none!important;padding:0 4px}
.jqty-in .icon-btn{font-size:18px;font-weight:700;color:var(--brand);background:var(--brand-50)}
.jqty-in .icon-btn svg{width:16px;height:16px}
.jq-note{margin-left:2px}
.toast{position:fixed;left:50%;bottom:92px;transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:11px 16px;border-radius:12px;font-size:13px;font-weight:500;display:flex;gap:9px;align-items:center;opacity:0;pointer-events:none;transition:all .22s;z-index:300;box-shadow:var(--sh-lg);max-width:calc(100vw - 32px)}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.ok svg{color:#5EE0B0}.toast.err svg{color:#FF8A8D}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .lh,.row{grid-template-columns:minmax(0,2fr) 140px 110px minmax(0,1.2fr) 18px}
  .lh>:nth-child(5),.row>:nth-child(5){display:none}
}
@media (max-width:900px){
  .app{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;bottom:0;width:264px;transform:translateX(-100%);transition:transform .25s cubic-bezier(.2,.8,.2,1)}
  .app.nav-open .side{transform:none}
  .app.nav-open .scrim-nav{display:block;position:fixed;inset:0;background:rgba(14,20,36,.4);z-index:55}
  .only-m{display:grid!important}
  .only-d{display:none!important}
  .top{padding:10px 14px}
  .content{padding:14px 16px 40px}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lh{display:none}
  .row{grid-template-columns:minmax(0,1fr) auto 16px;gap:10px;padding:12px 14px}
  .row>:nth-child(2),.row>:nth-child(4),.row>:nth-child(5){display:none}
  .m-meta{display:block!important}
}
@media (max-width:640px){
  body{font-size:14.5px}
  .hello h2{font-size:19px}
  .modules{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
  .tile{padding:14px 6px 11px;gap:8px;border-radius:13px}
  .tile .ti{width:40px;height:40px;border-radius:11px}
  .tile .ti svg{width:20px;height:20px}
  .tile span{font-size:12px;line-height:1.25}
  .tile .tag{display:none}
  .tile.soon::after{content:"";position:absolute;top:8px;right:8px;width:6px;height:6px;border-radius:50%;background:#C9CED9}
  .stat{padding:12px}
  .stat .si{width:32px;height:32px}
  .grid{grid-template-columns:1fr}
  .grid.two-m{grid-template-columns:repeat(2,minmax(0,1fr))}
  .card{padding:16px 14px;border-radius:14px}
  .sub{padding:12px}
  .form-top h2{font-size:18px}
  .form-wrap{padding-bottom:84px}
  .actions{position:fixed;left:0;right:0;bottom:0;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);gap:8px;margin:0}
  .actions .sp{display:none}
  .actions .btn{flex:1;padding:0 10px;height:44px}
  .actions .btn-ghost{flex:0 0 auto}
  .check{flex:1 1 170px;min-width:0;padding:0 12px;font-size:13px}
  .hero{flex-wrap:wrap}
  .hero-act{width:100%}
  .hero-act .btn{flex:1}
  .kv{grid-template-columns:1fr;gap:2px}
  .kv>span{font-size:12px;margin-top:8px}
  .kv>span:first-child{margin-top:0}
  .m-scrim{padding:0;place-items:end stretch}
  .modal,.modal.wide{width:100%;border-radius:20px 20px 0 0;max-height:92vh;animation:sheetIn .24s cubic-bezier(.2,.8,.2,1)}
  .m-f{padding-bottom:calc(14px + env(safe-area-inset-bottom))}
  .m-f .btn{flex:1}
  .toast{bottom:86px}
  .search{max-width:none}
  .toolbar .btn-pri{display:none}
  .tpl-row{grid-template-columns:1fr}
  .pgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .shead{display:none}
  .srow{grid-template-columns:minmax(0,1fr) 32px;border:1px solid var(--line);border-radius:12px;padding:10px;background:#FBFCFE;gap:8px}
  .srow>.field:nth-child(1){grid-column:1}
  .srow>.field:nth-child(2){grid-column:1/-1}
  .srow>.rm{grid-column:2;grid-row:1;margin-top:5px}
  .pbody{padding:10px 11px 12px}.pbody b{font-size:13px}.price{font-size:14px}
  .phero{grid-template-columns:1fr;gap:14px}
  .pmain.noimg{height:110px}
  .qsearch .inp{height:52px;font-size:16px}
  .qres{padding:10px}
  .qkv{grid-template-columns:1fr}
  .qsel-act .btn{flex:1}
  .qsteps{font-size:12px}
  .ql-head{display:none}
  .ql{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;padding:12px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:#FBFCFE;position:relative}
  .ql-n{display:none}
  .ql-p{grid-column:1/-1;padding-right:34px}
  .ql-band{max-width:none}
  .ql-f label{display:block;font-size:11.5px;font-weight:600;color:var(--muted);margin-bottom:4px}
  .ql-mrp{padding-top:0;height:40px;display:flex;align-items:center}
  .ql-tot{text-align:left}
  .ql-tot b{padding-top:0;height:40px;display:flex;align-items:center;font-size:15px}
  .ql .rm{position:absolute;top:8px;right:8px;margin:0}
  .amt{max-width:none}
  .amt-in{width:150px}
  .arow{font-size:13.5px}
  .qadd-btns .btn{min-width:0}
  .qrow{padding:12px 14px}
  .grid.g3{grid-template-columns:1fr 1fr}
  .grid.g3>.field:nth-child(2){grid-column:1/-1;order:-1}
  .jpp-h{display:none}
  .jpp-r{grid-template-columns:1fr 1fr 28px;padding:8px;border:1px solid var(--line-2);border-radius:10px;background:#fff}
  .jpp-r>:nth-child(3){grid-column:1}
  .jpp-r>:nth-child(4){grid-column:2}
  .jpp-r>.rs-x{grid-column:3;grid-row:1}
  .rs-bar .btn{padding:0 9px}
  .rs-count{width:100%;margin:2px 0 0}
  .rs-t{padding:5px}
  .rs-r{gap:4px}
  .rs-r .inp{padding:0 6px;font-size:13px}
  .rs-hd{font-size:10px;letter-spacing:.03em}
  .rs-hd .hl{display:none}
  .rs-hd .hs{display:inline}
  .rs-x{width:26px}
  .rmode{grid-template-columns:1fr}
  .ji-b{padding:4px 12px 14px}
  .ji-h{padding:12px}
  .set-row{padding:12px 0}
  .cat-h .icon-btn.sm{width:34px;height:34px}
  .acc-h{padding:16px 14px}
  .acc-b{padding:0 14px 16px}
  .phead{display:none}
  .prow{grid-template-columns:minmax(0,1fr) minmax(0,1fr);border:1px solid var(--line);border-radius:12px;padding:10px 12px 12px;background:#FBFCFE;position:relative;gap:10px}
  .prow .pn{grid-column:1/-1;height:auto;display:block;font-size:12.5px;color:var(--ink-2)}
  .prow .pn::before{content:"Part "}
  .prow .field label{display:block}
  .prow .rm{position:absolute;top:4px;right:6px;margin:0}
  .pats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .pat-add{min-height:0}
  .pv-top{flex-direction:column}
  .bkr{grid-template-columns:minmax(0,1fr) auto;padding:12px 14px}
  .bkr .rn{grid-column:1/-1;padding:0}
  .bkr ul{margin-left:0}
  .bk-s{padding:10px}.bk-s b{font-size:18px}
}
.zs .rs-t,.zs .rs-bar{max-width:560px}
.half{margin-top:14px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--bg2,#FAFBFD)}
.half-h{display:flex;align-items:center;gap:8px;margin-bottom:2px;min-width:0}.half-h b{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.half .rmode{margin-top:10px}.half .zs .rs-bar{margin-top:10px}
.set-sum{margin-top:14px;padding:12px 14px;border-radius:14px;background:#EEF0FE;border:1px solid #DCE0FD}
.set-sum-h{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#3346E8;margin-bottom:6px}
.set-sum .svg,.set-sum-h svg{width:15px;height:15px}.set-sum .rs-sum{margin-top:0}
.set-sum .sz{background:#fff}
.sz-t{font-size:12px;color:var(--muted);margin-left:4px;white-space:nowrap}
.jg-name{padding:10px 12px 4px}.sn-chips{margin-top:8px}.schip.on,.schip.on:hover{background:#3346E8;color:#fff;border-color:#3346E8}
.ctabs{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 10px;margin:0 -2px;scrollbar-width:thin}
.ctab{flex:0 0 auto;display:flex;align-items:center;gap:8px;min-height:52px;padding:8px 14px 8px 10px;border:1.5px solid var(--line);border-radius:12px;background:#fff;text-align:left;cursor:pointer;max-width:220px;position:relative}
.ctab .ct-t{display:flex;flex-direction:column;min-width:0}.ctab .ct-t b{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ctab .ct-t small{font-size:12px;color:var(--muted)}
.ctab .cnum,.cons-sum-h .cnum{width:24px;height:24px;border-radius:7px;background:var(--line-2,#EEF1F5);color:var(--ink-2);display:grid;place-items:center;font-size:12px;font-weight:700;flex:0 0 auto}
.ctab.on{border-color:var(--brand);background:var(--brand-50)}.ctab.on .cnum{background:var(--brand);color:#fff}.ctab.on .ct-t small{color:var(--brand)}
.ctab.err::after{content:'';position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:#E5484D}
.ctab.add{border-style:dashed;color:var(--brand);font-weight:600;font-size:13px;gap:6px}.ctab.add svg{width:16px;height:16px}
.cpanel{border:1px solid var(--line);border-radius:14px;padding:14px;background:#FCFCFE}
.cpanel-h{display:flex;align-items:center;gap:6px;margin:-4px 0 10px}.cpanel-h .sp{flex:1}
.cons-sum{border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-top:10px}
.cons-sum-h{display:flex;align-items:center;gap:8px;margin-bottom:6px}.cons-sum-h b{flex:1;min-width:0}.cprice{font-weight:700;color:var(--brand)}
.cons-sum .sum-sec{padding:8px 0 0;border:0}
.stc{color:var(--brand);font-weight:700}.stl{color:var(--brand);font-weight:700}
.ql-style{margin-top:6px;max-width:260px}.ql-style .err-msg{margin-top:4px}
.nm-tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:6px;background:var(--brand-50);color:var(--brand);font-size:10.5px;font-weight:700;letter-spacing:.02em;vertical-align:1px}
.pcolor{margin-top:6px}
.jpr-c{display:flex;flex-direction:column;gap:5px;min-width:0}
.proc-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.proc-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:#fff}
.proc-row .sp{flex:1}.proc-row .ech-t{background:none;border:0;padding:0;font:inherit;cursor:pointer;color:var(--ink)}
.cn-seg{max-width:460px}.cn-seg button{font-size:13px}
.proc-row .ech-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.proc-row .muted{white-space:nowrap}
@media(max-width:600px){.proc-row{flex-wrap:wrap;row-gap:6px}.proc-row .ech-t{flex:1 0 100%}}
.ji .inp.bad{border-color:var(--err);background:#FFF6F6}
.ji .bad>.sel-trigger,.ji .bad .sel-trigger{border-color:var(--err);background:#FFF6F6}
.gchips.bad .gchip{border-color:var(--err)}
.seg.bad{box-shadow:0 0 0 1.5px var(--err)}
.pat-add.bad{border-color:var(--err);background:#FFF6F6;color:var(--err)}
.jpp-t{font-size:12px;font-weight:700;color:var(--ink-2);margin-bottom:6px}
.jpp-need{display:inline-flex;align-items:center;gap:4px;margin-left:12px;font-size:12px}.jpp-need svg{width:13px;height:13px}
.brand-rows{border:1px solid var(--line);border-radius:12px;padding:0 12px;background:#fff;max-width:460px}
.brand-rows .set-row{padding:10px 0}.brand-rows .set-row+.set-row{border-top:1px solid var(--line-2,#EEF1F5)}
.dt-seg{max-width:360px}.dcode{margin-top:12px;max-width:300px}
.mt-h,.mt-r{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 28px;gap:6px;align-items:center}
.mt-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;margin-bottom:5px}
.mt-r{margin-bottom:6px}.mt-r .inp{height:38px;font-size:13.5px}.mt-r .sel-trigger{height:38px;font-size:13.5px}
@media(max-width:700px){.mt-h{display:none}.mt-r{grid-template-columns:1fr 1fr 28px;padding:8px;border:1px solid var(--line-2,#EEF1F5);border-radius:10px;background:#fff}
  .mt-r>:nth-child(1){grid-column:1/3}.mt-r>.rs-x{grid-column:3;grid-row:1}.mt-r>:nth-child(4){grid-column:1/3}}
.jg-n{flex:0 0 auto;width:24px;height:24px;border-radius:7px;background:var(--ink,#111827);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700}
.mn-seg{max-width:360px}
.jrem{min-height:84px;resize:vertical;line-height:1.5;padding-top:10px}
.op-note{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:12px;border-radius:12px;background:#EEF0FE;color:#2B3AB8;font-size:13px}
.op-note svg{width:16px;height:16px;flex:0 0 auto}.op-note span{flex:1}
.qc-ic.op{color:#7C3AED}
.omit-f{margin-top:12px;max-width:420px}.omit-f .hint{display:block;min-height:0;line-height:1.5}
.wo-chips{display:flex;flex-wrap:wrap;gap:6px}.wo-chips .gchip{min-width:0;padding:0 12px}
.h-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.h-add{display:grid;grid-template-columns:170px minmax(0,1fr) auto;gap:8px;margin-bottom:12px}
@media(max-width:600px){.h-add{grid-template-columns:1fr auto}.h-add input[type=date]{grid-column:1/-1}}
.h-years{margin-bottom:8px}
.h-list{display:flex;flex-direction:column;gap:6px}
.h-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:#fff;min-width:0}
.h-row .h-d{font-size:12.5px;color:var(--ink-2);flex:0 0 auto;min-width:118px}.h-row b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}.h-row .sp{flex:1}
@media(max-width:600px){.h-row{flex-wrap:wrap;row-gap:2px}.h-row .h-d{flex-basis:100%}}
.qual-f{margin-top:12px;max-width:300px}
.ptabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.ptab{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1.5px solid var(--line);border-radius:14px;background:#fff;text-align:left;cursor:pointer;min-width:0;transition:all .12s}
.ptab .pt-ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--bg);color:var(--c);flex:0 0 auto}.ptab .pt-ic svg{width:18px;height:18px}
.ptab .pt-t{flex:1;min-width:0;font-weight:600;font-size:13.5px;line-height:1.25}
.ptab .pt-n{font-size:20px;font-weight:700;color:var(--c)}
.ptab.on{border-color:var(--c);background:var(--bg)}.ptab.on .pt-ic{background:#fff}
@media(max-width:600px){.ptabs{gap:6px}.ptab{flex-direction:column;align-items:flex-start;gap:6px;padding:10px}.ptab .pt-t{font-size:12px}.ptab .pt-n{font-size:18px;position:absolute;right:10px;top:10px}.ptab{position:relative}}
.qc-ic.post{color:#0E9F6E}
.pc-info{display:flex;flex-direction:column;gap:6px;padding:0 16px 4px}
.pc-form{padding:0 0 14px}
.dl{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2)}.dl svg{width:15px;height:15px}
.tl{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:12px}
.tl-s{padding:3px 8px;border-radius:8px;background:var(--line-2,#EEF1F5);color:var(--ink-2);white-space:nowrap}
.tl-s b{font-weight:700}.tl-s em{font-style:normal;font-weight:700;color:var(--brand)}
.tl-s.run{background:#FEF3E0;color:#8A4B02}.tl-s.run em{color:#C26A04}
.tl-s.wait{background:#fff;border:1px dashed var(--line);color:var(--muted)}.tl-s.wait em{color:var(--muted);font-weight:500}
.tl-a{color:var(--muted)}
.dl-info{margin-top:10px;min-height:20px}.dl-n{font-size:15px;color:var(--brand)}
@media(max-width:600px){.tl-s{white-space:normal}}
/* ---------- log in · sign up ---------- */
body.lg-on{overflow:hidden}
.lg2{position:fixed;inset:0;z-index:200;overflow-y:auto;overflow-x:hidden;background:#070B1F;color:#fff;animation:fade .35s}
.lg2.out{animation:lgOut .42s forwards;pointer-events:none}
@keyframes lgOut{to{opacity:0;transform:scale(1.025)}}
.lg2-bg{position:fixed;inset:0;overflow:hidden;pointer-events:none}
.lg2-bg i{position:absolute;border-radius:50%;filter:blur(80px);opacity:.55;will-change:transform}
.lg2-bg .o1{width:560px;height:560px;background:#3346E8;top:-180px;left:-140px;animation:lgO1 19s ease-in-out infinite alternate}
.lg2-bg .o2{width:460px;height:460px;background:#06B6D4;bottom:-200px;left:28%;opacity:.42;animation:lgO2 23s ease-in-out infinite alternate}
.lg2-bg .o3{width:400px;height:400px;background:#E5484D;top:6%;right:-160px;opacity:.3;animation:lgO3 21s ease-in-out infinite alternate}
@keyframes lgO1{to{transform:translate(160px,120px) scale(1.15)}}
@keyframes lgO2{to{transform:translate(-140px,-90px) scale(.9)}}
@keyframes lgO3{to{transform:translate(-120px,160px) scale(1.1)}}
.lg2-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(ellipse at 30% 45%,#000 0%,transparent 72%);mask-image:radial-gradient(ellipse at 30% 45%,#000 0%,transparent 72%)}
.lg2-str{position:absolute;inset:-60%;background:repeating-linear-gradient(115deg,transparent 0 60px,rgba(255,255,255,.03) 60px 64px);animation:lgStr 9s linear infinite}
@keyframes lgStr{to{transform:translateX(70.62px)}}
.lg2-wrap{position:relative;min-height:100%;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(380px,470px);gap:56px;align-items:center;max-width:1180px;margin:0 auto;padding:40px 36px}
.lg2-brand,.lg2-card{min-width:0}
.lg2-brand{animation:lgRise .8s cubic-bezier(.2,.8,.2,1) both}
.lg2-id{display:flex;align-items:center;gap:12px;margin-bottom:38px}.lg2-id b{display:block;font-size:17px}.lg2-id small{color:#A5B0CC;font-size:12.5px}
.lg2-logo{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#3346E8,#06B6D4);display:grid;place-items:center;font-weight:800;letter-spacing:.02em;box-shadow:0 10px 30px rgba(51,70,232,.45);overflow:hidden}.lg2-logo img{width:100%;height:100%;object-fit:contain;background:#fff}
.lg2-brand h1{font-size:44px;line-height:1.08;letter-spacing:-.025em;font-weight:800;margin:0 0 34px;max-width:560px}
.lg2-brand h1 span{background:linear-gradient(90deg,#8EA2FF,#5EE7F7 60%,#8EA2FF);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:lgShine 6s linear infinite}
@keyframes lgShine{to{background-position:-200% 0}}
.lg2-flow{list-style:none;margin:0;padding:0;display:flex;gap:10px;flex-wrap:wrap;position:relative}
.lg2-flow li{display:flex;align-items:center;gap:8px;padding:9px 13px 9px 9px;border-radius:99px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);font-size:13px;font-weight:600;color:#C9D2EA;animation:lgStep 7.5s ease-in-out infinite;animation-delay:calc(var(--k)*1.5s)}
.lg2-flow li span{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.1);transition:background .3s}.lg2-flow li svg{width:15px;height:15px}
@keyframes lgStep{0%,24%,100%{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1);color:#C9D2EA;transform:none}6%,18%{background:rgba(94,231,247,.16);border-color:rgba(94,231,247,.55);color:#fff;transform:translateY(-3px)}}
.lg2-card{position:relative;background:#fff;color:var(--ink);border-radius:26px;padding:24px 26px 22px;box-shadow:0 30px 90px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.08);animation:lgRise .7s .08s cubic-bezier(.2,.8,.2,1) both}
@keyframes lgRise{from{opacity:0;transform:translateY(26px) scale(.98)}to{opacity:1;transform:none}}
.lg2-card.shake{animation:lgShake .42s}
@keyframes lgShake{20%{transform:translateX(-8px)}40%{transform:translateX(7px)}60%{transform:translateX(-5px)}80%{transform:translateX(3px)}}
.lg2-tabs{position:relative;display:grid;grid-template-columns:1fr 1fr;background:#F1F3F9;border-radius:14px;padding:4px}
.lg2-tabs button{position:relative;z-index:1;height:40px;border-radius:10px;font-weight:700;font-size:14px;color:#6B7590;transition:color .25s}
.lg2-tabs button[aria-selected=true]{color:var(--ink)}
.lg2-pill{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);background:#fff;border-radius:10px;box-shadow:0 2px 8px rgba(14,20,36,.12);transition:transform .38s cubic-bezier(.2,.8,.2,1)}
.lg2-card[data-mode=up] .lg2-pill{transform:translateX(100%)}
.lg2-card[data-mode=done] .lg2-tabs,.lg2-card[data-mode=setup] .lg2-tabs{display:none}
.lg2-card[data-mode=setup] #lgSet{display:flex;margin-top:4px}.lg2-card[data-mode=setup] #lgSet>*{animation:lgIn .45s cubic-bezier(.2,.8,.2,1) both}
.lg2-badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:#C26A04;background:#FEF3E0;border-radius:99px;padding:4px 10px;margin-bottom:8px}.lg2-badge svg{width:13px;height:13px}
.lg2-form,.lg2-done{display:none;flex-direction:column;gap:12px;margin-top:20px}
.lg2-card[data-mode=in] #lgIn,.lg2-card[data-mode=up] #lgUp,.lg2-card[data-mode=done] .lg2-done{display:flex}
.lg2-card[data-mode=in] #lgIn>*,.lg2-card[data-mode=up] #lgUp>*{animation:lgIn .45s cubic-bezier(.2,.8,.2,1) both}
.lg2-form>*:nth-child(2){animation-delay:.04s!important}.lg2-form>*:nth-child(3){animation-delay:.08s!important}.lg2-form>*:nth-child(4){animation-delay:.12s!important}.lg2-form>*:nth-child(5){animation-delay:.16s!important}.lg2-form>*:nth-child(6){animation-delay:.2s!important}
@keyframes lgIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.lg2-h h2{margin:0;font-size:22px;letter-spacing:-.01em}.lg2-h p{margin:4px 0 4px;color:#6B7590;font-size:13.5px}
.lg2-f{position:relative;display:block;min-width:0}
.lg2-f input,.lg2-sel .sel-trigger{width:100%;height:54px;border:1.5px solid #E2E5EE;border-radius:14px;padding:20px 44px 5px 44px;font-size:15px;background:#fff;color:var(--ink);outline:none;transition:border-color .18s,box-shadow .18s,background .18s}
.lg2-sel .sel-trigger{padding:0 12px 0 44px}.lg2-sel .sel-val .ph{color:#8A93A8}
.lg2-f input:hover,.lg2-sel .sel-trigger:hover{border-color:#C9CEDC}
.lg2-f input:focus,.lg2-sel .sel-trigger[aria-expanded=true]{border-color:#3346E8;box-shadow:0 0 0 4px rgba(51,70,232,.12)}
.lg2-f em{position:absolute;left:45px;top:17px;font-style:normal;color:#8A93A8;font-size:14.5px;pointer-events:none;transition:top .18s,font-size .18s,color .18s;white-space:nowrap}
.lg2-f input:focus+em,.lg2-f input:not(:placeholder-shown)+em{top:8px;font-size:11px;font-weight:700;letter-spacing:.02em}
.lg2-f input:focus+em{color:#3346E8}
.lg2-ic{position:absolute;left:14px;top:17px;width:20px;height:20px;color:#9AA2B6;pointer-events:none;z-index:1;transition:color .18s}.lg2-ic svg{width:20px;height:20px}
.lg2-f:focus-within .lg2-ic{color:#3346E8}
.lg2-eye{position:absolute;right:8px;top:9px;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:#9AA2B6}.lg2-eye svg{width:19px;height:19px}.lg2-eye:hover,.lg2-eye.on{color:#3346E8;background:#EEF0FE}
.lg2-f.bad input,.lg2-f.bad .sel-trigger{border-color:#E5484D;background:#FFF8F8}.lg2-f.bad .lg2-ic,.lg2-f.bad em{color:#C2262C}
.lg2-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.lg2-err{color:#C2262C;font-size:13px;font-weight:600;display:flex;gap:6px;align-items:flex-start;animation:lgIn .3s}.lg2-err:empty{display:none}
.lg2-btn{position:relative;height:54px;border-radius:14px;border:0;background:linear-gradient(135deg,#3346E8 0%,#4F46E5 45%,#06B6D4 100%);background-size:220% 100%;background-position:0 0;color:#fff;font-weight:700;font-size:15.5px;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 12px 26px rgba(51,70,232,.35);transition:background-position .5s,transform .12s,box-shadow .2s;cursor:pointer;margin-top:2px}
.lg2-btn svg{width:18px;height:18px;transition:transform .25s}.lg2-btn:hover{background-position:100% 0;box-shadow:0 14px 32px rgba(51,70,232,.45)}.lg2-btn:hover svg{transform:translateX(3px)}.lg2-btn:active{transform:scale(.985)}
.lg2-btn.busy>*{opacity:0}.lg2-btn.busy::after{content:'';position:absolute;width:22px;height:22px;border:2.5px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:lgSpin .7s linear infinite}
@keyframes lgSpin{to{transform:rotate(360deg)}}
.lg2-alt{margin:2px 0 0;text-align:center;font-size:13.5px;color:#6B7590}.lg2-lnk{color:#3346E8;font-weight:700;padding:0 2px}
.lg2-hint{margin:0;text-align:center;font-size:12px;color:#9AA2B6}.lg2-hint b{color:#52596E}
.lg2-done{align-items:center;text-align:center;gap:10px;padding:8px 4px 2px}.lg2-done h2{margin:4px 0 0;font-size:22px}.lg2-done p{margin:0;color:#52596E;font-size:14px;line-height:1.5}.lg2-done .lg2-btn{align-self:stretch;margin-top:8px}
.lg2-ok{width:76px;height:76px}.lg2-ok circle{fill:#E7F7F0;stroke:#0E9F6E;stroke-width:3;stroke-dasharray:176;stroke-dashoffset:176;animation:lgDraw .6s .1s ease-out forwards}.lg2-ok path{fill:none;stroke:#0E9F6E;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:40;animation:lgDraw .4s .6s ease-out forwards}
@keyframes lgDraw{to{stroke-dashoffset:0}}
.lg2-sum{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;background:#F6F7FB;border-radius:12px;padding:10px 14px;font-size:13px;text-align:left;align-self:stretch}.lg2-sum span{color:#6B7590}
@media(max-width:900px){.lg2-wrap{grid-template-columns:minmax(0,1fr);gap:22px;padding:24px 16px 32px;align-content:start;max-width:520px}
  .lg2-id{margin-bottom:16px}.lg2-brand h1{font-size:27px;margin:0 0 16px}
  .lg2-flow{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:6px;margin:0 -16px;padding:0 16px 4px}.lg2-flow::-webkit-scrollbar{display:none}.lg2-flow li{flex:none;font-size:12px;padding:6px 10px 6px 6px}.lg2-flow li span{width:22px;height:22px}
  .lg2-card{padding:18px 16px 18px;border-radius:22px}}
@media(max-width:480px){.lg2-2{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.lg2 *,.lg2{animation:none!important;transition:none!important}}
/* sidebar account */
.sf-me{display:flex;align-items:center;gap:10px;width:100%}.sf-me .av{width:34px;height:34px;flex:none;font-size:12px}.sf-me .mn{flex:1;min-width:0;display:flex;flex-direction:column}.sf-me .mn b{color:#fff;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sf-me .mn small{color:#94A3B8;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sf-out{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:#CBD5E1;border:1px solid rgba(255,255,255,.14);flex:none}.sf-out:hover{background:rgba(255,255,255,.08);color:#fff}.sf-out svg{width:17px;height:17px}
/* sign-up requests */
.ureq{border:1px solid #F5D9A8;background:#FFFBF2;border-radius:16px;padding:14px;margin-bottom:16px}
.ureq-h{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:14.5px}.ureq-h svg{width:18px;height:18px;color:#C26A04}
.ureq-it{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px}.ureq-it+.ureq-it{margin-top:8px}
.ureq-it .mn{flex:1;min-width:0;display:flex;flex-direction:column}.ureq-it .mn small{color:var(--muted);font-size:12.5px}.ureq-it .acts{display:flex;gap:6px;flex:none}
.ap-md{margin-top:10px;background:#FFF4DE;border-color:#F5D9A8}
.hl-acts{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.err-list{display:flex;flex-direction:column;gap:6px;max-height:340px;overflow:auto}
.err-it{display:flex;gap:10px;align-items:flex-start;border:1px solid #F6D3D3;background:#FFF8F8;border-radius:10px;padding:9px 11px}.err-ic svg{width:17px;height:17px;color:#C2262C;margin-top:2px}.err-it .mn{display:flex;flex-direction:column;min-width:0}.err-it b{font-size:13px;word-break:break-word}.err-it small{color:var(--muted);font-size:11.5px}
.err-none{display:flex;gap:10px;align-items:center;background:#E7F7F0;border-radius:12px;padding:12px 14px;color:#0B7A55}.err-none svg{width:20px;height:20px}.err-none b{display:block;color:var(--ink);font-size:13.5px}.err-none span{font-size:12.5px}
.dash-req{display:flex;align-items:center;gap:12px;border:1px solid #F5D9A8;background:#FFFBF2;border-radius:14px;padding:12px 14px;margin:-4px 0 16px;text-align:left;width:100%}
.dash-req>svg{width:20px;height:20px;color:#C26A04;flex:none}.dash-req .mn{flex:1}.dash-req .mn b{display:block;font-size:14px}.dash-req .mn small{color:var(--muted);font-size:12.5px}
@media(max-width:600px){.ureq-it{flex-wrap:wrap}.ureq-it .acts{width:100%}.ureq-it .acts .btn{flex:1}}

.login-scr{position:fixed;inset:0;z-index:200;background:linear-gradient(160deg,#0F172A,#1E2A5A);display:grid;place-items:center;padding:20px;overflow:auto}
.login-card{width:100%;max-width:360px;background:#fff;border-radius:20px;padding:28px 24px;display:flex;flex-direction:column;gap:12px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.login-card h2{margin:6px 0 0;font-size:20px}.login-card p{margin:0}
.lg-logo{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#3346E8,#06B6D4);color:#fff;display:grid;place-items:center;font-weight:800}
.lg-btn{height:46px;margin-top:4px;justify-content:center}.lg-hint{text-align:center}
button.me{cursor:pointer;border:0}
.u-av{font-weight:700;font-size:13px}.r-md{background:#FDECEC!important;color:#B4262B!important}.r-admin{background:#EEF0FE!important;color:#3346E8!important}.r-supervisor{background:#E2F5F9!important;color:#0891B2!important}.r-manager{background:#F3EDFE!important;color:#7C3AED!important}.r-hod{background:#FEF3E0!important;color:#C26A04!important}.r-developer{background:#E6F4EA!important;color:#0B6B3A!important}.r-staff{background:#EDF0F4!important;color:#475569!important}
.badge.role{font-weight:700}.qcard.off-u{opacity:.6}
.g2u{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:600px){.g2u{grid-template-columns:1fr}}
.gchip.locked{opacity:.75;cursor:default}
.ptabs.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.rej-note{display:flex;gap:8px;align-items:flex-start;margin:0 16px 4px;padding:8px 10px;border-radius:10px;background:#FDECEC;color:#8E1D22;font-size:12.5px}.rej-note svg{width:15px;height:15px;flex:0 0 auto;margin-top:1px}
.qc-ic.apv{color:#fff;background:#0E9F6E;border-color:#0E9F6E}
.apv-steps{display:flex;align-items:center;gap:8px;margin:-4px 0 14px;font-size:13px;color:var(--muted)}
.apv-steps span{display:inline-flex;align-items:center;gap:6px}.apv-steps b{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--line-2,#EEF1F5);font-size:12px}
.apv-steps .on{color:var(--ink);font-weight:600}.apv-steps .on b{background:var(--brand);color:#fff}.apv-steps .ln{flex:0 0 40px;height:2px;background:var(--line)}
.apv-chk{margin:0}.apv-chk b{margin-left:3px}
.ro .ji-b input,.ro .ji-b textarea,.ro .ji-b .sel-trigger,.ro .ji-b .seg button,.ro .ji-b .gchip,.ro .ji-b .sw,.ro .ji-b .rm-opt,.ro .ji-b .jqty-in button,.ro #jGroups button,.ro #jGroups input{pointer-events:none}
.ro .ji-b input,.ro .ji-b textarea,.ro .ji-b .sel-trigger{background:#F8F9FB}
.ro .ji-b .rs-x,.ro .ji-b .jpp-add,.ro .ji-b .rs-bar .btn,.ro .ji-b label.btn,.ro .ji-b .pat-add,.ro .jg-bar,.ro .jg-ung,.ro .ji-b .pat .x,.ro .ji-b .qparts,.ro .jg-name .qparts,.ro .ji-b .note .btn{display:none!important}
.apv-acts{flex-wrap:wrap;row-gap:8px}
@media(max-width:700px){.apv-acts .apv-chk{order:-1;flex:1 1 100%;height:auto;min-height:42px;padding:8px 12px;justify-content:flex-start;text-align:left;line-height:1.3}.apv-acts .sp{display:none}.apv-acts .btn-pri{margin-left:auto}}
.side-foot .as-l{display:block;margin-bottom:6px}.side-foot .as-l span{opacity:.7}
.side-foot .sel-trigger{height:38px;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.14);color:#E6E9F2;font-size:12.5px}
.side-foot .sel-trigger .chev{color:#AEB5C8}.side-foot .sel-trigger *{text-decoration:none}
.u-pick{display:flex;flex-direction:column;gap:6px}
.u-opt{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;text-align:left;cursor:pointer}
.u-opt.on{border-color:var(--brand);background:var(--brand-50)}.u-opt .mn{flex:1;min-width:0;display:flex;flex-direction:column}.u-opt small{color:var(--muted);font-size:12px}.u-opt>svg{width:18px;height:18px;color:var(--brand)}
.u-opt .av{width:34px;height:34px;border-radius:10px;display:grid;place-items:center}
.pcards{display:flex;flex-direction:column;gap:12px}
.pcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px 10px;display:flex;flex-direction:column;gap:9px;box-shadow:0 1px 2px rgba(16,24,40,.04)}
.pcard.urgent{border:1.5px solid #E5484D;box-shadow:0 0 0 3px #FDECEC;background:linear-gradient(#FFF9F9,#fff 60%)}
.pc-top{display:flex;align-items:flex-start;gap:10px}.pc-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;text-align:left;background:none;border:0;padding:0;cursor:pointer}
.pc-client{font-size:18px;font-weight:800;color:var(--ink);line-height:1.2}.pc-id{font-size:15px;font-weight:700;color:var(--ink-2)}
.pc-badges{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.badge.urg{background:#E5484D;color:#fff;font-weight:800;letter-spacing:.04em;display:inline-flex;align-items:center;gap:4px}.badge.urg svg{width:12px;height:12px}
.pc-del{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:15px;color:var(--ink-2)}.pc-del svg{width:17px;height:17px;color:var(--brand)}.pc-del b{font-size:16px;color:var(--ink)}
.sep{color:var(--muted)}
.pc-left{font-size:12px;font-weight:700;padding:2px 8px;border-radius:99px;background:#E3F6EE;color:#0B7A55}.pc-left.soon{background:#FEF3E0;color:#A35A00}.pc-left.over{background:#FDECEC;color:#B4262B}
.pc-qty{font-size:13px;color:var(--ink-2);display:flex;flex-wrap:wrap;gap:5px}.pc-qty b{color:var(--ink)}
.pc-people{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;color:var(--muted)}.pc-people b{color:var(--ink-2)}
.tl2{gap:6px}.tl2 .tl-s{display:inline-flex;flex-direction:column;gap:1px;padding:6px 10px;white-space:normal;line-height:1.3}.tl2 .tl-s span{font-size:11.5px}.tl2 .tl-s em{font-size:12px}
.pc-apv{display:flex;align-items:center;gap:6px;font-size:13px;color:#0B7A55}.pc-apv svg{width:16px;height:16px}
.trk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin:6px 0 2px;position:relative}
.trk-s{display:flex;flex-direction:column;align-items:center;text-align:center;gap:3px;position:relative;min-width:0}
.trk-s::before{content:'';position:absolute;top:14px;left:-50%;right:50%;height:3px;background:var(--line);z-index:0}
.trk-s:first-child::before{display:none}.trk-s.done::before,.trk-s.cur::before{background:#0E9F6E}
.trk-c{width:30px;height:30px;border-radius:50%;border:2px solid var(--line);background:#fff;color:var(--muted);font-size:12px;font-weight:700;display:grid;place-items:center;position:relative;z-index:1;cursor:default;padding:0}
.trk-c svg{width:15px;height:15px}
.trk-s.done .trk-c{background:#0E9F6E;border-color:#0E9F6E;color:#fff}
.trk-s.cur .trk-c{border-color:var(--brand);color:var(--brand);cursor:pointer;animation:trkpulse 1.6s ease-out infinite}
.trk-c[data-trk]{cursor:pointer}
@keyframes trkpulse{0%{box-shadow:0 0 0 0 rgba(51,70,232,.45)}70%{box-shadow:0 0 0 10px rgba(51,70,232,0)}100%{box-shadow:0 0 0 0 rgba(51,70,232,0)}}
.trk-s b{font-size:11.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;max-width:100%}
.trk-s small{font-size:10.5px;color:var(--muted);line-height:1.2}.trk-s small.by{color:#0B7A55;font-weight:600}.trk-s small.nx{color:var(--brand);font-weight:600}
@media(max-width:600px){.trk{grid-template-columns:none;display:flex;overflow-x:auto;padding-bottom:4px}.trk-s{flex:0 0 74px}.pc-client{font-size:17px}}
.urg-chk.on{border-color:#E5484D;color:#B4262B;background:#FDECEC}.urg-chk>svg{width:15px;height:15px;color:#E5484D}
.corr-note{background:#FEF3E0;color:#8A4B02;margin-bottom:12px}
.badge.upd{background:#FEF3E0;color:#A35A00;display:inline-flex;align-items:center;gap:4px}.badge.upd svg{width:12px;height:12px}
.pc-upd{display:flex;align-items:center;gap:6px;font-size:12.5px;color:#A35A00}.pc-upd svg{width:14px;height:14px}
.pc-hold{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border-radius:10px;background:#FDECEC;color:#8E1D22;font-size:13px}.pc-hold svg{width:15px;height:15px;flex:0 0 auto;margin-top:2px}
.trk-s.pass .trk-c{background:#7C3AED;border-color:#7C3AED;color:#fff}.trk-s.hold .trk-c{background:#E5484D;border-color:#E5484D;color:#fff;animation:trkhold 1.4s ease-out infinite}
.trk-s.pass::before{background:#7C3AED}.trk-s.hold::before{background:#E5484D}
.trk-c{cursor:pointer}
.trk-s small.lbl{font-weight:700;color:var(--ink-2)}.trk-s.pass small.lbl{color:#7C3AED}.trk-s.hold small.lbl{color:#B4262B}
@keyframes trkhold{0%{box-shadow:0 0 0 0 rgba(229,72,77,.45)}70%{box-shadow:0 0 0 10px rgba(229,72,77,0)}100%{box-shadow:0 0 0 0 rgba(229,72,77,0)}}
.trk-opts{display:flex;flex-direction:column;gap:8px}
.trk-o{display:grid;grid-template-columns:36px 1fr;column-gap:10px;align-items:center;text-align:left;padding:10px 12px;border:1.5px solid var(--line);border-radius:12px;background:#fff;cursor:pointer}
.trk-o>span{grid-row:1/3;width:36px;height:36px;border-radius:10px;display:grid;place-items:center}.trk-o>span svg{width:18px;height:18px}
.trk-o small{color:var(--muted);font-size:12px}
.trk-o.ok>span{background:#E3F6EE;color:#0E9F6E}.trk-o.hold>span{background:#FDECEC;color:#E5484D}.trk-o.pass>span{background:#F3EDFE;color:#7C3AED}
.trk-o.on{border-color:#E5484D;background:#FFF8F8}
.content.wide{max-width:none}
.pj-wrap{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}
.pj-side{display:none}
@media(min-width:1100px){.pj-wrap{grid-template-columns:minmax(0,1fr) 380px;align-items:start}
  .pj-side{display:block;position:sticky;top:84px;max-height:calc(100vh - 100px);overflow-y:auto;overscroll-behavior:contain;background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px}
  .pj-calbtn{display:none}}
@media(max-width:1099px){.pj-side.show{display:block;background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px;order:-1;margin-bottom:4px}.pj-wrap{display:flex;flex-direction:column}.pj-calbtn.on{border-color:var(--brand);color:var(--brand)}}
.pj-main .toolbar{display:flex;gap:8px;align-items:center}.pj-main .toolbar .search{flex:1}
.pcal-h{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}.pcal-h b{display:inline-flex;align-items:center;gap:6px;font-size:15px}.pcal-h b svg{width:17px;height:17px;color:var(--brand)}
.pcal-nav{display:flex;align-items:center;gap:6px;margin-bottom:8px}.pcal-nav b{flex:1;text-align:center;font-size:14px}
.pcal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.pcal-wd{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);text-align:center;font-weight:700;padding:2px 0}
.pcal-d{min-height:50px;border:1px solid var(--line-2,#EEF1F5);border-radius:9px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1px;padding:4px 2px;cursor:pointer;position:relative}
.pcal-d .dn{font-size:12px;font-weight:600;color:var(--ink-2)}
.pcal-d.oth{opacity:.4}.pcal-d.off{background:#F4F5F8}.pcal-d.off .dn{color:#B4262B}
.pcal-d.today{border-color:var(--brand)}.pcal-d.today .dn{color:var(--brand);font-weight:800}
.pcal-d.has{background:#EEF0FE;border-color:#C9CFF9}.pcal-d .dc{font-size:14px;font-weight:800;color:var(--brand);line-height:1}.pcal-d .dp{font-size:9.5px;color:var(--ink-2)}
.pcal-d.urg::after{content:'';position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;background:#E5484D}
.pcal-d.sel{outline:2px solid var(--brand);outline-offset:1px}
.pcal-leg{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:var(--muted);margin:8px 0 4px}.pcal-leg span{display:inline-flex;align-items:center;gap:4px}
.pcal-leg .lg{width:10px;height:10px;border-radius:3px;display:inline-block}.pcal-leg .lg.has{background:#EEF0FE;border:1px solid #C9CFF9}.pcal-leg .lg.urg{background:#E5484D;border-radius:50%}.pcal-leg .lg.off{background:#F4F5F8;border:1px solid var(--line)}
.pcal-list{margin-top:12px;border-top:1px solid var(--line);padding-top:10px;display:flex;flex-direction:column;gap:6px}
.pcal-lh{display:flex;flex-direction:column;margin-bottom:2px}
.pcal-it{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:12px;background:#fff;text-align:left;cursor:pointer}
.pcal-it.urgent{border-color:#E5484D;background:#FFF8F8}.pcal-it .mn{flex:1;min-width:0;display:flex;flex-direction:column}.pcal-it .r{display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.pcal-tip{margin-top:10px}.pcal-h .link{align-self:flex-start;display:inline-flex;align-items:center;gap:4px}.pcal-h .link svg{width:15px;height:15px}
button.badge.upd{border:0;cursor:pointer;font:inherit;font-size:11.5px;font-weight:600}.pc-upd{cursor:pointer}.pc-upd:hover{text-decoration:underline}
.df-h{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}.df-h b{display:inline-flex;align-items:center;gap:6px;color:#A35A00}.df-h b svg{width:16px;height:16px}
.df-c{border:1px solid var(--line);border-radius:12px;padding:10px;margin-bottom:10px}
.df-ch{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.df-list{display:flex;flex-direction:column;gap:6px}
.df-r{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:2px 6px;padding:7px 8px;border-radius:9px;background:#FAFBFD;font-size:12.5px}
.df-k{grid-column:1/-1;font-size:11.5px;font-weight:700;color:var(--ink-2)}
.df-b{color:#B4262B;text-decoration:line-through;word-break:break-word}.df-a{color:#0B7A55;font-weight:600;word-break:break-word}.df-ar{color:var(--muted)}
.main-row{display:block}
.app-side{display:none}
@media(min-width:1100px){
  .main-row{display:grid;grid-template-columns:minmax(0,1fr) 360px;align-items:start}
  .app-side{display:block;position:sticky;top:84px;max-height:calc(100vh - 100px);overflow-y:auto;overscroll-behavior:contain;background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px;margin:20px 20px 20px 0}
  .cal-btn{display:none}}
@media(max-width:1099px){
  .app-side.show{display:block;position:fixed;left:0;right:0;bottom:0;top:0;z-index:150;background:#fff;overflow-y:auto;padding:0 16px 24px;overscroll-behavior:contain}
  body.side-open{overflow:hidden}}
.side-close{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:14px 0 10px;background:#fff;margin-bottom:6px;border-bottom:1px solid var(--line)}
.side-close b{display:inline-flex;align-items:center;gap:6px}.side-close b svg{width:17px;height:17px;color:var(--brand)}
.cal-btn{margin-left:auto}.cal-btn+.me{margin-left:6px}
.pcal-d.hld::before{content:'';position:absolute;top:4px;left:4px;width:7px;height:7px;border-radius:2px;background:#F59E0B}
.pcal-leg .lg.hld{background:#F59E0B}
.hl-box{margin-top:14px;border-top:1px solid var(--line);padding-top:10px;display:flex;flex-direction:column;gap:6px}
.hl-h{display:flex;flex-direction:column;margin-bottom:2px}.hl-h b{display:inline-flex;align-items:center;gap:6px}.hl-h b svg{width:15px;height:15px;color:#E5484D}
.hl-it{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:#fff;text-align:left;cursor:pointer}
.hl-it.on{border-color:#F3B3B5;background:#FFF8F8}.hl-it .mn{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.hl-it small{font-size:11.5px;line-height:1.35}
.hl-ic{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;flex:0 0 auto;background:#E3F6EE;color:#0E9F6E}.hl-it.on .hl-ic{background:#FDECEC;color:#E5484D}.hl-ic svg{width:14px;height:14px}
.hl-st{color:#B4262B;font-weight:700}.hl-d{font-weight:700;color:var(--ink-2)}.hl-rs{color:#0B7A55;font-weight:600}
@media(max-width:600px){.ptabs{grid-template-columns:repeat(2,minmax(0,1fr))}}
button.badge.hlb{border:0;cursor:pointer;font:inherit;font-size:11.5px;font-weight:600;display:inline-flex;align-items:center;gap:4px;background:#FEF3E0;color:#A35A00}button.badge.hlb svg{width:12px;height:12px}button.badge.hlb.on{background:#E5484D;color:#fff}
.hl-title b{color:#B4262B}

/* ---- dashboard activity / follow-up ---- */
.fu{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh);padding:16px 18px 18px}
.fu-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.fu-h .fu-hi{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:#E0F5FA;color:#0B7A94;flex:none}
.fu-h .fu-hi svg{width:19px;height:19px}
.fu-h .fu-ht{flex:1;min-width:150px}.fu-h .fu-ht>b{display:flex;align-items:center;gap:6px;font-size:15.5px}.fu-ht .icon-btn{width:26px;height:26px;color:var(--muted)}.fu-ht .icon-btn svg{width:16px;height:16px}.fu-h .fu-ht small{color:var(--muted);font-size:12.5px}
.fu-h .seg{width:auto}.fu-h .seg button{height:30px;padding:0 14px;font-size:12.5px;flex:none}
.fu-tiles{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-top:14px}
.fu-t{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 4px 10px;border:1.5px solid var(--line);border-radius:14px;background:#fff;cursor:pointer;transition:all .12s;min-width:0}
.fu-t:hover{border-color:#C9CEDB}
.fu-t .ring{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;border:3px solid currentColor;line-height:1;text-align:center}
.fu-t .ring b{font-size:16px;display:block}.fu-t .ring i{font-style:normal;font-size:8.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;display:block;margin-top:1px}
.fu-t>span.l{font-size:12px;font-weight:700;color:var(--ink-2);white-space:nowrap}
.fu-t .cnt{position:absolute;top:6px;right:6px;min-width:20px;height:20px;padding:0 6px;border-radius:99px;font-size:11px;font-weight:800;display:grid;place-items:center;background:var(--line-2);color:var(--muted)}
.fu-t .cnt.has{background:var(--err);color:#fff}
.fu-t.q{color:#7C3AED}.fu-t.n{color:#0B7A94}
.fu-t.on{border-color:currentColor;background:color-mix(in srgb,currentColor 7%,#fff);box-shadow:0 0 0 3px color-mix(in srgb,currentColor 12%,transparent)}
.fu-leg{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--muted)}
.fu-leg span{display:inline-flex;align-items:center;gap:6px}.fu-leg i{width:9px;height:9px;border-radius:50%;display:inline-block}
.fu-list{margin-top:14px;display:flex;flex-direction:column;gap:8px}
.fu-lh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-top:16px;font-size:13px}
.fu-lh b{font-size:14px}
.fu-row{display:flex;gap:12px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:13px;background:#FBFCFE}
.fu-row .mn{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.fu-row .mn b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fu-row .mn small{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fu-row .mn small.due{color:var(--err);font-weight:600}.fu-row .mn small.due.today{color:var(--warn)}
.fu-tk{display:inline-flex;height:18px;padding:0 7px;border-radius:99px;font-size:10.5px;font-weight:800;align-items:center;margin-right:4px;vertical-align:1px}
.fu-tk.q{background:#F3EDFE;color:#7C3AED}.fu-tk.o{background:#E3F6EE;color:var(--ok)}
.fu-acts{display:flex;gap:6px;flex:none}
.fu-acts a,.fu-acts button{height:34px;min-width:34px;padding:0 10px;border-radius:10px;border:1px solid var(--line);background:#fff;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-weight:700;font-size:12.5px;color:var(--ink-2);text-decoration:none}
.fu-acts svg{width:16px;height:16px}
.fu-acts .fu-lg{background:var(--brand);border-color:var(--brand);color:#fff}
.fu-acts a.off{opacity:.4;pointer-events:none}
.fu-none{padding:22px 12px;text-align:center;color:var(--muted);font-size:13px;border:1.5px dashed var(--line);border-radius:13px}
.fu-none b{display:block;color:var(--ink);font-size:14px;margin-bottom:3px}
.fu-soon{display:flex;gap:12px;align-items:center;padding:16px 18px;border:1.5px dashed var(--line);border-radius:16px;background:#fff;color:var(--muted);font-size:13px}
.fu-soon b{display:block;color:var(--ink);font-size:14.5px}
.fu-out{display:flex;flex-wrap:wrap;gap:6px}
.fu-hist{margin-top:14px;border-top:1px solid var(--line-2);padding-top:10px;display:flex;flex-direction:column;gap:8px}
.fu-hist div{font-size:12.5px;color:var(--ink-2)}.fu-hist small{display:block;color:var(--muted);font-size:11.5px}
.fu-rule{font-size:13px;color:var(--ink-2);line-height:1.55}.fu-rule h4{margin:12px 0 6px;font-size:13.5px}.fu-rule ul{margin:0;padding-left:18px}.fu-rule li{margin:3px 0}
@media(max-width:760px){.fu-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:600px){
  .fu{padding:14px 12px 14px}
  .fu-tiles{display:flex;overflow-x:auto;scrollbar-width:none;gap:7px;margin:12px -12px 0;padding:2px 12px 4px}
  .fu-tiles::-webkit-scrollbar{display:none}
  .fu-t{flex:0 0 80px}
  .fu-row{flex-wrap:wrap;gap:10px}
  .fu-acts{width:100%;padding-left:50px}.fu-acts .fu-lg{flex:1}
}

/* ---- performance leaderboard ---- */
.act-r{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.demo-b{height:30px;padding:0 11px;border-radius:99px;border:1px dashed #B9C0D3;background:#fff;font-size:12px;font-weight:700;color:var(--ink-2);display:inline-flex;align-items:center;gap:5px}
.demo-b svg{width:14px;height:14px}.demo-b.on{border-style:solid;border-color:#F5C2C3;color:var(--err);background:#FFF6F6}
.demo-n{margin:-4px 0 12px}
.pf{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh);padding:16px 18px 18px;margin-bottom:14px}
.pf .fu-hi{background:#FEF3E0;color:#B7791F}
.pf-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}
.pf-c{border:1px solid var(--line);border-radius:14px;padding:12px 12px 10px;background:#FBFCFE;min-width:0}
.pf-c h4{margin:0 0 2px;font-size:13.5px;display:flex;justify-content:space-between;align-items:baseline;gap:6px}
.pf-c h4 small{font-size:11.5px;color:var(--muted);font-weight:600}
.pf-c>small{display:block;color:var(--muted);font-size:11.5px;margin-bottom:8px}
.pf-r{display:flex;align-items:center;gap:9px;padding:7px 0;border-top:1px solid var(--line-2);min-width:0}
.pf-r:first-of-type{border-top:0}
.medal{width:30px;height:30px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:800;color:#fff;position:relative;box-shadow:inset 0 -2px 0 rgba(0,0,0,.15)}
.medal.m1{background:linear-gradient(145deg,#F7C948,#D69E0B)}
.medal.m2{background:linear-gradient(145deg,#D5DAE3,#9AA3B5)}.medal.m3{background:linear-gradient(145deg,#E4A574,#B8703F)}
.medal.m0{background:var(--line-2);color:var(--muted);box-shadow:none}
.pf-r .mn{flex:1;min-width:0;display:flex;flex-direction:column}
.pf-r .mn b{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf-r .mn small{font-size:11.5px;color:var(--muted)}
.pf-r .amt{font-size:13px;font-weight:800;white-space:nowrap}
.pf-r.me{background:var(--brand-50);margin:0 -8px;padding:7px 8px;border-radius:10px;border-top-color:transparent}
.pf-r.empty .mn b{color:var(--muted);font-weight:600}
.pf-you{margin-top:6px;font-size:11.5px;color:var(--ink-2);background:#fff;border:1px dashed var(--line);border-radius:9px;padding:6px 8px}
.pf-top{display:flex;align-items:center;gap:10px;padding:2px 0 10px}
.pf-top .crown{font-size:11px;font-weight:800;color:#B7791F;letter-spacing:.04em;text-transform:uppercase}
@media(max-width:900px){.pf-cols{grid-template-columns:1fr}}
.pf-seg{display:none!important}
@media(max-width:600px){.pf-seg{display:flex!important;margin-top:12px}.pf-cols{margin-top:10px}.pf-cols[data-sel=w] .pf-c:not([data-p=w]),.pf-cols[data-sel=m] .pf-c:not([data-p=m]),.pf-cols[data-sel=y] .pf-c:not([data-p=y]){display:none}.pf{padding:14px 12px}.sec-t .act-r{gap:6px}}

/* ---- follow-up history & log ---- */
.fh-name{font:inherit;color:inherit;text-align:left;padding:0;background:none;border:0;cursor:pointer;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fh-name:hover{color:var(--brand);text-decoration:underline}
.fh-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}.fh-head svg{width:18px;height:18px;color:var(--muted)}.fh-head h3{margin:0;font-size:15px}
.fh-now{display:flex;gap:10px;align-items:center;padding:11px 13px;border-radius:12px;font-size:13px;margin-bottom:14px;background:var(--brand-50);color:var(--ink-2)}
.fh-now svg{width:17px;height:17px;flex:none;color:var(--brand)}
.fh-now.due{background:#FFF1F1}.fh-now.due svg{color:var(--err)}.fh-now.stop{background:var(--line-2)}.fh-now.stop svg{color:var(--muted)}
.fh-tl{position:relative;padding-left:22px}
.fh-tl::before{content:'';position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:var(--line-2);border-radius:2px}
.fh-i{position:relative;padding:0 0 14px}
.fh-i:last-child{padding-bottom:0}
.fh-i::before{content:'';position:absolute;left:-21px;top:4px;width:12px;height:12px;border-radius:50%;background:#fff;border:3px solid var(--o,#9AA3B5)}
.fh-i.ev::before{border-radius:3px;background:var(--o);border-color:var(--o)}
.fh-i .t{font-size:13px;font-weight:700;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.fh-i .n{font-size:12.5px;color:var(--ink-2);margin-top:3px}
.fh-i small{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}
.ob{display:inline-flex;height:20px;padding:0 8px;border-radius:99px;font-size:11px;font-weight:700;align-items:center;white-space:nowrap}
.ob.interested{background:#E3F6EE;color:var(--ok)}.ob.later{background:#EEF0FE;color:var(--brand)}.ob.noans{background:#FEF3E0;color:var(--warn)}.ob.ordered{background:#DDF4F9;color:#0B7A94}.ob.lost{background:#FDECEC;color:var(--err)}
.fl{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh);padding:16px 18px 18px;margin-top:14px}
.fl .fu-hi{background:#EEF0FE;color:var(--brand)}
.fl-f{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}
.fl-f .seg{width:auto}.fl-f .seg button{height:32px;padding:0 12px;font-size:12.5px;flex:none}
.fl-f .fl-u{min-width:180px}
.fl-o{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin-top:10px;padding-bottom:2px}
.fl-o .chip em{font-style:normal;font-weight:800;margin-left:2px;color:var(--muted)}
.fl-list{margin-top:12px;display:flex;flex-direction:column}
.fl-r{display:flex;gap:11px;padding:10px 2px;border-top:1px solid var(--line-2);min-width:0}
.fl-r:first-child{border-top:0}
.fl-r .av{width:34px;height:34px;border-radius:10px;font-size:12px}
.fl-r .mn{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.fl-r .mn .tp{display:flex;gap:8px;align-items:center;justify-content:space-between;min-width:0}
.fl-r .mn .tp b{font-size:13.5px;min-width:0;overflow:hidden}
.fl-r .mn small{font-size:12px;color:var(--muted)}
.fl-r .mn .nt{font-size:12.5px;color:var(--ink-2)}
.fl-more{margin-top:10px;width:100%}
@media(max-width:600px){.fl{padding:14px 12px}.fl-f .seg{width:100%}.fl-f .seg button{flex:1}.fl-f .fl-u{width:100%}}

/* ---- fill by customer ---- */
.mt-side{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#FBFCFE}.mt-side .half-h{display:flex;align-items:center;gap:8px;margin-bottom:6px}.mt-side .half-h b{font-size:13px}
.rn-f{margin-top:12px;max-width:520px}
.cf-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0 4px;padding:12px 14px;border:1.5px dashed #C9CFF9;border-radius:13px;background:#F7F8FF}
.cf-bar>svg{width:20px;height:20px;color:var(--brand);flex:none}
.cf-bar .cf-t{flex:1;min-width:170px;display:flex;flex-direction:column;gap:2px}.cf-bar .cf-t b{font-size:13.5px}.cf-bar .cf-t small{font-size:12px;color:var(--muted)}
.cf-bar.open{border-style:solid;border-color:#F3D9A6;background:#FFFAF0}.cf-bar.open>svg{color:var(--warn)}
.cf-bar.on{border-style:solid;border-color:var(--brand-100);background:#F4F6FF}.cf-bar .sw{flex:none}
.cf-bar.done{border-style:solid;border-color:#BFE7D6;background:#F1FBF6}.cf-bar.done>svg{color:var(--ok)}
.cf-acts{display:flex;gap:6px;flex-wrap:wrap}
.cf-link{font-family:ui-monospace,Menlo,monospace;font-size:12px;word-break:break-all;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#FBFCFE;color:var(--ink-2)}
.badge.cf-bw{background:#FFF4DE;color:#A15C00}.badge.cf-bd{background:#E3F6EE;color:var(--ok)}
.cf-opts{display:flex;flex-direction:column;gap:8px}.cf-opts .check{margin:0;justify-content:flex-start;flex:none}
body.cf-on{overflow:hidden}
#cfPage{position:fixed;inset:0;z-index:400;background:#F3F4F8;overflow-y:auto;-webkit-overflow-scrolling:touch}
.cfw{max-width:760px;margin:0 auto;padding:16px 14px 120px}
.cf-top{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.cf-logo{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,#3346E8,#06B6D4);color:#fff;display:grid;place-items:center;font-weight:800;font-size:14px;flex:none}
.cf-top b{display:block;font-size:15px}.cf-top small{color:var(--muted);font-size:12px}
.cf-exit{margin-left:auto;height:30px;padding:0 10px;border-radius:99px;border:1px dashed #B9C0D3;background:#fff;font-size:11.5px;font-weight:700;color:var(--muted)}
.cf-box{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh);padding:18px;margin-bottom:14px}
.cf-box h2{margin:0 0 4px;font-size:19px}.cf-box>p{margin:0;color:var(--muted);font-size:13.5px}
.cf-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.cf-meta span{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 10px;border-radius:99px;background:var(--line-2);font-size:12px;font-weight:600;color:var(--ink-2)}
.cf-meta svg{width:13px;height:13px}
.cf-msg{text-align:center;padding:36px 20px}.cf-msg .ci{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;margin:0 auto 12px;background:var(--line-2);color:var(--muted)}
.cf-msg .ci svg{width:26px;height:26px}.cf-msg.ok .ci{background:#E3F6EE;color:var(--ok)}.cf-msg.bad .ci{background:#FDECEC;color:var(--err)}
.cf-msg h2{margin:0 0 6px;font-size:19px}.cf-msg p{margin:0;color:var(--muted);font-size:13.5px}
.cf-mob{display:flex;align-items:center;border:1.5px solid var(--line);border-radius:12px;overflow:hidden;margin-top:14px;background:#fff}
.cf-mob span{padding:0 12px;font-weight:700;color:var(--muted);border-right:1px solid var(--line-2);height:48px;display:grid;place-items:center}
.cf-mob input{border:0;outline:0;height:48px;flex:1;min-width:0;padding:0 12px;font-size:17px;letter-spacing:.06em;font-family:inherit}
.cf-mob:focus-within{border-color:var(--brand)}
.cf-err{color:var(--err);font-size:12.5px;font-weight:600;margin-top:8px;min-height:16px}
.cf-go{width:100%;height:46px;margin-top:12px;justify-content:center}
.cf-sec{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh);padding:14px;margin-bottom:14px}
.cf-sh{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px}
.cf-sh .no{width:26px;height:26px;border-radius:8px;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:800;flex:none}
.cf-sh b{display:block;font-size:14.5px}.cf-sh small{display:block;color:var(--muted);font-size:12px}
.cf-cnt{margin-left:auto;text-align:right;font-size:12px;font-weight:700;white-space:nowrap}.cf-cnt i{display:block;font-style:normal}
.cf-cnt .w{color:var(--warn)}.cf-cnt .k{color:var(--ok)}
.cf-hd,.cf-row{display:grid;grid-template-columns:22px minmax(0,1.7fr) minmax(0,.8fr) minmax(0,.95fr) 48px 26px;gap:6px;align-items:center}
.cf-hd{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;padding:0 0 6px}
.cf-row{padding:4px 0}
.cf-hd.ns,.cf-row.ns{grid-template-columns:22px minmax(0,1.9fr) minmax(0,.9fr) 52px 26px}
.cf-row .n{font-size:11.5px;color:var(--muted);font-weight:700;text-align:center}
.cf-in{height:38px;border:1px solid var(--line);border-radius:9px;padding:0 9px;font:inherit;font-size:14px;min-width:0;width:100%;background:#fff;color:var(--ink)}
select.cf-in{padding:0 4px;appearance:auto}
.cf-in:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-50)}
.cf-in.bad{border-color:var(--err);background:#FFF6F6}
.cf-in.q{text-align:center;padding:0 4px}.cf-in.nm{text-transform:uppercase}.cf-in.nm::placeholder{text-transform:none}
.cf-x{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;color:var(--muted);background:none;border:0}
.cf-x svg{width:15px;height:15px}
.cf-card{border:1px solid var(--line);border-radius:12px;padding:10px;margin-bottom:8px;background:#FBFCFE}
.cf-ch{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;font-size:12.5px;font-weight:800}
.cf-ln{display:grid;grid-template-columns:62px minmax(0,1.7fr) minmax(0,.8fr) minmax(0,.95fr) 48px;gap:6px;align-items:center;margin-top:6px}
.cf-ln .kchip{text-align:center}
.cf-adds{display:flex;gap:6px;margin-top:10px}
.cf-team{font-size:16px;height:46px}
.cf-foot{position:fixed;left:0;right:0;bottom:0;z-index:401;background:#fff;border-top:1px solid var(--line);box-shadow:0 -6px 20px rgba(14,20,36,.06)}
.cf-foot>div{max-width:760px;margin:0 auto;padding:10px 14px calc(10px + env(safe-area-inset-bottom));display:flex;gap:10px;align-items:center}
.cf-foot .t{flex:1;font-size:12px;color:var(--muted);min-width:0}.cf-foot .t b{color:var(--ink);font-size:13px;display:block}
.cf-foot .btn{height:44px;padding:0 18px}
.cf-rv{width:100%;border-collapse:collapse;font-size:13px;margin-top:6px}
.cf-rv th{font-size:11px;color:var(--muted);text-transform:uppercase;text-align:left;padding:6px 6px;border-bottom:1px solid var(--line)}
.cf-rv td{padding:7px 6px;border-bottom:1px solid var(--line-2)}
.cf-rv td.c,.cf-rv th.c{text-align:center}
.cf-warn{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:10px;background:#FFF7E8;color:#8A5300;font-size:12.5px;margin-top:10px}
.cf-warn svg{width:16px;height:16px;flex:none;margin-top:1px}
.cf-errs{padding:10px 12px;border-radius:10px;background:#FFF1F1;color:var(--err);font-size:12.5px;font-weight:600;margin-bottom:12px}
.cf-errs div{margin:2px 0}
@media(max-width:600px){
  .cf-hd,.cf-row{grid-template-columns:18px minmax(0,1.5fr) minmax(0,.75fr) minmax(0,1fr) 40px 22px;gap:4px}
  .cf-ln{grid-template-columns:minmax(0,1.5fr) minmax(0,.75fr) minmax(0,1fr) 40px;gap:4px}
  .cf-hd.ns,.cf-row.ns{grid-template-columns:18px minmax(0,1.8fr) minmax(0,.9fr) 46px 22px}
  .cf-ln .kchip{grid-column:1/-1;justify-self:start;align-self:start;line-height:1.3;height:auto}
  .cf-in{height:38px;padding:0 6px;font-size:14px}
  .cf-box,.cf-sec{padding:13px}
}

.kchip.top{position:static;z-index:auto;padding:3px 8px;display:inline-block;gap:0;-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:0}

/* ---- accessories ---- */
.mk-opts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
@media(max-width:700px){.mk-opts{grid-template-columns:1fr}}
.col-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.col-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 4px 0 10px;border:1px solid var(--line);border-radius:99px;background:#fff;font-size:12.5px;font-weight:600}
.col-chip i{width:12px;height:12px;border-radius:50%;border:1px solid rgba(0,0,0,.15)}
.col-chip button{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;color:var(--muted)}.col-chip button svg{width:13px;height:13px}
.acc-line{display:flex;align-items:center;gap:8px;margin:10px 0 2px}
.acc-tag{display:inline-flex;height:20px;padding:0 8px;border-radius:99px;background:#FEF3E0;color:#A15C00;font-size:11px;font-weight:700;align-items:center}

/* ---- jobsheet print (A4) ---- */
#prv{position:fixed;inset:0;z-index:450;background:#5B6272;overflow:auto;-webkit-overflow-scrolling:touch}
.pp-bar{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;padding:10px 14px;background:#1E2333;color:#fff}
.pp-bar b{flex:1;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-bar .btn{height:38px}.pp-bar .btn-ghost{color:#fff}
.pp-wrap{padding:16px 0 40px}
.pp-page{width:210mm;min-height:297mm;margin:0 auto 16px;background:#fff;box-shadow:0 6px 24px rgba(0,0,0,.35);padding:12mm;box-sizing:border-box;color:#111;font-size:9.5pt;line-height:1.35}
.pp-page *{box-sizing:border-box}
.pp-h{display:flex;justify-content:space-between;align-items:flex-start;gap:6mm;border-bottom:.6mm solid #111;padding-bottom:3mm;margin-bottom:4mm}
.pp-co b{display:block;font-size:14pt;letter-spacing:.02em}.pp-co small{color:#555;font-size:8pt;display:block;max-width:95mm;line-height:1.35;margin-top:.8mm}
.pp-tt{text-align:right}.pp-tt h1{margin:0;font-size:16pt;letter-spacing:.12em}.pp-tt div{font-size:9pt;color:#333;margin-top:1mm}
.pp-urg{display:inline-block;margin-top:1.5mm;padding:.6mm 2.5mm;border:.4mm solid #C00;color:#C00;font-weight:800;font-size:8.5pt;letter-spacing:.08em}
.pp-grid{display:grid;grid-template-columns:repeat(4,1fr);border:.3mm solid #999;margin-bottom:4mm}
.pp-grid>div{padding:1.8mm 2.2mm;border-right:.3mm solid #CCC;border-bottom:.3mm solid #CCC;min-width:0}
.pp-grid>div:nth-child(4n){border-right:0}
.pp-grid small{display:block;font-size:7pt;color:#666;text-transform:uppercase;letter-spacing:.05em}
.pp-grid b{font-size:9.5pt;word-break:break-word}
.pp-grid .big b{font-size:12pt}
.pp-sec{margin-bottom:4mm;break-inside:avoid}
.pp-sec.flow{break-inside:auto}
.pp-sec h3{margin:0 0 1.6mm;font-size:9pt;letter-spacing:.08em;text-transform:uppercase;color:#111;border-bottom:.3mm solid #999;padding-bottom:.8mm;display:flex;justify-content:space-between;gap:4mm}
.pp-sec h3 span{font-weight:600;letter-spacing:0;text-transform:none;color:#444}
.pp-t{width:100%;border-collapse:collapse;font-size:8.8pt}
.pp-t th{background:#EEE;text-align:left;font-size:7.5pt;text-transform:uppercase;letter-spacing:.04em;padding:1.2mm 1.6mm;border:.3mm solid #BBB;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.pp-t td{padding:1.1mm 1.6mm;border:.3mm solid #CCC;vertical-align:top}
.pp-t td.c,.pp-t th.c{text-align:center}.pp-t td.r,.pp-t th.r{text-align:right}
.pp-t tr{break-inside:avoid}
.pp-it{display:flex;align-items:baseline;gap:3mm;margin:0 0 3mm;padding:2mm 3mm;background:#111;color:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.pp-it .no{font-size:13pt;font-weight:800}.pp-it b{font-size:12pt;flex:1}.pp-it span{font-size:9pt}
.pp-mini{font-size:8pt;color:#555;text-align:right;margin:0 0 2mm}
.pp-kv{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5mm 4mm;margin-bottom:3mm}
.pp-kv div small{display:block;font-size:7pt;color:#666;text-transform:uppercase;letter-spacing:.05em}.pp-kv div b{font-size:9.5pt}
.pp-img{position:relative;width:186mm;height:83mm;max-width:100%;border:.3mm solid #999;display:flex;align-items:center;justify-content:center;overflow:hidden;margin:0 0 3mm;break-inside:avoid;background:#fff}
.pp-dlbl{position:absolute;left:2mm;bottom:2mm;background:#fff;border:.3mm solid #111;padding:.6mm 2.4mm;font-weight:800;font-size:9.5pt;color:#111;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.pp-img img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}
.pp-img .imgmiss{color:#999}
.pp-cap{font-size:7.5pt;color:#666;margin:-2mm 0 3mm}
.pp-sz{display:flex;flex-wrap:wrap;gap:1.5mm;margin-bottom:2mm}
.pp-sz span{border:.3mm solid #999;padding:.6mm 2mm;font-size:8.8pt}.pp-sz span b{margin-left:1.2mm}
.pp-sz .tot{background:#111;color:#fff;border-color:#111;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.pp-sign{display:grid;grid-template-columns:repeat(4,1fr);gap:2mm}
.pp-sign>div{border:.3mm solid #999;padding:1.6mm 2mm;min-height:17mm;break-inside:avoid}
.pp-sign b{font-size:8.5pt;display:block}.pp-sign small{display:block;font-size:7.5pt;color:#444;margin-top:1mm}
.pp-sign .ln{border-bottom:.3mm dotted #888;height:5mm;margin-bottom:1mm}
.pp-note{border:.3mm solid #CCC;padding:2mm 2.5mm;font-size:9pt;white-space:pre-wrap;min-height:8mm}
.pp-foot{margin-top:5mm;font-size:7pt;color:#777;display:flex;justify-content:space-between}
@media screen and (max-width:820px){.pp-wrap{padding:10px 0 30px}}
@media print{
  body.printing>*:not(#prv){display:none!important}
  body.printing{background:#fff!important;overflow:visible!important}
  #prv{position:static;background:#fff;overflow:visible}
  .pp-bar{display:none}.pp-wrap{padding:0}
  .pp-page{width:auto;min-height:0;margin:0;padding:0;box-shadow:none;zoom:1!important;break-after:page}
  .pp-page:last-child{break-after:auto}
}

.pp-page{position:relative}
.pp-page h1,.pp-co b{color:#111}
.pp-addr{border:.3mm solid #CCC;padding:2.2mm 3mm;font-size:9.6pt;line-height:1.5}.pp-addr b{font-size:10.5pt}.pp-addr .att{color:#444}
.pp-cut.tot{border-top:.3mm solid #999;margin-top:1mm;padding-top:1.4mm;font-size:10.2pt}
.pp-keep{break-inside:avoid}.pp-sec h3,.pp-sub{break-after:avoid}.pp-keep .pp-img{margin-bottom:3mm}
.pp-pno{position:absolute;right:12mm;bottom:5mm;font-size:8pt;color:#777}
.pp-flags{display:flex;gap:1.5mm;justify-content:flex-end;margin-top:1.5mm}
.pp-urg,.pp-upd{display:inline-block;padding:.6mm 2.5mm;font-weight:800;font-size:8.5pt;letter-spacing:.08em;margin:0}
.pp-upd{border:.4mm solid #B45309;color:#B45309}
.pp-updn{border:.3mm solid #E3B26B;background:#FFF8EC;padding:1.6mm 2.5mm;font-size:8.8pt;margin:-1mm 0 3mm;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.pp-2c{display:grid;grid-template-columns:1fr 1fr;gap:0 8mm}
.pp-kvr{display:grid;grid-template-columns:30mm 1fr;gap:2mm;padding:.9mm 0;border-bottom:.2mm dotted #CCC;font-size:9.3pt}
.pp-kvr span{color:#555}.pp-kvr b{word-break:break-word}
.pp-sub{font-weight:800;font-size:9pt;margin:2.2mm 0 1.2mm}.pp-sub.big{font-size:10pt;margin-top:3mm;border-left:1mm solid #111;padding-left:2mm}
.pp-line{font-size:9.3pt;padding:.5mm 0}
.pp-mode{font-size:8.5pt;color:#444;margin:0 0 1mm;font-style:italic}
.pp-cut{font-size:9.8pt;padding:1mm 0}.pp-cut .eq{font-weight:800;margin-left:1mm}
.pp-it .tm{font-weight:600;font-size:10.5pt}
.pp-t td.ck{text-align:center;width:12mm}.pp-t td.ck span{display:inline-block;width:3.6mm;height:3.6mm;border:.35mm solid #333;vertical-align:middle}
@media print{.pp-pno{display:none}}

/* ---- quotation print ---- */
.qp{font-size:9.6pt;color:#1B2030}
.qr-set .thumb{background:#fff;border:1px solid var(--line)}.qr-set .thumb img{object-fit:contain;width:100%;height:100%;padding:4px}
.qr-set{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.qr-empty{width:110px;height:110px;border:1.5px dashed var(--line);border-radius:12px;display:grid;place-items:center;align-content:center;gap:4px;color:var(--muted);font-size:12px}.qr-empty svg{width:24px;height:24px}
.qp-co{text-align:center;padding-bottom:3mm;border-bottom:.3mm solid #C9CEDB;margin-bottom:4mm}
.qp-co b{display:block;font-size:14pt;letter-spacing:.02em;color:#111;margin-bottom:1mm}.qp-co div{font-size:8.3pt;color:#555;line-height:1.5}
.qp-h{display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:2.5mm;border-bottom:.8mm solid #111;margin-bottom:5mm}
.qp-h h1{margin:0;font-size:17pt;letter-spacing:.01em;color:#111}.qp-h>div{text-align:right;font-size:9.6pt;line-height:1.5}.qp-h b{font-size:10.5pt}
.qp-boxes{display:grid;grid-template-columns:1fr 1fr;gap:4mm;margin-bottom:6mm}
.qp-box{border:.3mm solid #D5D9E3;border-radius:1.2mm;padding:3mm 3.5mm}
.qp-box h4{margin:0 0 2mm;font-size:8pt;letter-spacing:.06em;text-transform:uppercase;color:#B45309}
.qp-l{line-height:1.65}.qp-l span{color:#333}
.qp-st{font-size:9pt;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9AA0AE;margin-bottom:1.5mm}
.qp-t{width:100%;border-collapse:collapse;margin-bottom:4mm}
.qp-t th{white-space:nowrap;font-size:8pt;text-transform:uppercase;letter-spacing:.04em;text-align:left;padding:2mm 2.5mm;border:.3mm solid #C9CEDB;background:#F4F5F8;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.qp-t td{padding:2mm 2.5mm;border:.3mm solid #C9CEDB;vertical-align:top}
.qp-t .r{text-align:right}.qp-sub{font-size:8pt;color:#666}
.qp-t tr{break-inside:avoid}
.qp-bottom{display:grid;grid-template-columns:1fr 1fr;gap:4mm;break-inside:avoid}
.qp-si{display:flex;flex-direction:column}
.qp-note{white-space:pre-wrap;min-height:8mm}
.qp-qr{display:flex;gap:3mm;align-items:center;margin:3mm 0}
.qp-qr img{width:32mm;height:32mm;object-fit:contain;border:.3mm solid #D5D9E3;padding:1mm;background:#fff}
.qp-qr b{display:block;font-size:9.5pt}.qp-qr span{display:block;font-size:8.5pt;color:#444;margin-top:1mm;word-break:break-all}
.qp-prep{margin-top:auto;border-top:.3mm dashed #C9CEDB;padding-top:2.5mm}
.qp-ar{display:flex;justify-content:space-between;gap:3mm;line-height:1.9}
.qp-ar b{font-weight:500}
.qp-ar.mut{color:#9AA0AE;font-weight:700;margin-top:1mm}.qp-ar.mut b{font-weight:700}
.qp-ar.grand{border-top:.6mm solid #111;margin-top:1.5mm;padding-top:1.5mm;font-size:12pt;font-weight:800}.qp-ar.grand b{font-weight:800}

/* department pulse only for the signed-in user's department; room for the ring so it isn't cut */
.trk-s.cur .trk-c,.trk-s.hold .trk-c{animation:none}
.trk-s b,.trk-s small{position:relative;z-index:2}
.trk-s.mydept .trk-c{border-color:var(--brand);color:var(--brand);animation:trkpulse 1.6s ease-out infinite}
.trk-s.mydept.hold .trk-c{border-color:#E5484D;color:#fff;animation:trkhold 1.4s ease-out infinite}
.trk{padding:12px 6px 4px;margin:0 -6px}
@media(max-width:600px){.trk{padding:12px 6px 6px}}
/* card actions on one line */
.pcard .qc-foot{padding:0 10px 10px}
.pcard .qc-acts{flex-wrap:nowrap;width:100%;justify-content:flex-end}
@media(max-width:600px){.pcard .qc-acts{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:5px}.pcard .qc-ic{flex-direction:column;height:auto;padding:7px 2px 6px;gap:3px;font-size:11px;line-height:1.1;min-width:0;white-space:nowrap}.pcard .qc-ic svg{width:17px;height:17px;flex:none}.pcard .qc-ic span{overflow:hidden;text-overflow:ellipsis}}

/* ---- address label ---- */
.alb{height:130mm;border:.6mm solid #111;border-radius:2mm;padding:7mm 9mm;display:flex;flex-direction:column;color:#111}
.alb-top{display:flex;justify-content:space-between;align-items:center;border-bottom:.4mm solid #111;padding-bottom:2.5mm;margin-bottom:4mm}
.alb-to{font-size:13pt;font-weight:800;letter-spacing:.18em}.alb-ref{font-size:10pt;font-weight:600;color:#333}
.alb-name{font-size:26pt;font-weight:800;line-height:1.15;margin-bottom:3mm;word-break:break-word}
.alb-addr{font-size:19pt;line-height:1.38;font-weight:600}
.alb-ph{font-size:13pt;margin-top:4mm}
.alb-from{margin-top:auto;border-top:.3mm dashed #777;padding-top:2.5mm;font-size:9.5pt;color:#333}.alb-from span{font-weight:800;letter-spacing:.12em;margin-right:2mm}
.alb-cut{font-size:8pt;color:#888;margin-top:3mm;white-space:nowrap;overflow:hidden}
.pcard .qc-ic.addr{color:#0B7A55;background:#E7F7F0;border-color:#BFE7D6}
/* ---- reports ---- */
.rp-list{display:flex;flex-direction:column;gap:10px;max-width:760px}
.rp-card{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:var(--sh);text-align:left}
.rp-card .mn{flex:1;display:flex;flex-direction:column;gap:2px}.rp-card .mn b{font-size:15px}.rp-card .mn small{color:var(--muted);font-size:12.5px}.rp-card>svg{width:18px;height:18px;color:var(--muted)}
.rp-soon{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:13px;padding:12px 4px}.rp-soon svg{width:16px;height:16px}
.rp-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:12px}.rp-head h2{margin:0;font-size:20px}.rp-head p{margin:2px 0 0}
.rp-acts{display:flex;gap:8px}
.rp-filters{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;padding:14px}
.rp-filters .field{margin:0}.rp-sel{appearance:auto;padding-right:8px}
.rp-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:14px}
.rp-kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;box-shadow:var(--sh)}.rp-kpi small{display:block;color:var(--muted);font-size:12px}.rp-kpi b{font-size:20px}
.rp-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.rp-2 .card{margin-bottom:14px}
.rp-h3{margin:0 0 10px;font-size:14.5px;display:flex;justify-content:space-between;align-items:baseline}
.rp-bars{display:flex;flex-direction:column;gap:9px}
.rp-bar{display:grid;grid-template-columns:minmax(80px,120px) 1fr auto;gap:4px 10px;align-items:center}.rp-bar .l{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-bar .t{height:10px;border-radius:99px;background:var(--line-2);overflow:hidden}.rp-bar .t i{display:block;height:100%;background:var(--bc,#E5484D);border-radius:99px}
.rp-bar b{text-align:right;font-size:13px}.rp-bar small{grid-column:2/4;color:var(--muted);font-size:11.5px;margin-top:-4px}
.rp-tw{overflow-x:auto;margin:0 -4px}
.rp-t{width:100%;border-collapse:collapse;font-size:13px;min-width:860px}
.rp-t th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:8px;border-bottom:1px solid var(--line);white-space:nowrap}
.rp-t td{padding:9px 8px;border-bottom:1px solid var(--line-2);vertical-align:top}.rp-t td small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
.rp-t td.rs{max-width:280px}.rp-t .link{font-family:ui-monospace,Menlo,monospace;font-weight:700;padding:0}
@media(max-width:900px){.rp-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.rp-2{grid-template-columns:1fr}}
.pp-page.land{width:297mm;min-height:210mm}
@media print{.pp-page.land{width:auto;min-height:0}}

.op-acct{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;padding:0 8px;height:34px;border-radius:9px}
.op-acct svg{width:15px;height:15px}.op-acct.ok{color:var(--ok);background:#E7F7F0}.op-acct.hold{color:#B4262B;background:#FDECEC}
.qc-ic.op-done{color:var(--ok);border-color:#BFE7D6;background:#F1FBF6}.qc-ic.op-hold{color:#B4262B;border-color:#F5C2C3;background:#FFF6F6}

/* ---- settings additions ---- */
.sl-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.sl-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line);border-radius:10px;background:#fff}
.sl-row .sl-n{width:22px;height:22px;border-radius:7px;background:var(--line-2);display:grid;place-items:center;font-size:11.5px;font-weight:800;color:var(--muted)}
.sl-row .ech-t{background:none;border:0;padding:4px 2px;text-align:left}.sl-row .sp{flex:1}
.sl-row .icon-btn svg{transform:rotate(180deg)}.sl-row .icon-btn.flip svg{transform:none}
.ct-dot{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:none}.ct-dot svg{width:15px;height:15px}
.num-prev{display:grid;grid-template-columns:auto 1fr 1fr 1fr;gap:6px 12px;align-items:center;padding:12px;border:1px dashed var(--line);border-radius:12px;background:#FBFCFE;font-size:13px}
.num-prev span{color:var(--muted);font-size:12px}.num-prev span:nth-of-type(2){grid-column:1}
@media(max-width:600px){.num-prev{grid-template-columns:1fr}}
.perm-w{overflow-x:auto}
.perm-t{width:100%;border-collapse:collapse;font-size:13px;min-width:520px}
.perm-t th{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;padding:8px;border-bottom:1px solid var(--line);text-align:center}.perm-t th:first-child{text-align:left}
.perm-t td{padding:7px 8px;border-bottom:1px solid var(--line-2)}.perm-t td.c{text-align:center}
.pm{width:26px;height:26px;border-radius:7px;border:1.5px solid var(--line);background:#fff;display:inline-grid;place-items:center;color:transparent}
.pm svg{width:15px;height:15px}.pm.on{background:var(--brand);border-color:var(--brand);color:#fff}.pm.lock{background:#9AA3B5;border-color:#9AA3B5;color:#fff}
.pm:disabled{opacity:.6}
.fu-d{width:70px;height:34px;text-align:center}
.danger-zone{border:1px solid #F5C2C3;background:#FFF8F8;border-radius:12px;padding:12px}
.pp-logo{max-height:14mm;max-width:40mm;object-fit:contain;display:block;margin:0 auto 1.5mm}
.pp-co .pp-logo{margin:0 0 1.5mm}
.qp-terms{margin-top:4mm;break-inside:avoid}

.grid.g3s{grid-template-columns:repeat(3,minmax(0,1fr))}@media(max-width:700px){.grid.g3s{grid-template-columns:1fr 1fr}}@media(max-width:420px){.grid.g3s{grid-template-columns:1fr}}

.nav-n{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:99px;background:var(--c);color:#fff;font-size:11px;font-weight:800;display:grid;place-items:center}
.tile .tag.tcount{background:var(--c);color:#fff;min-width:22px;text-align:center}
.mod-n{display:inline-flex;align-items:center;gap:8px;font-weight:600;white-space:nowrap}.mod-n .ti{width:26px;height:26px;border-radius:8px;display:grid;place-items:center}.mod-n .ti svg{width:14px;height:14px}
.perm-t th{white-space:nowrap}

.tile .tag.tcount{display:inline-flex!important;align-items:center;justify-content:center;height:20px;padding:0 7px;border-radius:99px;font-size:11px;font-weight:800}

.sub-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.sub-tabs{display:flex;gap:4px;background:var(--line-2);border-radius:11px;padding:3px;overflow-x:auto;scrollbar-width:none;max-width:100%}
.sub-tabs button{height:34px;padding:0 12px;border-radius:8px;font-weight:700;font-size:13px;color:var(--muted);white-space:nowrap}
.sub-tabs button em{font-style:normal;margin-left:4px;font-size:11.5px;background:#fff;color:var(--ink-2);border-radius:99px;padding:1px 7px}
.sub-tabs button.on{background:#fff;color:var(--brand);box-shadow:0 1px 3px rgba(14,20,36,.12)}.sub-tabs button.on em{background:var(--brand);color:#fff}
.sub-dept{width:auto;min-width:170px;height:38px}
@media(max-width:600px){.sub-bar{gap:8px}.sub-tabs{width:100%}.sub-tabs button{flex:1;padding:0 4px;font-size:12px}.sub-tabs button em{margin-left:3px;padding:1px 5px}.sub-dept{width:100%}}

.rp-grp{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:10px 2px 2px}
.rp-2.r3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1100px){.rp-2.r3{grid-template-columns:1fr 1fr}}@media(max-width:900px){.rp-2.r3{grid-template-columns:1fr}}
.rp-t th.r,.rp-t td.r{text-align:right}.rp-t th.c,.rp-t td.c{text-align:center}
.rp-t tr.ft td{border-top:2px solid var(--line);background:#FBFCFE}
.pg-seg{margin:0 0 10px;flex-wrap:wrap}.pg-seg em{font-style:normal;font-size:11px;font-weight:700;background:var(--line-2);border-radius:99px;padding:1px 6px;margin-left:4px}
.pg-use{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:10px}.pg-use .schip svg{width:13px;height:13px;margin-right:3px}.pg-use .schip.on{background:var(--brand-100);border-color:var(--brand);color:var(--brand)}
.pside+.pside{margin-top:16px;padding-top:14px;border-top:1px dashed var(--line)}.pside>.half-h{margin-bottom:8px}
.sum-sub{font-size:12px;font-weight:700;color:var(--muted);margin:8px 0 6px;text-transform:uppercase;letter-spacing:.04em}
.jpp-side{margin:10px 0 6px}
/* master report */
.mr{-webkit-print-color-adjust:exact;print-color-adjust:exact}
.mr-top{display:grid;grid-template-columns:minmax(260px,1fr) 2.2fr;gap:12px;margin-bottom:12px}
.mr-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px 18px;box-shadow:var(--sh);min-width:0}
.mr-card>header{margin-bottom:12px}.mr-card>header h3{margin:0;font-size:15px}.mr-card>header small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.mr-k{display:block;color:#52514e;font-size:12px;font-weight:600}
.mr-hero{display:flex;flex-direction:column;justify-content:center;gap:4px;background:linear-gradient(160deg,#fff 0%,#F3F7FD 100%)}
.mr-big{font-size:44px;line-height:1.05;font-weight:800;letter-spacing:-.02em;color:#0b0b0b}
.mr-hs{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;margin-top:12px;padding-top:12px;border-top:1px solid #e1e0d9;font-size:12.5px;color:#52514e}.mr-hs b{color:#0b0b0b;font-size:14px;margin-right:3px}
.mr-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.mr-kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;box-shadow:var(--sh);display:flex;flex-direction:column;gap:2px;min-width:0}
.mr-kpi>b{font-size:22px;font-weight:750;color:#0b0b0b}
.mr-d{font-size:11.5px;color:#52514e;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mr-d span{font-weight:500;color:#898781}
.mr-d.good{color:#006300}.mr-d.bad{color:#b42318}
.mr-now{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px}
.mr-nowh{font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin:2px 2px 6px}
.mr-now>div{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 12px;box-shadow:var(--sh)}
.mr-now>div>svg{width:20px;height:20px;color:#2a78d6;flex:none}.mr-now>div.warn>svg{color:#d03b3b}
.mr-now>div span{display:flex;flex-direction:column;min-width:0}.mr-now b{font-size:18px;color:#0b0b0b;line-height:1.1}.mr-now small{font-size:11.5px;color:#52514e;white-space:nowrap}
.mr-g{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.mr-g .mr-span{grid-column:1/-1}
.mr-svg{display:block;overflow:visible}.mr-svg text{font-family:system-ui,-apple-system,"Segoe UI",sans-serif}
.mr-grid{stroke:#e1e0d9;stroke-width:1}.mr-base{stroke:#c3c2b7;stroke-width:1}.mr-ax{font-size:10.5px;fill:#898781;font-variant-numeric:tabular-nums}
.mr-lbl{font-size:12px;font-weight:700;fill:#0b0b0b}.mr-cx{stroke:#898781;stroke-width:1}
.mr-svg rect[data-tip]{cursor:crosshair;outline:none}
.mr-hb{display:flex;flex-direction:column;gap:10px}
.mr-hr{display:grid;grid-template-columns:minmax(90px,34%) 1fr auto;align-items:center;gap:10px;border-radius:8px;outline:none;padding:2px 0;cursor:default}
.mr-hr:hover .mr-ht i,.mr-hr:focus-visible .mr-ht i{filter:brightness(1.12)}.mr-hr:focus-visible{box-shadow:0 0 0 2px #2a78d655}
.mr-hl{font-size:13px;color:#0b0b0b;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mr-ht{display:flex;gap:2px;height:14px;align-items:stretch}.mr-ht i{display:block;height:100%;border-radius:0 4px 4px 0;transition:filter .12s}
.mr-st i.mid{border-radius:0}
.mr-hr>b{font-size:13px;color:#0b0b0b;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.mr-hr>b small{margin-left:6px;color:#898781;font-weight:600;font-size:11.5px}
.mr-fn .mr-ht{height:22px}
.mr-sub{font-size:12px;font-weight:700;color:#52514e;margin-bottom:6px}
.mr-sb{display:flex;gap:2px;height:28px}
.mr-sbk{min-width:4px;border-radius:4px;display:flex;align-items:center;padding-left:7px;font-size:11.5px;font-weight:700;outline:none;cursor:default;overflow:visible;white-space:nowrap;transition:filter .12s}
.mr-sbk:hover,.mr-sbk:focus-visible{filter:brightness(1.1)}
.mr-leg{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:12px;color:#52514e}
.mr-leg span{display:inline-flex;align-items:center;gap:6px}.mr-leg i{width:10px;height:10px;border-radius:3px;display:inline-block}.mr-leg em{font-style:normal;font-weight:800;color:#0b0b0b}.mr-leg b{color:#0b0b0b}
.mr-hn{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}.mr-hn b{font-size:32px;font-weight:800;color:#0b0b0b;letter-spacing:-.02em}.mr-hn small{color:#52514e;font-size:12.5px}
.mr-money{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}.mr-money>div{background:#F7F8FA;border-radius:12px;padding:10px 12px}.mr-money b{font-size:17px;color:#0b0b0b}
.mr-empty{color:var(--muted);font-size:13px;margin:6px 0}
.mr-tip{position:fixed;z-index:9999;display:none;flex-direction:column;gap:1px;pointer-events:none;background:#fff;border:1px solid rgba(11,11,11,.1);border-radius:10px;padding:7px 10px;box-shadow:0 8px 24px rgba(11,11,11,.14);font-size:12px;color:#52514e;max-width:240px}
.mr-tip b{font-size:14px;color:#0b0b0b}
.rp-card.mr-entry{border-color:#c9dcf6;background:linear-gradient(120deg,#fff 0%,#EEF4FC 100%)}
@media(max-width:1100px){.mr-top{grid-template-columns:1fr}}
@media(max-width:900px){.mr-g{grid-template-columns:1fr}.mr-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.mr-big{font-size:36px}.mr-card{padding:14px}.mr-kpi>b{font-size:19px}.mr-hr{grid-template-columns:minmax(80px,36%) 1fr auto;gap:8px}.mr-now{grid-template-columns:1fr 1fr;gap:8px}}
/* print */
.mr-pr .mr-top{grid-template-columns:62mm 1fr;gap:3mm;margin:3mm 0}
.mr-pr .mr-card,.mr-pr .mr-kpi,.mr-pr .mr-now>div{box-shadow:none;border-color:#d6d5ce;break-inside:avoid}
.mr-pr .mr-card{padding:3.2mm 3.6mm;border-radius:3mm}.mr-pr .mr-card>header{margin-bottom:2.4mm}.mr-pr .mr-card>header h3{font-size:10.5pt}.mr-pr .mr-card>header small{font-size:7.5pt}
.mr-pr .mr-big{font-size:24pt}.mr-pr .mr-hs{font-size:7.5pt}.mr-pr .mr-hs b{font-size:9pt}
.mr-pr .mr-kpis{grid-template-columns:repeat(4,1fr);gap:2mm}.mr-pr .mr-kpi{padding:2mm 2.6mm;border-radius:2.5mm}.mr-pr .mr-kpi>b{font-size:13pt}.mr-pr .mr-k,.mr-pr .mr-d{font-size:7pt}
.mr-pr .mr-nowh{font-size:7pt;margin:0 0 1.5mm}.mr-pr .mr-now{grid-template-columns:repeat(6,1fr);gap:2mm;margin-bottom:3mm}.mr-pr .mr-now>div{padding:2mm;gap:1.6mm;border-radius:2.5mm}.mr-pr .mr-now b{font-size:11pt}.mr-pr .mr-now small{font-size:6.5pt;white-space:normal}.mr-pr .mr-now>div>svg{width:4mm;height:4mm}
.mr-pr .mr-g{grid-template-columns:1fr 1fr;gap:3mm;align-items:start}
.mr-pr .mr-hl,.mr-pr .mr-hr>b{font-size:8pt}.mr-pr .mr-hb{gap:1.8mm}.mr-pr .mr-ht{height:3mm}.mr-pr .mr-fn .mr-ht{height:4.2mm}
.mr-pr .mr-leg,.mr-pr .mr-sub{font-size:7.5pt}.mr-pr .mr-sb{height:6mm}.mr-pr .mr-sbk{font-size:7pt}.mr-pr .mr-hn b{font-size:17pt}.mr-pr .mr-money b{font-size:10.5pt}.mr-pr .mr-money{grid-template-columns:repeat(5,1fr)}

.perm-t tr.pg td{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:#FBFCFE}
@media(max-width:600px){.rp-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

/* ---------- start-up splash (live app) ---------- */
.splash{position:fixed;inset:0;z-index:500;background:#070B1F;color:#fff;display:grid;place-items:center;transition:opacity .35s}
.splash.out{opacity:0;pointer-events:none}
.splash-in{display:flex;flex-direction:column;align-items:center;gap:8px}
.splash-logo{width:64px;height:64px;border-radius:18px;background:linear-gradient(135deg,#3346E8,#06B6D4);display:grid;place-items:center;font-weight:800;font-size:22px;box-shadow:0 12px 34px rgba(51,70,232,.5);margin-bottom:6px}
.splash small{color:#A5B0CC;font-size:13px}
.splash-bar{width:140px;height:3px;border-radius:99px;background:rgba(255,255,255,.12);overflow:hidden;margin-top:10px}.splash-bar i{display:block;width:40%;height:100%;background:linear-gradient(90deg,#5EE7F7,#8EA2FF);border-radius:99px;animation:spl 1.1s ease-in-out infinite}
@keyframes spl{0%{transform:translateX(-100%)}100%{transform:translateX(250%)}}
.sync-chip{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:120;background:#0F172A;color:#fff;border-radius:99px;padding:8px 14px;font-size:12.5px;font-weight:600;display:flex;gap:8px;align-items:center;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.sync-chip i{width:8px;height:8px;border-radius:50%;background:#FAB219}.sync-chip.off i{background:#E5484D}
.sync-chip button{color:#8EA2FF;font-weight:700;margin-left:4px}
.upd-bar{position:fixed;left:50%;transform:translateX(-50%);top:12px;z-index:520;background:#fff;color:#0F172A;border:1px solid #E2E5EE;border-radius:14px;padding:10px 12px 10px 16px;font-size:13.5px;font-weight:600;display:flex;gap:12px;align-items:center;box-shadow:0 12px 30px rgba(14,20,36,.18)}
.upd-bar button{background:#3346E8;color:#fff;border-radius:10px;padding:7px 12px;font-weight:700}
