@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap");:root{--primary:#0a7395;--deep:#064f69;--green:#5aad42;--bg:#f5f8fa;--text:#102b3b;--muted:#6b7c89;--border:#e1e9ee;--white:#fff;--shadow:0 10px 32px rgba(17,65,86,.06)}*{box-sizing:border-box}body,html{margin:0;min-height:100%;font-family:DM Sans,system-ui,sans-serif;color:var(--text);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{text-decoration:none;color:inherit}.app{min-height:100vh}.topbar{height:70px;background:#fff;border-bottom:1px solid var(--border);justify-content:space-between;padding:0 28px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.brand,.topbar{display:flex;align-items:center}.brand{gap:12px;font-weight:800;letter-spacing:-.5px;font-family:Plus Jakarta Sans,sans-serif}.mark{width:37px;height:37px;border-radius:12px;background:linear-gradient(140deg,#0a85a5,#045672);color:#fff;display:grid;place-items:center}.brand small{display:block;color:#82a1ad;font-size:10px;font-weight:700;letter-spacing:1.4px;margin-top:2px}.topright{gap:12px}.topright,.user-pill{display:flex;align-items:center}.user-pill{gap:9px;font-size:13px;background:#f0f6f8;border-radius:50px;padding:7px 12px;color:#365c6e}.avatar{width:30px;height:30px;border-radius:50%;background:#d6ebec;color:#0a7395;display:grid;place-items:center;font-size:12px;font-weight:800}.shell{display:flex;min-height:calc(100vh - 70px)}.sidebar{width:248px;flex:none;background:#fff;border-right:1px solid var(--border);padding:22px 12px;display:flex;flex-direction:column;gap:5px}.navlabel{text-transform:uppercase;font-size:10px;color:#95a9b2;font-weight:800;letter-spacing:1.7px;padding:16px 15px 9px}.navitem{width:100%;display:flex;align-items:center;gap:12px;border:0;background:transparent;color:#68808b;padding:13px 14px;text-align:left;border-radius:11px;font-size:14px;font-weight:600;transition:.15s}.navitem:hover{background:#f2f8f9;color:var(--primary)}.navitem.active{background:#e7f4f4;color:#05698b}.navitem svg{width:18px;height:18px;stroke-width:1.9}.sidebarfoot{margin-top:auto;padding:16px;border-top:1px solid var(--border);font-size:11px;color:#90a5ae}.content{flex:1 1;min-width:0;max-width:1600px;padding:32px 38px;margin:0 auto;width:100%}.heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:27px}.eyebrow{color:#3f9ca6;text-transform:uppercase;font-weight:800;letter-spacing:2px;font-size:11px;margin-bottom:8px}.heading h1{font:800 clamp(24px,3vw,32px)/1.2 Plus Jakarta Sans,sans-serif;margin:0;letter-spacing:-1.3px}.heading p{color:var(--muted);font-size:14px;margin:8px 0 0}.btn{border:0;border-radius:11px;padding:11px 16px;font-weight:700;font-size:13px;display:inline-flex;align-items:center;gap:8px;justify-content:center;background:#fff;color:var(--text);transition:.15s;min-height:42px}.btn:hover:not(:disabled){transform:translateY(-1px);filter:brightness(.98)}.btn svg{width:17px;height:17px}.btn.primary{background:var(--primary)}.btn.dark{background:var(--deep)}.btn.outline{border:1px solid #d6e4e8;background:#fff;color:#326273}.btn.green{background:#e8f6e6;color:#348332}.btn.danger{background:#fff0ee;color:#c34d3e}.btn.small{min-height:32px;padding:7px 10px;font-size:12px}.btn.full{width:100%}.btn.ghost{background:transparent}.stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px;margin-bottom:24px}.stat{background:#fff;border:1px solid var(--border);border-radius:16px;padding:22px 22px 18px;box-shadow:var(--shadow)}.stathead{display:flex;justify-content:space-between;gap:12px;color:#778e9a;font-size:12px;font-weight:700}.stathead svg{width:19px;height:19px;color:#0b85a1}.stat strong{display:block;font:800 31px Plus Jakarta Sans,sans-serif;margin-top:12px;letter-spacing:-1px}.stat small{font-size:11px;color:#9aadb4}.grid2{display:grid;grid-template-columns:1.4fr 1fr;grid-gap:20px;gap:20px}.card{background:#fff;border:1px solid var(--border);border-radius:17px;padding:22px;box-shadow:var(--shadow);min-width:0}.card+.card{margin-top:0}.cardtop{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.card h2{margin:0;font:800 16px Plus Jakarta Sans,sans-serif;letter-spacing:-.4px}.muted{color:var(--muted)}.subtext{font-size:12px;color:#8aa0aa}.tablewrap{overflow:auto}.datatable{width:100%;border-collapse:collapse;text-align:left;font-size:13px}.datatable th{color:#92a5af;font-size:10px;letter-spacing:1.1px;text-transform:uppercase;padding:13px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.datatable td{padding:15px 12px;border-bottom:1px solid #edf1f3;vertical-align:middle}.datatable tr:last-child td{border-bottom:0}.datatable td strong{font-weight:800}.datatable td small{display:block;color:#9aacb5;margin-top:3px}.badge{display:inline-flex;padding:6px 9px;border-radius:8px;font-size:11px;font-weight:800;text-transform:capitalize;white-space:nowrap;background:#e8f4f8;color:#187c9b}.badge.accepted,.badge.available,.badge.closed,.badge.good{background:#eaf7e8;color:#368a40}.badge.borrowed,.badge.issued{background:#e8f3fb;color:#267eb3}.badge.pending,.badge.preparing{background:#fff4d9;color:#ac7c12}.badge.maintenance,.badge.quarantined,.badge.rejected{background:#ffebe8;color:#be5544}.badge.partially_returned{background:#f0eafb;color:#8253af}.listrow{display:flex;gap:12px;align-items:center;border-bottom:1px solid #eef2f4;padding:14px 0}.listrow:last-child{border:0}.toolicon{width:43px;height:43px;border-radius:11px;background:#eaf4f5;display:grid;place-items:center;color:#13869e;flex:none}.toolicon svg{width:21px}.rowflex{display:flex;gap:12px;align-items:center}.grow{flex:1 1;min-width:0}.right{text-align:right}.form{display:grid;grid-gap:17px;gap:17px}.field{display:grid;grid-gap:7px;gap:7px}.field label{font-weight:800;color:#425e6c;font-size:12px}.field input,.field select,.field textarea,.search{width:100%;border:1px solid #dce7eb;background:#fff;color:var(--text);padding:12px 13px;outline:none;border-radius:10px;font-size:13px;min-height:44px}.field input:focus,.field select:focus,.field textarea:focus,.search:focus{border-color:#0a91ad;box-shadow:0 0 0 3px #dff2f6}.field textarea{min-height:77px;resize:vertical}.fieldhelp{color:#91a5af;font-size:11px}.formrow{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.toolchoice{display:flex;align-items:center;gap:10px;border:1px solid #e2ebef;padding:12px;border-radius:11px;margin-bottom:8px}.toolchoice.selected{border-color:#7cc4b8;background:#f3fbf7}.toolchoice input[type=checkbox]{accent-color:var(--primary);width:17px;height:17px}.toolchoice small{display:block;color:#8ba2ae;margin-top:2px}.toolchoice .qty{width:56px;padding:8px;border:1px solid #dae8ec;border-radius:8px;text-align:center}.notice{border-radius:10px;background:#eaf6f9;color:#32697c;font-size:12px;padding:13px 14px;display:flex;align-items:center;gap:8px;margin:13px 0}.notice.warn{background:#fff5e1;color:#9d7627}.notice.error{background:#fff0ef;color:#b54239}.notice.success{background:#e9f8ed;color:#358a54}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.empty{padding:38px 15px;text-align:center;color:#8da2ad}.empty svg{width:35px;height:35px;display:block;margin:0 auto 12px;opacity:.65}.empty strong{display:block;color:#516f7e}.empty p,.emptycompact{font-size:12px}.emptycompact{padding:14px;color:#95a6af}.loginpage{display:grid;grid-template-columns:1fr 1fr;min-height:100vh;background:#fff}.loginhero{background:linear-gradient(150deg,#065d7f,#0b87a5 55%,#167da0);padding:50px clamp(35px,6vw,95px);color:#fff;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.loginhero:after{content:"";position:absolute;width:510px;height:510px;border:90px solid rgba(255,255,255,.065);border-radius:50%;right:-260px;bottom:-310px}.loginhero h1{font:800 clamp(38px,4vw,60px)/1.14 Plus Jakarta Sans,sans-serif;max-width:620px;letter-spacing:-2px}.loginhero p{font-size:15px;color:#b9e0ec;max-width:400px;line-height:1.8}.loginside{display:flex;align-items:center;justify-content:center;padding:34px}.loginbox{width:100%;max-width:390px}.loginbox h2{font:800 29px Plus Jakarta Sans,sans-serif;margin:0 0 9px;letter-spacing:-1px}.loginbox>p{margin:0 0 30px;font-size:14px;color:#8195a1;line-height:1.7}.demo{background:#f5f9fa;padding:15px;border-radius:12px;margin-top:25px;font-size:12px;color:#738b98;line-height:2}.demo strong{color:#3d667b}.hamburger{border:0;background:#eaf4f6;border-radius:9px;width:39px;height:39px;align-items:center;justify-content:center;color:#176f87}.hamburger,.overlay{display:none}.section{display:grid;grid-gap:18px;gap:18px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:18px}.toolbar .search{flex:1 1;min-width:180px}.qrbox{padding:15px;background:#fff;border:1px solid #dce8ec;border-radius:12px;display:inline-flex;flex-direction:column;align-items:center;gap:9px}.qrlabel{font-weight:800;font-size:12px;color:#124e66}.modalback{position:fixed;inset:0;background:rgba(10,42,58,.48);display:grid;place-items:center;z-index:80;padding:15px}.modal{background:#fff;border-radius:18px;max-width:520px;width:100%;padding:23px;max-height:90vh;overflow:auto;box-shadow:0 20px 100px #062b3d33}.modalhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.modalhead h2{font:800 18px Plus Jakarta Sans,sans-serif;margin:0}.camera{width:100%;max-height:320px;border-radius:12px;background:#112a32}.quick{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px}.quickbutton{border:1px solid var(--border);background:#fff;border-radius:13px;padding:16px;text-align:left;display:grid;grid-gap:11px;gap:11px;color:var(--deep);font-weight:700;font-size:13px}.quickbutton svg{color:var(--primary);width:24px;height:24px}.mobileonly{display:none}.qrprint{display:flex;gap:18px;align-items:center;justify-content:center;padding:20px;border:1px dashed #b9cbd5;border-radius:12px;background:#fff}.qrprint strong{display:block;font-size:16px}.qrprint small{display:block;margin-top:4px;color:#788b95}.mobile-header{display:none}@media(max-width:1020px){.sidebar{width:210px}.content{padding:25px}.stats{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}}@media(max-width:760px){.topbar{height:62px;padding:0 16px}.hamburger{display:flex}.sidebar{position:fixed;left:0;top:62px;bottom:0;width:255px;z-index:60;transform:translateX(-105%);transition:transform .2s;box-shadow:10px 0 30px #092c3a12}.sidebar.open{transform:none}.overlay.open{display:block;position:fixed;inset:62px 0 0;background:#0a283b55;z-index:50}.content{padding:22px 16px 96px}.user-pill{padding:5px}.user-pill .username{display:none}.heading{margin-bottom:18px}.heading h1{font-size:24px}.heading .btn,.heading p{font-size:12px}.stats{gap:10px;margin-bottom:16px}.stat{padding:15px}.stat strong{font-size:26px}.stathead{font-size:11px}.stathead svg{width:16px}.card{padding:17px;border-radius:14px}.grid2{gap:13px}.loginpage{grid-template-columns:1fr}.loginhero{min-height:180px;padding:24px;justify-content:start}.loginhero h1{font-size:26px;margin:23px 0 5px}.loginhero p{font-size:12px;line-height:1.5}.loginhero .herofoot{display:none}.loginside{align-items:start;padding:34px 23px}.loginbox h2{font-size:26px}.formrow{grid-template-columns:1fr}.quick{gap:9px}.quickbutton{padding:12px;font-size:11px}.quickbutton svg{width:20px}.datatable td,.datatable th{padding:11px 8px;font-size:12px}.mobileonly{display:block}}@media print{body{background:#fff}.btn,.heading,.modalhead,.no-print,.sidebar,.topbar{display:none!important}.modalback{position:static;background:#fff;padding:0}.modal{box-shadow:none;max-width:none;max-height:none}.qrprint{border:1px solid #111}.content{padding:0}}:root{--primary:#4471ac;--deep:#31659a;--green:#159c40;--bg:#edf2f8;--text:#34465b;--muted:#7e8fa2;--border:#dee6f0;--shadow:0 8px 26px rgba(52,81,121,.075)}.mark{background:linear-gradient(145deg,#4a83bd,#286ca8)}.brand small{color:#7894ab}.card,.sidebar,.stat,.topbar{background:#fff}.user-pill{background:#edf2f8;color:#456d9e}.avatar{background:#e3edf9;color:#416eaa}.navlabel{color:#9aa7b6}.navitem{color:#748398}.navitem:hover{background:#eff4fc;color:#376ba8}.navitem.active{background:#e7effb;color:#366caa;border-left:3px solid #4471ac;padding-left:11px}.eyebrow,.quickbutton svg,.stathead svg{color:#4471ac}.toolicon{background:#e7f0fa;color:#4778b2}.btn.primary{background:#159c40;color:#fff}.btn.primary:hover:not(:disabled){background:#128537}.btn.dark{background:#4471ac;color:#fff}.btn.outline{border-color:#d3dfed;color:#426b9a}.btn.green{background:#e6f6ea;color:#19863f}.quickbutton:hover{border-color:#a9bfdb;background:#f7faff}.datatable thead th{background:#4471ac;color:#fff;border-bottom:0}.datatable thead th:first-child{border-top-left-radius:7px}.datatable thead th:last-child{border-top-right-radius:7px}.datatable tbody tr:nth-child(2n){background:#fafbfd}.datatable tbody tr:hover{background:#f0f5fc}.field input:focus,.field select:focus,.field textarea:focus,.search:focus{border-color:#477bb3;box-shadow:0 0 0 3px #e2eefc}.toolchoice.selected{border-color:#82b3df;background:#f3f7fd}.loginhero{background:linear-gradient(150deg,#316198,#447bb1 65%,#487daf)}.loginhero p{color:#e3ebf7}.loginhero .eyebrow{color:#e4f5ee!important}.notice{background:#eaf2fc;color:#35639d}.badge{background:#e6eef9;color:#386aa9}.badge.accepted,.badge.available,.badge.closed,.badge.good{background:#e6f6ea;color:#19883e}@media(max-width:760px){.navitem.active{padding-left:11px}}.brand-logo{gap:14px;letter-spacing:normal}.gmf-logo{display:block;width:184px;height:auto;object-fit:contain;flex-shrink:0}.brand-product{font:800 10px Plus Jakarta Sans,sans-serif;letter-spacing:1.15px;color:#7b8da2;white-space:nowrap;border-left:1px solid #dbe4ed;padding-left:13px}.loginhero .brand-logo{align-self:flex-start;background:#fff;padding:10px 14px;border-radius:13px;box-shadow:0 10px 32px rgba(1,34,81,.1)}.loginhero .gmf-logo{width:230px}.loginhero .brand-product{color:#4b6f9b}.scan-guide{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.scan-guide>div{width:min(54%,200px);aspect-ratio:1;border:3px solid #49d4a0;border-radius:16px;box-shadow:0 0 0 999px rgba(0,20,37,.13);position:relative}.camera{display:block;min-height:210px;object-fit:cover}@media(max-width:760px){.topbar .gmf-logo{width:137px}.topbar .brand-product{font-size:8px;letter-spacing:.3px;padding-left:7px}.brand-logo{gap:7px}.loginhero .gmf-logo{width:172px}.loginhero .brand-product{font-size:8px;letter-spacing:.5px}.loginhero .brand-logo{padding:7px 8px}}@media(max-width:390px){.topbar .brand-product{display:none}}.profile-link{border:0;cursor:pointer;font:inherit;display:flex;align-items:center;gap:8px}.profile-link:hover{box-shadow:0 0 0 2px #d1dfef}.account-edit{border:1px solid #dbe6f2;background:#f8fbff;border-radius:14px;padding:18px;margin-top:20px;max-width:780px}.account-edit h3{margin:0;color:#2b5587;font-size:15px}.account-edit .formrow{margin-top:12px}.account-edit .actions{flex-wrap:wrap}@media(max-width:760px){.datatable .actions{display:flex;gap:6px;flex-wrap:wrap}.datatable .actions .btn{font-size:10px;padding:7px}}.label-print-only{display:none}@media print{@page{margin:0}body,html{margin:0!important;padding:0!important;background:#fff!important;height:auto!important;overflow:visible!important}body .app,body .loginpage{display:none!important}body .label-print-only{display:block!important;box-sizing:border-box!important;margin:0!important;padding:3mm!important;width:100%!important;background:#fff!important}.print-label{display:flex;align-items:center;gap:3mm;width:100mm;min-height:54mm;padding:3mm;box-sizing:border-box;border:.3mm dashed #bacbd5;border-radius:3mm;background:#fff!important;color:#34465b!important;break-inside:avoid;page-break-inside:avoid;print-color-adjust:exact;-webkit-print-color-adjust:exact}.print-label svg{display:block!important;width:43mm!important;height:43mm!important;min-width:43mm!important;min-height:43mm!important;flex:none!important}.print-label-details{display:flex;flex:1 1;min-width:0;flex-direction:column;justify-content:center;gap:1.8mm;font-family:Arial,Helvetica,sans-serif;font-size:9pt;line-height:1.2;overflow-wrap:anywhere}.print-label-details .print-label-brand{font-size:10pt;font-weight:700;margin-bottom:1mm}.print-label-details .print-label-id{font-size:11pt;font-weight:750;line-height:1.17}.print-label-details .print-label-name{font-size:9pt}}.push-settings{margin-top:18px}.push-settings .push-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px}.push-settings .push-state{display:inline-flex;align-items:center;padding:5px 10px;background:#edf3fa;border-radius:99px;font-size:12px;font-weight:700;color:#4771a4}@media print{.push-settings{display:none!important}}.notification-shell,.notification-trigger{position:relative;display:flex;align-items:center}.notification-trigger{border:1px solid #e0e9f2;background:#f6f9fd;border-radius:12px;color:#426f9e;justify-content:center;width:40px;height:40px;flex-shrink:0}.notification-trigger.selected,.notification-trigger:hover{background:#e7effb;border-color:#bbd0e9}.notification-badge{position:absolute;top:-7px;right:-9px;min-width:19px;height:19px;padding:0 4px;border-radius:999px;background:#df4f50;color:white;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;line-height:1;box-shadow:0 0 0 2px white}.notification-panel{position:absolute;right:0;top:calc(100% + 12px);width:min(410px,calc(100vw - 24px));max-height:min(600px,calc(100dvh - 88px));display:flex;flex-direction:column;border:1px solid #dce6f1;border-radius:16px;background:#fff;box-shadow:0 18px 60px rgba(24,58,93,.18);z-index:100;overflow:hidden}.notification-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px;border-bottom:1px solid #e4ebf3}.notification-panel-head>div{display:flex;flex-direction:column;gap:3px}.notification-panel-head strong{font-size:16px;color:#2f496a}.notification-panel-head small{font-size:12px;color:#7589a2}.notification-panel-head .btn{font-size:11px;min-height:30px;padding:6px 8px;color:#3a6c9c}.notification-items{overflow-y:auto;overscroll-behavior:contain;flex:1 1}.notification-item{width:100%;text-align:left;border:0;border-bottom:1px solid #edf1f6;background:#fff;display:flex;gap:10px;align-items:flex-start;padding:14px 16px;color:#38516f}.notification-item:hover{background:#f6f9fd}.notification-item.unread{background:#f1f7ff}.notification-item.unread:hover{background:#e8f2ff}.notification-item-icon{background:#e3eefb;color:#4778b2;border-radius:9px;width:32px;height:32px;flex:none;display:flex;align-items:center;justify-content:center}.notification-item-body{display:flex;flex:1 1;min-width:0;flex-direction:column;gap:5px;overflow-wrap:anywhere}.notification-item-body strong{font-size:12px;line-height:1.3}.notification-item-body>span{font-size:12px;color:#64798d;line-height:1.45}.notification-item-body>small{color:#9aabba;font-size:11px}.notification-dot{width:8px;height:8px;background:#447fcd;border-radius:50%;flex:none;margin-top:5px}.notification-empty{padding:35px 24px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;text-align:center;color:#8498ae;font-size:12px}.notification-empty strong{color:#465f7d;font-size:13px}.notification-empty span{max-width:230px;line-height:1.6}.notification-panel-foot{background:#f7f9fc;color:#97a7b9;font-size:10px;text-align:center;padding:9px 12px;border-top:1px solid #edf1f7}@media(max-width:760px){.notification-panel{position:fixed;top:70px;right:12px;width:calc(100vw - 24px);max-height:min(630px,calc(100dvh - 86px))}.notification-trigger{width:36px;height:36px}}@media print{.notification-panel,.notification-shell{display:none!important}}