:root{--pri:#4F46E5;--pri-2:#6366F1;--pri-soft:#EEF0FF;--ink:#1F2433;--muted:#6B7280;--line:#E6E8F0;--paper:#fff;--ok:#16A34A;--ok-soft:#DCFCE7;--warn:#D97706;--warn-soft:#FEF3C7;--bad:#DC2626;--bad-soft:#FEE2E2;--info:#2563EB;--info-soft:#DBEAFE;--r:14px}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);font-size:13.5px;line-height:1.5;background:#F5F4FB;min-height:100vh}
body:before{content:"";position:fixed;inset:0;z-index:-1;background:radial-gradient(900px 500px at 85% -5%,rgba(139,127,232,.35),transparent 60%),radial-gradient(700px 500px at 100% 40%,rgba(196,181,253,.25),transparent 60%),radial-gradient(800px 600px at 60% 110%,rgba(167,243,208,.25),transparent 60%),#F6F5FB}
a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}
:focus-visible{outline:2px solid var(--pri);outline-offset:2px}
.mono{font-family:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace}
.app{display:grid;grid-template-columns:262px 1fr;min-height:100vh}
.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,#FFFFFF 0%,#F4F3FE 45%,#E9F7F4 80%,#FCEAF2 100%);border-right:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;padding:14px 14px 12px;border-bottom:1px solid var(--line)}
.logo{width:30px;height:30px;border-radius:7px;background:linear-gradient(135deg,#4F46E5,#6D5BF2);color:#fff;font-weight:700;font-size:11px;display:grid;place-items:center}
.brand b{display:block;font-size:13.5px}.brand small{color:var(--muted);font-size:11.5px}
.brand .col{margin-left:auto;color:var(--pri);font-size:16px}
.nav{flex:1;overflow:auto;padding:8px 8px 12px}
.ni{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:9px;color:#2B3040;font-weight:500;font-size:13.5px;cursor:pointer;border:1.5px solid transparent;margin:1px 0}
.ni svg{width:16px;height:16px;flex:none;color:#5B6072}
.ni:hover{background:rgba(79,70,229,.06)}
.ni .chev{margin-left:auto;width:12px;height:12px;color:#9CA3AF;transition:transform .15s}
.ni.open>.chev{transform:rotate(90deg)}
.ni.on{border-color:#312E81;background:#EEF0FF;color:var(--pri)}
.ni.on svg{color:var(--pri)}
.sub{margin-left:18px;border-left:1px solid #E1E3EE;padding-left:6px;display:none}
.sub.open{display:block}
.sub .ni{font-weight:400;color:#4B5163;font-size:13px}
.sub .ni.cur{background:#ECEBFF;color:var(--pri);font-weight:500}
.sub .ni.dot:before{content:"";width:5px;height:5px;border:1.5px solid #9CA3AF;border-radius:50%;margin:0 3px}
.ver{font-size:10.5px;color:#9CA3AF;padding:0 16px 8px}
.me{display:flex;align-items:center;gap:10px;padding:12px 16px;border-top:1px solid var(--line)}
.av{width:32px;height:32px;border-radius:50%;background:#4F46E5;color:#fff;font-size:12px;font-weight:600;display:grid;place-items:center;flex:none}
.me b{display:block;font-size:13px}.me small{color:var(--muted);font-size:11.5px}
.main{min-width:0;padding:18px 22px 40px}
.demo{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);z-index:30;display:flex;gap:8px;align-items:center;background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:30px;padding:4px 4px 4px 12px;box-shadow:0 4px 14px rgba(31,36,51,.08);font-size:12px}
.demo b{color:var(--pri)}.demo a{background:var(--pri);color:#fff;border-radius:20px;padding:5px 12px;font-weight:600}
.menu-btn{display:none;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 8px;margin-bottom:10px}
/* page heads */
.greet{padding:26px 10px 4px}.greet h1{font-size:22px;font-weight:600}.greet p{color:#9CA3AF;font-size:12.5px;margin-top:4px}
.sec{display:flex;justify-content:space-between;align-items:center;margin:22px 4px 10px}.sec h2{font-size:14px;font-weight:600}.sec a{color:var(--pri);font-size:12px}
.kgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.kg2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.k{border-radius:10px;padding:16px 16px 18px;border:1px solid var(--line);border-left:3px solid;min-height:128px;position:relative;box-shadow:0 2px 8px rgba(31,36,51,.04)}
.k small{display:block;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.k .v{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:24px;font-weight:600;margin-top:26px;letter-spacing:.02em}
.k .v .u{font-size:13px}
.k .s{font-size:11px;color:#4B5163;margin-top:6px}
.k .ic{position:absolute;right:14px;top:14px;width:30px;height:30px;border-radius:8px;background:#fff;display:grid;place-items:center;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.k .ic svg{width:15px;height:15px}
.k.g{background:linear-gradient(135deg,#EFFDF7,#E3FAF2);border-left-color:#10B981}.k.g small,.k.g .ic{color:#059669}
.k.o{background:linear-gradient(135deg,#FFF7F0,#FFEFE4);border-left-color:#F97316}.k.o small,.k.o .ic{color:#EA580C}
.k.t{background:linear-gradient(135deg,#E6FBF8,#D2F6EF);border-left-color:#14B8A6}.k.t small,.k.t .ic{color:#0F766E}
.k.i{background:linear-gradient(135deg,#F5F4FF,#ECEBFF);border-left-color:#6366F1}.k.i small,.k.i .ic{color:#4F46E5}
.k.b{background:linear-gradient(135deg,#F2F6FF,#E8F0FF);border-left-color:#3B82F6}.k.b small,.k.b .ic{color:#2563EB}
.k.y{background:linear-gradient(135deg,#FFFBEB,#FEF3C7);border-left-color:#F59E0B}.k.y small,.k.y .ic{color:#B45309}
.k.r{background:linear-gradient(135deg,#FFF5F5,#FFE8E8);border-left-color:#EF4444}.k.r small,.k.r .ic{color:#DC2626}
.k .tag{display:inline-block;margin-top:8px;font-size:10.5px;border-radius:20px;padding:2px 8px;background:rgba(255,255,255,.7)}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 2px 10px rgba(31,36,51,.04)}
.card-h{display:flex;justify-content:space-between;align-items:center;padding:14px 16px}.card-h h3{font-size:13.5px;font-weight:600}.card-h span{font-size:11px;color:var(--muted)}
.chart{position:relative;height:260px;padding:0 14px 14px}
/* lists */
.panel{background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:14px;padding:18px 18px 12px;box-shadow:0 2px 10px rgba(31,36,51,.04)}
.lh{display:flex;align-items:center;gap:10px}.lh h1{font-size:19px;font-weight:600}.cnt{background:#ECEBFF;color:var(--pri);border-radius:10px;font-size:11px;font-weight:600;padding:1px 8px}
.btnp{margin-left:auto;background:linear-gradient(135deg,#4F46E5,#6D5BF2);color:#fff;border:0;border-radius:8px;padding:9px 14px;font-weight:600;font-size:13px}
.view{display:inline-flex;gap:6px;align-items:center;border:1px solid #C7C3F7;background:#F2F1FF;color:var(--pri);border-radius:20px;padding:5px 12px;font-size:12.5px;font-weight:500;margin-top:14px}
.view.off{background:#fff;border-color:var(--line);color:#4B5163}
.hr{height:1px;background:var(--line);margin:14px 0}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:#fff;border-radius:20px;padding:5px 13px;font-size:12.5px;color:#4B5163}
.chip.on{background:#4F46E5;border-color:#4F46E5;color:#fff}
.tbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0 8px}
.tbar .show{color:var(--muted);font-size:12px;margin-right:auto}
.srch{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;padding:6px 10px;color:#9CA3AF;background:#fff;min-width:210px;font-size:12px}
.tb{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 10px;font-size:12px;color:#374151}
.tw{border:1px solid var(--line);border-radius:10px;overflow-x:auto;background:#fff}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:11px;font-weight:600;color:#6B7280;text-transform:uppercase;letter-spacing:.03em;padding:11px 12px;border-bottom:1px solid var(--line);background:#FBFBFE;white-space:nowrap}
td{padding:12px 12px;border-bottom:1px solid #F0F1F6;vertical-align:middle;font-size:13px}
tr:last-child td{border-bottom:0}
tbody tr:hover td{background:#FAFAFF}
td.n,th.n{text-align:right;white-space:nowrap}
.lk{color:var(--pri);font-weight:500}
.cb{width:15px;height:15px;accent-color:var(--pri)}
.st{display:inline-block;border-radius:6px;padding:2px 9px;font-size:11.5px;font-weight:500;white-space:nowrap}
.st.sent,.st.posted,.st.open{background:#E0ECFF;color:#1D4ED8}.st.draft,.st.superseded{background:#F1F2F6;color:#6B7280}
.st.accepted,.st.paid,.st.won,.st.active,.st.delivered{background:#DCFCE7;color:#15803D}
.st.cancelled,.st.unpaid,.st.rejected,.st.lost,.st.overdue{background:#FEE2E2;color:#B91C1C}
.st.expired,.st.partial,.st.part{background:#FEF3C7;color:#B45309}
.foot{display:flex;align-items:center;gap:10px;margin-top:10px;color:#4B5163;font-size:12.5px;flex-wrap:wrap}
.foot .auth{border:1px solid var(--line);border-radius:20px;padding:2px 9px;font-size:10.5px;color:var(--muted)}
.foot .pg{margin-left:auto;border:1px solid var(--line);border-radius:6px;padding:4px 8px;background:#fff}
/* document shell */
.dh{background:rgba(255,255,255,.95);border:1px solid var(--line);border-radius:14px;padding:18px 20px;position:relative;overflow:hidden;box-shadow:0 2px 10px rgba(31,36,51,.04)}
.dh:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#4F46E5,#8B5CF6 50%,#14B8A6)}
.dtop{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.crumb{color:var(--pri);font-size:12px}
.btnn{background:linear-gradient(135deg,#4F46E5,#6D5BF2);color:#fff;border:0;border-radius:7px;padding:5px 12px;font-size:12px;font-weight:600}
.acts{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.ab{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:7px;padding:6px 11px;font-size:12.5px;color:#374151}
.ab.p{background:linear-gradient(135deg,#4F46E5,#6D5BF2);border-color:transparent;color:#fff}
.dt{font-size:22px;font-weight:600;margin:8px 0 6px}
.dmeta{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;border-top:1px solid var(--line);margin-top:14px;padding-top:14px}
.party{display:flex;gap:12px}
.pav{width:40px;height:40px;border-radius:8px;background:#EEF0FF;color:#4F46E5;font-weight:600;display:grid;place-items:center;flex:none}
.party b{font-size:14px}.party .vw{border:1px solid #C7C3F7;color:var(--pri);border-radius:5px;padding:0 6px;font-size:11px;margin-left:4px}
.party small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
.mf small{display:block;font-size:10.5px;color:#9CA3AF}.mf b{display:block;font-weight:500;font-size:12.5px;margin-bottom:10px}
.dbody{background:rgba(255,255,255,.95);border:1px solid var(--line);border-radius:14px;margin-top:14px;padding:6px 18px 18px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto;margin-bottom:12px}
.tab{background:none;border:0;border-bottom:2px solid transparent;padding:11px 12px;font-size:12.5px;color:#6B7280;white-space:nowrap;display:flex;gap:6px;align-items:center}
.tab.on{color:var(--pri);border-bottom-color:var(--pri);background:#F5F4FF;border-radius:8px 8px 0 0}
.dgrid{display:grid;grid-template-columns:1fr 250px;gap:16px}.dgrid>*{min-width:0}
.sum{border-radius:12px;padding:14px 16px;margin-bottom:12px;border:1px solid var(--line)}
.sum h4{font-size:13px;font-weight:600;margin-bottom:10px}
.sum.s1{background:linear-gradient(135deg,#F6F5FF,#EEF0FF)}.sum.s2{background:#F7F7FC}.sum.s3{background:#FFF8EE}
.sr{display:flex;justify-content:space-between;font-size:12px;margin:6px 0;color:#4B5163;gap:8px}
.sr.t{border-top:1px solid #D6D3F5;padding-top:8px;margin-top:8px;font-weight:600;color:var(--ink);font-size:13.5px}.sr.t b{color:var(--pri)}
.rel{border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;gap:20px;align-items:center;margin-bottom:10px;background:#fff}
.rel small{color:#6B7280;font-size:11px;font-weight:600;min-width:120px}
.muted{color:var(--muted)}
/* partner */
.roles{display:flex;gap:6px;flex-wrap:wrap;align-items:center;border-top:1px solid var(--line);margin-top:14px;padding-top:12px}
.role{border:1px solid var(--line);border-radius:20px;padding:4px 12px;font-size:12px;color:#9CA3AF}.role.on{background:#4F46E5;border-color:#4F46E5;color:#fff}
.strip{display:grid;grid-template-columns:repeat(7,1fr);background:#fff;border:1px solid var(--line);border-radius:12px;margin-top:12px;overflow:hidden}
.strip div{padding:10px 14px;border-right:1px solid var(--line)}.strip div:last-child{border-right:0}
.strip small{display:block;font-size:10.5px;color:#9CA3AF;text-transform:uppercase}.strip b{font-size:13px;font-weight:500}
.pgrid{display:grid;grid-template-columns:200px 1fr 280px;gap:14px;margin-top:14px}.pgrid>*{min-width:0}
.snav{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px}
.snav small{display:block;font-size:10.5px;color:#9CA3AF;letter-spacing:.06em;margin:10px 8px 4px;text-transform:uppercase}
.snav a{display:block;padding:6px 8px;border-radius:7px;font-size:12.5px;color:#374151}.snav a.on{background:#EEF0FF;color:var(--pri)}
.fg{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 14px;padding:0 16px 16px}
.fg label{display:block;font-size:11.5px;color:#374151;margin-bottom:4px}
.fi{border:1px solid var(--line);border-radius:7px;padding:8px 10px;background:#FAFAFD;font-size:12.5px;min-height:34px}
.acc{background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 16px;margin-top:10px;display:flex;justify-content:space-between;font-weight:500}
.acc span{font-weight:400;color:#4B5163;font-size:12.5px}
.rc{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:12px}
.rc small{display:block;font-size:10.5px;color:#6B7280;letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px}
/* toast */
.toasts{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:50}
.toast{background:#fff;border:1px solid var(--line);border-left:4px solid var(--ok);border-radius:10px;padding:10px 14px;box-shadow:0 10px 30px rgba(31,36,51,.15);max-width:340px;animation:tin .2s ease-out}
.toast b{display:block;font-size:13px}.toast span{font-size:12.5px;color:#4B5163}
@keyframes tin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.toast{animation:none}}
@media (max-width:1200px){.kgrid{grid-template-columns:repeat(2,1fr)}.kg2{grid-template-columns:1fr}.dgrid{grid-template-columns:1fr}.pgrid{grid-template-columns:1fr}.strip{grid-template-columns:repeat(2,1fr)}.fg{grid-template-columns:1fr 1fr}.dmeta{grid-template-columns:1fr}}
@media (max-width:820px){.app{grid-template-columns:1fr}.side{position:fixed;left:0;top:0;width:262px;z-index:40;transform:translateX(-100%);transition:transform .2s}.side.open{transform:none}.menu-btn{display:inline-block}.main{padding:12px}.demo{bottom:10px}}
@media (max-width:560px){.kgrid{grid-template-columns:1fr}.fg{grid-template-columns:1fr}}
.kg21{grid-template-columns:2fr 1fr}.lh{flex-wrap:wrap}.kg2>*,.kgrid>*{min-width:0}
@media (max-width:1200px){.kg21{grid-template-columns:1fr}}
