/* ─────────────────────────────────────────────
   GMS Steel AS — Warehouse Management System
   styles.css — dipisah dari index.html (CSS terpusat)
   ───────────────────────────────────────────── */
:root{--bg-deep:#080608;--bg-base:#0A0608;--bg-elev-1:#0F0C07;--bg-elev-2:#150F03;--bg-elev-3:#1E1608;--bd-soft:rgba(201,168,76,0.12);--bd-mid:rgba(201,168,76,0.24);--bd-strong:rgba(201,168,76,0.44);--tx-hi:#F5E6C8;--tx-mid:#9B8855;--tx-lo:#5C5236;--tx-faint:#3D3722;--copper:#C9A84C;--copper-hi:#FFD700;--copper-lo:#8B6914;--copper-deep:#5C4309;--copper-grad:linear-gradient(135deg, #FFD700 0%, #C9A84C 50%, #8B6914 100%);--steel:#C9A84C;--steel-hi:#E8C76B;--steel-lo:#8B6914;--steel-grad:linear-gradient(135deg, #E8C76B 0%, #C9A84C 50%, #8B6914 100%);--ok:#7BC97F;--ok-bg:rgba(123,201,127,.10);--ng:#C9534C;--ng-bg:rgba(201,83,76,.12);--warn:#D4A04C;--warn-bg:rgba(212,160,76,.12);--info:#C9A84C;--info-bg:rgba(201,168,76,.10);--shadow-1:0 2px 8px rgba(0,0,0,.7),0 1px 2px rgba(0,0,0,.5);--shadow-2:0 12px 40px rgba(0,0,0,.9),0 4px 14px rgba(0,0,0,.6);--shadow-glow:0 0 28px rgba(201,168,76,.22);--r-sm:2px;--r-md:2px;--r-lg:3px;--r-xl:4px}*,::after,::before{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font-family:'Libre Baskerville',Georgia,serif;font-size:14px;line-height:1.5;color:var(--tx-hi);background:var(--bg-deep);background-image:radial-gradient(ellipse 1200px 600px at 50% 0,rgba(255,215,0,.05),transparent 60%),radial-gradient(ellipse 800px 500px at 20% 100%,rgba(201,168,76,.06),transparent 60%);background-attachment:fixed;overflow:hidden;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body::before{content:'';position:fixed;inset:0;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'><g fill='none' stroke='%23C9A84C' stroke-opacity='0.04' stroke-width='1'><path d='M80 10 L120 50 L80 90 L40 50 Z'/><path d='M80 70 L120 110 L80 150 L40 110 Z'/><circle cx='80' cy='50' r='4'/><circle cx='80' cy='110' r='4'/><path d='M20 80 L60 80 M100 80 L140 80' stroke-dasharray='4,4'/></g></svg>");background-size:160px 160px;pointer-events:none;z-index:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}input,select,textarea{outline:0}a{color:var(--copper-hi);text-decoration:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:rgba(0,0,0,.4)}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--copper),var(--copper-lo));border-radius:2px}::selection{background:rgba(255,215,0,.25);color:var(--tx-hi)}.display{font-family:'Cinzel Decorative',Cinzel,serif;letter-spacing:.06em;text-transform:uppercase;line-height:1}.mono{font-family:'JetBrains Mono','Courier New',monospace}.muted{color:var(--tx-mid)}.faint{color:var(--tx-lo)}#loginScreen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse 1000px 600px at 50% 0,rgba(255,215,0,.06),transparent 60%),radial-gradient(ellipse 700px 500px at 20% 100%,rgba(201,168,76,.06),transparent 60%),linear-gradient(180deg,#080608 0,#050304 100%);z-index:100;overflow:auto}#loginScreen::before{content:'';position:absolute;inset:0;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'><g fill='none' stroke='%23C9A84C' stroke-opacity='0.06' stroke-width='1'><path d='M80 10 L120 50 L80 90 L40 50 Z'/><path d='M80 70 L120 110 L80 150 L40 110 Z'/><circle cx='80' cy='50' r='4'/><circle cx='80' cy='110' r='4'/><path d='M20 80 L60 80 M100 80 L140 80' stroke-dasharray='4,4'/></g></svg>");background-size:160px 160px;pointer-events:none;mask-image:radial-gradient(circle at center,black 25%,transparent 75%)}.login-wrap{position:relative;width:min(440px,92vw);background:linear-gradient(180deg,var(--bg-elev-2) 0,var(--bg-elev-1) 100%);border:1px solid rgba(201,168,76,.28);border-radius:2px;box-shadow:0 40px 100px rgba(0,0,0,.9),0 0 0 1px rgba(201,168,76,.06);z-index:2;overflow:hidden}.login-wrap::before{content:'';display:block;height:4px;background:linear-gradient(90deg,transparent 0,var(--copper) 15%,var(--copper-hi) 50%,var(--copper) 85%,transparent 100%);box-shadow:0 0 22px rgba(255,215,0,.4)}.login-brand{text-align:center;padding:28px 32px 20px}.login-mark{width:68px;height:68px;margin:0 auto 16px;display:grid;place-items:center;background:linear-gradient(135deg,rgba(201,168,76,.18),rgba(201,168,76,.06));border:1px solid rgba(201,168,76,.4);clip-path:polygon(50% 0%,93% 25%,93% 75%,50% 100%,7% 75%,7% 25%);position:relative}.login-mark svg{width:28px;height:28px;color:var(--copper-hi)}.login-title{font-family:'Cinzel Decorative',serif;font-size:22px;letter-spacing:.1em;color:var(--copper-hi);margin-bottom:6px;text-shadow:0 0 28px rgba(255,215,0,.35)}.login-sub{font-family:Cinzel,serif;font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:var(--copper);font-weight:600}.login-form{display:flex;flex-direction:column;gap:12px;padding:0 32px 24px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-family:Cinzel,serif;font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--tx-lo);font-weight:600}.field input{padding:11px 14px;background:rgba(0,0,0,.35);border:1px solid rgba(201,168,76,.22);border-radius:2px;color:var(--tx-hi);transition:border-color .15s,box-shadow .15s,background .15s;font-family:'JetBrains Mono',monospace;font-size:13px}.field input:focus{border-color:var(--copper);background:rgba(0,0,0,.5);box-shadow:0 0 0 2px rgba(201,168,76,.14)}.btn-primary{margin-top:6px;padding:13px 16px;background:var(--copper-grad);color:var(--bg-deep);border-radius:2px;font-family:Cinzel,serif;font-weight:700;font-size:11.5px;letter-spacing:.28em;text-transform:uppercase;transition:transform .12s,box-shadow .15s,filter .15s;position:relative;overflow:hidden}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 22px rgba(201,168,76,.4);filter:brightness(1.08)}.btn-primary:active{transform:translateY(0)}.btn-primary[disabled]{opacity:.5;cursor:not-allowed;transform:none}.login-error{background:var(--ng-bg);border:1px solid rgba(201,83,76,.35);color:#f5c6c4;padding:10px 14px;border-radius:2px;font-size:12px;font-family:'Libre Baskerville',serif;font-style:italic;display:none}.login-error.show{display:block}.login-footer{border-top:1px solid rgba(201,168,76,.15);padding:12px 32px 16px;font-family:Cinzel,serif;font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--tx-faint);text-align:center;background:rgba(0,0,0,.2)}.login-footer .credit{color:var(--copper-lo);font-weight:700}.login-demo{margin:0 32px 16px;padding:10px 12px;background:rgba(201,168,76,.05);border:1px solid rgba(201,168,76,.18);border-radius:2px;font-size:10.5px;color:var(--tx-mid);line-height:1.6;font-family:'JetBrains Mono',monospace}.login-demo b{color:var(--copper-hi)}#appShell{display:none;height:100vh;grid-template-columns:240px 1fr;transition:grid-template-columns .25s}#appShell.show{display:grid}#appShell::before{content:'';position:fixed;inset:0;pointer-events:none;background-image:radial-gradient(ellipse 1200px 700px at 20% -5%,rgba(255,215,0,.04),transparent 60%),radial-gradient(ellipse 900px 600px at 95% 100%,rgba(201,168,76,.03),transparent 60%);z-index:0}.sidebar{background:linear-gradient(180deg,var(--bg-elev-2) 0,var(--bg-base) 100%);border-right:1px solid rgba(201,168,76,.18);display:flex;flex-direction:column;position:relative;z-index:1}.sidebar::after{content:'';position:absolute;top:0;left:0;bottom:0;width:2px;background:linear-gradient(180deg,transparent 0,var(--copper) 20%,var(--copper-hi) 50%,var(--copper) 80%,transparent 100%);opacity:.4}.brand{padding:18px 18px 16px;display:flex;align-items:center;gap:11px;border-bottom:1px solid rgba(201,168,76,.18);background:linear-gradient(90deg,rgba(201,168,76,.06),transparent)}.brand-mark{width:36px;height:36px;display:grid;place-items:center;background:linear-gradient(135deg,rgba(201,168,76,.18),rgba(201,168,76,.06));border:1px solid rgba(201,168,76,.4);clip-path:polygon(50% 0%,93% 25%,93% 75%,50% 100%,7% 75%,7% 25%);flex-shrink:0}.brand-mark svg{width:16px;height:16px;color:var(--copper-hi)}.brand-text{line-height:1.2}.brand-text .name{font-family:'Cinzel Decorative',serif;font-size:14px;letter-spacing:.1em;color:var(--copper-hi);text-shadow:0 0 18px rgba(255,215,0,.3)}.brand-text .sub{font-family:Cinzel,serif;font-size:8px;letter-spacing:.28em;color:var(--copper);text-transform:uppercase;margin-top:2px;font-weight:600}.nav{flex:1;overflow-y:auto;padding:10px 8px}.nav-group{margin-bottom:12px}.nav-group-label{padding:6px 10px;font-family:Cinzel,serif;font-size:8.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--copper-lo);font-weight:700}.nav-item{display:flex;align-items:center;gap:11px;padding:9px 11px;margin:1px 0;border-radius:2px;font-family:Cinzel,serif;font-size:11px;font-weight:600;letter-spacing:.1em;color:var(--tx-mid);transition:background .12s,color .12s;width:100%;text-align:left;position:relative}.nav-item:hover{background:rgba(201,168,76,.07);color:var(--tx-hi)}.nav-item.active{background:linear-gradient(90deg,rgba(201,168,76,.14),rgba(201,168,76,.04));color:var(--copper-hi)}.nav-item.active::before{content:'';position:absolute;left:0;top:6px;bottom:6px;width:2px;background:linear-gradient(180deg,var(--copper-hi),var(--copper));box-shadow:0 0 10px rgba(255,215,0,.5)}.nav-item svg{width:16px;height:16px;flex-shrink:0}.nav-item .badge{margin-left:auto;font-size:9.5px;padding:1px 6px;background:var(--ng-bg);color:var(--ng);border-radius:2px;font-weight:700;font-family:'JetBrains Mono',monospace}.nav-item .badge.new{background:linear-gradient(135deg,var(--copper),var(--copper-hi));color:var(--bg-deep);box-shadow:0 0 8px rgba(255,215,0,.4);animation:2.4s ease-in-out infinite navBadgePulse}@keyframes navBadgePulse{0%,100%{box-shadow:0 0 6px rgba(201,168,76,.4);transform:scale(1)}50%{box-shadow:0 0 14px rgba(255,215,0,.7);transform:scale(1.06)}}.sidebar-footer{padding:12px;border-top:1px solid rgba(201,168,76,.15);background:rgba(0,0,0,.25)}.sidebar-user-top{padding:10px 12px;border-bottom:1px solid rgba(201,168,76,.15);background:linear-gradient(135deg,rgba(201,168,76,.07),transparent)}.user-card{display:flex;align-items:center;gap:10px;padding:8px;border-radius:2px;background:rgba(0,0,0,.3);border:1px solid rgba(201,168,76,.2)}.user-avatar{width:32px;height:32px;display:grid;place-items:center;background:var(--copper-grad);color:var(--bg-deep);clip-path:polygon(50% 0%,93% 25%,93% 75%,50% 100%,7% 75%,7% 25%);font-family:Cinzel,serif;font-weight:700;font-size:12px;flex-shrink:0}.user-info{flex:1;min-width:0}.user-info .uname{font-family:Cinzel,serif;font-size:11px;font-weight:700;color:var(--tx-hi);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-info .urole{font-family:Cinzel,serif;font-size:8.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--copper);margin-top:2px;font-weight:600}.btn-logout{width:26px;height:26px;display:grid;place-items:center;border-radius:2px;color:var(--tx-lo);transition:background .12s,color .12s}.btn-logout:hover{background:var(--ng-bg);color:var(--ng)}.main{display:flex;flex-direction:column;overflow:hidden;position:relative;z-index:1}.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 22px;background:rgba(8,6,8,.8);backdrop-filter:blur(12px);border-bottom:1px solid rgba(201,168,76,.15);flex-shrink:0;z-index:5}.topbar::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0,rgba(201,168,76,.4) 30%,rgba(255,215,0,.6) 50%,rgba(201,168,76,.4) 70%,transparent 100%)}.page-head{display:flex;align-items:center;gap:14px}.page-title{font-family:'Cinzel Decorative',serif;font-size:18px;letter-spacing:.08em;color:var(--copper-hi);text-shadow:0 0 22px rgba(255,215,0,.25)}.page-bread{font-family:Cinzel,serif;font-size:10px;color:var(--tx-lo);letter-spacing:.18em;text-transform:uppercase}.topbar-actions{display:flex;align-items:center;gap:10px}.realtime-pill{display:flex;align-items:center;gap:6px;font-family:Cinzel,serif;font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--tx-lo);padding:5px 12px;background:rgba(0,0,0,.35);border:1px solid rgba(201,168,76,.2);border-radius:2px;font-weight:600}.realtime-pill .dot{width:7px;height:7px;background:var(--ok);border-radius:50%;box-shadow:0 0 10px var(--ok);animation:2s ease-in-out infinite pulse}.realtime-pill.off .dot{background:var(--tx-faint);box-shadow:none;animation:none}.realtime-pill.off{color:var(--tx-faint)}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}.content{flex:1;overflow-y:auto;padding:22px;position:relative}.page{display:none;animation:.25s fadeIn}.page.active{display:block}@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:22px}.stat-card{background:linear-gradient(180deg,var(--bg-elev-2),var(--bg-elev-1));border:1px solid rgba(201,168,76,.18);border-top:3px solid var(--accent-color,var(--copper));border-radius:2px;padding:16px 18px;position:relative;overflow:hidden;transition:border-color .15s,transform .15s,box-shadow .15s}.stat-card:hover{border-color:rgba(201,168,76,.4);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.5),0 0 18px rgba(201,168,76,.12)}.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--accent-color,var(--copper-hi)),transparent);opacity:.5}.stat-card .label{font-family:Cinzel,serif;font-size:9px;letter-spacing:.26em;text-transform:uppercase;color:var(--tx-lo);font-weight:700;margin-bottom:10px}.stat-card .value{font-family:'Cinzel Decorative',serif;font-size:34px;line-height:1;color:var(--accent-color,var(--copper-hi));letter-spacing:.04em;text-shadow:0 0 22px rgba(255,215,0,.25)}.stat-card .meta{margin-top:8px;font-family:'Libre Baskerville',serif;font-style:italic;font-size:10.5px;color:var(--tx-mid)}.stat-card.pipa{--accent-color:#C9A84C}.stat-card.pipa .label{color:#c9a84c}.stat-card.pipa .value{color:gold}.stat-card.padat{--accent-color:#74B9E7}.stat-card.padat .label,.stat-card.padat .value{color:#74b9e7}.stat-card.kuningan{--accent-color:#E07B54}.stat-card.kuningan .label,.stat-card.kuningan .value{color:#e07b54}.stat-card.critical{--accent-color:var(--ng)}.stat-card.critical .value{color:var(--ng)}.stat-card.ng{--accent-color:var(--ng);border-color:rgba(201,83,76,.3)}.stat-card.ng .value{color:var(--ng)}.dash-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:16px}@media (max-width:1100px){.dash-grid{grid-template-columns:1fr}}.panel{background:linear-gradient(180deg,var(--bg-elev-2) 0,var(--bg-elev-1) 100%);border:1px solid rgba(201,168,76,.18);border-radius:3px;overflow:hidden;position:relative}.panel::before{content:'';display:block;height:2px;background:linear-gradient(90deg,transparent 0,var(--copper) 20%,var(--copper-hi) 50%,var(--copper) 80%,transparent 100%)}.panel-head{padding:14px 18px;border-bottom:1px solid rgba(201,168,76,.14);display:flex;align-items:center;justify-content:space-between;background:rgba(0,0,0,.2)}.panel-title{font-family:Cinzel,serif;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--copper-hi);font-weight:700}.panel-body{padding:18px}#chartWrap{height:280px;padding:16px 12px 4px}.crit-list{padding:8px 0;max-height:320px;overflow-y:auto}.crit-item{display:flex;align-items:center;gap:10px;padding:10px 18px;border-bottom:1px solid rgba(201,168,76,.08)}.crit-item:last-child{border-bottom:0}.crit-icon{width:30px;height:30px;display:grid;place-items:center;background:var(--ng-bg);color:var(--ng);border-radius:2px;font-size:14px}.crit-info{flex:1;min-width:0}.crit-info .a{font-size:12.5px;font-weight:700;color:var(--tx-hi);font-family:Cinzel,serif}.crit-info .b{font-size:10.5px;color:var(--tx-lo);margin-top:2px;font-style:italic}.crit-qty{font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:700;color:var(--ng)}.inv-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width:1000px){.inv-grid{grid-template-columns:1fr}}.loc-panel{background:linear-gradient(180deg,var(--bg-elev-2) 0,var(--bg-elev-1) 100%);border:1px solid rgba(201,168,76,.18);border-radius:3px;overflow:hidden;position:relative}.loc-panel::before{content:'';display:block;height:2px;background:linear-gradient(90deg,transparent 0,var(--copper) 20%,var(--copper-hi) 50%,var(--copper) 80%,transparent 100%)}.loc-panel:not(.b-side){border:1px solid rgba(201,168,76,.35);box-shadow:0 0 24px rgba(201,168,76,.06)}.loc-panel.b-side{border:1px solid rgba(232,199,107,.25);box-shadow:0 0 24px rgba(201,168,76,.04)}.loc-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid rgba(201,168,76,.14);background:rgba(0,0,0,.2)}.loc-panel:not(.b-side) .loc-head{background:linear-gradient(90deg,rgba(201,168,76,.1),transparent)}.loc-panel.b-side .loc-head{background:linear-gradient(90deg,rgba(232,199,107,.07),transparent)}.loc-title{font-family:Cinzel,serif;font-size:13px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;display:flex;align-items:center;gap:8px;padding:4px 14px;border-radius:2px}.loc-title.a{color:var(--copper-hi);background:rgba(201,168,76,.1);border:1px solid rgba(201,168,76,.3)}.loc-title.b{color:#e8c76b;background:rgba(232,199,107,.08);border:1px solid rgba(232,199,107,.28)}.loc-title .side{font-family:Cinzel,serif;font-size:8.5px;letter-spacing:.22em;padding:2px 8px;border-radius:2px;background:rgba(201,168,76,.14);color:var(--copper)}.loc-title.b .side{background:rgba(232,199,107,.12);color:#e8c76b}.loc-counts{font-family:Cinzel,serif;font-size:10px;color:var(--tx-lo);letter-spacing:.12em}.loc-counts b{color:var(--tx-hi);font-family:'JetBrains Mono',monospace}.racks{padding:14px;max-height:70vh;overflow-y:auto}.rack{display:grid;grid-template-columns:50px 1fr auto;align-items:stretch;gap:10px;padding:8px;margin-bottom:8px;background:rgba(0,0,0,.25);border:1px solid rgba(201,168,76,.12);border-radius:2px;transition:border-color .12s,background .12s}.rack:hover{border-color:rgba(201,168,76,.3);background:rgba(201,168,76,.04)}.rack-num{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:rgba(0,0,0,.35);border-radius:2px;font-family:'Cinzel Decorative',serif;font-size:17px;color:var(--copper-hi);letter-spacing:.04em;font-weight:400;padding:6px 4px;border-top:2px solid var(--copper);text-shadow:0 0 12px rgba(255,215,0,.3)}.b-side .rack-num{color:#e8c76b;border-top-color:#c9a84c}.rack-items{display:flex;flex-direction:column;gap:4px;min-width:0}.rack-empty{display:grid;place-items:center;padding:14px;font-family:'Libre Baskerville',serif;font-size:10px;letter-spacing:.14em;color:var(--tx-faint);font-style:italic}.rack-item{display:flex;align-items:center;gap:8px;padding:6px 9px;background:rgba(0,0,0,.2);border-radius:2px;font-size:11.5px;border-left:2px solid rgba(201,168,76,.3);transition:background .1s}.rack-item.t-pipa{border-left-color:#c9a84c}.rack-item.t-padat{border-left-color:#74b9e7}.rack-item.t-kuningan{border-left-color:#e07b54}.rack-item.ng{background:var(--ng-bg);border-left-color:var(--ng)}.rack-item:hover{background:rgba(201,168,76,.07);cursor:pointer}.rack-item .ident{flex:1;min-width:0;font-family:'JetBrains Mono',monospace;font-size:10.5px}.rack-item .ident b{color:var(--tx-hi)}.rack-item .lot{font-size:9.5px;font-family:'JetBrains Mono',monospace;padding:1px 5px;background:rgba(0,0,0,.4);border-radius:2px;color:var(--copper-hi);border:1px solid rgba(201,168,76,.2)}.rack-item .bdl{font-size:10px;font-weight:700;font-family:'JetBrains Mono',monospace;color:var(--copper-hi);background:rgba(201,168,76,.1);border:1px solid rgba(201,168,76,.2);padding:2px 7px;border-radius:2px}.rack-actions{display:flex;flex-direction:column;gap:4px;justify-content:center}.btn-icon{width:28px;height:28px;display:grid;place-items:center;background:rgba(0,0,0,.3);border:1px solid rgba(201,168,76,.15);border-radius:2px;color:var(--tx-mid);transition:background .12s,color .12s;font-size:13px}.btn-icon:hover{background:rgba(201,168,76,.1);color:var(--copper-hi);border-color:rgba(201,168,76,.4)}.btn-icon.danger:hover{background:var(--ng-bg);color:var(--ng);border-color:var(--ng)}.tbl-wrap{background:linear-gradient(180deg,var(--bg-elev-2) 0,var(--bg-elev-1) 100%);border:1px solid rgba(201,168,76,.18);border-radius:3px;overflow:hidden;position:relative}.tbl-wrap::before{content:'';display:block;height:2px;background:linear-gradient(90deg,transparent 0,var(--copper) 20%,var(--copper-hi) 50%,var(--copper) 80%,transparent 100%)}.tbl-toolbar{padding:12px 16px;border-bottom:1px solid rgba(201,168,76,.14);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:rgba(0,0,0,.25)}.tbl-scroll{overflow-x:auto;max-height:65vh}table.dt{width:100%;border-collapse:collapse;font-size:12.5px;font-family:'Libre Baskerville',serif}table.dt thead th{position:sticky;top:0;background:rgba(0,0,0,.35);padding:10px 12px;font-family:Cinzel,serif;font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--copper-hi);font-weight:700;text-align:left;border-bottom:1px solid rgba(201,168,76,.25);z-index:2;white-space:nowrap}table.dt tbody td{padding:9px 12px;border-bottom:1px solid rgba(201,168,76,.08);vertical-align:middle}table.dt tbody tr:hover{background:rgba(201,168,76,.04)}table.dt tbody tr.ng-row{background:rgba(201,83,76,.05)}table.dt tbody tr.ng-row:hover{background:rgba(201,83,76,.09)}.empty{padding:50px 20px;text-align:center;color:var(--tx-faint);font-family:'Libre Baskerville',serif;font-style:italic;font-size:13px}.empty .big{font-size:32px;margin-bottom:6px;opacity:.4}.badge{display:inline-block;font-family:Cinzel,serif;font-size:8.5px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;padding:3px 9px;border-radius:2px}.badge.ok{background:var(--ok-bg);color:var(--ok);border:1px solid rgba(123,201,127,.2)}.badge.ng{background:var(--ng-bg);color:var(--ng);border:1px solid rgba(201,83,76,.2)}.badge.warn{background:var(--warn-bg);color:var(--warn);border:1px solid rgba(212,160,76,.2)}.badge.info{background:var(--info-bg);color:var(--info);border:1px solid rgba(201,168,76,.2)}.badge.neutral{background:rgba(0,0,0,.3);color:var(--tx-mid);border:1px solid rgba(201,168,76,.1)}.badge.copper{background:rgba(201,168,76,.12);color:var(--copper-hi);border:1px solid rgba(201,168,76,.25)}.badge.steel{background:rgba(201,168,76,.1);color:var(--steel-hi);border:1px solid rgba(201,168,76,.2)}.badge.brass{background:rgba(232,199,107,.12);color:gold;border:1px solid rgba(232,199,107,.25)}.badge.type-pipa{background:rgba(201,168,76,.15);color:gold;border:1px solid rgba(201,168,76,.38)}.badge.type-padat{background:rgba(116,185,231,.13);color:#74b9e7;border:1px solid rgba(116,185,231,.32)}.badge.type-kuningan{background:rgba(224,123,84,.13);color:#e07b54;border:1px solid rgba(224,123,84,.32)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:rgba(0,0,0,.3);border:1px solid rgba(201,168,76,.25);border-radius:2px;font-family:Cinzel,serif;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--tx-hi);transition:background .12s,border-color .12s,color .12s,transform .1s}.btn:hover{background:rgba(201,168,76,.08);border-color:rgba(201,168,76,.5);color:var(--copper-hi)}.btn:active{transform:scale(.98)}.btn.primary{background:var(--copper-grad);border-color:var(--copper-lo);color:var(--bg-deep);font-weight:800}.btn.primary:hover{filter:brightness(1.08);box-shadow:0 4px 18px rgba(201,168,76,.35)}.btn.steel{background:linear-gradient(135deg,rgba(201,168,76,.25),rgba(201,168,76,.12));border-color:rgba(201,168,76,.4);color:var(--copper-hi);font-weight:700}.btn.steel:hover{filter:brightness(1.1)}.btn.danger{background:rgba(201,83,76,.14);border-color:rgba(201,83,76,.35);color:var(--ng)}.btn.danger:hover{background:rgba(201,83,76,.22)}.btn.ghost{background:0 0}.btn.sm{padding:5px 10px;font-size:9.5px}.inp,.sel{padding:8px 12px;background:rgba(0,0,0,.35);border:1px solid rgba(201,168,76,.22);border-radius:2px;color:var(--tx-hi);font-size:12.5px;font-family:'JetBrains Mono',monospace;transition:border-color .12s,box-shadow .12s;min-width:0}.inp:focus,.sel:focus{border-color:var(--copper);box-shadow:0 0 0 2px rgba(201,168,76,.14)}.inp.mono,.sel.mono{font-family:'JetBrains Mono',monospace}.sel{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path d='M2 4l3 3 3-3' fill='none' stroke='%23C9A84C' stroke-width='1.5'/></svg>");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px}.form-grid{display:grid;gap:12px}.form-row{display:grid;grid-template-columns:130px 1fr;gap:10px;align-items:center}.form-row.col{grid-template-columns:1fr;gap:6px}.form-row label{font-family:Cinzel,serif;font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--tx-lo);font-weight:700}.modal-backdrop{position:fixed;inset:0;background:rgba(4,2,4,.75);backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;z-index:200;padding:20px;overflow-y:auto}.modal-backdrop.show{display:flex}.modal{background:linear-gradient(180deg,var(--bg-elev-3) 0,var(--bg-elev-1) 100%);border:1px solid rgba(201,168,76,.28);border-radius:3px;box-shadow:0 40px 100px rgba(0,0,0,.9),0 0 40px rgba(201,168,76,.08);width:min(560px,100%);max-height:90vh;display:flex;flex-direction:column;animation:.2s ease-out modalIn;overflow:hidden}.modal::before{content:'';display:block;height:3px;background:linear-gradient(90deg,transparent 0,var(--copper) 15%,var(--copper-hi) 50%,var(--copper) 85%,transparent 100%);box-shadow:0 0 18px rgba(255,215,0,.35);flex-shrink:0}.modal.wide{width:min(820px,100%)}@keyframes modalIn{from{opacity:0;transform:scale(.96) translateY(-8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-head{padding:16px 22px;border-bottom:1px solid rgba(201,168,76,.15);display:flex;align-items:center;justify-content:space-between;background:rgba(0,0,0,.2)}.modal-title{font-family:Cinzel,serif;font-size:14px;letter-spacing:.22em;text-transform:uppercase;color:var(--copper-hi);font-weight:700}.modal-body{padding:20px 22px;overflow-y:auto;flex:1}.modal-foot{padding:14px 22px;border-top:1px solid rgba(201,168,76,.15);display:flex;justify-content:flex-end;gap:8px;background:rgba(0,0,0,.25)}.modal-close{width:28px;height:28px;display:grid;place-items:center;border-radius:2px;color:var(--tx-lo);transition:background .12s,color .12s}.modal-close:hover{background:rgba(201,168,76,.1);color:var(--copper-hi)}#toastHost{position:fixed;top:22px;right:22px;display:flex;flex-direction:column;gap:8px;z-index:300;pointer-events:none}.toast{background:linear-gradient(180deg,var(--bg-elev-3),var(--bg-elev-2));border:1px solid rgba(201,168,76,.35);border-radius:2px;padding:13px 18px;box-shadow:0 18px 42px rgba(0,0,0,.8),0 0 0 1px rgba(201,168,76,.06);font-family:'Libre Baskerville',serif;font-size:12.5px;color:var(--tx-hi);min-width:240px;animation:.25s ease-out toastIn;pointer-events:auto;position:relative;overflow:hidden}.toast::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--copper-hi),transparent)}.toast.success{border-color:rgba(123,201,127,.4)}.toast.success::before{background:linear-gradient(90deg,transparent,var(--ok),transparent)}.toast.error{border-color:rgba(201,83,76,.4)}.toast.error::before{background:linear-gradient(90deg,transparent,var(--ng),transparent)}.toast.warn{border-color:rgba(212,160,76,.4)}.toast.info{border-color:rgba(201,168,76,.35)}.toast b{display:block;font-family:Cinzel,serif;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--copper-hi);margin-bottom:3px}.toast.success b{color:var(--ok)}.toast.error b{color:var(--ng)}.toast.warn b{color:var(--warn)}.toast.info b{color:var(--copper-hi)}@keyframes toastIn{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}.fbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.fbar>*{min-width:0}.chip{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;background:rgba(0,0,0,.3);border:1px solid rgba(201,168,76,.2);border-radius:2px;font-family:Cinzel,serif;font-size:9.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--tx-mid);transition:.12s}.chip:hover{color:var(--tx-hi);border-color:rgba(201,168,76,.5);background:rgba(201,168,76,.07)}.chip.active{background:var(--copper-grad);color:var(--bg-deep);border-color:var(--copper-lo);font-weight:800}.chip.t-pipa.active{background:var(--copper-grad);border-color:var(--copper-lo);color:var(--bg-deep)}.chip.t-kuningan.active{background:linear-gradient(135deg,gold,#e8c76b,#c9a84c);color:var(--bg-deep)}.qc-status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:18px}.qc-stat{background:rgba(0,0,0,.3);border:1px solid rgba(201,168,76,.18);border-radius:2px;padding:12px 14px;text-align:center;position:relative}.qc-stat::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--copper),transparent)}.qc-stat .v{font-family:'Cinzel Decorative',serif;font-size:26px;letter-spacing:.04em;line-height:1}.qc-stat .l{font-family:Cinzel,serif;font-size:8.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--tx-lo);margin-top:8px;font-weight:700}.qc-stat.ok .v{color:var(--ok)}.qc-stat.ng .v{color:var(--ng)}.qc-stat.hold .v{color:#c9534c}.qc-stat.recheck .v{color:var(--copper-hi)}.qc-stat.uncheck .v{color:var(--tx-lo)}.qc-stat.total .v{color:var(--tx-hi)}.mobile-toggle{display:grid;place-items:center;width:32px;height:32px;border-radius:2px;color:var(--tx-mid);flex-shrink:0}.mobile-toggle:hover{background:rgba(201,168,76,.1);color:var(--copper-hi)}.sidebar{transition:width .25s,min-width .25s;overflow:hidden}#appShell.sidebar-closed{grid-template-columns:0px 1fr}#appShell.sidebar-closed .sidebar{width:0;min-width:0}@media (max-width:880px){#appShell{grid-template-columns:1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:260px;transform:translateX(-100%);transition:transform .25s;z-index:50;box-shadow:var(--shadow-2)}#appShell.menu-open .sidebar{transform:translateX(0)}#appShell.sidebar-closed .sidebar{width:260px;min-width:unset;transform:translateX(-100%)}.topbar{padding:10px 14px}.page-title{font-size:16px}.content{padding:14px}.form-row{grid-template-columns:1fr}}.flex{display:flex}.f-1{flex:1}.gap-6{gap:6px}.gap-8{gap:8px}.gap-12{gap:12px}.hidden{display:none!important}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mb-8{margin-bottom:8px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}.center{text-align:center}.right{text-align:right}.nowrap{white-space:nowrap}.tabular{font-variant-numeric:tabular-nums}.__pager{padding:9px 14px;border-top:1px solid var(--bd-soft);background:rgba(0,0,0,.18)}.__pager:empty{display:none}.pg-wrap{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.pg-info{font-family:Cinzel,serif;font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--tx-lo);font-weight:700}.pg-btns{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.pg-btn{min-width:28px;padding:5px 10px;background:rgba(0,0,0,.3);border:1px solid var(--bd-mid);border-radius:2px;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;color:var(--tx-mid);transition:background .12s,border-color .12s,color .12s}.pg-btn:hover:not(:disabled){border-color:var(--copper);color:var(--copper-hi);background:rgba(201,168,76,.08)}.pg-btn.active{background:var(--copper-grad);border-color:var(--copper-lo);color:var(--bg-deep)}.pg-btn:disabled{opacity:.32;cursor:not-allowed}.pg-ell{color:var(--tx-lo);padding:0 2px;font-size:11px}.loc-pager{padding:8px 14px;border-bottom:1px solid var(--bd-soft);background:rgba(0,0,0,.14)}.loc-pager:empty{display:none}.pg-wrap.inv .pg-info{color:var(--copper-lo);font-size:8.5px}.pg-wrap.inv .pg-btn{padding:4px 9px;font-size:10.5px}
    /* chip lot berwarna per bulan (1-12) */
    .lot-chip{display:inline-block;padding:1px 7px;border-radius:10px;font-family:'JetBrains Mono',monospace;font-size:9.5px;font-weight:700;letter-spacing:.02em;background:var(--bg-elev-1);color:var(--tx-hi);border:1px solid var(--bd-soft);line-height:1.55;white-space:nowrap}
    /* tombol rumus berat di atas header lokasi */
    .loc-weightbar{display:flex;justify-content:flex-end;padding:0 2px 8px}
    .btn-weightcalc{display:inline-flex;align-items:center;gap:6px;padding:5px 13px;background:linear-gradient(135deg,rgba(201,168,76,.18),rgba(201,168,76,.06));border:1px solid var(--copper);border-radius:6px;font-family:Cinzel,serif;font-size:10.5px;font-weight:700;letter-spacing:.05em;color:var(--copper-hi);cursor:pointer;transition:background .14s,box-shadow .14s}
    .btn-weightcalc:hover{background:rgba(201,168,76,.26);box-shadow:0 0 12px rgba(201,168,76,.3)}
    /* paginasi antar-lokasi: 1 lokasi/halaman, pager nempel di atas */
    #invGrid{grid-template-columns:1fr}
    .loc-toppager{position:sticky;top:0;z-index:6;margin-bottom:14px;padding:11px 14px;background:linear-gradient(135deg,rgba(201,168,76,.16),rgba(201,168,76,.04));border:1px solid var(--bd-mid);border-radius:3px;backdrop-filter:blur(6px)}
    .loc-toppager .pg-wrap{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
    .loc-toppager .pg-info{font-family:Cinzel,serif;font-size:12px;font-weight:700;letter-spacing:.06em;color:var(--copper-hi)}
    .loc-toppager .pg-btns{display:flex;gap:6px;flex-wrap:wrap}
    /* tombol "rincian" ringkas di sel riwayat */
    .cell-more{margin-top:3px;display:inline-flex;align-items:center;gap:4px;padding:3px 9px;background:rgba(201,168,76,.1);border:1px solid var(--bd-mid);border-radius:3px;font-family:Cinzel,serif;font-size:9px;font-weight:700;letter-spacing:.07em;color:var(--copper-hi);cursor:pointer;transition:background .12s,border-color .12s;white-space:nowrap}
    .cell-more:hover{background:rgba(201,168,76,.22);border-color:var(--copper)}
  
