:root{--brand-green:#427E42;--brand-green-l:#BADEA2;--brand-blue:#364E7E;--brand-blue-d:#27395E;--ink:#1B2540;--ink2:#44506B;--muted:#66718B;--paper:#F4F7F2;--card:#FFFFFF;--rule:#E4EBDF;--rule2:#D2DDCA;--hover:#F1F6EE;--green:#2F6B30;--green-bg:#E4F2DA;--red:#B3402F;--red-bg:#F9E9E5;--amber:#9A6B0B;--amber-bg:#F7EFD9;--orange:#B5560D;--orange-bg:#FBE9DA;--blue:#364E7E;--blue-bg:#E5EAF6;--sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--cond:var(--sans);--r:12px;--r-sm:8px;--shadow-sm:0 1px 2px rgba(27,37,64,.05),0 2px 8px rgba(27,37,64,.04);--shadow-md:0 4px 16px rgba(27,37,64,.1),0 1px 3px rgba(27,37,64,.06)}*{box-sizing:border-box;margin:0}body{min-height:100vh;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}::selection{background:#badea2aa}body:before{content:"";position:fixed;top:0;left:0;right:0;height:3px;z-index:100;background:linear-gradient(90deg,var(--brand-green) 0%,var(--brand-green-l) 50%,var(--brand-blue) 100%)}.brand{display:flex;align-items:center;gap:12px;font-family:var(--sans);font-weight:700;font-size:19px;letter-spacing:-.01em;text-decoration:none;color:var(--brand-blue)}.brand small{display:block;font-family:var(--sans);font-weight:400;font-size:12px;letter-spacing:0;color:var(--muted)}.brandlogo{display:block;flex-shrink:0}.brandtext{padding-left:12px;border-left:2px solid var(--brand-green-l);line-height:1.2}.loginbrand{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:24px}.loginbrand .brand{justify-content:center}.loginbrand .brandtext{border-left:none;padding-left:0;font-size:22px}.uploadbrand{margin-bottom:16px}.app{display:flex;min-height:100vh}.sidenav{width:260px;flex-shrink:0;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:26px 14px 16px;background:#fff;border-right:1px solid var(--rule)}.sidenav .brand{padding:0 8px 18px;margin-bottom:6px;border-bottom:1px solid var(--rule)}.sidenav .brand small{display:none}.sidenav nav{flex:1;overflow-y:auto;padding-top:6px;display:flex;flex-direction:column;gap:2px}.navlabel{font-family:var(--sans);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:0 10px;margin:12px 0 8px}.navbtn{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;font-family:var(--sans);font-size:14px;font-weight:500;color:var(--ink2);background:none;border:none;border-radius:var(--r-sm);padding:9px 10px;cursor:pointer;text-decoration:none;transition:background .15s ease,color .15s ease}.navlbl{display:flex;align-items:center;gap:11px}.navico{flex-shrink:0;color:var(--muted);transition:color .15s ease}.navbtn:hover{background:var(--hover);color:var(--ink)}.navbtn:hover .navico{color:var(--brand-green)}.navbtn.on{background:var(--green-bg);color:var(--green);font-weight:600}.navbtn.on .navico{color:var(--green)}.count{font-family:var(--sans);font-weight:600;font-size:11px;background:var(--red);color:#fff;border-radius:999px;padding:1px 8px;min-width:20px;text-align:center}.sidefoot{margin-top:12px;padding:14px 8px 0;border-top:1px solid var(--rule);display:flex;flex-direction:column;gap:8px}.sidefoot .name{font-weight:600;color:var(--ink);text-decoration:none;font-size:14px}.sidefoot .name:hover{color:var(--brand-blue)}.sidefoot .btn{width:100%;justify-content:center}.rolechip{align-self:flex-start;font-family:var(--sans);font-weight:600;font-size:11px;letter-spacing:.04em;text-transform:capitalize;background:var(--green-bg);color:var(--green);padding:2px 10px;border-radius:999px}.main{flex:1;min-width:0;padding:38px 44px 80px}.main>*{max-width:1120px}h1.page{font-family:var(--sans);font-weight:700;font-size:27px;letter-spacing:-.02em;margin-bottom:6px;color:var(--ink)}.pagesub{color:var(--muted);margin-bottom:24px;max-width:70ch}.card{background:var(--card);border:1px solid var(--rule);border-radius:var(--r);box-shadow:var(--shadow-sm);margin-bottom:20px}.card-h{display:flex;align-items:baseline;gap:10px;padding:14px 20px;border-bottom:1px solid var(--rule);border-radius:var(--r) var(--r) 0 0}.card-h h2{font-family:var(--sans);font-weight:600;font-size:15.5px;letter-spacing:-.005em;color:var(--ink)}.card-h .hint{font-family:var(--sans);font-size:12.5px;color:var(--muted);margin-left:auto}.card-b{padding:20px}.tablewrap{overflow-x:auto}table.ledger{border-collapse:collapse;width:100%}.ledger th{font-family:var(--sans);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);text-align:left;font-weight:600;padding:11px 18px;background:#f8faf6;border-bottom:1px solid var(--rule)}.ledger td{padding:13px 18px;border-bottom:1px solid #EEF2EA;vertical-align:top}.ledger tr:last-child td{border-bottom:none}.ledger tr.rowbtn{cursor:pointer}.ledger tr.rowbtn td{transition:background .12s ease}.ledger tr.rowbtn:hover td{background:#f5f9f2}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}.strong{font-weight:600}.dim{color:var(--muted)}.right{text-align:right}.chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-weight:600;font-size:11.5px;letter-spacing:.01em;padding:3px 10px;border-radius:999px;white-space:nowrap}.chip:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.chip.green{color:var(--green);background:var(--green-bg)}.chip.red{color:var(--red);background:var(--red-bg)}.chip.amber{color:var(--amber);background:var(--amber-bg)}.chip.orange{color:var(--orange);background:var(--orange-bg)}.chip.blue{color:var(--blue);background:var(--blue-bg)}.chip.gray{color:var(--ink2);background:#ecf0f5}.stamp{display:inline-block;font-family:var(--sans);font-weight:800;font-size:19px;letter-spacing:.12em;text-transform:uppercase;padding:4px 14px;border:3px solid currentColor;border-radius:8px;transform:rotate(-4deg);opacity:.9}.stamp.green{color:var(--green)}.stamp.red{color:var(--red)}.stamp.amber{color:var(--amber)}.stamp.blue{color:var(--blue)}.btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-weight:600;font-size:13.5px;padding:9px 16px;border:1px solid var(--brand-blue);background:var(--brand-blue);color:#fff;border-radius:var(--r-sm);cursor:pointer;box-shadow:0 1px 2px #1b25401f;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .05s ease}.btn:hover{background:var(--brand-blue-d);border-color:var(--brand-blue-d)}.btn:active{transform:translateY(1px)}.btn.ghost{background:#fff;color:var(--ink);border-color:var(--rule2);box-shadow:none}.btn.ghost:hover{background:var(--hover);border-color:#bfcfb4}.btn.green{background:var(--brand-green);border-color:var(--brand-green);color:#fff}.btn.green:hover{background:#356a35;border-color:#356a35}.btn.red{background:var(--red);border-color:var(--red);color:#fff}.btn.red:hover{background:#9a3526;border-color:#9a3526}.btn.sm{font-size:12.5px;padding:5px 11px;border-radius:7px}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,.navbtn:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.menu-wrap{position:relative;display:inline-flex}.menu-caret{border-left:1px solid rgba(255,255,255,.25)}.menu{position:absolute;top:calc(100% + 6px);right:0;min-width:170px;background:var(--card);border:1px solid var(--rule);border-radius:10px;box-shadow:var(--shadow-md);padding:4px;z-index:30}.menu button{display:block;width:100%;text-align:left;font-family:var(--sans);font-size:13.5px;background:none;border:none;border-radius:6px;padding:8px 12px;cursor:pointer;color:var(--ink)}.menu button:hover{background:var(--hover)}.menu button.red{color:var(--red)}.typeahead{position:relative}.typeahead-list{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:260px;overflow-y:auto;background:var(--card);border:1px solid var(--rule);border-radius:10px;box-shadow:var(--shadow-md);padding:4px;z-index:30}.typeahead-item{padding:8px 10px;border-radius:6px;font-family:var(--sans);font-size:14px;cursor:pointer;color:var(--ink)}.typeahead-item:hover,.typeahead-item.active{background:var(--hover)}.typeahead-empty{padding:8px 10px;font-family:var(--sans);font-size:13.5px;color:var(--muted)}label.f{display:block;font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--ink2);margin:14px 0 5px}input.f,select.f,textarea.f{width:100%;font-family:var(--sans);font-size:14px;padding:9px 12px;border:1px solid var(--rule2);border-radius:var(--r-sm);background:#fff;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}input.f:hover,select.f:hover,textarea.f:hover{border-color:#bfcfb4}input.f:focus,select.f:focus,textarea.f:focus{border-color:var(--brand-blue);box-shadow:0 0 0 3px #364e7e24}textarea.f{resize:vertical}.inputgroup{display:inline-flex;flex-direction:column;gap:3px}.inputgroup .lbl{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--muted)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px;margin-bottom:20px}.stat{background:var(--card);border:1px solid var(--rule);border-radius:var(--r);box-shadow:var(--shadow-sm);padding:16px 18px;min-width:0;container-type:inline-size;position:relative;overflow:hidden}.stat:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--brand-blue);opacity:.85}.stat.clickable{cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.stat.clickable:hover{border-color:var(--brand-green-l);box-shadow:var(--shadow-md);transform:translateY(-1px)}.stat.active{border-color:var(--brand-green);box-shadow:0 0 0 2px var(--brand-green-l)}.stat.active:before{background:var(--brand-green)}.stat .k{font-family:var(--sans);font-size:12.5px;font-weight:500;color:var(--muted)}.stat .v{font-family:var(--sans);font-variant-numeric:tabular-nums;font-weight:700;font-size:clamp(18px,12cqw,28px);letter-spacing:-.02em;margin-top:4px;white-space:nowrap;color:var(--ink)}.stat .v.red{color:var(--red)}.stat .v.amber{color:var(--amber)}.stat .v.green{color:var(--green)}.toast{position:fixed;bottom:22px;right:22px;background:var(--brand-blue-d);color:#fff;padding:12px 18px;border-radius:10px;font-family:var(--sans);font-size:13.5px;box-shadow:var(--shadow-md);z-index:60;max-width:360px}.toast.err{background:var(--red)}.notif{display:flex;gap:12px;padding:13px 20px;border-bottom:1px solid #EEF2EA}.notif:last-child{border-bottom:none}.dot{width:8px;height:8px;border-radius:50%;background:var(--red);margin-top:6px;flex-shrink:0}.dot.read{background:var(--rule2)}.itemrow{display:grid;grid-template-columns:1fr 90px 120px 36px;gap:10px;margin-bottom:8px}.itemrow-q{display:grid;grid-template-columns:200px 1fr 90px 120px 36px;gap:10px;margin-bottom:8px}.empty{padding:36px 28px;text-align:center;color:var(--muted);font-family:var(--sans);font-size:14px}.back{background:none;border:none;color:var(--blue);font-family:var(--sans);font-size:13px;font-weight:500;cursor:pointer;padding:0;margin-bottom:16px}.back:hover{text-decoration:underline}.tokline{font-family:var(--mono);font-size:11px;color:var(--muted);word-break:break-all}.uploadbox{border:2px dashed var(--brand-green-l);border-radius:var(--r);background:#f7fbf3;padding:36px;text-align:center;cursor:pointer;transition:border-color .15s ease,background .15s ease}.uploadbox:hover,.uploadbox.drag{border-color:var(--brand-green);background:#eef7e7}.centerwrap{max-width:760px;margin:0 auto;padding:40px 16px}.loginwrap{max-width:400px;margin:72px auto;padding:0 16px}.loginwrap .card{box-shadow:var(--shadow-md);border-radius:16px}.errbox{background:var(--red-bg);border:1px solid #E8BDB4;border-radius:var(--r-sm);color:var(--red);padding:10px 14px;font-family:var(--sans);font-size:13.5px;margin:12px 0}.pbar{height:10px;background:var(--rule);border-radius:999px;overflow:hidden}.pbar>span{display:block;height:100%;background:var(--brand-blue);border-radius:999px}.pbar.done>span{background:var(--brand-green)}.metrics{display:flex;gap:32px;flex-wrap:wrap;margin-bottom:14px}.metric .mlbl{font-family:var(--sans);font-size:12px;font-weight:500;color:var(--muted)}.metric .mval{font-size:22px;font-weight:600;font-family:var(--mono)}@media(max-width:980px){.main{padding:28px 24px 70px}}@media(max-width:860px){.app{flex-direction:column}.sidenav{position:static;width:100%;height:auto;padding:14px 12px 10px;border-right:none;border-bottom:1px solid var(--rule)}.sidenav .brand{border-bottom:none;padding-bottom:8px;margin-bottom:0}.sidenav nav{flex:none;flex-direction:row;flex-wrap:nowrap;gap:4px;overflow-x:auto;padding:2px 0 8px;scrollbar-width:none}.sidenav nav::-webkit-scrollbar{display:none}.navlabel{display:none}.navbtn{width:auto;flex-shrink:0;white-space:nowrap;gap:8px}.sidefoot{flex-direction:row;align-items:center;flex-wrap:wrap;margin-top:8px;padding:10px 8px 0}.sidefoot .btn{width:auto;margin-left:auto}.main{padding:20px 14px 60px}.grid2{grid-template-columns:1fr}.itemrow,.itemrow-q{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px dashed var(--rule2)}.itemrow>*,.itemrow-q>*{width:100%}.itemrow button,.itemrow-q button{width:auto;align-self:flex-end}}@media(max-width:480px){.sidenav .brandtext{display:none}.statgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stat{padding:12px 14px}.card-h,.card-b{padding-left:14px;padding-right:14px}.ledger th,.ledger td{padding-left:12px;padding-right:12px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
