.sidebar[data-v-61c7bd5a]{position:fixed;left:0;top:0;bottom:0;width:200px;background:#f1f5f9;color:var(--text);display:flex;flex-direction:column;z-index:100;border-right:1px solid var(--border);transition:width .25s ease}.sidebar.collapsed[data-v-61c7bd5a]{width:56px}.sidebar-brand[data-v-61c7bd5a]{padding:18px 14px 14px;display:flex;align-items:center;gap:10px;cursor:pointer;border-bottom:1px solid var(--border);min-height:56px}.brand-icon[data-v-61c7bd5a]{font-size:20px;flex-shrink:0}.brand-text[data-v-61c7bd5a]{overflow:hidden;white-space:nowrap}.brand-name[data-v-61c7bd5a]{display:block;font-weight:700;font-size:14px;color:var(--navy)}.brand-ver[data-v-61c7bd5a]{font-size:10px;color:var(--text-muted)}.sidebar-nav[data-v-61c7bd5a]{flex:1;padding:10px 8px;display:flex;flex-direction:column;gap:2px}.nav-item[data-v-61c7bd5a]{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:var(--gray);text-decoration:none;font-size:13px;font-weight:500;transition:all .15s ease;white-space:nowrap;overflow:hidden}.nav-item[data-v-61c7bd5a]:hover{color:var(--navy);background:#0000000a}.nav-item.active[data-v-61c7bd5a]{color:var(--blue);background:#dbeafe;font-weight:600}.nav-icon[data-v-61c7bd5a]{font-size:16px;width:24px;text-align:center;flex-shrink:0}.nav-label[data-v-61c7bd5a]{flex:1}.sidebar-footer[data-v-61c7bd5a]{padding:10px 14px;border-top:1px solid var(--border);display:flex;align-items:center;gap:8px}.status-dot[data-v-61c7bd5a]{width:7px;height:7px;background:#10b981;border-radius:50%;flex-shrink:0}.status-text[data-v-61c7bd5a]{font-size:11px;color:var(--text-muted)}.collapse-btn[data-v-61c7bd5a]{position:absolute;right:-12px;top:50%;transform:translateY(-50%);width:24px;height:24px;background:#fff;border:1px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:10px;color:var(--text-muted);transition:all .15s ease;z-index:10}.collapse-btn[data-v-61c7bd5a]:hover{background:var(--light);color:var(--text);box-shadow:0 2px 6px #0000001a}@media (max-width: 768px){.sidebar[data-v-61c7bd5a]{width:220px;transform:translate(-100%);transition:transform .25s ease;z-index:101;overflow-y:auto;padding-bottom:env(safe-area-inset-bottom);box-shadow:4px 0 20px #00000026}.sidebar-brand[data-v-61c7bd5a]{padding-top:calc(18px + env(safe-area-inset-top))}.nav-item[data-v-61c7bd5a]{min-height:42px}.sidebar.mobile-open[data-v-61c7bd5a]{transform:translate(0)}}:root{--navy: #0f172a;--slate: #1e293b;--gray: #475569;--light: #f1f5f9;--blue: #3b82f6;--cyan: #06b6d4;--green: #10b981;--amber: #f59e0b;--red: #ef4444;--purple: #8b5cf6;--border: #e2e8f0;--text: #1e293b;--text-muted: #64748b;--radius-sm: 6px;--radius-md: 10px;--radius-full: 999px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;color:var(--text);background:#f8fafc;line-height:1.75;font-size:15px;-webkit-font-smoothing:antialiased}.app-layout{display:flex;min-height:100vh}.main-content{flex:1;min-width:0;margin-left:200px;min-height:100vh;background:#fafbfc;transition:margin-left .25s ease}.main-content.sidebar-collapsed{margin-left:56px}.top-bar{display:flex;align-items:center;justify-content:center;gap:8px;padding:0 28px;height:44px;background:#fff;border-bottom:1px solid var(--border)}.top-bar-icon{font-size:14px}.top-bar-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;color:#334155}.page-fade-enter-active,.page-fade-leave-active{transition:opacity .2s ease,transform .2s ease}.page-fade-enter-from{opacity:0;transform:translateY(8px)}.page-fade-leave-to{opacity:0;transform:translateY(-8px)}.badge{display:inline-block;padding:2px 10px;border-radius:var(--radius-sm);font-size:11px;font-weight:600}.badge-green{background:#d1fae5;color:#065f46}.badge-amber{background:#fef3c7;color:#92400e}.badge-red{background:#fee2e2;color:#991b1b}.data-table thead th{font-size:12px;font-weight:600;color:var(--text-muted);background:#f8fafc;text-transform:none;letter-spacing:0}.state-hint{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:56px 0;color:var(--text-muted);font-size:13px}.state-hint .state-icon{font-size:32px;opacity:.4}.state-hint .state-title{font-weight:600;color:var(--slate)}.state-hint .state-desc{font-size:12px}.page-body{padding:20px 28px 40px}.link-action{color:var(--blue);cursor:pointer;font-weight:500}.link-action:hover{color:#2563eb;text-decoration:underline}.link-action.danger{color:var(--red)}.link-action.danger:hover{color:#dc2626}.link-action.is-disabled,.link-action.danger.is-disabled{color:var(--text-muted);opacity:.55;cursor:not-allowed;pointer-events:none;text-decoration:none}.link-btn:disabled,.link-btn.danger:disabled{color:var(--text-muted);border-color:var(--border);background:#f8fafc;opacity:.65;cursor:not-allowed}.hamburger{display:none;font-size:18px;cursor:pointer;padding:4px 8px;margin-right:4px;border-radius:4px;-webkit-user-select:none;user-select:none}.hamburger:hover{background:#0000000f}.mobile-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a66;z-index:99}@media (max-width: 768px){body{overflow-x:hidden}.hamburger{display:inline-block}.mobile-overlay{display:block}.main-content{margin-left:0!important}.top-bar{position:sticky;top:0;z-index:50;padding:0 16px;justify-content:flex-start}.hamburger{min-width:36px;min-height:36px;display:inline-flex;align-items:center;justify-content:center}.page-body{padding:16px 12px 32px;max-width:100vw;overflow-x:hidden}.data-table thead th,.data-table tbody td{padding:8px 10px;font-size:11px}.table-card,.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}input,select,textarea{font-size:16px}.modal-mask{align-items:flex-end;padding:0}.modal{width:100vw;max-width:none;max-height:92vh;overflow-y:auto;border-radius:12px 12px 0 0;padding:18px 16px}.modal-actions{position:sticky;bottom:0;margin:16px -16px -18px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--border)}}
