:root{--ink:#172033;--muted:#718096;--line:#e6ebf2;--surface:#fff;--background:#f4f7fb;--navy:#0d1b32;--primary:#0e6f6a;--primary-dark:#075b57;--primary-soft:#e8f6f4;--amber:#e88b26;--red:#d05252;--shadow:0 8px 30px #1b2b4312}*{box-sizing:border-box}html,body{background:var(--background);min-height:100%;color:var(--ink);margin:0;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{grid-template-columns:230px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--navy);color:#fff;flex-direction:column;height:100vh;min-height:100vh;padding:26px 16px 18px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:11px;padding:0 8px 28px;display:flex}.brand-mark{background:linear-gradient(145deg,#31b6a8,#0e6f6a);border-radius:12px;place-items:center;width:38px;height:38px;font-size:21px;font-weight:900;display:grid;box-shadow:0 7px 18px #0e6f6a5c}.brand strong,.brand span{display:block}.brand strong{letter-spacing:.16em;font-size:14px}.brand span{color:#9aa8bc;margin-top:2px;font-size:11px}nav{flex-direction:column;gap:7px;display:flex}nav button{color:#aeb9ca;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:11px;padding:12px 13px;transition:all .2s;display:flex}nav button:hover{color:#fff;background:#ffffff0f}nav button.active{color:#61d2c7;background:#2dab9f29;font-weight:650;box-shadow:inset 3px 0 #35b4a8}.nav-count{color:#ffbd73;background:#e88b2633;border-radius:9px;place-items:center;min-width:23px;height:20px;margin-left:auto;padding:0 7px;font-size:11px;display:grid}.nav-count.history-count{color:#70d8ce;background:#61d2c724}.nav-count.disposal-count{color:#b5c8f2;background:#7b8ebe2e}.nav-count.rental-count{color:#9ee3c7;background:#4ebe932e}.sidebar-note{color:#56c8bd;background:#ffffff0e;border-radius:12px;gap:10px;margin-top:auto;padding:13px 12px;display:flex}.sidebar-note b,.sidebar-note span{display:block}.sidebar-note b{color:#dae2ec;margin-bottom:4px;font-size:12px}.sidebar-note span{color:#8493a8;overflow-wrap:anywhere;font-size:10px;line-height:1.45}.reset-link{color:#76869d;background:0 0;border:0;align-items:center;gap:5px;margin:12px auto 0;font-size:11px;display:flex}.reset-link:disabled{opacity:.45;cursor:wait}.workspace{min-width:0;padding:0 34px 42px}.topbar{justify-content:space-between;align-items:center;gap:24px;min-height:112px;display:flex}.eyebrow{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;margin:0 0 6px;font-size:11px}h1{letter-spacing:-.025em;margin:0;font-size:27px}.source-line{color:#8793a5;text-overflow:ellipsis;white-space:nowrap;max-width:600px;margin:7px 0 0;font-size:10px;overflow:hidden}.top-actions{gap:10px;display:flex}.admin-chip{background:#ffffffb8;border:1px solid #dfe7ee;border-radius:10px;align-items:center;gap:9px;min-width:170px;margin-right:3px;padding:5px 10px 5px 6px;display:flex}.admin-chip.manageable:hover{background:#f7fcfb;border-color:#8fc6c1}.admin-chip.viewer-chip{cursor:default;min-width:155px}.admin-chip.viewer-chip>span{color:#49668c;background:#edf3fb}.admin-chip>span{color:#176d67;background:#e5f4f2;border-radius:9px;flex:0 0 30px;place-items:center;width:30px;height:30px;font-size:11px;font-weight:750;display:grid}.admin-chip b,.admin-chip small{text-overflow:ellipsis;white-space:nowrap;max-width:115px;display:block;overflow:hidden}.admin-chip b{color:#344156;font-size:10px}.admin-chip small{color:#8995a6;margin-top:2px;font-size:8px}.signout-link{color:#8793a5;white-space:nowrap;align-self:center;font-size:9px;text-decoration:none}.signout-link:hover{color:var(--primary)}.primary,.secondary,.add-button{border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;gap:8px;padding:10px 15px;font-size:13px;font-weight:650;transition:all .18s;display:inline-flex}.primary,.add-button{background:var(--primary);color:#fff;box-shadow:0 6px 15px #0e6f6a29}.primary:hover,.add-button:hover{background:var(--primary-dark);transform:translateY(-1px)}.primary:disabled{opacity:.65;cursor:wait}.add-button:disabled,.row-actions button:disabled{opacity:.45;cursor:wait}.secondary{color:#39465a;background:#fff;border-color:#dfe5ed}.secondary:hover{background:#fbfcfe;border-color:#b9c5d4}.overview-section{grid-template-columns:minmax(0,1fr) 290px;gap:14px;margin-bottom:18px;display:grid}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.metric-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;align-items:flex-start;gap:12px;min-width:0;padding:17px;display:flex;box-shadow:0 4px 18px #1b2b4309}.metric-icon{height:34px;color:var(--primary);background:var(--primary-soft);border-radius:10px;flex:0 0 34px;place-items:center;display:grid}.metric-icon.blue{color:#5573b6;background:#eef3ff}.metric-icon.green{color:#3a9662;background:#eaf7ef}.metric-icon.orange{color:var(--amber);background:#fff2e3}.metric-card span,.metric-card strong,.metric-card small{display:block}.metric-card span{color:var(--muted);margin-bottom:4px;font-size:11px}.metric-card strong{letter-spacing:-.03em;font-size:28px;line-height:1.1}.metric-card small{color:#9aa5b5;white-space:nowrap;text-overflow:ellipsis;margin-top:6px;font-size:9px;overflow:hidden}.health-strip{color:#fff;box-shadow:var(--shadow);background:linear-gradient(145deg,#15304b,#10243a);border-radius:14px;padding:18px 20px}.health-title{justify-content:space-between;align-items:center;display:flex}.health-title span{color:#adc0d3;font-size:11px}.health-title b{color:#62d4c7;font-size:24px}.progress{background:#ffffff17;border-radius:10px;height:7px;margin:15px 0 12px;overflow:hidden}.progress i{border-radius:inherit;background:linear-gradient(90deg,#32b2a5,#73dfd3);height:100%;display:block}.health-strip p{color:#879eb4;margin:0;font-size:10px;line-height:1.55}.data-section{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:16px;overflow:hidden}.data-toolbar{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:15px 18px;display:flex}.search-box{color:#96a1b1;background:#f7f9fc;border:1px solid #e7ebf2;border-radius:9px;flex:1;align-items:center;gap:9px;min-width:260px;height:39px;padding:0 12px;display:flex}.search-box:focus-within{background:#fff;border-color:#81beb9;box-shadow:0 0 0 3px #0e6f6a14}.search-box input{width:100%;color:var(--ink);background:0 0;border:0;outline:0;font-size:12px}.filters{align-items:center;gap:8px;display:flex}.filter-label{color:#7b8799;align-items:center;gap:5px;font-size:11px;display:inline-flex}select,.modal input,.modal textarea{color:#3d4a5f;background:#fff;border:1px solid #dfe5ed;border-radius:8px;outline:0}.filters select{height:39px;padding:0 28px 0 11px;font-size:11px}.add-button{white-space:nowrap;padding:10px 13px}.data-heading{justify-content:space-between;align-items:end;padding:16px 18px 11px;display:flex}.data-heading h2{margin:0 0 3px;font-size:15px}.data-heading span{color:var(--muted);font-size:10px}.export-link,.text-action{color:var(--primary);background:0 0;border:0;align-items:center;gap:5px;font-size:11px;font-weight:650;display:inline-flex}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:1050px}.asset-table{min-width:1280px}thead th{color:#768398;text-transform:uppercase;letter-spacing:.04em;text-align:left;white-space:nowrap;background:#f8fafc;border-top:1px solid #edf0f5;border-bottom:1px solid #e8edf3;padding:11px 13px;font-size:10px}thead th[onclick]{cursor:pointer;-webkit-user-select:none;user-select:none}tbody td{vertical-align:middle;border-bottom:1px solid #edf0f4;padding:13px;font-size:11px}tbody tr{transition:background .16s}tbody tr:hover{background:#fbfcfe}tbody tr.issue-row{background:#fffdfa}tbody tr.issue-row:hover{background:#fff9f1}td b,td small{display:block}td b{font-size:11px;font-weight:650}td small{color:#929dad;text-overflow:ellipsis;white-space:nowrap;max-width:190px;margin-top:4px;font-size:9px;overflow:hidden}.asset-code{color:#33425a;letter-spacing:.02em}.serial{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.type-pill,.status-pill,.status-dot{white-space:nowrap;border-radius:14px;align-items:center;gap:5px;padding:5px 8px;font-size:10px;font-weight:650;display:inline-flex}.type-pill.computer{color:#3d6fb1;background:#eef4fc}.type-pill.mobile{color:#7c59a9;background:#f4eefb}.type-pill.other{color:#64748b;background:#f1f5f9}.person-cell{align-items:center;gap:8px;display:flex}.person-cell.compact{gap:7px}.avatar{color:#36766f;background:#e7f3f1;border-radius:50%;flex:0 0 27px;place-items:center;width:27px;height:27px;font-size:10px;font-weight:700;display:grid}.unassigned,.missing{color:#cb7c25;background:#fff3e5;border:1px dashed #f0bd7e;border-radius:6px;padding:4px 7px;font-size:9px}.status-dot{background:0 0;padding-left:17px;position:relative}.status-dot:before{content:"";border-radius:50%;width:6px;height:6px;position:absolute;left:6px}.status-dot.live{color:#348158}.status-dot.live:before{background:#54b47b;box-shadow:0 0 0 3px #e6f5ec}.status-dot.idle{color:#8a681d}.status-dot.idle:before{background:#d6a43d;box-shadow:0 0 0 3px #fff3d8}.status-dot.retire{color:#a65353}.status-dot.retire:before{background:#d56666;box-shadow:0 0 0 3px #fbe8e8}.issue-tags{flex-wrap:wrap;gap:4px;max-width:200px;display:flex}.recommendation{color:#536276;white-space:normal;max-width:190px;line-height:1.45}.recommendation+.issue-tags,.recommendation+.normal{margin-top:5px}.issue-tags span{color:#b06922;white-space:nowrap;background:#fff1df;border:1px solid #f6d3a6;border-radius:5px;padding:3px 6px;font-size:8px}.normal{color:#3b8a60;align-items:center;gap:4px;font-size:10px;display:inline-flex}.row-actions{gap:5px;display:flex}.row-actions button,.modal-head button{color:#748094;background:#fff;border:1px solid #e1e6ed;border-radius:7px;place-items:center;width:29px;height:29px;display:grid}.row-actions button:hover{color:var(--primary);border-color:#a9ceca}.people-table,.history-table{min-width:980px}.disposal-table{min-width:1320px}.rental-table{min-width:1260px}.rental-table th:nth-child(2){min-width:300px}.rental-table th:nth-child(7){min-width:190px}.rent-price{color:#087a55}.disposal-method{color:#6854a0;white-space:nowrap;background:#f1edfb;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:750;display:inline-flex}.disposal-method.method-直接报废,.disposal-method.method-丢失核销{color:#a34f4f;background:#fbeaea}.disposal-method.method-二手平台回收,.disposal-method.method-回收商回收{color:#25715e;background:#e7f6f1}.audit-action{color:#266d66;white-space:nowrap;background:#e8f6f4;border-radius:999px;align-items:center;padding:5px 9px;font-size:9px;font-style:normal;font-weight:750;display:inline-flex}.audit-action.action-删除{color:#a54f4f;background:#fbeaea}.audit-action.action-资产处置{color:#7b4f8f;background:#f4eafb}.audit-action.action-Excel导入,.audit-action.action-初始化{color:#7f5b22;background:#fff2dc}.device-line{color:#536276;grid-template-columns:16px auto;align-items:center;gap:2px 6px;margin:5px 0;display:grid}.device-line small{grid-column:2;margin:0}.status-pill.ok{color:#3b865d;background:#e8f6ee}.status-pill.bad{color:#ae6923;background:#fff1df}.empty{color:#abb5c3;place-items:center;padding:50px;display:grid}.empty b{color:#59677a;margin-top:10px;font-size:13px}.empty span{margin-top:4px;font-size:10px}.modal-backdrop{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0912218c;place-items:center;padding:22px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:16px;width:min(620px,100%);max-height:calc(100vh - 44px);overflow:auto;box-shadow:0 30px 80px #050c174d}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;padding:20px 22px 15px;display:flex}.modal-head span{color:var(--primary);text-transform:uppercase;font-size:10px;font-weight:700}.modal-head h2{margin:5px 0 0;font-size:19px}.modal-head button{border:0}.form-grid{grid-template-columns:1fr 1fr;gap:14px;padding:20px 22px;display:grid}.form-grid label{flex-direction:column;gap:6px;display:flex}.form-grid label>span{color:#59677a;font-size:10px;font-weight:650}.form-grid .wide{grid-column:1/-1}.modal input,.modal select,.modal textarea{width:100%;min-height:39px;padding:9px 11px;font-size:11px}.modal textarea{resize:vertical;min-height:70px}.modal input:focus,.modal select:focus,.modal textarea:focus{border-color:#75b8b2;box-shadow:0 0 0 3px #0e6f6a14}.modal-foot{justify-content:flex-end;gap:9px;padding:14px 22px 20px;display:flex}.disposal-modal{width:min(720px,100%)}.disposal-warning{color:#765b2b;background:#fff8e9;border:1px solid #f0dfb7;border-radius:10px;gap:11px;margin:18px 22px 0;padding:13px 14px;display:flex}.disposal-warning b,.disposal-warning span{display:block}.disposal-warning b{color:#5c4b2c;font-size:11px}.disposal-warning span{color:#8d7a57;margin-top:4px;font-size:9px;line-height:1.5}.net-recovery{color:#5c6b7f;background:#f3f8f7;border:1px solid #dcebe8;border-radius:9px;justify-content:space-between;align-items:center;min-height:54px;padding:10px 13px;display:flex}.net-recovery span{font-size:10px;font-weight:650}.net-recovery strong{color:#176d67;font-size:18px}.audit-modal{width:min(760px,100%)}.audit-meta{border-bottom:1px solid var(--line);grid-template-columns:1.2fr 1fr .65fr;gap:10px;padding:18px 22px;display:grid}.audit-meta>div{background:#f8fafc;border:1px solid #edf1f5;border-radius:9px;min-width:0;padding:11px 12px}.audit-meta span,.audit-meta b,.audit-meta small{display:block}.audit-meta span{color:#8995a6;margin-bottom:5px;font-size:9px}.audit-meta b{color:#3c495d;overflow-wrap:anywhere;font-size:11px}.audit-meta small{color:#929dad;overflow-wrap:anywhere;margin-top:3px;font-size:8px}.audit-diff{border:1px solid #e4e9ef;border-radius:10px;margin:0 22px 6px;overflow:hidden}.diff-head,.diff-row{grid-template-columns:130px 1fr 1fr;display:grid}.diff-head{color:#7b8799;background:#f6f8fb;font-size:9px;font-weight:700}.diff-head span,.diff-row>*{border-right:1px solid #e8edf2;padding:9px 11px}.diff-head span:last-child,.diff-row>:last-child{border-right:0}.diff-row{color:#637083;border-top:1px solid #edf1f5;font-size:10px}.diff-row b{color:#3d4a5f;background:#fbfcfd;font-size:10px}.diff-row span{overflow-wrap:anywhere;white-space:pre-wrap}.diff-row .after-value{color:#176c65;background:#f5fbfa}.admin-modal{width:min(610px,100%)}.admin-intro{color:#17736c;background:#eef8f7;border:1px solid #d8efec;border-radius:11px;gap:11px;margin:18px 22px 12px;padding:14px;display:flex}.admin-intro b,.admin-intro span{display:block}.admin-intro b{color:#35534f;font-size:11px}.admin-intro span{color:#72847f;margin-top:4px;font-size:9px;line-height:1.5}.admin-add{gap:9px;padding:0 22px 16px;display:flex}.admin-add input{border:1px solid #dfe5ed;border-radius:9px;outline:0;flex:1;min-width:0;height:40px;padding:0 12px;font-size:11px}.admin-add input:focus{border-color:#75b8b2;box-shadow:0 0 0 3px #0e6f6a14}.admin-create{grid-template-columns:1.25fr .75fr 1.2fr auto;display:grid}.admin-list{border:1px solid #e5eaf0;border-radius:11px;margin:0 22px;overflow:hidden}.admin-row{border-bottom:1px solid #edf1f5;align-items:center;gap:10px;min-height:58px;padding:10px 12px;display:flex}.admin-row:last-child{border-bottom:0}.admin-row>div{flex:1;min-width:0}.admin-row b,.admin-row small{display:block}.admin-row b{color:#3b485a;font-size:11px}.admin-row b i{color:#176c65;background:#e8f6f4;border-radius:9px;margin-left:7px;padding:3px 6px;font-size:8px;font-style:normal}.admin-row small{color:#8a96a7;margin-top:4px;font-size:9px}.admin-row-actions{gap:5px;display:flex}.admin-row-actions button{color:#176c65;background:#eef8f7;border:0;border-radius:6px;padding:6px 8px;font-size:9px}.admin-row-actions button.danger{color:#b15c5c;background:#fff3f3}.admin-row-actions button:disabled{opacity:.45;cursor:wait}.admin-count{color:#8793a5;align-self:center;margin-right:auto;font-size:9px}.viewer-password-panel{background:#fbfcfe;border:1px solid #dfe8ee;border-radius:11px;margin:0 22px 16px;padding:14px 0 0}.viewer-password-panel>div{padding:0 14px 12px}.viewer-password-panel b,.viewer-password-panel span{display:block}.viewer-password-panel b{color:#3b485a;font-size:11px}.viewer-password-panel span{color:#7f8b9c;margin-top:4px;font-size:9px;line-height:1.55}.viewer-password-panel .admin-add{padding:0 14px 14px}.admin-section-title{color:#647286;margin:0 22px 9px;font-size:10px;font-weight:750}.access-page{background:radial-gradient(circle at 50% 0,#e9f7f5 0,#f4f7fb 44%,#edf2f8 100%);place-items:center;min-height:100vh;padding:24px;display:grid}.access-card{text-align:center;background:#fffffff5;border:1px solid #e0e7ed;border-radius:22px;width:min(500px,100%);padding:34px 38px 28px;box-shadow:0 24px 70px #152a411f}.access-brand{text-align:left;justify-content:center;align-items:center;gap:10px;margin-bottom:27px;display:flex}.access-brand strong,.access-brand span{display:block}.access-brand strong{color:#243247;letter-spacing:.16em;font-size:14px}.access-brand span{color:#8290a2;margin-top:2px;font-size:10px}.access-icon{color:#17756e;background:#e7f5f3;border-radius:20px;place-items:center;width:68px;height:68px;margin:0 auto 20px;display:grid}.access-icon.denied{color:#b15a5a;background:#fbeaea}.access-icon svg{animation:none}.access-icon.loading svg{animation:1.1s linear infinite access-spin}.access-card h1{font-size:24px}.access-copy{color:#6f7d8f;overflow-wrap:anywhere;max-width:390px;margin:13px auto 22px;font-size:11px;line-height:1.7}.access-button{width:100%;min-height:43px;text-decoration:none}.viewer-login{text-align:left}.viewer-login label{color:#566477;margin:0 0 7px;font-size:10px;font-weight:700;display:block}.viewer-login>div{gap:8px;display:flex}.viewer-login input{color:#29374b;background:#fff;border:1px solid #dfe5ed;border-radius:9px;outline:0;flex:1;min-width:0;height:43px;padding:0 12px;font-size:12px}.viewer-login input:focus{border-color:#75b8b2;box-shadow:0 0 0 3px #0e6f6a14}.viewer-login button{min-width:104px}.access-error{color:#b25252;margin:7px 2px 0;font-size:10px}.password-pending{text-align:left;color:#8a682e;background:#fff7e9;border:1px solid #f4dfb9;border-radius:9px;align-items:flex-start;gap:8px;padding:12px 13px;display:flex}.password-pending span{font-size:10px;line-height:1.55}.access-divider{color:#9aa5b4;align-items:center;gap:10px;margin:18px 0 12px;font-size:9px;display:flex}.access-divider:before,.access-divider:after{content:"";background:#e7ebf0;flex:1;height:1px}.switch-account{color:#7c899a;margin-top:11px;font-size:9px;text-decoration:none;display:inline-block}.switch-account:hover{color:var(--primary)}.privacy-note{color:#83909f;justify-content:center;align-items:center;gap:6px;margin-top:22px;font-size:9px;display:flex}@keyframes access-spin{to{transform:rotate(360deg)}}.toast{z-index:30;color:#fff;background:#1e3146;border-radius:10px;align-items:center;gap:8px;padding:11px 15px;font-size:11px;animation:.25s ease-out toast-in;display:flex;position:fixed;bottom:24px;right:26px;box-shadow:0 14px 34px #0b1b2f3d}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}}@media (width<=1180px){.overview-section{grid-template-columns:1fr}.metric-grid{grid-template-columns:repeat(4,1fr)}.data-toolbar{flex-wrap:wrap}.search-box{flex-basis:100%}}@media (width<=860px){.app-shell{display:block}.sidebar{flex-direction:row;align-items:center;gap:12px;width:100%;height:auto;min-height:0;padding:14px 16px;position:static}.brand{padding:0}.brand span{display:none}nav{flex-direction:row;margin-left:auto}nav button{padding:9px 10px}nav button svg,.sidebar-note,.reset-link{display:none}.workspace{padding:0 16px 28px}.topbar{min-height:100px}.metric-grid{grid-template-columns:1fr 1fr}}@media (width<=620px){.sidebar{overflow-x:auto}.brand strong{display:none}nav button{white-space:nowrap;font-size:11px}.workspace{padding:0 10px 24px}.topbar{flex-direction:column;align-items:flex-start;gap:15px;padding:22px 2px}.top-actions{width:100%}.admin-chip,.signout-link{display:none}.top-actions button{flex:1;font-size:11px}h1{font-size:23px}.metric-grid{grid-template-columns:1fr 1fr;gap:8px}.metric-card{padding:13px}.metric-icon{display:none}.metric-card strong{font-size:24px}.data-toolbar{gap:8px}.search-box{min-width:100%}.filters{width:100%;overflow-x:auto}.filter-label{display:none}.filters select{min-width:112px}.add-button{width:100%}.data-heading{padding:14px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.access-card{padding:28px 22px 24px}.admin-add{flex-direction:column}.admin-create{grid-template-columns:1fr}.viewer-login>div{flex-direction:column}.viewer-login button{width:100%}}
