.sidebar[data-v-e744512c]{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);background:#fff;border-right:1px solid var(--border-divider);transform:translate(-100%);transition:transform .25s ease;z-index:var(--z-sidebar);display:flex;flex-direction:column}.sidebar.open[data-v-e744512c]{transform:translate(0)}.sidebar.pc[data-v-e744512c]{transform:none}.overlay[data-v-e744512c]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:calc(var(--z-sidebar) - 1)}.brand-bar[data-v-e744512c]{background:#1565c0;padding:var(--sp-5) var(--sp-4);color:#fff}.brand-title[data-v-e744512c]{margin:0;font-size:22px;font-weight:800;letter-spacing:.5px;line-height:1.2}.brand-sub[data-v-e744512c]{margin:var(--sp-1) 0 0;font-size:12px;opacity:.88;line-height:1.3}.nav[data-v-e744512c]{flex:1;padding:var(--sp-2) var(--sp-3);display:flex;flex-direction:column;gap:2px}.nav-item[data-v-e744512c]{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-3);border-radius:var(--radius-md);color:var(--t-body);font-size:15px;text-align:left;transition:background-color .15s}.nav-item.active[data-v-e744512c]{background:#e3f2fd;color:#1565c0;font-weight:600}.nav-item[data-v-e744512c]:not(.active):active{opacity:.7}.topbar[data-v-7964f83c]{position:sticky;top:0;height:var(--topbar-h);background:var(--bg-card);display:flex;align-items:center;padding:0 var(--sp-3);border-bottom:1px solid var(--border-divider);z-index:var(--z-sticky)}.topbar.pc[data-v-7964f83c]{padding-left:var(--sp-4)}.title[data-v-7964f83c]{flex:1;font-size:17px;font-weight:600;color:var(--t-title);margin:0;text-align:center}.topbar.pc .title[data-v-7964f83c]{text-align:left}.actions[data-v-7964f83c]{display:flex;gap:var(--sp-1)}.icon-btn[data-v-7964f83c]{width:40px;height:40px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:var(--t-body);position:relative}.icon-btn[data-v-7964f83c]:active{background:var(--bg-input)}.badge[data-v-7964f83c]{position:absolute;top:4px;right:4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--c-danger);color:#fff;font-size:10px;line-height:16px;text-align:center;font-weight:600}.alert-bar[data-v-29791d73]{display:flex;align-items:center;justify-content:space-between;margin:var(--sp-3) var(--sp-3) 0;padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);color:#fff;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden}.alert-bar.danger[data-v-29791d73]{background:var(--c-danger)}.alert-bar.warning[data-v-29791d73]{background:var(--c-warning);color:var(--t-title)}.txt[data-v-29791d73]{overflow:hidden;text-overflow:ellipsis}.backdrop[data-v-29791d73]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:var(--z-popover);display:flex;align-items:flex-end}.sheet[data-v-29791d73]{width:100%;background:var(--bg-card);border-radius:var(--radius-xl) var(--radius-xl) 0 0;max-height:75vh;display:flex;flex-direction:column;padding-bottom:calc(var(--sp-2) + env(safe-area-inset-bottom))}.sheet-head[data-v-29791d73]{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-4);font-weight:600;color:var(--t-title);border-bottom:1px solid var(--border-divider)}.sheet-body[data-v-29791d73]{overflow-y:auto}.dev-row[data-v-29791d73]{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border-divider);gap:var(--sp-3)}.dev-main[data-v-29791d73]{flex:1;min-width:0}.dev-name[data-v-29791d73]{display:flex;align-items:center;gap:var(--sp-2);font-size:14px;color:var(--t-title);font-weight:600;flex-wrap:wrap}.cust-name[data-v-29791d73]{color:var(--t-title);white-space:nowrap}.dev-type[data-v-29791d73]{color:var(--t-caption);font-weight:400;font-size:13px}.dev-sub[data-v-29791d73]{font-size:12px;color:var(--t-caption);margin-top:2px;display:flex;align-items:center;gap:4px}.dot[data-v-29791d73]{width:8px;height:8px;border-radius:999px;flex-shrink:0}.dot.overdue[data-v-29791d73]{background:var(--c-danger)}.dot.expiring[data-v-29791d73]{background:var(--c-warning)}.days[data-v-29791d73]{font-size:12px;font-weight:400;flex-shrink:0}.days.overdue[data-v-29791d73]{color:var(--c-danger)}.days.expiring[data-v-29791d73]{color:var(--c-warning)}.dev-actions[data-v-29791d73]{display:flex;gap:var(--sp-2);flex-shrink:0}.mini[data-v-29791d73]{height:32px;padding:0 var(--sp-3);border-radius:var(--radius-sm);font-size:12px;background:var(--bg-input);color:var(--t-body)}.mini.primary[data-v-29791d73]{background:var(--c-primary);color:#fff}.sheet-more[data-v-29791d73]{width:100%;padding:var(--sp-4);color:var(--t-link);font-size:14px}.confirm-sheet[data-v-29791d73]{width:100%;background:var(--bg-card);border-radius:var(--radius-xl) var(--radius-xl) 0 0;max-height:80vh;display:flex;flex-direction:column;padding-bottom:calc(var(--sp-2) + env(safe-area-inset-bottom))}.confirm-body[data-v-29791d73]{padding:var(--sp-4);overflow-y:auto}.confirm-info[data-v-29791d73]{background:var(--bg-input);border-radius:var(--radius-md);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-4)}.info-row[data-v-29791d73]{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-2) 0;line-height:1.5}.info-row[data-v-29791d73]:not(:last-child){border-bottom:1px solid var(--border-divider)}.info-label[data-v-29791d73]{color:var(--t-caption);font-size:13px;flex-shrink:0;margin-right:var(--sp-3)}.info-val[data-v-29791d73]{color:var(--t-title);font-size:13px;font-weight:500;text-align:right;word-break:break-all}.overdue-text.overdue[data-v-29791d73]{color:var(--c-danger);font-weight:700}.overdue-text.expiring[data-v-29791d73]{color:var(--c-warning);font-weight:700}.field[data-v-29791d73]{display:block;margin-bottom:var(--sp-3)}.lbl[data-v-29791d73]{display:block;font-size:13px;color:var(--t-caption);margin-bottom:var(--sp-1)}.full[data-v-29791d73]{width:100%;border:1px solid var(--border-input);border-radius:var(--radius-md);padding:var(--sp-3);background:var(--bg-input);color:var(--t-title);font-size:15px;outline:none}.full[data-v-29791d73]:focus{border-color:var(--c-primary)}.hint[data-v-29791d73]{margin:var(--sp-1) 0 0}.confirm-hint[data-v-29791d73]{margin-top:var(--sp-3);text-align:center}.sm[data-v-29791d73]{font-size:12px}.confirm-actions[data-v-29791d73]{display:flex;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4) var(--sp-4);border-top:1px solid var(--border-divider)}.confirm-actions .btn[data-v-29791d73]{flex:1}.x[data-v-29791d73]{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;color:var(--t-caption)}.backdrop[data-v-898c88fe]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:var(--z-popover);display:flex;justify-content:flex-end}.panel[data-v-898c88fe]{width:100%;max-width:380px;height:100%;background:var(--bg-card);display:flex;flex-direction:column}.panel-head[data-v-898c88fe]{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-4);font-weight:600;color:var(--t-title);border-bottom:1px solid var(--border-divider)}.panel-body[data-v-898c88fe]{flex:1;overflow-y:auto}.empty[data-v-898c88fe]{padding:var(--sp-10);text-align:center;color:var(--t-caption)}.noti[data-v-898c88fe]{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border-divider)}.noti[data-v-898c88fe]:active{background:var(--bg-input)}.noti-emoji[data-v-898c88fe]{font-size:20px}.noti-main[data-v-898c88fe]{flex:1;min-width:0}.noti-title[data-v-898c88fe]{font-size:14px;color:var(--t-title);font-weight:600}.noti-sub[data-v-898c88fe]{font-size:12px;color:var(--t-caption);margin-top:2px}.noti-tag[data-v-898c88fe]{color:#fff;font-size:11px;padding:2px 8px;border-radius:999px;flex-shrink:0}.slide-down-enter-active[data-v-898c88fe],.slide-down-leave-active[data-v-898c88fe]{transition:transform .25s ease}.slide-down-enter-from[data-v-898c88fe],.slide-down-leave-to[data-v-898c88fe]{transform:translate(100%)}.overlay[data-v-fbe1d487]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:var(--z-popover);display:flex;justify-content:center;padding-top:env(safe-area-inset-top)}.search-box[data-v-fbe1d487]{width:100%;max-width:520px;margin-top:8vh;background:var(--bg-card);border-radius:var(--radius-lg);overflow:hidden;max-height:80vh;display:flex;flex-direction:column}.search-bar[data-v-fbe1d487]{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3);border-bottom:1px solid var(--border-divider)}.ico[data-v-fbe1d487]{font-size:16px}.s-input[data-v-fbe1d487]{flex:1;border:none;outline:none;background:transparent;font-size:15px}.cancel[data-v-fbe1d487]{color:var(--t-link);font-size:14px}.result[data-v-fbe1d487]{overflow-y:auto;padding:var(--sp-2)}.hint[data-v-fbe1d487]{padding:var(--sp-6);text-align:center;color:var(--t-caption)}.g-title[data-v-fbe1d487]{font-size:12px;color:var(--t-caption);padding:var(--sp-2) var(--sp-2) var(--sp-1)}.row[data-v-fbe1d487]{padding:var(--sp-3);border-radius:var(--radius-md);font-size:14px;color:var(--t-body)}.row[data-v-fbe1d487]:active{background:var(--bg-input)}.sub[data-v-fbe1d487]{color:var(--t-caption);font-size:12px}.toast[data-v-5902190f]{position:fixed;left:50%;bottom:80px;transform:translate(-50%);max-width:80vw;padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-md);color:#fff;font-size:13px;z-index:var(--z-toast);box-shadow:var(--shadow-md);text-align:center}.backdrop[data-v-5244635b]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:var(--z-modal-backdrop);display:flex;align-items:center;justify-content:center;padding:var(--sp-4)}.modal[data-v-5244635b]{width:100%;max-width:320px;background:var(--bg-modal, #fff);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow-lg);z-index:var(--z-modal)}.modal-title[data-v-5244635b]{font-size:17px;font-weight:600;color:var(--t-title);margin-bottom:var(--sp-3)}.modal-content[data-v-5244635b]{font-size:14px;color:var(--t-body);line-height:1.6;margin-bottom:var(--sp-5);white-space:pre-wrap}.modal-actions[data-v-5244635b]{display:flex;gap:var(--sp-3)}.modal-actions .btn[data-v-5244635b]{flex:1}.backdrop[data-v-bb9daef8]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:var(--z-popover);display:flex;align-items:flex-end}.sheet[data-v-bb9daef8]{width:100%;background:var(--bg-card);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:var(--sp-2);padding-bottom:calc(var(--sp-2) + env(safe-area-inset-bottom))}.sheet-title[data-v-bb9daef8]{text-align:center;font-size:13px;color:var(--t-caption);padding:var(--sp-3)}.sheet-item[data-v-bb9daef8]{width:100%;height:50px;font-size:16px;color:var(--t-title);border-radius:var(--radius-md)}.sheet-item[data-v-bb9daef8]:active{background:var(--bg-input)}.sheet-item.danger[data-v-bb9daef8]{color:var(--c-danger)}.sheet-cancel[data-v-bb9daef8]{width:100%;height:50px;margin-top:var(--sp-2);font-size:16px;font-weight:600;color:var(--t-body);background:var(--bg-input);border-radius:var(--radius-md)}.app-root[data-v-4c5738af]{min-height:100vh}.main[data-v-4c5738af]{min-height:100vh;display:flex;flex-direction:column}.main.with-sidebar[data-v-4c5738af]{margin-left:var(--sidebar-w)}.content[data-v-4c5738af]{flex:1;padding:var(--sp-3);max-width:1180px;width:100%;margin:0 auto}@media (max-width: 1023px){.content[data-v-4c5738af]{padding-bottom:calc(var(--sp-12) + env(safe-area-inset-bottom))}}:root{--c-primary: #1565c0;--c-primary-dark: #0d47a1;--c-primary-light: #e3f2fd;--c-success: #2e7d32;--c-warning: #f57f17;--c-danger: #c62828;--c-info: #2196f3;--t-title: #212121;--t-body: #424242;--t-caption: #757575;--t-placeholder: #9e9e9e;--t-link: #1565c0;--bg-page: #f5f5f5;--bg-card: #ffffff;--bg-input: #fafafa;--border-divider: #e0e0e0;--border-input: #dddddd;--border-input-focus: #1565c0;--overlay: rgba(0, 0, 0, .45);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .06), 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07), 0 2px 4px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1), 0 4px 6px rgba(0, 0, 0, .05);--z-base: 1;--z-dropdown: 100;--z-sticky: 200;--z-sidebar: 300;--z-popover: 1500;--z-modal-backdrop: 1000;--z-modal: 1001;--z-toast: 2000;--topbar-h: 56px;--sidebar-w: 200px;--font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;font-family:var(--font-family);color:var(--t-body);background:var(--bg-page);font-size:14px;line-height:1.5}#app{min-height:100vh}button{font-family:inherit;cursor:pointer;border:none;background:none}input,textarea,select{font-family:inherit;font-size:14px;color:var(--t-body)}a{color:var(--t-link);text-decoration:none}.card{background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--sp-4)}.muted{color:var(--t-caption)}.text-center{text-align:center}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.flex-1{flex:1}.between{justify-content:space-between}.center{align-items:center}.wrap{flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:40px;padding:0 var(--sp-4);border-radius:var(--radius-md);font-size:14px;font-weight:600;transition:opacity .2s,background .2s}.btn:active{opacity:.85}.btn-primary{background:var(--c-primary);color:#fff}.btn-danger{background:var(--c-danger);color:#fff}.btn-ghost{background:var(--bg-input);color:var(--t-body);border:1px solid var(--border-input)}.btn-block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.skeleton{background:linear-gradient(90deg,#eee 25%,#f5f5f5 37%,#eee 63%);background-size:400% 100%;animation:shimmer 1.3s ease-in-out infinite;border-radius:var(--radius-md)}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.slide-up-enter-active,.slide-up-leave-active{transition:transform .25s ease,opacity .25s ease}.slide-up-enter-from,.slide-up-leave-to{transform:translateY(100%);opacity:.6}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}
