html,body{margin:0}
/* Layout: grouped-list app shell — translucent bar, sidebar (strip on phone), large titles, inset groups, sheets for each card; PIN sign-in card. */
:root{
  --bg:#f5f5f7; --surface:#ffffff; --raised:#fbfbfd; --field:#f2f2f5; --fill:rgba(118,118,128,.12); --sep:rgba(60,60,67,.14);
  --label:#1d1d1f; --label2:#6e6e73; --label3:#8e8e93; --bar:rgba(251,251,253,.78); --scrim:rgba(0,0,0,.28);
  --blue:#0071e3; --blueT:rgba(0,113,227,.10); --green:#248a3d; --greenT:rgba(36,138,61,.12); --orange:#c93400; --orangeT:rgba(255,149,0,.16);
  --red:#d70015; --redT:rgba(255,59,48,.11); --purple:#8944ab; --purpleT:rgba(175,82,222,.13); --teal:#0071a4; --tealT:rgba(48,176,199,.15);
  --shadow:0 1px 2px rgba(0,0,0,.04),0 8px 28px rgba(0,0,0,.06);
  --sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue","Segoe UI",Roboto,Arial,sans-serif;
  --display:-apple-system,BlinkMacSystemFont,"SF Pro Display","Helvetica Neue","Segoe UI",Roboto,Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#000000; --surface:#1c1c1e; --raised:#232325; --field:#2c2c2e; --fill:rgba(118,118,128,.24); --sep:rgba(84,84,88,.55);
  --label:#f5f5f7; --label2:#a1a1a6; --label3:#8e8e93; --bar:rgba(22,22,23,.72); --scrim:rgba(0,0,0,.55);
  --blue:#2997ff; --blueT:rgba(41,151,255,.16); --green:#30d158; --greenT:rgba(48,209,88,.16); --orange:#ff9f0a; --orangeT:rgba(255,159,10,.17);
  --red:#ff453a; --redT:rgba(255,69,58,.17); --purple:#bf5af2; --purpleT:rgba(191,90,242,.18); --teal:#64d2ff; --tealT:rgba(100,210,255,.16);
  --shadow:0 0 0 1px rgba(255,255,255,.04); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#000000; --surface:#1c1c1e; --raised:#232325; --field:#2c2c2e; --fill:rgba(118,118,128,.24); --sep:rgba(84,84,88,.55);
  --label:#f5f5f7; --label2:#a1a1a6; --label3:#8e8e93; --bar:rgba(22,22,23,.72); --scrim:rgba(0,0,0,.55);
  --blue:#2997ff; --blueT:rgba(41,151,255,.16); --green:#30d158; --greenT:rgba(48,209,88,.16); --orange:#ff9f0a; --orangeT:rgba(255,159,10,.17);
  --red:#ff453a; --redT:rgba(255,69,58,.17); --purple:#bf5af2; --purpleT:rgba(191,90,242,.18); --teal:#64d2ff; --tealT:rgba(100,210,255,.16);
  --shadow:0 0 0 1px rgba(255,255,255,.04); color-scheme:dark}
*{box-sizing:border-box}
html,body{background:var(--bg)}
body{color:var(--label);font:15px/1.47 var(--sans);-webkit-font-smoothing:antialiased;letter-spacing:-.01em}
button{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--blueT);outline-offset:1px;box-shadow:0 0 0 1px var(--blue)}
.gut{padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}

.bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:.5px solid var(--sep)}
.bar .in{height:52px;display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:1240px;margin:0 auto}
.brand{display:flex;align-items:baseline;gap:10px;min-width:0}
.brand b{font:600 17px var(--display);letter-spacing:-.02em;white-space:nowrap}
.brand span{font-size:12px;color:var(--label3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.who{display:flex;align-items:center;gap:10px;min-width:0}
.who img{width:28px;height:28px;border-radius:50%;flex:none}
.who .t{display:grid;line-height:1.15;text-align:right;min-width:0}
.who .t b{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.who .t span{font-size:11.5px;color:var(--label2)}

.shell{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:232px minmax(0,1fr);gap:28px;padding-block:24px 64px}
.shell.solo{grid-template-columns:minmax(0,1fr)}
.side{position:sticky;top:76px;align-self:start;display:grid;gap:2px}
.side:empty{display:none}
.side .cap{font-size:12px;font-weight:600;color:var(--label3);padding:6px 12px}
.nav-i{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:9px;border:0;background:none;cursor:pointer;text-align:left;font-size:14.5px;color:var(--label)}
.nav-i svg{width:19px;height:19px;flex:none;stroke:var(--blue);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.nav-i .ct{margin-left:auto;font-size:12.5px;color:var(--label3);font-variant-numeric:tabular-nums}
.nav-i:hover{background:var(--fill)}
.nav-i[aria-current="page"]{background:var(--blue);color:#fff}
.nav-i[aria-current="page"] svg{stroke:#fff}.nav-i[aria-current="page"] .ct{color:rgba(255,255,255,.8)}
main{min-width:0}

.lt{font:700 34px/1.12 var(--display);letter-spacing:-.025em;margin:0;text-wrap:balance}
.lede{color:var(--label2);font-size:15px;margin:6px 0 0;max-width:66ch}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.gh{font-size:13px;color:var(--label2);margin:26px 16px 7px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.gf{font-size:12.5px;color:var(--label3);margin:7px 16px 0;line-height:1.4}

.group{background:var(--surface);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}
.row{display:flex;align-items:center;gap:14px;padding:12px 16px;position:relative;min-height:52px;width:100%;border:0;background:none;text-align:left}
.row+.row::before,.form+.row::before,.line+.row::before,.tblw+.row::before,.row+.form::before{content:"";position:absolute;top:0;left:16px;right:0;border-top:.5px solid var(--sep)}
button.row{cursor:pointer}button.row:hover{background:var(--raised)}button.row:active{background:var(--fill)}
.row .main{flex:1;min-width:0;display:grid;gap:1px}
.row .t1{font-weight:500;display:flex;gap:8px;align-items:center;min-width:0;flex-wrap:wrap}
.row .t2{font-size:13px;color:var(--label2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .end{display:flex;align-items:center;gap:10px;color:var(--label3);font-size:13.5px;flex:none}
.chev{width:8px;height:13px;stroke:var(--label3);fill:none;stroke-width:2;flex:none}
.ser{font-variant-numeric:tabular-nums;white-space:nowrap}
.ser i{font-style:normal;color:var(--label3)}
.empty{padding:30px 20px;text-align:center;color:var(--label2)}

.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap;letter-spacing:0}
.chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.c-stock{background:var(--fill);color:var(--label2)}.c-issued{background:var(--blueT);color:var(--blue)}.c-requested,.c-review{background:var(--orangeT);color:var(--orange)}
.c-approved{background:var(--tealT);color:var(--teal)}.c-returned{background:var(--redT);color:var(--red)}.c-filled{background:var(--purpleT);color:var(--purple)}
.c-verified,.c-open{background:var(--greenT);color:var(--green)}.c-void{background:var(--fill);color:var(--label3);text-decoration:line-through}.c-used{background:var(--fill);color:var(--label2)}
.trade{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:6px;font-size:11.5px;font-weight:700;flex:none}
.t-F{background:var(--blueT);color:var(--blue)}.t-W{background:var(--orangeT);color:var(--orange)}.t-H{background:var(--greenT);color:var(--green)}
.fl{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;color:var(--red)}
.fl.org{color:var(--orange)}
.fl svg{width:13px;height:13px;fill:currentColor}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:980px;padding:9px 18px;font-size:15px;font-weight:500;cursor:pointer;background:var(--blue);color:#fff;white-space:nowrap;transition:filter .15s,transform .1s}
.btn:hover{filter:brightness(1.07)}.btn:active{transform:scale(.98)}
.btn.sec{background:var(--fill);color:var(--blue)}
.btn.red{background:var(--redT);color:var(--red)}
.btn.plain{background:none;color:var(--blue);padding:9px 8px}
.btn.sm{padding:6px 12px;font-size:13.5px}
.btn.lg{padding:12px 24px;font-size:16px}
.btn.block{width:100%;padding:13px 20px;font-size:16px}
.btn:disabled{opacity:.4;cursor:not-allowed;filter:none;transform:none}
.acts{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

.form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:16px;position:relative}
.form .s2{grid-column:span 2}.form .s3{grid-column:span 3}.form .s4{grid-column:1/-1}
.fld{display:grid;gap:6px;min-width:0;align-content:start}
.fld>span{font-size:12.5px;color:var(--label2);font-weight:500}
.fld>span em{font-style:normal;color:var(--red)}
input,select,textarea{font:16px var(--sans);color:var(--label);background:var(--field);border:0;border-radius:10px;padding:10px 12px;width:100%;min-width:0;letter-spacing:-.01em;-webkit-appearance:none;appearance:none}
select{background-image:linear-gradient(45deg,transparent 50%,var(--label3) 50%),linear-gradient(135deg,var(--label3) 50%,transparent 50%);background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:32px}
textarea{min-height:76px;resize:vertical;line-height:1.4}
input:disabled{opacity:.5}
input[readonly]{color:var(--label2)}
input::placeholder,textarea::placeholder{color:var(--label3)}
input:focus,select:focus,textarea:focus{outline:none;box-shadow:0 0 0 3px var(--blueT),0 0 0 1px var(--blue)}
.seg{display:flex;background:var(--fill);border-radius:9px;padding:2px;gap:2px}
.seg button{flex:1;border:0;background:none;border-radius:7px;padding:7px 8px;font-size:13.5px;font-weight:500;cursor:pointer;white-space:nowrap;color:var(--label)}
.seg button[aria-pressed="true"]{background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.12),0 0 0 .5px rgba(0,0,0,.04)}
.checks{display:flex;flex-wrap:wrap;gap:8px}
.tog{display:inline-flex;align-items:center;gap:7px;border:0;background:var(--field);border-radius:980px;padding:8px 14px;font-size:14px;cursor:pointer}
.tog[aria-pressed="true"]{background:var(--blue);color:#fff}
.tog.bad[aria-pressed="true"]{background:var(--red)}
.tog svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.4}
.check{display:flex;gap:10px;align-items:flex-start;font-size:14.5px;cursor:pointer}
.check input{width:20px;height:20px;padding:0;border-radius:6px;flex:none;margin-top:1px;accent-color:var(--blue);-webkit-appearance:checkbox;appearance:auto}

.line{padding:14px 16px 16px;position:relative}
.line+.line::before{content:"";position:absolute;top:0;left:16px;right:0;border-top:.5px solid var(--sep)}
.lh{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.lh b{font-size:13px;font-weight:600;color:var(--label2);font-variant-numeric:tabular-nums;display:flex;gap:8px;align-items:center}
.lg{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:12px}
.c1{grid-column:span 1}.c2{grid-column:span 2}.c3{grid-column:span 3}.c4{grid-column:span 4}.c5{grid-column:span 5}.c8{grid-column:1/-1}
.x{width:28px;height:28px;border-radius:50%;border:0;background:var(--fill);cursor:pointer;display:grid;place-items:center}
.x svg{width:10px;height:10px;stroke:var(--label2);stroke-width:2.4}
.planned{background:var(--blueT);border-radius:10px;padding:10px 12px;font-size:14.5px;min-height:42px;display:flex;align-items:center;gap:8px}
.planned span{color:var(--label2);font-size:12.5px}
.who-line{display:flex;align-items:center;gap:10px;background:var(--field);border-radius:10px;padding:9px 12px;min-height:42px}
.who-line b{font-weight:500}.who-line span{color:var(--label2);font-size:13px}

.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.kpi{background:var(--surface);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow);min-width:0}
.kpi span{font-size:12.5px;color:var(--label2)}
.kpi b{display:block;font:600 26px/1.15 var(--display);letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:4px}
.kpi b small{font-size:14px;font-weight:500;color:var(--label2)}
.bars{display:grid;gap:12px;padding:16px}
.bar-r{display:grid;grid-template-columns:minmax(80px,170px) minmax(0,1fr) 64px;gap:12px;align-items:center;font-size:14px}
.bar-r .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-r .tr{height:8px;border-radius:4px;background:var(--fill);overflow:hidden}
.bar-r .tr i{display:block;height:100%;border-radius:4px;background:var(--blue)}
.bar-r .tr i.warn{background:var(--orange)}
.bar-r .v{text-align:right;font-variant-numeric:tabular-nums;color:var(--label2)}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}

.tools{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto;gap:10px;margin-bottom:14px;align-items:center}
.search{position:relative}.search svg{position:absolute;left:11px;top:50%;width:15px;height:15px;transform:translateY(-50%);stroke:var(--label3);fill:none;stroke-width:2}
.search input{padding-left:33px}
.code{font-family:var(--mono);font-size:13px;color:var(--red);letter-spacing:.04em}
.rcode{font:600 17px var(--mono);letter-spacing:.08em}

.scrim{position:fixed;inset:0;z-index:40;background:var(--scrim);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;padding:max(28px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(28px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
.sheet{background:var(--bg);border-radius:18px;width:100%;max-width:840px;box-shadow:0 30px 80px rgba(0,0,0,.25);overflow:hidden;animation:rise .28s cubic-bezier(.2,.8,.2,1)}
@keyframes rise{from{transform:translateY(16px);opacity:.6}to{transform:none;opacity:1}}
.sh{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:.5px solid var(--sep)}
.sh .acts{flex-wrap:nowrap}
.sh .ti{display:grid;min-width:0}.sh .ti b{font:600 17px var(--display);letter-spacing:-.02em}.sh .ti span{font-size:12.5px;color:var(--label2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sb{padding:20px 18px 24px}
.note{border-radius:12px;padding:12px 14px;font-size:14px;margin-bottom:14px}
.note.red{background:var(--redT)}.note.org{background:var(--orangeT)}.note.blu{background:var(--blueT)}
.note b{font-weight:600}
.note ul{margin:6px 0 0;padding-left:18px}
.kv{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:16px}
.kv>div{min-width:0}.kv>div>span{display:block;font-size:12.5px;color:var(--label2)}.kv b{font-weight:500;overflow-wrap:anywhere}
.kv .w2{grid-column:span 2}
.tblw{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:14px;font-variant-numeric:tabular-nums}
th{font-size:12px;font-weight:500;color:var(--label2);text-align:left;padding:10px 12px;white-space:nowrap}
td{padding:10px 12px;border-top:.5px solid var(--sep);white-space:nowrap}
td.wrap{white-space:normal;min-width:150px}
tbody tr[data-act]:hover{background:var(--raised)}
td.n,th.n{text-align:right}
.tot{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.5px;background:var(--sep)}
.tot div{background:var(--surface);padding:12px 14px}.tot span{display:block;font-size:12px;color:var(--label2)}.tot b{font:600 19px var(--display);font-variant-numeric:tabular-nums}
.foot{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding:14px 18px;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:.5px solid var(--sep)}
.foot:empty{display:none}
.timeline{padding:6px 16px 12px}
.ev{display:grid;grid-template-columns:12px 1fr auto;gap:12px;padding:9px 0;font-size:13.5px;align-items:baseline}
.ev i{width:8px;height:8px;border-radius:50%;background:var(--label3)}
.ev time{color:var(--label3);font-size:12.5px;white-space:nowrap;font-variant-numeric:tabular-nums}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:60;background:var(--label);color:var(--bg);padding:11px 18px;border-radius:980px;font-size:14px;font-weight:500;box-shadow:0 10px 30px rgba(0,0,0,.25);max-width:calc(100% - 32px)}
.gate{max-width:520px;margin:9vh auto 0;text-align:center;display:grid;gap:14px;justify-items:center}
.gate .ic{width:64px;height:64px;border-radius:16px;background:var(--blueT);display:grid;place-items:center}
.gate .ic svg{width:30px;height:30px;stroke:var(--blue);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.flag{color:var(--orange);font-size:12.5px;font-weight:600}
.unlock{display:grid;justify-items:center;gap:14px;text-align:center;padding:30px 20px}
.unlock .ic{width:56px;height:56px;border-radius:14px;background:var(--blueT);display:grid;place-items:center}
.unlock .ic svg{width:26px;height:26px;stroke:var(--blue);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.unlock input{max-width:280px;text-align:center;font:600 22px var(--mono);letter-spacing:.14em;text-transform:uppercase}

@media (max-width:900px){
  .shell{grid-template-columns:minmax(0,1fr);gap:0;padding-top:0}
  .side{position:sticky;top:calc(52px + env(safe-area-inset-top,0px));z-index:10;display:flex;overflow-x:auto;gap:6px;padding-block:10px;margin:0 calc(-1 * max(20px,env(safe-area-inset-right,0px))) 16px calc(-1 * max(20px,env(safe-area-inset-left,0px)));padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px));background:var(--bg);scrollbar-width:none}
  .side .cap{display:none}
  .nav-i{flex:none;background:var(--surface);box-shadow:var(--shadow);border-radius:980px;padding:7px 14px;font-size:14px}
  .nav-i svg{display:none}.nav-i .ct{margin-left:2px}
  .lt{font-size:30px}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cols{grid-template-columns:1fr}
  .form,.kv{grid-template-columns:repeat(2,minmax(0,1fr))}
  .form .s3{grid-column:1/-1}
  .tools{grid-template-columns:1fr auto}.tools .search{grid-column:1/-1}
  .lg{grid-template-columns:repeat(4,minmax(0,1fr))}
  .lg .m4{grid-column:1/-1}.lg .m3{grid-column:span 3}.lg .m2{grid-column:span 2}.lg .m1{grid-column:span 1}
  .tot{grid-template-columns:repeat(2,minmax(0,1fr))}
  .who .t{display:none}
  .brand span{display:none}
  .sh .chip{display:none}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
