*{box-sizing:border-box}body{color:#172033;background:#f6f8fb;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}button,input,select,textarea{font:inherit}#root{min-height:100vh}.admin-shell{color:#172033;background:#f4f7fb;grid-template-columns:248px minmax(0,1fr);min-height:100vh;display:grid}.admin-sidebar{color:#d8e3ef;background:#102033;flex-direction:column;height:100vh;padding:22px 16px;display:flex;position:sticky;top:0}.admin-brand{border-bottom:1px solid #ffffff1a;align-items:center;gap:12px;padding:0 6px 22px;display:flex}.admin-brand-mark{color:#fff;background:#1a6fb5;border-radius:8px;place-items:center;width:38px;height:38px;font-weight:700;display:grid}.admin-brand strong,.admin-brand span{display:block}.admin-brand strong{color:#fff;font-size:16px}.admin-brand span{color:#8da0b6;margin-top:2px;font-size:12px}.admin-menu{gap:14px;margin-top:18px;display:grid}.admin-menu-group{gap:4px;display:grid}.admin-menu-group>span{color:#7f93aa;padding:0 12px 4px;font-size:12px}.admin-menu button,.admin-sidebar-logout{color:#c9d6e4;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;width:100%;padding:11px 12px}.admin-menu button:hover,.admin-menu button.active{color:#fff;background:#1a6fb5e6}.admin-sidebar-logout{color:#ffced6;margin-top:auto}.admin-sidebar-logout:hover{background:#ffffff14}.admin-main{min-width:0;padding:24px}.admin-header{background:#fff;border:1px solid #e3e8f0;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;padding:18px 20px;display:flex}.admin-header h1{color:#172033;margin:4px 0 0;font-size:24px}.admin-header p{color:#667085;margin:0;font-size:13px}.admin-account{text-align:right;min-width:132px}.admin-account span,.admin-account small{display:block}.admin-account span{font-weight:600}.admin-account small{color:#667085;margin-top:3px}.admin-content{gap:16px;display:grid}.admin-page{color:#172033;background:#f4f7fb;place-items:center;min-height:100vh;padding:24px;display:grid}.admin-page button,.admin-panel button,.modal button{color:#172033;cursor:pointer;background:#fff;border:1px solid #c8d0dc;border-radius:6px;padding:8px 12px}.admin-panel button[type=submit],.admin-panel .button-primary,.panel-head button,.modal-actions button[type=submit],.modal-actions .button-primary{color:#fff;background:#1a6fb5;border-color:#1a6fb5}.admin-panel .danger,.modal .danger{color:#b42318;background:#fff5f5;border-color:#f0a6a6}.admin-panel .danger:hover,.modal .danger:hover{color:#fff;background:#d92d20;border-color:#d92d20}.admin-page button:disabled,.admin-panel button:disabled,.modal button:disabled{color:#98a2b3;cursor:not-allowed;background:#eef2f6}.admin-alert{color:#126b38;background:#ecfdf3;border:1px solid #9bd3ae;border-radius:8px;margin:0 0 16px;padding:10px 12px}.admin-alert.error{color:#b42318;background:#fff1f3;border-color:#f1a5a5}.admin-grid{grid-template-columns:minmax(260px,360px) minmax(0,1fr);gap:16px;display:grid}.admin-page-stack{gap:16px;display:grid}.dashboard-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.dashboard-card{background:#fff;border:1px solid #e3e8f0;border-radius:8px;gap:10px;padding:20px;display:grid;box-shadow:0 10px 24px #1020330a}.dashboard-card span{color:#667085}.dashboard-card strong{color:#0d4f85;font-size:36px}.admin-panel{background:#fff;border:1px solid #e3e8f0;border-radius:8px;padding:16px;box-shadow:0 10px 24px #1020330a}.admin-panel h2{margin:0}.panel-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.sub-menu{border-bottom:1px solid #edf0f5;gap:8px;margin-top:14px;display:flex}.sub-menu button{color:#667085;background:0 0;border:0;border-radius:0;padding:8px 4px 10px}.sub-menu button.active{color:#1a6fb5;box-shadow:inset 0 -2px #1a6fb5}.permission-editor{gap:14px;margin-top:14px;display:grid}.permission-tags{flex-wrap:wrap;gap:10px;display:flex}.permission-tag{background:#f9fbfd;border:1px solid #c8d0dc;border-radius:6px;align-items:center;gap:8px;padding:8px 10px;display:inline-flex}.permission-tag input{width:auto}.admin-panel.wide{grid-column:span 1}.admin-panel form,.admin-panel label{gap:8px;display:grid}.admin-panel .permission-tag{display:inline-flex}.admin-panel form{margin-top:14px}.admin-panel input,.admin-panel select,.admin-panel textarea{box-sizing:border-box;width:100%;font:inherit;background:#fff;border:1px solid #c8d0dc;border-radius:6px;padding:9px 10px}.admin-panel .permission-tag input{width:auto}.admin-panel textarea{resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.admin-panel.filters{grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end;gap:12px;display:grid}.advanced-filters{border-top:1px solid #edf0f5;grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;padding-top:12px;display:grid}.filter-actions{flex-wrap:wrap;grid-column:1/-1;gap:8px;display:flex}.device-filters{grid-template-columns:repeat(4,minmax(160px,1fr));gap:12px;margin-top:14px;display:grid}.admin-list{gap:10px;margin-top:14px;display:grid}.admin-row{border:1px solid #edf0f5;border-radius:6px;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.admin-row div:first-child{gap:4px;display:grid}.admin-row span,.admin-row small{color:#667085}.bind-help{color:#34516d;background:#f4f9fe;border:1px solid #cfe1f2;border-radius:8px;gap:5px;margin-top:14px;padding:12px 14px;display:grid}.bind-help span,.empty-hint{color:#667085}.status-badge,.result-badge{border-radius:999px;align-items:center;width:fit-content;padding:3px 8px;font-size:12px;font-weight:600;line-height:1.4;display:inline-flex}.status-badge.pending,.status-badge.emergency{color:#92400e;background:#fff4d6}.status-badge.approved,.status-badge.normal{color:#067647;background:#eafaf1}.status-badge.rejected{color:#b42318;background:#fff1f3}.result-value{margin-right:8px;font-weight:700}.result-badge.high{color:#b42318;background:#fff1f3}.result-badge.low{color:#175cd3;background:#eff8ff}.result-badge.neutral{color:#067647;background:#eafaf1}.result-badge.raw{color:#475467;background:#f2f4f7}.actions{flex-wrap:wrap;gap:8px;display:flex}.admin-table{margin-top:14px;overflow-x:auto}.admin-table table{border-collapse:collapse;width:100%}.admin-table th,.admin-table td{text-align:left;white-space:nowrap;border-bottom:1px solid #edf0f5;padding:10px 8px}.admin-table th{color:#667085;font-weight:600}.admin-table .technical-column{color:#7b8798;font-size:13px}.pager{justify-content:flex-end;align-items:center;gap:10px;margin-top:12px;display:flex}.admin-output{color:#f9fafb;background:#101828;border-radius:6px;padding:12px;overflow:auto}.modal-backdrop{z-index:20;background:#1020336b;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:8px;width:min(520px,100%);max-height:calc(100vh - 48px);padding:18px;overflow:auto;box-shadow:0 24px 70px #1020333d}.modal-large{width:min(1040px,100%)}.modal-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.modal-head h2,.modal-head p{margin:0}.modal-head p{color:#667085;margin-bottom:4px;font-size:13px}.modal-form{gap:12px;display:grid}.modal-form label{gap:8px;display:grid}.modal input,.modal select,.modal textarea{box-sizing:border-box;width:100%;font:inherit;background:#fff;border:1px solid #c8d0dc;border-radius:6px;padding:9px 10px}.modal-actions{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.report-summary{color:#667085;flex-wrap:wrap;gap:10px 18px;display:flex}.quantitative-samples{gap:16px;display:grid}.sample-card{border:1px solid #e3e8f0;border-radius:12px;padding:14px}.sample-summary{flex-wrap:wrap;gap:8px 16px;margin-bottom:12px;display:flex}.sample-filters{flex-wrap:wrap;gap:12px;margin:12px 0;display:flex}.result-table{margin:0}.sample-manual-supplement{color:#34516d;background:#f4f9fe;border:1px solid #cfe1f2;border-radius:8px;gap:8px;margin:12px 0;padding:12px;display:grid}.sample-manual-supplement>span,.manual-supplement-meta{color:#667085}.supplement-form textarea{box-sizing:border-box;resize:vertical;width:100%}.contact-form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.contact-form textarea{font-family:inherit}.contact-page{gap:16px;display:grid}.contact-hero{background:#fff;border:1px solid #dce7f3;border-radius:8px;padding:26px;box-shadow:0 10px 24px #1020330a}.contact-hero span,.contact-methods span,.contact-qr span{color:#667085}.contact-hero h2{color:#0d4f85;margin:8px 0;font-size:28px}.contact-hero p,.contact-intro p{white-space:pre-wrap;margin:0;line-height:1.8}.contact-layout{grid-template-columns:minmax(0,1fr) 280px;gap:16px;display:grid}.contact-intro,.contact-qr,.contact-methods article{background:#fff;border:1px solid #e3e8f0;border-radius:8px;padding:18px;box-shadow:0 10px 24px #1020330a}.contact-intro h3,.contact-qr h3{margin:0 0 12px}.contact-qr{text-align:center;justify-items:center;gap:10px;display:grid}.contact-qr img,.qr-placeholder{aspect-ratio:1;border:1px solid #dce3ec;border-radius:8px;width:180px}.contact-qr img{object-fit:cover}.qr-placeholder{color:#667085;background:#f6f8fb;place-items:center;display:grid}.contact-methods{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.contact-methods article{gap:8px;display:grid}.contact-methods strong{overflow-wrap:anywhere;color:#172033}@media (width<=900px){.admin-shell{grid-template-columns:1fr}.admin-sidebar{height:auto;position:static}.admin-main{padding:16px}.admin-header,.admin-row{flex-direction:column;align-items:flex-start}.admin-account{text-align:left}.admin-grid,.dashboard-grid,.device-filters,.contact-form-grid,.contact-layout,.contact-methods{grid-template-columns:1fr}.panel-head,.modal-head{flex-direction:column;align-items:stretch}}.login-page{background:linear-gradient(135deg,#0d4f85,#1a6fb5 55%,#4fc3f7);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:#fff;border-radius:8px;gap:16px;width:min(420px,100%);padding:28px;display:grid;box-shadow:0 16px 40px #0d4f853d}.login-card h1{color:#0d4f85;margin:0 0 8px;font-size:24px}.login-card p,.login-card small{color:#667085;margin:0}.login-card label{color:#344054;gap:6px;display:grid}.login-card input{border:1px solid #c8d0dc;border-radius:6px;min-height:42px;padding:8px 10px}.login-card button{color:#fff;cursor:pointer;background:#1a6fb5;border:0;border-radius:6px;min-height:44px}.login-card button:disabled{opacity:.6}.login-error{background:#fff1f3;border-radius:6px;padding:10px 12px;color:#b42318!important}
