:root{--ink:#16202e;--paper:#f4f5f2;--card:#ffffff;--line:#dde0da;--muted:#5f6873;--tag:#f2b705;--tag-ink:#3a2c00;--ok:#2f7d4f;--ok-bg:#e3f2e8;--warn:#a35f00;--warn-bg:#fdf0d8;--bad:#b3261e;--bad-bg:#fbe4e2;--info:#2457a6;--info-bg:#e5edf9;--rail:#16202e;--rail-ink:#e9ecef;--rail-muted:#94a0ad;--rail-hover:#223044;--display:"Bricolage Grotesque","Segoe UI",system-ui,sans-serif;--body:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,Consolas,monospace}.ui *{box-sizing:border-box}.ui{font:15px/1.45 var(--body);color:var(--ink)}.ui button,.ui input,.ui select,.ui textarea{font:inherit;color:inherit}.ui h1,.ui h2,.ui h3{font-family:var(--display);margin:0;text-wrap:balance;letter-spacing:-.01em;line-height:1.15}.ui h1{font-size:26px}.ui h2{font-size:17px}.ui h3{font-size:15px}.ui p{margin:0}.ui a{color:inherit}.ui .num{font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ui .muted{color:var(--muted)}.ui .small{font-size:13px}.ui .shell{display:grid;grid-template-columns:232px 1fr;height:100vh;height:100dvh;background:var(--paper)}.ui .rail{background:var(--rail);flex-direction:column;gap:16px;padding:18px 12px;overflow:auto}.ui .brand,.ui .rail{color:var(--rail-ink);display:flex}.ui .brand{align-items:center;gap:9px;padding:2px 8px;font-family:var(--display);font-size:21px;font-weight:700;text-decoration:none}.ui .ws{display:flex;flex-direction:column;gap:4px;padding:0 4px}.ui .ws label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--rail-muted);padding-left:4px}.ui .ws select{background:var(--rail-hover);border:1px solid #2c3a4f;border-radius:8px;padding:8px;color:var(--rail-ink);width:100%}.ui .appnav{display:flex;flex-direction:column;gap:2px}.ui .appnav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:var(--rail-ink);text-decoration:none;font-weight:500}.ui .appnav a:hover{background:var(--rail-hover)}.ui .appnav a.on{background:var(--tag);color:var(--tag-ink)}.ui .appnav a .cnt{margin-left:auto;font-family:var(--mono);font-size:12px;background:var(--bad);color:#fff;border-radius:10px;padding:0 7px}.ui .appnav a.on .cnt{background:var(--tag-ink);color:var(--tag)}.ui .appnav svg{width:18px;height:18px;flex:none}.ui .appnav .sep{height:1px;background:#2c3a4f;margin:8px 6px}.ui .rail .railfoot{margin-top:auto;font-size:12px;color:var(--rail-muted);padding:0 8px;display:flex;flex-direction:column;gap:6px}.ui .rail .railfoot button{background:none;border:0;padding:0;color:var(--rail-muted);cursor:pointer;text-align:left;text-decoration:underline}.ui .main{overflow:auto;height:100%}.ui .wrap{max-width:1180px;margin:0 auto;padding:24px 28px 80px;display:flex;flex-direction:column;gap:20px}.ui .banner{background:var(--warn-bg);color:var(--warn);border-bottom:1px solid var(--line);padding:10px 20px;font-size:14px;display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap}.ui .banner.bad{background:var(--bad-bg);color:var(--bad)}.ui .head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.ui .head p{margin-top:4px;color:var(--muted);max-width:70ch}.ui .row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.ui .between{justify-content:space-between}.ui .btn{text-decoration:none;color:var(--ink);border:1px solid var(--line);background:var(--card);border-radius:8px;padding:8px 13px;cursor:pointer;font-weight:500;display:inline-flex;gap:7px;align-items:center;justify-content:center;white-space:nowrap}.ui .btn:hover{border-color:var(--muted);transform:none}.ui .btn.pri:hover{background:#222f42}.ui .btn.tag:hover{background:#e6ad00}.ui .btn:disabled{opacity:.5;cursor:default}.ui .btn.pri{background:var(--ink);color:var(--paper);border-color:var(--ink)}.ui .btn.tag{background:var(--tag);color:var(--tag-ink);border-color:var(--tag)}.ui .btn.danger{color:var(--bad)}.ui .btn.sm{padding:4px 9px;font-size:13px}.ui .btn.big{padding:12px 16px;font-size:16px;width:100%}.ui .btn.link{border:0;background:none;padding:0;text-decoration:underline;color:var(--muted)}.ui .panel{background:var(--card);border:1px solid var(--line);border-radius:12px}.ui .panel>.ph{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:10px;flex-wrap:wrap}.ui .panel>.pb,.ui .panel>.ph{padding:14px 16px}.ui .grid4{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}.ui .grid3{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px}.ui .grid2{display:grid;grid-template-columns:1.35fr 1fr;grid-gap:16px;gap:16px;align-items:start}.ui .col{gap:16px}.ui .col,.ui .tile{display:flex;flex-direction:column}.ui .tile{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;gap:2px;text-align:left;text-decoration:none;cursor:pointer}.ui .tile:hover{border-color:var(--muted)}.ui .tile .k{font-size:13px;color:var(--muted)}.ui .tile .v{font-family:var(--mono);font-size:28px;font-weight:600}.ui .tile .s{font-size:12px;color:var(--muted)}.ui .tile.bad{border-left:4px solid var(--bad)}.ui .tile.warn{border-left:4px solid var(--warn)}.ui .tile.info{border-left:4px solid var(--info)}.ui .pill{display:inline-block;font-size:12px;font-weight:600;padding:2px 8px;border-radius:20px;white-space:nowrap}.ui .pill.ok{background:var(--ok-bg);color:var(--ok)}.ui .pill.warn{background:var(--warn-bg);color:var(--warn)}.ui .pill.bad{background:var(--bad-bg);color:var(--bad)}.ui .pill.info{background:var(--info-bg);color:var(--info)}.ui .pill.mute{background:var(--paper);color:var(--muted);border:1px solid var(--line)}.ui .list{display:flex;flex-direction:column}.ui .li{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.ui .li:last-child{border-bottom:0}.ui .li .main-txt{flex:1 1;min-width:0}.ui .li .main-txt b{display:block;font-weight:600}.ui .li .main-txt small{color:var(--muted)}.ui .stripe{width:4px;align-self:stretch;border-radius:3px;background:var(--line);flex:none}.ui .stripe.bad{background:var(--bad)}.ui .stripe.warn{background:var(--warn)}.ui .stripe.ok{background:var(--ok)}.ui .stripe.info{background:var(--info)}.ui .gauge{position:relative;height:8px;background:var(--paper);border:1px solid var(--line);border-radius:6px;width:110px;overflow:hidden}.ui .gauge i{position:absolute;left:0;top:0;bottom:0;border-radius:6px}.ui .gauge .par{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--ink)}.ui .tbl-wrap{overflow-x:auto}.ui table{width:100%;border-collapse:collapse;font-size:14px}.ui th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;white-space:nowrap}.ui td,.ui th{padding:10px 12px;border-bottom:1px solid var(--line)}.ui td{vertical-align:middle}.ui tr.click{cursor:pointer}.ui tr.click:hover{background:var(--paper)}.ui td.r,.ui th.r{text-align:right}.ui tr.note td{background:var(--info-bg);color:var(--info);font-size:13px;padding:7px 12px}.ui .chips{display:flex;gap:6px;flex-wrap:wrap}.ui .chip{border:1px solid var(--line);background:var(--card);border-radius:20px;padding:5px 12px;cursor:pointer;font-size:13px;font-weight:500}.ui .chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.ui .search{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:8px 10px;min-width:240px}.ui .empty{padding:28px;text-align:center;color:var(--muted)}.ui .locbar{display:grid;grid-template-columns:150px 1fr 40px;grid-gap:10px;gap:10px;align-items:center;padding:6px 0;font-size:14px}.ui .locbar .bar{height:10px;background:var(--paper);border-radius:6px;display:flex;overflow:hidden;border:1px solid var(--line)}.ui .locbar .bar span{display:block;height:100%}.ui .deadlines{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:12px;gap:12px}.ui .dl{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;text-decoration:none}.ui .dl:hover{border-color:var(--muted)}.ui .dl.hot{border-color:var(--bad);box-shadow:inset 4px 0 0 var(--bad)}.ui .dl .when{font-family:var(--mono);font-size:20px;font-weight:600}.ui .dl .sub{font-size:12px;color:var(--muted)}.ui .dl .bar{height:4px;border-radius:3px;background:var(--paper);overflow:hidden}.ui .dl .bar span{display:block;height:100%;background:var(--tag)}.ui .dl.hot .bar span{background:var(--bad)}.ui .count-item{display:grid;grid-template-columns:1fr auto;grid-gap:12px;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.ui .count-item.done b:after{content:" ✓";color:var(--ok)}.ui .stepper{display:flex;align-items:center;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card)}.ui .stepper button{width:44px;height:44px;border:0;background:var(--paper);font-size:20px;cursor:pointer}.ui .stepper button:hover{background:var(--line)}.ui .stepper input{width:76px;height:44px;border:0;text-align:center;font-family:var(--mono);font-size:18px;background:var(--card)}.ui .progress{height:6px;background:var(--paper);border-radius:4px;overflow:hidden;border:1px solid var(--line)}.ui .progress span{display:block;height:100%;background:var(--tag)}.ui .switch{display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:500}.ui .switch input{width:38px;height:22px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--line);border-radius:12px;position:relative;cursor:pointer;margin:0;flex:none}.ui .switch input:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--card);transition:left .15s}.ui .switch input:checked{background:var(--ok)}.ui .switch input:checked:after{left:19px}.ui .po{border:1px dashed var(--line);border-radius:12px;background:var(--card)}.ui .po .ph{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px dashed var(--line);gap:10px;flex-wrap:wrap}.ui .qty-in{width:72px;border:1px solid var(--line);border-radius:6px;padding:4px 6px;text-align:right;font-family:var(--mono)}.ui .labels{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));grid-gap:12px;gap:12px}.ui .label{background:#fff;color:#16202e;border:1px solid #c9ccc5;border-radius:6px;padding:12px;display:grid;grid-template-columns:1fr 84px;grid-gap:10px;gap:10px;text-align:left}.ui .label .nm{font-family:var(--display);font-weight:700;font-size:16px;line-height:1.15}.ui .label .lc{font-size:12px;color:#5f6873}.ui .label .parline{margin-top:8px;font-family:var(--mono);font-size:12px;border-top:2px solid #16202e;padding-top:4px;display:flex;justify-content:space-between;gap:6px}.ui .label .qr svg{width:84px;height:84px;display:block}.ui .label .scan{font-size:10px;text-align:center;color:#5f6873;margin-top:2px;letter-spacing:.04em}.ui .field{display:flex;flex-direction:column;gap:4px;min-width:0}.ui .field label{font-size:13px;color:var(--muted)}.ui .field input,.ui .field select,.ui .field textarea{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:9px 10px;width:100%}.ui .field textarea{min-height:90px;resize:vertical}.ui .row2{grid-template-columns:1fr 1fr;grid-gap:12px}.ui .row2,.ui .row3{display:grid;gap:12px}.ui .row3{grid-template-columns:1fr 1fr 1fr;grid-gap:12px}.ui .check{display:flex;gap:8px;align-items:flex-start;font-size:14px}.ui .check input{margin-top:3px}.ui .form-err{color:var(--bad);background:var(--bad-bg);border-radius:8px;padding:8px 10px;font-size:14px}.ui .seg{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.ui .seg button{flex:1 1;border:0;background:var(--card);padding:8px;cursor:pointer;font-weight:500}.ui .seg button.on{background:var(--ink);color:var(--paper)}.ui .days{display:flex;gap:4px;flex-wrap:wrap}.ui .days button{border:1px solid var(--line);background:var(--card);border-radius:6px;padding:5px 8px;cursor:pointer;font-size:13px}.ui .days button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.ui .scrim{position:fixed;inset:0;background:rgba(10,14,20,.45);z-index:20}.ui .drawer{position:fixed;top:0;right:0;bottom:0;width:min(460px,100%);background:var(--card);border-left:1px solid var(--line);z-index:21;display:flex;flex-direction:column}.ui .drawer .dh{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.ui .drawer .db{padding:18px 20px;overflow:auto;display:flex;flex-direction:column;gap:16px}.ui .kv{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.ui .kv div{background:var(--paper);border-radius:8px;padding:8px 10px}.ui .kv small{display:block;color:var(--muted);font-size:12px}.ui .kv b{font-weight:600}.ui .bigq{display:flex;align-items:baseline;gap:8px}.ui .bigq .v{font-family:var(--mono);font-size:40px;font-weight:600;line-height:1}.ui .callout{border-radius:10px;padding:10px 12px;font-size:14px;display:flex;flex-direction:column;gap:4px}.ui .callout.info{background:var(--info-bg);color:var(--info)}.ui .callout.warn{background:var(--warn-bg);color:var(--warn)}.ui .callout.bad{background:var(--bad-bg);color:var(--bad)}.ui .callout.plain{background:var(--paper)}.ui .callout.ok{background:var(--ok-bg);color:var(--ok)}.ui .callout b{font-weight:600}.ui .spark{display:block;width:100%;height:46px}.ui .dialog{top:50%;transform:translate(-50%,-50%);width:min(520px,calc(100% - 24px));max-height:calc(100% - 32px);overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:14px;z-index:22;padding:20px;display:flex;flex-direction:column;gap:14px}.ui .dialog,.ui .toast{position:fixed;left:50%}.ui .toast{bottom:22px;transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:10px;z-index:30;font-weight:500;max-width:calc(100% - 32px)}.ui .toast.bad{background:var(--bad)}.ui .lotlist{font-size:13px}.ui .lotlist div{justify-content:space-between;gap:10px;padding:6px 0}.ui .lotlist div,.ui .tabs{display:flex;border-bottom:1px solid var(--line)}.ui .tabs{gap:4px;flex-wrap:wrap}.ui .tabs a{padding:9px 12px;text-decoration:none;color:var(--muted);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px}.ui .tabs a.on{color:var(--ink);border-color:var(--tag)}.ui .locked{border:1px dashed var(--line);border-radius:12px;padding:20px;text-align:center;color:var(--muted);display:flex;flex-direction:column;gap:8px;align-items:center}.ui .plans{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px}.ui .plan{border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px;background:var(--card)}.ui .plan.cur{border:2px solid var(--ink)}.ui .plan .amt{font-family:var(--display);font-size:30px;font-weight:700}.ui .bars{display:flex;flex-direction:column;gap:8px}.ui .hbar{display:grid;grid-template-columns:180px 1fr 90px;grid-gap:10px;gap:10px;align-items:center;font-size:14px}.ui .hbar .b{height:12px;background:var(--paper);border-radius:6px;overflow:hidden;border:1px solid var(--line)}.ui .hbar .b span{display:block;height:100%;background:var(--ink)}.ui .mobile-tabs{display:none}.ui .auth-page{min-height:100vh;background:var(--paper);flex-direction:column;padding:40px 16px;gap:20px}.ui .auth-brand,.ui .auth-page{display:flex;align-items:center}.ui .auth-brand{gap:9px;font-family:var(--display);font-weight:700;font-size:24px;text-decoration:none}.ui .auth-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:28px;width:min(420px,100%)}.ui .auth-card.wide{width:min(640px,100%)}.ui .auth-form{display:flex;flex-direction:column;gap:14px}.ui .auth-form h1{font-size:26px}.ui .auth-done{display:flex;flex-direction:column;gap:12px}.ui .switch-line{text-align:center;font-size:14px;color:var(--muted)}.ui .auth-foot{font-size:13px;color:var(--muted)}.ui .kinds{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.ui .kind{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:10px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:2px}.ui .kind small{color:var(--muted);font-size:12px}.ui .kind.on{border:2px solid var(--ink);padding:9px;background:#fffbea}.ui .scan-page{min-height:100vh;background:var(--paper);display:flex;justify-content:center;padding:20px 16px}.ui .scan-card{width:min(420px,100%);display:flex;flex-direction:column;gap:16px}.ui .scan-card .stepper button{width:60px;height:60px;font-size:26px}.ui .scan-card .stepper input{width:90px;height:60px;font-size:24px}.ui .scan-done{text-align:center;display:flex;flex-direction:column;gap:10px;align-items:center;padding-top:40px}.ui .scan-done .ck{width:64px;height:64px;border-radius:50%;background:var(--ok-bg);color:var(--ok);display:grid;place-items:center;font-size:32px}@media (max-width:980px){.ui .grid4{grid-template-columns:repeat(2,1fr)}.ui .grid2,.ui .plans{grid-template-columns:1fr}.ui .grid3{grid-template-columns:1fr 1fr}}@media (max-width:760px){.ui .shell{grid-template-columns:1fr;grid-template-rows:auto 1fr auto}.ui .rail{flex-direction:row;align-items:center;padding:10px 14px;gap:10px;overflow:visible}.ui .rail .appnav,.ui .rail .railfoot,.ui .ws label{display:none}.ui .ws{flex:1 1;min-width:0}.ui .ws select{width:100%}.ui .brand-txt{display:none}.ui .wrap{padding:16px 14px 40px}.ui .mobile-tabs{display:flex;background:var(--card);border-top:1px solid var(--line);justify-content:space-around}.ui .mobile-tabs a{flex:1 1;text-align:center;padding:8px 2px 10px;font-size:11px;color:var(--muted);text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:2px;font-weight:500}.ui .mobile-tabs a.on{color:var(--ink)}.ui .mobile-tabs a.on svg{color:var(--warn)}.ui .mobile-tabs svg{width:20px;height:20px}.ui .search{min-width:0;flex:1 1}.ui .hide-sm{display:none}.ui .grid3,.ui .kinds,.ui .row2,.ui .row3{grid-template-columns:1fr}.ui .hbar{grid-template-columns:110px 1fr 70px}}@media print{.ui .no-print{display:none!important}}.ui .spx table.sptbl{margin-top:6px;font-size:13px}.ui .spx table.sptbl td{padding:7px 6px}.ui .spx table.sptbl td:first-child{-webkit-padding-start:0;padding-inline-start:0}.ui .spx table.sptbl td:last-child{-webkit-padding-end:0;padding-inline-end:0}.ui .cheaper{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12.5px;color:var(--ok);margin-top:3px}.ui .cheaper .btn{padding:3px 9px;font-size:12px}.ui .spadd input,.ui .spadd select{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:7px 9px;font:inherit;font-size:14px;color:var(--ink)}.ui .danger-zone{border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px;align-items:flex-start}.ui .panel>.danger-zone:first-child{border-top:0}.ui .danger-zone h3{color:var(--bad);margin:0;font-size:15px}.ui .danger-zone p{margin:0;max-width:640px}.ui .danger-zone input{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:7px 9px;font:inherit;font-size:14px}