.brand .ico{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.14);color:#fff}.brand .ico svg{width:21px;height:21px}.side nav button>svg{width:20px;height:20px;flex:0 0 20px}.side nav button em{font-size:16px;opacity:.65}.ico svg{width:25px;height:25px}.top-actions label{display:flex;align-items:center;gap:10px}.top-actions label>svg{width:18px;height:18px;flex:0 0 18px}.top-actions button{display:grid;place-items:center;width:36px;height:36px;border-radius:9px;color:#526077;cursor:pointer}.top-actions button:hover{background:#f0f5ff;color:#1265ee}.top-actions button>svg{width:21px;height:21px}.top-actions button[title="消息"]{position:relative}.top-actions button[title="消息"] em{position:absolute;width:7px;height:7px;background:#ef4145;border:2px solid #fff;border-radius:50%;right:6px;top:5px}.avatar{display:grid;place-items:center;padding:0;font-weight:700}.collapse{display:grid;place-items:center;width:36px;height:36px;padding:0;left:calc(50% - 18px);cursor:pointer;transition:.2s}.collapse:hover{background:#0e4182;border-color:#70a4eb}.metric .ico{flex:0 0 53px}.bottom-nav svg{width:27px;height:27px}.login-form input{background:#fff}.login-form .button,.login-form .primary{min-height:52px}
.side nav button label{cursor:pointer;white-space:nowrap}.danger-text{color:#e43f49!important}.pager{display:flex;justify-content:flex-end;align-items:center;gap:9px;padding:15px 2px 0;color:#738096;font-size:13px;flex-wrap:wrap}.pager label{display:flex;align-items:center;gap:6px}.pager select{border:1px solid #dce4f1;background:#fff;border-radius:6px;padding:6px 8px;color:#344055}.pager button{border:1px solid #dce4f1;background:#fff;border-radius:6px;padding:6px 11px;color:#1765ec;cursor:pointer}.pager button:disabled{opacity:.4;cursor:not-allowed}.two-panels{display:grid;grid-template-columns:1fr 1fr;gap:14px}.card-check{position:absolute;left:15px;top:15px;width:18px;height:18px;z-index:1}.asset-visual svg{width:70px;height:70px}.asset-card footer{flex-wrap:wrap}.asset-card footer button{min-width:42%}.detail-modal{width:min(820px,100%)}.detail-list{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#e6ebf3;border:1px solid #e6ebf3}.detail-list>div{display:grid;grid-template-columns:135px 1fr;background:#fff;min-height:42px}.detail-list dt,.detail-list dd{margin:0;padding:11px;overflow-wrap:anywhere}.detail-list dt{background:#f7f9fc;color:#647086}.notice{display:flex;gap:12px;justify-content:space-between;padding:14px 4px;border-bottom:1px solid #edf1f6}.notice p{margin:5px 0;color:#4d5a70}.notice small{color:#8a95a6}.notice.read{opacity:.58}.error-list{max-height:280px;overflow:auto;color:#b82e37}.error-text{color:#c93640}.captcha input{flex:1;margin:0!important}.captcha button{width:145px;border:1px solid #bcd0ee;border-radius:7px;background:repeating-linear-gradient(20deg,#fff 0 14px,#e9f2ff 15px 17px);color:#1765ec;font-weight:700;font-size:20px;cursor:pointer}.login-form p svg{width:16px;vertical-align:middle}.screen svg{width:92px;height:92px}.shield svg{width:65px;height:65px}.nav-collapsed .side{width:74px}.nav-collapsed .side .brand b,.nav-collapsed .side nav label,.nav-collapsed .side nav em{display:none}.nav-collapsed .side .brand{padding-left:7px}.nav-collapsed .side nav button{justify-content:center;padding-left:12px;padding-right:12px}.nav-collapsed main{margin-left:74px;width:calc(100% - 74px)}.nav-collapsed .collapse svg{transform:rotate(180deg)}
@media(max-width:1000px){.two-panels{grid-template-columns:1fr}.top-actions label{width:240px}.asset-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.bottom-nav svg{width:28px;height:28px}.brand .ico{width:34px;height:34px}.two-panels{display:block}.captcha button{width:120px;font-size:16px}.detail-list{grid-template-columns:1fr}.modal{padding:10px}.nav-collapsed main{margin:0;width:100%}}

.meeting-page{min-width:0;max-width:100%}.meeting-page-head{align-items:flex-start}.meeting-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:14px;flex-wrap:wrap}.meeting-list-panel{min-width:0;max-width:100%;overflow:hidden}.meeting-list-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.meeting-list-head h2{margin:0}.meeting-list-panel .table-wrap{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}.meeting-list-panel table{min-width:1100px}.meeting-list-panel .meeting-subject{max-width:280px;overflow:hidden;text-overflow:ellipsis}.meeting-list-panel .meeting-actions{white-space:nowrap}.meeting-pagination{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding-top:16px;color:#738096;font-size:13px}.meeting-pagination label{display:flex;align-items:center;gap:6px}.meeting-pagination select{border:1px solid #dce4f1;background:#fff;border-radius:6px;padding:6px 8px;color:#344055}.meeting-pagination button{border:1px solid #dce4f1;background:#fff;border-radius:6px;padding:6px 11px;color:#1765ec;cursor:pointer}.meeting-pagination button:disabled{opacity:.4;cursor:not-allowed}.refresh-control.is-loading .refresh-spin{display:inline-block;animation:meeting-refresh-spin .8s linear infinite}@keyframes meeting-refresh-spin{to{transform:rotate(360deg)}}
@media(max-width:1000px){.meeting-page-head{gap:14px}.meeting-pagination{justify-content:flex-start}.meeting-filter{flex-wrap:wrap}}

/* 统一业务弹窗 */
.ui-modal{backdrop-filter:blur(5px);background:rgba(13,31,61,.52)}
.form-modal{width:min(760px,100%);max-height:min(880px,92vh);overflow:auto;padding:0;border:1px solid rgba(198,211,232,.78);box-shadow:0 28px 80px rgba(11,36,76,.26)}
.form-modal .modal-close{top:22px;right:24px;width:34px;height:34px;border-radius:10px;font-size:24px;color:#8290a7;transition:.2s}
.form-modal .modal-close:hover{background:#edf4ff;color:#1265ee}
.modal-heading{padding:28px 32px 23px;border-bottom:1px solid #edf1f7;background:linear-gradient(135deg,#f9fbff,#fff)}
.modal-heading>span{display:inline-block;padding:4px 10px;border-radius:16px;background:#e9f2ff;color:#1265ee;font-size:12px;font-weight:700;letter-spacing:.08em}
.modal-heading h2{margin:10px 0 5px;font-size:24px;color:#102447}
.modal-heading p,.modal-description{margin:0;color:#758198;font-size:14px;line-height:1.7}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px;padding:26px 32px 10px}
.form-field{display:flex;flex-direction:column;gap:8px;color:#293a56;font-size:14px;font-weight:600}
.form-field.wide,.form-check.wide{grid-column:1/-1}
.form-field input,.form-field select,.form-field textarea{width:100%;box-sizing:border-box;border:1px solid #d6dfed;border-radius:10px;background:#fff;padding:11px 13px;min-height:44px;color:#172642;font:inherit;font-weight:400;outline:none;transition:border-color .2s,box-shadow .2s}
.form-field select[multiple]{min-height:104px}
.form-field textarea{resize:vertical}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:#2472ee;box-shadow:0 0 0 4px rgba(28,105,239,.1)}
.calendar-input-shell{position:relative;display:flex;align-items:center;width:100%;min-width:0}
.form-field .calendar-display{padding-right:48px;cursor:pointer;font-variant-numeric:tabular-nums;letter-spacing:.01em}
.calendar-trigger{position:absolute;right:5px;top:5px;display:grid;place-items:center;width:34px;height:34px;padding:0;border:0;border-radius:8px;background:transparent;color:#5e6e86;cursor:pointer;transition:background .18s,color .18s}
.calendar-trigger:hover{background:#edf4ff;color:#1768ed}.calendar-trigger svg{width:18px;height:18px}
.calendar-field:focus-within .calendar-display{border-color:#2472ee;box-shadow:0 0 0 4px rgba(28,105,239,.1)}
.calendar-error{min-height:0;margin-top:-2px;color:#df3e49;font-size:12px;font-weight:500;line-height:1.4}.calendar-error:empty{display:none}
.calendar-field.invalid .calendar-display{border-color:#e34b55;background:#fffafa;box-shadow:0 0 0 4px rgba(227,75,85,.08)}
.calendar-popover{position:fixed;z-index:1400;box-sizing:border-box;padding:8px 9px 0;border:1px solid #d6e1f0;border-radius:8px;background:#fff;box-shadow:0 12px 30px rgba(16,45,87,.2);color:#1a2e4e;font-size:11px;line-height:1.2;animation:calendar-pop .16s ease-out}
@keyframes calendar-pop{from{opacity:0;transform:translateY(-5px) scale(.985)}to{opacity:1;transform:none}}
.calendar-popover header{position:static;z-index:auto;display:grid;width:100%;height:28px;grid-template-columns:26px minmax(0,1fr) 26px;align-items:center;justify-content:initial;gap:3px;margin:0 0 5px;padding:0;background:transparent;border:0}
.calendar-popover header>button{display:grid;place-items:center;width:26px;height:26px;padding:0;border:0;border-radius:6px;background:transparent;color:#62738d;cursor:pointer}.calendar-popover header>button:hover{background:#edf4ff;color:#1768ed}.calendar-popover header svg{width:14px;height:14px}
.calendar-period{display:flex;min-width:0;align-items:center;justify-content:center;gap:0;white-space:nowrap}.calendar-period select{appearance:none;min-width:0;height:26px;padding:0;border:0;border-radius:5px;background:transparent;color:#183052;font:inherit;font-weight:700;text-align:center;text-align-last:center;cursor:pointer;outline:none}.calendar-period select:hover,.calendar-period select:focus{background:#f0f5ff;color:#1768ed}.calendar-period select:first-child{width:55px}.calendar-period select:last-child{width:37px}
.calendar-week,.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;text-align:center}.calendar-week{margin-bottom:2px;color:#687992;font-size:10px}.calendar-week span{padding:3px 0}
.calendar-days button{width:24px;height:24px;justify-self:center;padding:0;border:0;border-radius:50%;background:transparent;color:#253856;font:inherit;font-size:11px;font-variant-numeric:tabular-nums;cursor:pointer}.calendar-days button:hover:not(:disabled){background:#eaf2ff;color:#1768ed}.calendar-days button.outside{color:#bdc6d4}.calendar-days button.today{box-shadow:inset 0 0 0 1px #4e8ff2;color:#1768ed}.calendar-days button.selected{background:#1768ed!important;color:#fff!important;box-shadow:0 3px 8px rgba(23,104,237,.28)}.calendar-days button:disabled{color:#d9dfe8;cursor:not-allowed;text-decoration:none}
.calendar-month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;padding:3px 0 6px}.calendar-month-grid button{min-height:31px;border:1px solid #e2e8f2;border-radius:6px;background:#fbfcff;color:#354967;font-size:11px;cursor:pointer}.calendar-month-grid button:hover:not(:disabled){border-color:#8bb5f5;background:#eff5ff;color:#1768ed}.calendar-month-grid button.selected{border-color:#1768ed;background:#1768ed;color:#fff;box-shadow:0 4px 9px rgba(23,104,237,.22)}.calendar-month-grid button:disabled{opacity:.35;cursor:not-allowed}
.calendar-time{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;padding:6px 8px;border-radius:6px;background:#f5f8fd;color:#5e6e86}.calendar-time input{width:92px;min-height:28px;padding:3px 6px;border:1px solid #d7e1ef;border-radius:5px;background:#fff;color:#1b3152;font:inherit;outline:none}.calendar-time input:focus{border-color:#2472ee;box-shadow:0 0 0 2px rgba(28,105,239,.1)}
.calendar-popover footer{position:static;display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;margin:6px -9px 0;padding:5px 9px;border-top:1px solid #e8edf5;background:#fff}.calendar-popover footer button{min-height:27px;padding:0 5px;border:0;border-radius:5px;background:transparent;color:#1768ed;font-size:11px;font-weight:650;cursor:pointer}.calendar-popover footer button:hover{background:#edf4ff}.calendar-popover footer .confirm{background:#1768ed;color:#fff;box-shadow:0 3px 8px rgba(23,104,237,.2)}.calendar-popover footer .confirm:hover{background:#0e5de2}
.form-check{display:flex;align-items:center;gap:10px;padding:13px 15px;border:1px solid #dfe6f1;border-radius:10px;background:#f8faff;color:#354764;font-size:14px}
.form-check input{width:18px;height:18px;accent-color:#1768ed}
.file-field{border:1px dashed #a9c7f4;border-radius:12px;background:#f7faff;padding:16px}
.file-field input{border:0;padding:6px 0;background:transparent;min-height:auto}
.file-field small{font-weight:400;color:#8290a4}
.form-actions{display:flex;justify-content:flex-end;gap:12px;padding:22px 32px 28px}
.form-actions button{min-width:105px;min-height:42px;border-radius:9px;cursor:pointer}
.form-actions .ghost{border:1px solid #d7e0ed;background:#fff;color:#506079}
.form-actions button:disabled{opacity:.6;cursor:wait}
.confirm-body{display:flex;align-items:flex-start;gap:16px;padding:20px 5px 3px;color:#35445e}
.confirm-body svg{width:30px;height:30px;color:#1768ed;flex:0 0 auto}
.confirm-body p{margin:3px 0;line-height:1.7}
.success-text{color:#0b9c69!important}

/* 办公室耗材分发 */
.office-assignment{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px;max-height:420px;overflow:auto}
.assignment-row{display:grid;grid-template-columns:22px 1fr auto;align-items:center;gap:11px;padding:14px;border:1px solid #dfe7f3;border-radius:12px;background:#fbfcff;cursor:pointer}
.assignment-row:hover{border-color:#8cb5f3;background:#f5f9ff}
.assignment-row>input{width:18px;height:18px;accent-color:#1768ed}
.assignment-row span{display:flex;flex-direction:column;gap:5px}.assignment-row b{color:#233653}.assignment-row small{color:#8591a4}.assignment-row.disabled{opacity:.5;cursor:not-allowed}

/* 详情页合同与附件 */
.contract-shortcut{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:18px;padding:16px 18px;border:1px solid #cfe0fb;border-radius:12px;background:linear-gradient(135deg,#f4f8ff,#fbfdff)}
.contract-shortcut>div{display:flex;flex-direction:column;gap:5px}.contract-shortcut small{color:#7f8b9d}.contract-shortcut b{color:#19345f}.contract-shortcut.empty-contract{color:#7e8a9d;justify-content:center}
.detail-section-head{display:flex;align-items:center;justify-content:space-between;margin:22px 0 10px}.detail-section-head h3{margin:0;color:#152a4e}
.attachment-list{display:flex;flex-direction:column;gap:9px}.attachment-list button{display:grid;grid-template-columns:22px 1fr auto;gap:10px;align-items:center;width:100%;padding:12px 14px;border:1px solid #e0e7f1;border-radius:9px;background:#fff;color:#245fb8;text-align:left;cursor:pointer}.attachment-list button:hover{background:#f5f9ff;border-color:#a9c6f1}.attachment-list small{color:#8a96a7}.empty.compact{padding:22px}
.scan-panel{max-width:900px;padding:28px}.scan-form>label{display:block;margin-bottom:10px;color:#263a59;font-weight:700}.scan-input{display:grid;grid-template-columns:1fr 170px;gap:12px}.scan-input input{height:48px;padding:0 16px;border:1px solid #d8e1ee;border-radius:9px;font-size:15px}.scan-input button{display:flex;align-items:center;justify-content:center;gap:8px}.scan-result{margin-top:24px;min-height:280px;border:1px dashed #cbd9ec;border-radius:13px;background:#f8fbff;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#8290a4;text-align:center}.scan-result>svg{width:58px;height:58px;color:#83adf1;margin-bottom:12px}.scan-result h2,.scan-result p{margin:5px}.scan-result.has-data{display:block;text-align:left;padding:24px;background:#fff;border-style:solid}.scan-success{display:flex;align-items:center;gap:15px;margin-bottom:20px}.scan-success>svg{width:44px;height:44px;color:#13aa77}.scan-success>div{flex:1}.scan-success small{color:#13a876}.scan-success h2,.scan-success p{margin:3px 0}.scan-result.scan-failed{color:#c33f49;background:#fff8f8;border-color:#edc5c8}

@media(max-width:760px){.form-grid,.office-assignment{grid-template-columns:1fr}.form-grid{padding:22px 18px 8px}.modal-heading{padding:24px 20px 20px}.form-actions{padding:20px}.contract-shortcut{align-items:flex-start;flex-direction:column}.scan-input{grid-template-columns:1fr}.scan-panel{padding:18px}}

/* 业务提示统一在当前工作区中央出现，避免遗漏右下角信息。 */
#toast{right:auto;bottom:auto;left:calc(50% + 120px);top:50%;max-width:min(520px,calc(100vw - 48px));padding:15px 24px;border:1px solid rgba(255,255,255,.16);border-radius:12px;background:rgba(17,41,78,.96);box-shadow:0 18px 52px rgba(8,31,68,.28);text-align:center;line-height:1.6;pointer-events:none;transform:translate(-50%,-50%) scale(.94);z-index:1200}
#toast.show{transform:translate(-50%,-50%) scale(1)}
.nav-collapsed #toast{left:calc(50% + 37px)}
.login+#toast{left:50%}
.repair-action{border-color:#ffd59d!important;background:#fff9f0!important;color:#d66a00!important}
@media(max-width:760px){#toast,.nav-collapsed #toast{left:50%;top:46%}}

/* 工作台图表：标签保留在卡片内部，并为环图图例留出明确呼吸空间。 */
.analysis-grid>.panel{min-width:0;overflow:hidden}
.analysis-grid .chart-bars{height:245px;padding:0 12px 32px;gap:14px}
.analysis-grid .chart-bars>div{height:100%;min-width:0}
.analysis-grid .chart-bars small{bottom:-25px;max-width:82px;overflow:hidden;text-overflow:ellipsis}
.status-card .donut-wrap,.statistics-charts .donut-wrap{justify-content:flex-start;align-items:center;gap:32px;padding:10px 8px 4px}
.status-card .donut,.statistics-charts .donut{flex:0 0 174px;width:174px;height:174px}
.status-card .donut>div,.statistics-charts .donut>div{width:106px;height:106px}
.status-card .legend,.statistics-charts .legend{flex:1;min-width:155px;margin:0;gap:11px}
.status-card .legend li,.statistics-charts .legend li{white-space:nowrap}
.statistics-charts{grid-template-columns:1fr 1fr 1fr}

/* 统计柱状图：显示真实纵轴刻度，横轴保留分类名称，柱顶显示数据值。 */
.bar-chart{display:grid;grid-template-columns:34px minmax(0,1fr);gap:8px;width:100%;height:245px;min-width:0}
.bar-y-axis{height:245px;padding:18px 0 32px;display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;color:#7f8ca1;font-size:11px;line-height:1}
.bar-plot{position:relative;height:245px;min-width:0;padding:18px 12px 32px;display:flex;align-items:flex-end;gap:14px;overflow:visible}
.bar-grid{position:absolute;z-index:0;inset:18px 0 32px;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none}
.bar-grid span{display:block;width:100%;border-top:1px solid #e7edf6}
.bar-column{position:relative;z-index:1;display:flex;flex:1 1 0;min-width:0;height:100%;align-items:flex-end;justify-content:center}
.bar-column i{display:block;width:28px;height:var(--bar-height);min-height:0;border-radius:4px 4px 0 0;background:linear-gradient(#2b7af7,#1461e8);box-shadow:0 4px 10px rgba(20,97,232,.12)}
.bar-column b{position:absolute;left:50%;bottom:calc(var(--bar-height) + 5px);transform:translateX(-50%);color:#16233e;font-size:12px;font-weight:500;line-height:1;white-space:nowrap}
.bar-column small{position:absolute;left:50%;bottom:-25px;max-width:92px;transform:translateX(-50%);overflow:hidden;color:#25334d;font-size:12px;line-height:1.25;text-align:center;text-overflow:ellipsis;white-space:nowrap}
.bar-column[style*="--bar-height:0%"] b{bottom:5px}
.refresh-control{display:inline-flex!important;align-items:center;justify-content:center;gap:8px;min-width:122px;transition:transform .18s ease,box-shadow .18s ease,opacity .18s ease}.refresh-control:hover{transform:translateY(-1px);box-shadow:0 9px 20px rgba(20,99,239,.24)}.refresh-control:active{transform:translateY(0) scale(.98)}.refresh-control:disabled{cursor:wait;opacity:.82}.refresh-spin{display:inline-block;font-size:18px;line-height:1;transform-origin:center}.refresh-control.is-refreshing .refresh-spin{animation:refresh-rotate .7s linear infinite}.audit-detail-box{padding:18px 20px;border:1px solid #dfe7f2;border-radius:12px;background:#f6f9fd;color:#34445d;line-height:1.75;white-space:pre-wrap;word-break:break-word}@keyframes refresh-rotate{to{transform:rotate(360deg)}}
.top-actions .account-trigger{display:flex!important;align-items:center!important;gap:10px;width:auto!important;height:52px!important;padding:6px 10px!important;border-radius:12px!important;color:#172641!important;background:transparent!important}.top-actions .account-trigger:hover{background:#f0f5ff!important}.account-trigger .avatar{flex:0 0 38px;width:38px;height:38px}.account-trigger b{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}.account-trigger>svg{width:16px!important;height:16px!important;color:#8290a4}.profile-summary{display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:16px;margin:4px 0 22px;padding:20px;border-radius:16px;background:linear-gradient(135deg,#0e65ee,#0649b9);color:#fff}.profile-avatar{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.2);border:2px solid rgba(255,255,255,.55);font-size:25px;font-weight:800}.profile-summary h3{margin:0 0 6px;font-size:20px}.profile-summary p{margin:0;color:rgba(255,255,255,.78);font-size:13px}.profile-online{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:15px;background:rgba(255,255,255,.16);font-size:12px}.profile-online i{width:7px;height:7px;border-radius:50%;background:#58e6a9}.profile-details{margin-bottom:18px}.profile-security{display:grid;grid-template-columns:38px minmax(0,1fr);gap:12px;padding:15px 17px;border-radius:12px;background:#eef5ff;color:#58708f}.profile-security>svg{width:26px;height:26px;color:#1265ee}.profile-security b{display:block;color:#1e3554;font-size:14px}.profile-security p{margin:5px 0 0;font-size:12px;line-height:1.55}.danger-profile{border:1px solid #ffd4d8;border-radius:8px;padding:10px 20px;background:#fff4f5;color:#df3e49;font-weight:650;cursor:pointer}.danger-profile:hover{background:#ffe9eb}
.user-name-cell{display:inline-flex;align-items:center;gap:9px;white-space:nowrap}.presence-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#c5cedb;box-shadow:0 0 0 4px rgba(159,171,189,.12)}.presence-dot.online{background:#20c784;box-shadow:0 0 0 4px rgba(32,199,132,.14),0 0 10px rgba(32,199,132,.45)}
.form-grid:has([name^="export_"]){grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;padding-top:22px}.form-grid:has([name^="export_"]) .form-check{padding:11px 12px;background:#fbfdff}.form-grid:has([name^="export_"]) .form-check:has(input:checked){border-color:#9bc0fa;background:#eef5ff;color:#155bc5}
@media(max-width:760px){.form-grid:has([name^="export_"]){grid-template-columns:1fr 1fr}}

/* PC 端极光青紫悬浮导航：按审定效果图还原，页面背景延伸至导航栏下方。 */
@media(min-width:761px){
  body{overflow-x:hidden;background:#f5f8fd}
  .shell{position:relative;display:block;min-height:100vh}
  .side{
    position:fixed;
    z-index:30;
    top:18px;
    bottom:18px;
    left:18px;
    display:flex;
    flex-direction:column;
    width:276px;
    min-height:0;
    padding:16px 14px 14px;
    overflow:hidden;
    border:1px solid rgba(51,164,255,.82);
    border-radius:25px;
    background:
      radial-gradient(ellipse at 8% 102%,rgba(0,198,255,.24) 0 18%,transparent 42%),
      radial-gradient(ellipse at 92% 94%,rgba(92,37,255,.25) 0 14%,transparent 44%),
      linear-gradient(151deg,rgba(48,24,165,.76) 0%,rgba(6,49,129,.25) 22%,transparent 42%),
      linear-gradient(162deg,#073a86 0%,#032d70 38%,#06245f 72%,#10145f 100%);
    box-shadow:
      0 20px 48px rgba(9,35,91,.28),
      0 0 0 1px rgba(80,223,255,.13),
      inset 1px 0 0 rgba(65,229,255,.38),
      inset -1px 0 0 rgba(91,61,255,.32),
      inset 0 1px 0 rgba(255,255,255,.16);
    color:#fff;
    isolation:isolate;
  }
  .side:before{
    content:"";
    position:absolute;
    z-index:-1;
    left:-54%;
    right:-54%;
    bottom:-9%;
    height:43%;
    opacity:.88;
    background:
      radial-gradient(ellipse at 48% 104%,transparent 0 46%,rgba(34,223,255,.72) 46.25% 46.55%,transparent 46.9% 56%,rgba(91,65,255,.68) 56.2% 56.55%,transparent 56.9%),
      linear-gradient(139deg,transparent 35%,rgba(50,29,190,.3) 35.4% 56%,transparent 56.4%);
    filter:drop-shadow(0 0 9px rgba(36,158,255,.22));
    pointer-events:none;
  }
  .side:after{
    content:"";
    position:absolute;
    z-index:-1;
    inset:0;
    border-radius:inherit;
    background:
      linear-gradient(126deg,transparent 0 17%,rgba(17,195,255,.07) 17.2% 17.5%,transparent 17.8% 70%,rgba(85,42,255,.08) 70.2% 70.6%,transparent 71%),
      linear-gradient(106deg,rgba(255,255,255,.04),transparent 24% 76%,rgba(72,32,255,.08));
    pointer-events:none;
  }
  .side .brand,.side nav,.side .collapse{position:relative;z-index:1}
  .side .brand{
    height:76px;
    flex:0 0 76px;
    gap:12px;
    margin:0 0 13px;
    padding:0 14px;
    border:0;
    border-radius:15px;
    background:linear-gradient(135deg,rgba(15,73,163,.28),rgba(7,35,104,.12));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
    font-size:20px;
    font-weight:800;
    letter-spacing:.01em;
  }
  .side .brand .ico{
    width:46px;
    height:46px;
    flex:0 0 46px;
    border:1px solid rgba(89,220,255,.76);
    border-radius:13px;
    background:linear-gradient(145deg,#138ff8 0%,#1767f2 62%,#443af1 100%);
    box-shadow:0 8px 20px rgba(0,21,79,.38),0 0 15px rgba(22,202,255,.22),inset 0 1px 0 rgba(225,251,255,.38);
  }
  .side .brand .ico svg{width:27px;height:27px;stroke-width:2.1}
  .side nav{
    display:grid;
    flex:1 1 auto;
    min-height:0;
    align-content:start;
    gap:8px;
    max-height:none;
    padding:1px 0 8px;
    overflow-x:hidden;
    overflow-y:auto;
    scrollbar-width:none;
  }
  .side nav::-webkit-scrollbar{display:none}
  .side nav button{
    position:relative;
    min-height:52px;
    padding:0 17px;
    gap:14px;
    overflow:hidden;
    border:1px solid rgba(82,142,219,.38);
    border-radius:14px;
    background:linear-gradient(135deg,rgba(18,69,144,.78),rgba(11,45,112,.74));
    box-shadow:0 8px 17px rgba(0,19,70,.28),inset 0 1px 0 rgba(151,215,255,.14),inset 0 0 18px rgba(42,98,210,.08);
    color:#edf6ff;
    font-size:16px;
    transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease;
  }
  .side nav button:hover{
    transform:translateY(-1px);
    border-color:rgba(77,199,255,.7);
    background:linear-gradient(135deg,rgba(19,92,184,.86),rgba(19,48,127,.82));
    box-shadow:0 10px 21px rgba(0,17,70,.34),0 0 12px rgba(38,169,255,.13),inset 0 1px 0 rgba(194,235,255,.19);
  }
  .side nav button.active{
    border-color:rgba(80,231,255,.94);
    background:linear-gradient(105deg,#08b8e7 0%,#0879fb 43%,#2748f3 76%,#6534ed 100%);
    box-shadow:0 11px 24px rgba(0,31,126,.42),0 0 16px rgba(12,197,255,.3),inset 0 1px 0 rgba(226,255,255,.52),inset 0 -10px 20px rgba(24,19,162,.13);
    color:#fff;
  }
  .side nav button.active:before{
    content:"";
    position:absolute;
    left:0;
    top:0;
    bottom:0;
    width:6px;
    background:linear-gradient(#9cffff,#22ecff);
    box-shadow:0 0 11px rgba(56,240,255,.92);
  }
  .side nav button>svg{width:22px;height:22px;flex:0 0 22px;stroke-width:2.1}
  .side nav button label{font-weight:500;text-shadow:0 2px 5px rgba(0,24,79,.24)}
  .side nav button em{font-size:18px;color:#b9d9ff;opacity:1;transform:translateY(-2px)}
  .side .collapse{
    position:relative;
    left:auto;
    bottom:auto;
    display:grid;
    width:44px;
    height:44px;
    flex:0 0 44px;
    place-items:center;
    margin:11px auto 0;
    padding:0;
    transform:none;
    border:1px solid rgba(117,178,246,.55);
    border-radius:11px;
    background:linear-gradient(145deg,rgba(29,71,145,.9),rgba(9,35,93,.92));
    color:#edf7ff;
    box-shadow:0 8px 20px rgba(0,14,60,.4),0 0 12px rgba(39,127,255,.13),inset 0 1px 0 rgba(194,232,255,.16);
  }
  .side .collapse:hover{border-color:rgba(93,224,255,.82);background:linear-gradient(145deg,#155aa8,#122f86);color:#fff}
  .side .collapse svg{width:22px;height:22px}
  main{width:100%;margin-left:0}
  header{position:relative;z-index:1;width:100%;justify-content:flex-end;padding-left:326px}
  .content{max-width:none;margin:0 0 0 306px;padding-left:20px;padding-right:28px}
  .nav-collapsed .side{width:82px;padding-left:10px;padding-right:10px}
  .nav-collapsed .side .brand{height:62px;flex-basis:62px;padding:0 7px;justify-content:center}
  .nav-collapsed .side .brand .ico{width:42px;height:42px;flex-basis:42px}
  .nav-collapsed .side nav{max-height:none}
  .nav-collapsed .side nav button{justify-content:center;min-height:48px;padding:0}
  .nav-collapsed main{width:100%;margin-left:0}
  .nav-collapsed header{padding-left:124px}
  .nav-collapsed .content{margin-left:102px}
  .nav-collapsed .collapse{left:auto}
  #toast{left:calc(50% + 153px)}
  .nav-collapsed #toast{left:calc(50% + 51px)}
}

/* PC 管理后台登录页：深蓝业务场景与玻璃面板。 */
.login-v3{min-height:100vh;grid-template-columns:58% 42%;background:#020f2d;overflow:hidden}
.login-v3 .login-art{min-height:100vh;background:#031438 url('/assets/pc-login-scene-glass.png') center center/cover no-repeat;position:relative}
.login-v3 .login-art:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 88%,rgba(2,15,45,.9) 100%)}
.login-v3 .login-side{min-height:100vh;display:flex;align-items:center;justify-content:flex-start;padding:46px clamp(24px,6.3vw,112px) 46px 6px;position:relative;background:radial-gradient(circle at 48% 43%,#0b3579 0,rgba(5,33,82,.62) 36%,rgba(2,15,45,.96) 76%),linear-gradient(150deg,#041b45,#020d27)}
.login-v3 .login-side:before,.login-v3 .login-side:after{content:"";position:absolute;border:1px solid rgba(37,105,210,.13);border-radius:50%;pointer-events:none}.login-v3 .login-side:before{width:760px;height:760px;right:-390px;top:-440px}.login-v3 .login-side:after{width:520px;height:520px;right:-310px;top:-285px}
.login-v3 .login-form{width:min(626px,100%);min-height:732px;padding:50px 60px 34px;position:relative;border:7px solid rgba(204,225,255,.76);border-radius:27px;background:linear-gradient(145deg,rgba(250,253,255,.96),rgba(224,236,255,.91));box-shadow:0 0 0 2px rgba(255,255,255,.72) inset,0 24px 70px rgba(10,76,181,.36),0 0 38px rgba(95,158,255,.22);backdrop-filter:blur(18px);color:#08245e}
.login-v3 .login-security-mark{width:58px;height:64px;margin:0 auto 8px;display:grid;place-items:center;color:#0565ef;background:linear-gradient(145deg,#f8fbff,#bad6ff);clip-path:polygon(50% 0,91% 20%,85% 74%,50% 100%,15% 74%,9% 20%);filter:drop-shadow(0 8px 8px rgba(39,104,196,.28));box-shadow:0 0 22px rgba(35,121,255,.28)}
.login-v3 .login-security-mark svg{width:32px;height:32px;stroke:#0565ef!important;stroke-width:2.2}
.login-v3 .login-form h1{margin:3px 0 3px;text-align:center;color:#071e56;font-size:38px;line-height:1.25;font-weight:800;letter-spacing:1px}.login-v3 .login-form h1:after{display:none}
.login-v3 .login-welcome{text-align:center;color:#38527e;font-size:16px}.login-v3 .login-accent{width:32px;height:4px;border-radius:4px;margin:15px auto 17px;background:#0869f6;box-shadow:0 3px 8px rgba(8,105,246,.25)}
.login-v3 .login-field{display:block;margin:16px 0 0;color:#132f60;font-size:14px;font-weight:600}
.login-v3 .login-input{height:46px;margin-top:7px;display:flex;align-items:center;position:relative;border:1px solid #aec5e8;border-radius:5px;background:rgba(255,255,255,.68);box-shadow:0 1px 0 rgba(255,255,255,.9) inset;transition:border-color .18s,box-shadow .18s,background .18s}
.login-v3 .login-input:focus-within{border-color:#327fea;background:rgba(255,255,255,.9);box-shadow:0 0 0 3px rgba(20,103,238,.11)}
.login-v3 .login-input>svg{width:18px;height:18px;flex:0 0 18px;margin-left:15px;color:#6684b6;stroke-width:2}
.login-v3 .login-input input{height:44px;min-height:0;margin:0;padding:0 14px;border:0;background:transparent;box-shadow:none;outline:0;color:#102958;font-size:15px}.login-v3 .login-input input::placeholder{color:#8296b8}
.login-v3 .password-toggle{width:42px;height:44px;flex:0 0 42px;display:grid;place-items:center;padding:0;border:0;background:transparent;color:#5878ad;cursor:pointer}.login-v3 .password-toggle:hover{color:#0769f4}.login-v3 .password-toggle svg{width:19px;height:19px}
.login-v3 .captcha{display:grid;grid-template-columns:minmax(0,1fr) 128px;gap:12px}.login-v3 .captcha .login-input{min-width:0}.login-v3 .captcha .login-input input{min-width:0}.login-v3 .captcha>button{width:128px;height:46px;margin-top:7px;padding:0;border:1px solid #aec5e8;border-radius:5px;background:repeating-linear-gradient(20deg,rgba(255,255,255,.94) 0 15px,rgba(218,232,255,.85) 16px 18px);color:#0769f4;font-size:20px;font-weight:800;letter-spacing:1px;cursor:pointer}
.login-v3 .login-submit{width:100%;height:52px;min-height:52px;margin:29px 0 15px;padding:0;border-radius:5px;background:linear-gradient(90deg,#0872ff,#0758df);box-shadow:0 10px 24px rgba(4,80,208,.3);font-size:18px;line-height:52px}.login-v3 .login-submit:hover{filter:brightness(1.06);transform:translateY(-1px)}
.login-v3 .login-tip{display:flex;align-items:center;gap:8px;margin:0;color:#36517e;font-size:13px}.login-v3 .login-tip svg{width:17px;height:17px;flex:0 0 17px;color:#0769f4}
.login-v3 .login-form footer{position:absolute;left:60px;right:60px;bottom:31px;display:grid;grid-template-columns:repeat(3,1fr);gap:0;padding-top:22px;border-top:1px solid rgba(128,156,199,.45);color:#173b76;font-size:13px}.login-v3 .login-form footer span{display:flex;align-items:center;justify-content:center;gap:9px;border-right:1px solid rgba(118,145,187,.45);white-space:nowrap}.login-v3 .login-form footer span:last-child{border-right:0}.login-v3 .login-form footer svg{width:21px;height:21px;color:#0a4ea8;stroke-width:2}
.login-v3+#toast{left:auto;right:calc(21% - 180px);top:50%;bottom:auto;transform:translateY(-50%) scale(.94)}.login-v3+#toast.show{transform:translateY(-50%) scale(1)}
@media(max-width:1180px){.login-v3{grid-template-columns:52% 48%}.login-v3 .login-form{padding-left:44px;padding-right:44px}.login-v3 .login-form footer{left:44px;right:44px}.login-v3 .login-art{background-position:58% center}}
@media(max-width:820px){.login-v3{display:block;overflow:auto;background:#031742}.login-v3 .login-art{height:245px;min-height:245px;background-position:center 30%;background-size:cover}.login-v3 .login-art:after{background:linear-gradient(180deg,transparent 70%,#031742 100%)}.login-v3 .login-side{min-height:calc(100vh - 215px);padding:0 18px 34px;background:#031742}.login-v3 .login-form{margin-top:-30px;min-height:650px;padding:38px 26px 30px;border-width:4px}.login-v3 .login-security-mark{width:48px;height:53px}.login-v3 .login-form h1{font-size:30px}.login-v3 .login-form footer{position:static;margin-top:30px;grid-template-columns:1fr;padding-top:20px;gap:10px}.login-v3 .login-form footer span{border:0}.login-v3+#toast{left:50%;right:auto;top:50%;transform:translate(-50%,-50%) scale(.94)}.login-v3+#toast.show{transform:translate(-50%,-50%) scale(1)}}
.file-upload-disabled input[type="file"],
.file-upload-disabled button[onclick*="asset-import"] {
  display: none !important;
}

/* Previously API-only management capabilities. */
.attachment-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}.attachment-list .attachment-download{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:12px 14px;border:1px solid #e0e7f1;border-radius:9px;background:#fff;color:#245fb8;text-align:left;cursor:pointer}.attachment-list .attachment-delete{padding:0 14px;border:1px solid #ffd2d6;border-radius:9px;background:#fff5f6;color:#d73b45;cursor:pointer}.attachment-list .attachment-delete:disabled{opacity:.55}.quota-table{margin-top:18px;max-height:520px;overflow:auto;border:1px solid #e0e7f1;border-radius:12px}.quota-head,.quota-row{display:grid;grid-template-columns:minmax(160px,1.4fr) 110px 110px 110px 76px;gap:10px;align-items:center;padding:11px 14px}.quota-head{position:sticky;top:0;z-index:1;background:#f1f6fd;color:#52627b;font-size:13px;font-weight:700}.quota-row{border-top:1px solid #edf1f6;background:#fff}.quota-row>span{display:flex;flex-direction:column;gap:3px}.quota-row small{color:#8793a6}.quota-row input{min-width:0;width:100%;box-sizing:border-box;padding:9px;border:1px solid #d8e1ed;border-radius:8px}.depreciation-actions{display:flex;align-items:flex-end;gap:12px;margin:4px 0 14px;padding:16px;border-radius:12px;background:#f4f8ff}.depreciation-actions label{display:flex;flex-direction:column;gap:7px;color:#42526b;font-weight:650}.depreciation-actions input{padding:10px;border:1px solid #cad8eb;border-radius:8px}.depreciation-table{margin-top:18px;max-height:480px;overflow:auto}.depreciation-modal .detail-modal{width:min(1080px,100%)}.sync-error{display:block;max-width:210px;margin-top:5px;color:#d0444e;white-space:normal}.compact-metrics{margin:18px 0 4px}.compact-metrics .metric{min-width:150px}
@media(max-width:760px){.attachment-row{grid-template-columns:1fr}.attachment-list .attachment-download{grid-template-columns:22px 1fr}.attachment-list .attachment-download small{grid-column:2}.quota-head{display:none}.quota-row{grid-template-columns:1fr 1fr}.quota-row>span:first-child{grid-column:1/-1}.depreciation-actions{align-items:stretch;flex-direction:column}.depreciation-actions button{min-height:42px}}

/* Authenticated device photos; the icon remains as a fallback until loading succeeds. */
.asset-visual{position:relative;overflow:hidden}.asset-visual img[data-asset-image]{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#f3f7fc;opacity:0;transition:opacity .18s ease}.asset-card .asset-visual img[data-asset-image]{object-fit:cover}.asset-visual.image-loaded img[data-asset-image]{opacity:1}.asset-visual.image-loaded>i{opacity:0}.asset-card footer .danger-text{color:#d73b45}.asset-detail-photo{display:block;margin-bottom:22px}.asset-detail-photo .asset-visual{width:100%;height:300px;border-radius:14px;background:#eaf2ff;display:grid;place-items:center}.asset-detail-photo .asset-visual>i{width:70px;height:70px;color:#1768ef}.file-upload-disabled input[name="deviceImage"]{display:block!important}
@media(max-width:760px){.asset-detail-photo .asset-visual{height:190px}}
.tag.neutral{background:#f1f5f9;color:#64748b}.public-asset-badge{display:inline-block;margin-left:8px;padding:2px 7px;border-radius:999px;background:#f3e8ff;color:#7e22ce;font-size:12px;font-weight:600;vertical-align:middle}
