:root{--app-primary: #2563eb;--app-primary-soft: #eff6ff;--app-primary-muted: rgb(37 99 235 / .12);--app-bg: #f5f6fa;--app-surface: #ffffff;--app-border: #e8eaef;--app-table-header-bg: #f7f8fa;--app-text: #1f2937;--app-text-muted: #606266;--app-text-subtle: #909399;--app-radius: 10px;--app-radius-sm: 8px;--app-shadow: 0 1px 3px rgb(15 23 42 / .06);--app-shadow-lg: 0 12px 40px rgb(15 23 42 / .08);--app-sidebar-active-bar: #2563eb;--color-up: #ef5350;--color-down: #26a69a;--color-flat: #909399}:root.dark,[data-theme=dark]{--app-primary: #3b82f6;--app-primary-soft: rgb(59 130 246 / .15);--app-primary-muted: rgb(59 130 246 / .18);--app-bg: #0f172a;--app-surface: #1e293b;--app-border: #334155;--app-table-header-bg: #1e293b;--app-text: #f1f5f9;--app-text-muted: #94a3b8;--app-text-subtle: #64748b;--app-shadow: 0 1px 3px rgb(0 0 0 / .3);--app-shadow-lg: 0 12px 40px rgb(0 0 0 / .4);--app-sidebar-active-bar: #3b82f6;color-scheme:dark}@media(prefers-color-scheme:dark){:root:not(.light):not([data-theme=light]){--app-primary: #3b82f6;--app-primary-soft: rgb(59 130 246 / .15);--app-primary-muted: rgb(59 130 246 / .18);--app-bg: #0f172a;--app-surface: #1e293b;--app-border: #334155;--app-table-header-bg: #1e293b;--app-text: #f1f5f9;--app-text-muted: #94a3b8;--app-text-subtle: #64748b;--app-shadow: 0 1px 3px rgb(0 0 0 / .3);--app-shadow-lg: 0 12px 40px rgb(0 0 0 / .4);--app-sidebar-active-bar: #3b82f6;color-scheme:dark}}.dq-page{padding:1.25rem 1.5rem 2rem;max-width:min(1280px,100%);box-sizing:border-box}.dq-page--wide{max-width:min(1680px,100%)}.dq-page--heatmap{max-width:min(1920px,100%)}.dq-page-head{margin-bottom:1rem}.dq-title{margin:0 0 .35rem;font-size:1.35rem;font-weight:700;color:var(--app-text, #1f2937)}.dq-hint{margin:0;color:var(--app-text-muted, #606266);font-size:.9rem;line-height:1.55}.dq-hint--tight{margin-bottom:.75rem}.dq-hint code{font-size:.82rem;background:var(--app-table-header-bg, #f7f8fa);padding:.1rem .35rem;border-radius:4px;border:1px solid var(--app-border, #e8eaef)}.dq-hint-link{color:var(--app-primary, #2563eb);font-weight:600;text-decoration:none}.dq-hint-link:hover{text-decoration:underline}.dq-card{background:var(--app-surface, #fff);border:1px solid var(--app-border, #e8eaef);border-radius:var(--app-radius-sm, 8px);box-shadow:var(--app-shadow, 0 1px 3px rgb(15 23 42 / .06))}.dq-card--pad{padding:1rem 1.1rem 1.15rem}.dq-card--pad-lg{padding:1.25rem}.dq-filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem .75rem;margin-bottom:.85rem}.dq-filter-bar--tight{margin-bottom:.75rem}.dq-label-inline{display:inline-flex;align-items:center;gap:.35rem;font-size:.88rem;color:var(--app-text-muted, #606266)}.dq-input,.dq-input-date{padding:.45rem .65rem;border:1px solid var(--app-border, #e8eaef);border-radius:8px;font-size:.9rem;color:var(--app-text, #1f2937);background:#fff;min-width:140px;box-sizing:border-box}.dq-input-date{min-width:auto}.dq-input:focus,.dq-input-date:focus{outline:none;border-color:var(--app-primary, #2563eb);box-shadow:0 0 0 2px #2563eb1f}.dq-btn{padding:.45rem 1rem;font-size:.875rem;font-weight:500;border-radius:8px;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,color .15s}.dq-btn:disabled{opacity:.55;cursor:not-allowed}.dq-btn--primary{background:var(--app-primary, #2563eb);color:#fff;border-color:var(--app-primary, #2563eb)}.dq-btn--primary:hover:not(:disabled){filter:brightness(1.05)}.dq-btn--secondary{background:#fff;color:var(--app-text-muted, #606266);border-color:var(--app-border, #e8eaef)}.dq-btn--secondary:hover:not(:disabled){border-color:var(--app-primary, #2563eb);color:var(--app-primary, #2563eb)}.dq-page-row{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-start}.dq-main-col{flex:1;min-width:0}.dq-meta{font-size:.85rem;color:var(--app-text-subtle, #909399)}.dq-err{color:#f56c6c;font-size:.88rem;margin:0 0 .5rem}.dq-warn{color:#e6a23c;font-size:.85rem;margin:0 0 .75rem;line-height:1.45}.dq-empty{margin:0;padding:2.5rem 1rem;text-align:center;color:#909399;font-size:.9rem;border:1px dashed var(--app-border, #e8eaef);border-radius:8px;background:var(--app-table-header-bg, #f7f8fa)}.dq-period-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem}.dq-period-label{font-size:.85rem;color:var(--app-text-muted, #606266);margin-right:.25rem}.dq-period-btn{padding:.4rem .85rem;border:1px solid var(--app-border, #e8eaef);border-radius:8px;background:#fff;color:var(--app-text-muted, #606266);font-size:.88rem;cursor:pointer;transition:border-color .15s,color .15s,background .15s}.dq-period-btn:hover{border-color:var(--app-primary, #2563eb);color:var(--app-primary, #2563eb)}.dq-period-btn--active{background:var(--app-primary-soft, #eff6ff);border-color:var(--app-primary, #2563eb);color:var(--app-primary, #2563eb);font-weight:500}.dq-back-link{margin:0 0 .75rem;font-size:.9rem}.dq-back-link a{color:var(--app-primary, #2563eb);text-decoration:none}.dq-back-link a:hover{text-decoration:underline}.dq-form-stack{display:flex;flex-direction:column;gap:.75rem}.dq-form-stack label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem;color:var(--app-text-muted, #606266)}.dq-form-stack input{padding:.5rem .65rem;border:1px solid var(--app-border, #e8eaef);border-radius:8px;font-size:.9rem}.dq-form-stack input:focus{outline:none;border-color:var(--app-primary, #2563eb);box-shadow:0 0 0 2px #2563eb1f}.dq-ok{color:#2e7d32;font-size:.9rem}.dq-profile-grid{display:grid;grid-template-columns:6rem 1fr;gap:.5rem 1rem;margin:0;font-size:.9rem}.dq-profile-grid dt{margin:0;color:var(--app-text-subtle, #909399);font-weight:400}.dq-profile-grid dd{margin:0;color:var(--app-text, #1f2937)}.dq-profile-actions{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--app-border, #e8eaef);display:flex;flex-wrap:wrap;gap:.75rem 1.25rem}.dq-profile-link{color:var(--app-primary, #2563eb);font-size:.9rem;text-decoration:none}.dq-profile-link:hover{text-decoration:underline}.dq-badge{display:inline-block;padding:.15rem .5rem;border-radius:4px;font-size:.8rem;background:var(--app-table-header-bg, #f7f8fa);color:var(--app-text-muted, #606266)}.dq-badge--admin{background:#fdf6ec;color:#e6a23c}.dq-badge--vip{background:linear-gradient(135deg,var(--app-primary-soft, #eff6ff),#f0e8ff);color:var(--app-primary, #2563eb);border:1px solid rgb(37 99 235 / .2)}:root{--auth-primary: #3f66c3;--auth-primary-hover: #3557a8;--auth-text: #1a1a2e;--auth-text-muted: #8b9199;--auth-text-tab-inactive: #6b7280;--auth-input-bg: #ebf2ff;--auth-input-border: #dcdfe6;--auth-icon-bg: #dfe8f9;--auth-link: #5c7fd6;--auth-error: #c62828;--auth-success: #2e7d32;--auth-radius: 6px}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif;color:var(--auth-text);-webkit-font-smoothing:antialiased}#app{min-height:100vh}.auth-shell{position:relative;display:flex;flex-direction:column;min-height:100vh;background:#fff;box-sizing:border-box}.auth-shell__utilities{position:absolute;top:1.25rem;right:1.5rem;display:flex;align-items:center;gap:1.25rem;font-size:.8125rem;color:var(--auth-text-muted);-webkit-user-select:none;user-select:none}.auth-util{cursor:default;display:inline-flex;align-items:center;gap:.35rem}.auth-shell__main{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;min-height:0;padding:4rem 1.25rem 2rem;box-sizing:border-box}.auth-card{width:100%;max-width:400px}.auth-page-title{margin:-.5rem 0 1.5rem;text-align:center;font-size:1rem;font-weight:600;color:var(--auth-text)}.auth-brand{margin:0 0 2rem;font-size:2rem;font-weight:600;letter-spacing:-.03em;color:var(--auth-text);text-align:center}.auth-brand__accent{color:var(--auth-primary);position:relative;display:inline-block}.auth-brand__accent:after{content:"";position:absolute;left:.05em;bottom:.15em;width:.45em;height:.12em;background:linear-gradient(135deg,#6b9fff,var(--auth-primary));border-radius:1px;transform:skew(-18deg);opacity:.9}.auth-tabs{display:flex;gap:2rem;margin-bottom:1.75rem;border-bottom:1px solid #e8eaed}.auth-tab{padding:0 0 .65rem;margin-bottom:-1px;font-size:.9375rem;color:var(--auth-text-tab-inactive);background:none;border:none;cursor:pointer;font:inherit;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.auth-tab:hover{color:#4b5563}.auth-tab--active{color:var(--auth-primary);font-weight:600;border-bottom-color:var(--auth-primary)}.auth-tab:disabled{cursor:not-allowed;opacity:.55}.auth-field{margin-bottom:1rem}.auth-input-row{display:flex;align-items:stretch;background:var(--auth-input-bg);border:1px solid var(--auth-input-border);border-radius:var(--auth-radius);overflow:hidden;transition:border-color .15s,box-shadow .15s}.auth-input-row:focus-within{border-color:var(--auth-primary);box-shadow:0 0 0 2px #3f66c326}.auth-input-icon{display:flex;align-items:center;justify-content:center;width:44px;flex-shrink:0;background:var(--auth-icon-bg);color:#7a8494}.auth-input-icon svg{display:block}.auth-input-row input{flex:1;min-width:0;padding:.75rem;border:none;background:transparent;font:inherit;font-size:.9375rem;color:var(--auth-text);outline:none}.auth-input-row input::placeholder{color:#9ca3af}.auth-input-toggle{display:flex;align-items:center;justify-content:center;width:44px;flex-shrink:0;border:none;background:transparent;color:#7a8494;cursor:pointer;padding:0}.auth-input-toggle:hover{color:var(--auth-primary)}.auth-send-code{flex-shrink:0;align-self:stretch;padding:0 .75rem;margin:0;border:none;border-left:1px solid var(--auth-input-border);background:var(--auth-icon-bg);font:inherit;font-size:.8125rem;font-weight:600;color:var(--auth-primary);cursor:pointer;white-space:nowrap;max-width:8.5rem}.auth-send-code:hover:not(:disabled){background:#3f66c314}.auth-send-code:disabled{opacity:.55;cursor:not-allowed;color:#7a8494}.auth-submit{width:100%;margin-top:.5rem;padding:.85rem 1rem;font-size:1rem;font-weight:600;color:#fff;background:var(--auth-primary);border:none;border-radius:var(--auth-radius);cursor:pointer;transition:background .15s}.auth-submit:hover:not(:disabled){background:var(--auth-primary-hover)}.auth-submit:disabled{opacity:.65;cursor:not-allowed}.auth-footer-link{display:block;text-align:center;margin-top:1.25rem;font-size:.875rem;color:var(--auth-link);text-decoration:none;background:none;border:none;cursor:pointer;font:inherit;width:100%}.auth-footer-link:hover{text-decoration:underline}.auth-subnav{text-align:center;margin-top:1.5rem;font-size:.875rem;color:var(--auth-text-muted)}.auth-subnav a{color:var(--auth-primary);text-decoration:none;font-weight:500}.auth-subnav a:hover{text-decoration:underline}.auth-alert{margin-top:1rem;padding:.65rem .75rem;border-radius:var(--auth-radius);font-size:.875rem;line-height:1.45}.auth-alert--error{background:#ffebee;color:var(--auth-error)}.auth-alert--success{background:#e8f5e9;color:var(--auth-success)}.auth-alert--info{background:#e8eefb;color:var(--auth-primary)}.auth-placeholder{text-align:center;color:var(--auth-text-muted);font-size:.9375rem;padding:1.5rem 0;line-height:1.6}.auth-verify-status{text-align:center;padding:1rem 0 .5rem}.auth-verify-status__title{font-size:1.125rem;font-weight:600;margin:0 0 .5rem}.auth-verify-status__text{margin:0;font-size:.9375rem;color:var(--auth-text-muted);line-height:1.55}.auth-verify-status__text a{color:var(--auth-primary);font-weight:500}.auth-spinner{width:40px;height:40px;margin:0 auto 1rem;border:3px solid var(--auth-input-bg);border-top-color:var(--auth-primary);border-radius:50%;animation:auth-spin .75s linear infinite}@keyframes auth-spin{to{transform:rotate(360deg)}}.boot-overlay[data-v-f671e5fa]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#f5f7faeb;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.boot-card[data-v-f671e5fa]{text-align:center;padding:1.5rem 2rem;background:#fff;border-radius:12px;box-shadow:0 8px 32px #00000014;border:1px solid #e4e7ed}.boot-spinner[data-v-f671e5fa]{width:40px;height:40px;margin:0 auto .75rem;border:3px solid #e8f0fe;border-top-color:#3f66c3;border-radius:50%;animation:boot-spin-f671e5fa .75s linear infinite}.boot-text[data-v-f671e5fa]{margin:0;font-size:.9rem;color:#606266}@keyframes boot-spin-f671e5fa{to{transform:rotate(360deg)}}.boot-fade-enter-active[data-v-f671e5fa],.boot-fade-leave-active[data-v-f671e5fa]{transition:opacity .35s ease}.boot-fade-enter-from[data-v-f671e5fa],.boot-fade-leave-to[data-v-f671e5fa]{opacity:0}
