:root{--brand:#0E9F6E;--brand-dark:#057A53;--brand-mid:#12B981;--brand-soft:#E7F7F0;--brand-ink:#064E38;--canvas:#F5F8FA;--card:#FFFFFF;--ink:#16233A;--muted:#5D6B82;--line:#DFE7EE;--line-soft:#EDF2F6;--green:#0E9F6E;--green-bg:#E7F7F0;--amber:#B45309;--amber-bg:#FEF3D8;--red:#DC2626;--red-bg:#FDEAEA;--blue:#2563EB;--blue-bg:#E8F0FE;--focus:#F5B822;--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;--sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--r-sm:8px;--r-md:12px;--r-lg:16px;--shadow-sm:0 1px 2px rgba(22,35,58,.06),0 1px 3px rgba(22,35,58,.08);--shadow-md:0 4px 14px rgba(22,35,58,.10);--shadow-lg:0 18px 50px rgba(22,35,58,.22)}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:var(--sans);color:var(--ink);background:var(--canvas);font-size:14px;line-height:1.5}button{font-family:inherit;font-size:inherit;cursor:pointer}a{color:var(--brand-dark)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}.mono{font-family:var(--mono)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1100px 550px at 15% -10%,#DDF3EA 0,transparent 60%),radial-gradient(900px 500px at 105% 110%,#FDF0D2 0,transparent 55%),var(--canvas)}.login-card{background:var(--card);border-radius:var(--r-lg);max-width:440px;width:100%;overflow:hidden;box-shadow:var(--shadow-lg);border:1px solid var(--line)}.login-head{padding:30px 34px 22px;border-bottom:1px solid var(--line-soft)}.wordmark{font-size:30px;font-weight:800;letter-spacing:-1.2px;color:var(--ink)}.wordmark span{color:var(--brand)}.login-head p{margin:6px 0 0;color:var(--muted);font-size:13.5px}.login-body{padding:24px 34px 32px}.login-foot{padding:14px 34px;background:var(--canvas);border-top:1px solid var(--line-soft);font-size:12px;color:var(--muted)}.topbar{background:var(--card);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:10px 18px;box-shadow:var(--shadow-sm);position:relative;z-index:5}.topbar .wordmark{font-size:21px}.top-spacer{flex:1 1}.userloc{font-size:13px}.icon-btn{background:var(--ink);color:#fff;border:none;border-radius:var(--r-sm);padding:7px 12px}.icon-btn:hover{background:var(--brand-dark)}.shell{display:grid;grid-template-columns:232px 1fr;min-height:calc(100vh - 55px);position:relative}nav.side{background:var(--card);border-right:1px solid var(--line);padding:6px 10px 40px;overflow:auto}.nav-group{margin-bottom:4px}.navsec-t{color:var(--muted);font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:14px 8px 6px}.nav-link{display:block;color:var(--ink);text-decoration:none;padding:7px 10px;font-size:13.5px;border-radius:var(--r-sm);margin-bottom:1px}.nav-link:hover{background:var(--brand-soft);color:var(--brand-ink)}.nav-link.active{background:var(--brand);color:#fff;font-weight:600;box-shadow:var(--shadow-sm)}.nav-link.grow{flex:1 1}.nav-parent-row{display:flex;align-items:center;gap:2px}.nav-caret{background:none;border:none;color:var(--muted);padding:6px 8px;border-radius:var(--r-sm);line-height:1;cursor:pointer}.nav-caret:hover{background:var(--brand-soft);color:var(--brand-ink)}.nav-caret .caret{display:inline-block;transition:transform .15s;font-size:11px}.nav-parent:not(.open) .nav-caret .caret{transform:rotate(-90deg)}.nav-subs{margin:1px 0 4px 10px;border-left:2px solid var(--line-soft);padding-left:4px}.nav-link.sub{padding:6px 10px;font-size:12.5px;color:var(--muted)}.nav-link.sub:hover{color:var(--brand-ink)}.nav-link.sub.active{background:var(--brand);color:#fff;font-weight:600}main.content{padding:18px 22px 60px;overflow:auto}.hamburger{display:none;font-size:20px;line-height:1;padding:4px 10px;border-radius:var(--r-sm);cursor:pointer;color:var(--ink)}.hamburger:hover{background:var(--brand-soft)}.nav-scrim{display:none}@media (max-width:860px){.hamburger{display:inline-flex;align-items:center}.shell{grid-template-columns:1fr}nav.side{position:fixed;left:0;top:55px;bottom:0;width:264px;z-index:40;transform:translateX(-100%);transition:transform .2s ease;box-shadow:var(--shadow-lg)}#navToggle:checked~.shell nav.side{transform:none}#navToggle:checked~.shell .nav-scrim{display:block;position:fixed;inset:55px 0 0 0;z-index:39;background:rgba(22,35,58,.35)}}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);margin-bottom:16px;overflow:hidden;box-shadow:var(--shadow-sm)}.panel-h{padding:11px 16px;font-weight:700;font-size:14px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line-soft)}.panel-h:before{content:"";width:8px;height:8px;border-radius:3px;background:var(--brand);flex:0 0 auto}.panel-b{padding:16px}.field{margin-bottom:14px}label.fl{display:block;font-size:12px;color:var(--muted);margin-bottom:5px;font-weight:600}input[type=date],input[type=number],input[type=password],input[type=text],select,textarea{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:13.5px;font-family:inherit;background:var(--card);color:var(--ink);transition:border-color .12s,box-shadow .12s}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);outline:none}.btn{background:var(--brand);color:#fff;border:none;border-radius:999px;padding:10px 20px;font-weight:600;transition:.15s;box-shadow:var(--shadow-sm)}.btn:hover{background:var(--brand-dark);transform:translateY(-1px)}.btn.full{width:100%}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.stat:after{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--brand),var(--brand-mid))}.stat .n{font-size:28px;font-weight:800;line-height:1;letter-spacing:-.5px}.stat .l{color:var(--muted);font-size:12.5px;margin-top:6px}.grid4{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}@media (max-width:1000px){.grid4{grid-template-columns:1fr 1fr}}.notice{background:var(--blue-bg);border:1px solid #c6d9f8;border-radius:var(--r-md);padding:11px 14px;font-size:13px;margin-bottom:12px}.notice.err{background:var(--red-bg);border-color:#F3C1C1}.notice.brand{background:var(--brand-soft);border-color:#BBE5D4}.h1{font-size:20px;margin:2px 0 6px;font-weight:800;letter-spacing:-.3px}.crumb{font-size:12px;margin-bottom:12px}.crumb,.empty{color:var(--muted)}.empty{font-style:italic;padding:20px;text-align:center}table{width:100%;border-collapse:collapse;font-size:13px}thead th{text-align:left;background:var(--canvas);color:var(--muted);font-size:11.5px;padding:9px 12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line)}tbody td{padding:9px 12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}tbody tr:nth-child(2n){background:#FAFCFD}tbody tr:hover{background:var(--brand-soft)}.flag{display:inline-block;padding:2px 10px;border-radius:999px;font-size:11.5px;font-weight:600;margin-right:4px}.flag.red{background:var(--red-bg);color:var(--red)}.flag.amber{background:var(--amber-bg);color:var(--amber)}.flag.green{background:var(--green-bg);color:var(--brand-dark)}.btn.sm{padding:5px 13px;font-size:12.5px}.btn.sec{background:var(--card);color:var(--brand-dark);border:1px solid var(--brand)}.btn.sec:hover{background:var(--brand-soft);transform:none}.row{display:flex;gap:12px;flex-wrap:wrap}.row>.field{flex:1 1;min-width:150px}.panel-h .hint{font-weight:500;color:var(--muted);font-size:12px}.pt-banner{background:var(--card);border:1px solid var(--line);border-left:5px solid var(--brand);border-radius:var(--r-md);padding:11px 16px;margin-bottom:16px;display:flex;align-items:center;gap:20px;flex-wrap:wrap;box-shadow:var(--shadow-sm)}.pt-banner .nm{font-size:16px;font-weight:700}.pt-banner .fld{font-size:12.5px}.pt-banner .fld span:first-child{display:block;color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em}.pt-banner .alerts{margin-left:auto;display:flex;gap:5px;flex-wrap:wrap;align-items:center}.status{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:3px 10px;border-radius:999px}.status:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.st-collected,.st-submitted{background:var(--blue-bg);color:var(--blue)}.st-received{background:#EAE8FB;color:#5B4FC7}.st-processing{background:var(--amber-bg);color:var(--amber)}.st-resulted{background:var(--green-bg);color:var(--brand-dark)}.st-authorised{background:#D3F1E3;color:#05603F}.st-cancelled{background:var(--red-bg);color:var(--red)}.chip{background:var(--line-soft);border-radius:999px;padding:2px 9px;font-size:11px;font-family:var(--mono);margin-right:3px}.chip,.subtab{color:var(--muted)}.subtab{border:1px solid var(--line);background:var(--card);padding:6px 15px;font-size:12.5px;border-radius:999px}.subtab:hover{border-color:var(--brand);color:var(--brand-dark)}.subtab.active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}.btnbar{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:12px 16px;display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;box-shadow:var(--shadow-sm)}.panel-h .right{margin-left:auto;display:flex;gap:8px}.test-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:8px;gap:8px}.test-card{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;cursor:pointer;transition:.12s;background:var(--card)}.test-card.sel,.test-card:hover{border-color:var(--brand)}.test-card.sel{background:var(--brand-soft);box-shadow:0 0 0 2px var(--brand-soft)}.test-card b{display:block;font-size:13px}.test-card small{color:var(--muted);font-size:11.5px}.test-card input{margin-top:2px}input[type=checkbox]{width:auto;accent-color:var(--brand)}label.check{display:inline-flex;gap:8px;align-items:center;font-size:13px;margin:6px 18px 0 0}.labels-wrap{display:flex;gap:12px;flex-wrap:wrap}.label-print{border:2px dashed var(--muted);border-radius:10px;padding:13px;background:#fff;width:330px;font-family:var(--mono);color:#000}.lbl-big{font-size:14px;font-weight:700}.lbl-row{display:flex;justify-content:space-between;font-size:11.5px;margin:2px 0}.barcode{height:40px;display:flex;align-items:stretch;gap:1px;margin:8px 0}.barcode i{display:block;background:#000}@media print{body{background:#fff}.btnbar,.no-print,.pt-banner,.topbar,nav.side{display:none!important}.shell{display:block}main.content{padding:0}.label-print{border-color:#000;page-break-inside:avoid;break-inside:avoid}}.res-H{color:var(--red)}.res-H,.res-L{font-weight:700}.res-L{color:var(--amber)}.res-HH,.res-LL{color:#fff;background:var(--red);padding:0 6px;border-radius:6px;font-weight:700}.res-N{color:var(--brand-dark);font-weight:600}.pipeline{display:flex;align-items:center;gap:4px;flex-wrap:wrap;font-size:11px}.pstep{padding:3px 10px;border-radius:999px;background:var(--line-soft);color:var(--muted)}.pstep.done{background:var(--green-bg);color:var(--brand-dark)}.pstep.now{background:var(--brand);color:#fff}.parr{color:var(--muted)}.btn.ok{background:var(--green)}.btn.warn{background:#D97706}.btn.danger{background:var(--red)}.mkt{min-height:100vh;background:radial-gradient(1100px 550px at 10% -10%,#DDF3EA 0,transparent 60%),radial-gradient(900px 500px at 105% 30%,#FDF0D2 0,transparent 55%),var(--canvas)}.mkt-nav{display:flex;align-items:center;justify-content:space-between;max-width:1020px;margin:0 auto;padding:22px 24px}.mkt-hero{max-width:780px;margin:0 auto;text-align:center;padding:56px 24px 40px}.mkt-badge{display:inline-block;background:var(--brand-soft);color:var(--brand-dark);font-weight:700;font-size:12px;letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:6px 16px;margin-bottom:18px}.mkt-hero h1{font-size:clamp(30px,5vw,52px);font-weight:800;letter-spacing:-1.5px;line-height:1.06;margin:0 0 18px}.mkt-hero p{color:var(--muted);font-size:17px;max-width:600px;margin:0 auto 26px}.mkt-cta{gap:12px;margin-bottom:34px}.mkt-cta,.mkt-pipeline{display:flex;justify-content:center;flex-wrap:wrap}.mkt-pipeline{gap:4px;font-size:12px}.mkt-features{max-width:1020px;margin:24px auto;padding:0 24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:16px;gap:16px}.mkt-card{padding:22px;margin:0}.mkt-card .mkt-ico{font-size:26px;margin-bottom:10px}.mkt-card b{display:block;font-size:15.5px;margin-bottom:6px}.mkt-card p{color:var(--muted);font-size:13.5px;margin:0}.mkt-strip{max-width:1020px;margin:30px auto;padding:26px 24px;display:flex;gap:40px;justify-content:center;flex-wrap:wrap;background:var(--ink);border-radius:var(--r-lg);color:#fff}.mkt-strip div{text-align:center}.mkt-strip b{display:block;font-size:30px;font-weight:800;color:var(--brand-mid)}.mkt-strip span{font-size:12.5px;opacity:.8}.mkt-foot{max-width:1020px;margin:0 auto;padding:34px 24px 44px;text-align:center;color:var(--muted);font-size:13px}.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:12px;gap:12px}.hub-card{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:16px 18px;text-decoration:none;box-shadow:var(--shadow-sm);transition:.12s}.hub-card:hover{border-color:var(--brand);transform:translateY(-1px);box-shadow:var(--shadow-md)}.hub-card b{display:block;color:var(--ink);font-size:14.5px;margin-bottom:4px}.hub-card small{color:var(--muted);font-size:12px}a.btn,a.btn:hover{text-decoration:none;display:inline-block}.panel-b.flush{padding:0}.panel-b,.panel-b.flush{overflow-x:auto}.muted{color:var(--muted)}.nowrap{white-space:nowrap}.pre{white-space:pre-wrap}.right-txt{text-align:right}.center-txt{text-align:center}.mt-14{margin-top:14px}.mt-16{margin-top:16px}.mb-14{margin-bottom:14px}.mb-16{margin-bottom:16px}.w-auto{width:auto}.narrow{max-width:480px}.toolbar{gap:8px;flex-wrap:wrap}.cell-actions,.toolbar{display:flex;align-items:center}.cell-actions{gap:6px}.cell-actions form{margin:0}.notice.ok{background:var(--green-bg);border-color:#BBE5D4;color:var(--brand-dark)}@media (max-width:760px){main.content{padding:14px 14px 48px}.row>.field{min-width:100%}.grid4{grid-template-columns:1fr 1fr}}