:root{font-family:Inter,"Microsoft YaHei",system-ui,sans-serif;color:#233a40;background:#f3f6f7;font-synthesis:none}*{box-sizing:border-box}html:not(.auth-ready) #login-panel,html.auth-user #login-panel{display:none!important}html.auth-user #workspace[hidden]{display:block!important}body{margin:0}header{height:80px;background:#173f46;color:white;display:flex;align-items:center;justify-content:space-between;padding:0 max(5vw,24px)}.brand{font-size:28px;font-weight:700;display:flex;align-items:center;gap:16px}.brand span{font-size:17px}.pill{font-size:12px;background:#ffffff18;border:1px solid #ffffff30;border-radius:20px;padding:7px 12px}main{max-width:1240px;margin:0 auto;padding:45px 28px}.heading{display:flex;justify-content:space-between;align-items:center;gap:24px}h1{font-size:32px;margin:8px 0 10px;letter-spacing:-1px}p{color:#6d8085;font-size:14px;line-height:1.8}.eyebrow{color:#1c8076;letter-spacing:2px;font-size:12px;margin:0}button{border:0;border-radius:8px;background:#1a786b;color:white;font:inherit;font-size:14px;padding:12px 18px;cursor:pointer}button:hover{filter:brightness(.95)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #51b5a9;outline-offset:3px}.secondary{background:#eef4f4;color:#30575b;padding:9px 14px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:24px 0}.stats article{background:white;border:1px solid #e1e9eb;border-radius:12px;padding:23px;font-size:13px;color:#6d8085}.stats strong{display:block;font-size:32px;color:#233a40;margin-top:10px}.panel{background:white;border:1px solid #e1e9eb;border-radius:12px;overflow:hidden}.toolbar{display:flex;align-items:end;gap:16px;padding:22px;border-bottom:1px solid #e7edef}.toolbar label:first-child{flex:1}.toolbar label:first-child input{max-width:420px}.toolbar span{margin-left:auto;font-size:13px;color:#6d8085;white-space:nowrap;padding-bottom:12px}label{display:flex;flex-direction:column;gap:8px;font-size:13px;color:#456065}input,select,textarea{width:100%;font:inherit;font-size:14px;border:1px solid #d6e1e4;background:white;color:#233a40;border-radius:7px;padding:11px}table{width:100%;border-collapse:collapse;font-size:14px;text-align:left}th{font-size:12px;font-weight:500;color:#6d8085;background:#fafcfc;padding:16px 22px}td{padding:20px 22px;border-top:1px solid #edf1f2;overflow-wrap:anywhere;max-width:280px}small{display:block;color:#7d8d92;font-size:12px;margin-top:7px}.badge{display:inline-block;white-space:nowrap;font-size:12px;background:#f0f2f3;color:#677c83;border-radius:20px;padding:6px 10px}.badge.green{background:#e6f4ed;color:#287a58}.table-wrap{overflow:auto}#empty{text-align:center;padding:55px 20px}.footnote{font-size:12px;margin-top:20px}#notice{color:#1a786b;font-size:14px;margin-top:14px}dialog{border:1px solid #dce5e7;border-radius:14px;padding:28px;width:min(660px,calc(100% - 32px));max-height:90vh;color:#233a40}dialog::backdrop{background:#13323880}.dialog-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}h2{margin:0;font-size:23px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:18px}.wide{grid-column:1/-1}footer{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}#form-error{color:#b33a35} @media(max-width:640px){header{padding:0 18px}.brand span{font-size:14px}.heading{align-items:start;flex-direction:column}main{padding:28px 16px}.stats{gap:8px}.stats article{padding:16px 12px}.toolbar{flex-wrap:wrap;padding:16px}.toolbar label:first-child{flex-basis:100%}.fields{grid-template-columns:1fr}.wide{grid-column:auto}th,td{padding:14px;min-width:120px}}

[hidden]{display:none!important}#login-panel{padding:24px;max-width:460px;margin:20px auto}#login-form{display:grid;gap:18px;margin-top:24px}button:disabled{opacity:.5;cursor:wait}

/* Shared sidebar: grouped navigation on desktop, expandable directory on narrow screens. */
:root{--sidebar-width:238px}
.app-header{position:fixed;inset:0 auto 0 0;width:var(--sidebar-width);height:100dvh;min-height:0;background:#173f46;color:#fff;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:26px;padding:26px 16px;overflow-y:auto;z-index:30;scrollbar-width:thin}
.app-brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;flex:0 0 auto;padding:0 4px 22px;border-bottom:1px solid #ffffff20}
.app-mark{display:grid;place-items:center;width:34px;height:38px;flex-shrink:0;border-radius:10px;background:#2b887e;font-size:21px;font-weight:800}
.app-brand b,.app-brand small{display:block}.app-brand b{font-size:14px}.app-brand small{margin-top:5px;color:#b9cecf;font-size:12px}
.system-nav{display:flex;flex-direction:column;gap:10px;width:100%;margin:0}
.system-nav a{display:block;color:#d7e5e5;text-decoration:none;font-size:13px;padding:11px 12px;border-radius:7px;line-height:1.5;overflow-wrap:anywhere}
.system-nav a:hover{background:#ffffff12;color:#fff}.system-nav a[aria-current=page]{background:#fff;color:#173f46;font-weight:700;box-shadow:0 2px 5px #082d3220}
.nav-group{border-bottom:1px solid #ffffff12;padding-bottom:8px}.system-nav summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px;cursor:pointer;color:#d9e9e7;font-size:13px;font-weight:600;list-style:none;border-radius:7px;user-select:none}
.system-nav summary::-webkit-details-marker{display:none}.system-nav summary::after{content:'';width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s;flex-shrink:0}
.system-nav details[open]>summary::after{transform:rotate(45deg)}.system-nav summary:hover{background:#ffffff0d}.system-nav a:focus-visible,.system-nav summary:focus-visible,.app-brand:focus-visible{outline:3px solid #78d5c7;outline-offset:2px}
.nav-children{display:grid;gap:3px;margin:4px 0 2px 10px;padding-left:9px;border-left:1px solid #ffffff20}.nav-subgroup>summary{color:#c1dad5;font-size:13px;font-weight:400}.nav-subgroup .nav-children{margin-left:8px;padding-left:8px}.nav-subgroup .nav-children a{font-size:12px}
.nav-toggle{display:none;padding:9px 13px;background:#ffffff18;flex-shrink:0}
body.has-sidebar>main{width:calc(100% - var(--sidebar-width));max-width:none;margin:0 0 0 var(--sidebar-width);padding:32px clamp(20px,3vw,48px);min-width:0}
@media(max-width:760px){.app-header{position:sticky;inset:0 0 auto;width:100%;height:auto;max-height:100dvh;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;overflow-y:auto}.app-brand{padding:0;border:0}.app-brand b{font-size:14px}.nav-toggle{display:block}.system-nav{display:none;max-height:70dvh;overflow-y:auto;border-top:1px solid #ffffff20;padding-top:12px}.system-nav.open{display:flex}body.has-sidebar>main{width:100%;margin:0;padding:24px 16px}.nav-group{padding-bottom:4px}}
@media(prefers-reduced-motion:reduce){.system-nav summary::after{transition:none}}
.pager{flex-wrap:wrap;gap:10px!important}.page-control{display:flex;align-items:center;gap:6px;white-space:nowrap;font-size:13px}.page-control select{width:90px;padding:8px}.page-control input{width:75px;padding:8px}


.supplier-toolbar{flex-wrap:wrap;align-items:end}.supplier-toolbar label:first-child{flex:1 1 250px}.supplier-toolbar #count{margin-left:0}.supplier-table{min-width:1400px}.supplier-table th,.supplier-table td{padding:14px 16px}.supplier-table td:nth-child(1){min-width:190px}.supplier-table td:nth-child(5){min-width:140px}.supplier-table td:nth-child(6){min-width:150px}.supplier-table td:nth-child(7){min-width:210px}.supplier-table a{color:#176b60;text-decoration:underline}.supplier-table td:nth-child(9){white-space:nowrap}

.list-extra-filters{margin:12px 0;padding:12px 16px;background:#fff;border:1px solid #dce6e8;border-radius:9px}.list-extra-filters>summary{cursor:pointer;color:#30575b;font-size:14px}.list-filter-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin-top:14px}.list-filter-controls label{flex:1 1 150px;max-width:240px}.list-filter-controls input,.list-filter-controls select{min-width:140px}.data-columns th{white-space:nowrap}.data-columns td{white-space:pre-line;vertical-align:top;min-width:110px}.data-columns td:has(button){white-space:normal}.data-columns{width:100%;min-width:1200px}
