:root{--bg-page: #f7f2e8;--bg-sidebar: #ece4f4;--bg-card: #ffffff;--bg-card-soft: #fbf8f2;--bg-tag: #f3edfa;--purple-50: #f6f1fb;--purple-100: #ece4f4;--purple-200: #d9c8ea;--purple-300: #c0a9dc;--purple-400: #a48bcc;--purple-500: #8b71bc;--purple-600: #715aa3;--purple-700: #5a4685;--beige-50: #faf6ee;--beige-100: #f3ecdc;--beige-200: #e6d9b9;--text-primary: #2d2740;--text-secondary: #5f5874;--text-muted: #8e87a3;--text-inverse: #ffffff;--border-soft: #ece4f4;--border-card: #ebe2d2;--border-strong: #c0a9dc;--success: #6ea38b;--warning: #d4a574;--danger: #c47b7b;--shadow-card: 0 2px 6px rgba(122, 100, 167, .08);--shadow-soft: 0 1px 3px rgba(122, 100, 167, .06);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--font-sans: "PingFang SC", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-serif: "Songti SC", "STSong", "SimSun", "Source Han Serif SC", serif;--font-mono: "SF Mono", "JetBrains Mono", Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-sans);color:var(--text-primary);background:var(--bg-page);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{font-family:var(--font-serif);color:var(--text-primary);font-weight:600;line-height:1.3}h1{font-size:28px;letter-spacing:.5px}h2{font-size:20px}h3{font-size:16px}p{color:var(--text-secondary)}a{color:var(--purple-600);text-decoration:none}a:hover{color:var(--purple-700)}button{font-family:inherit;cursor:pointer;border:none;background:transparent}.app-shell{display:grid;grid-template-columns:200px 1fr;height:100vh;gap:var(--space-5);padding:var(--space-5)}.sidebar{background:var(--bg-sidebar);border-radius:var(--radius-xl);padding:var(--space-5) var(--space-4);display:flex;flex-direction:column;box-shadow:var(--shadow-soft)}.sidebar-header{padding:0 var(--space-3) var(--space-5);border-bottom:1px dashed var(--border-strong);margin-bottom:var(--space-4)}.sidebar-logo{font-family:var(--font-serif);font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:var(--space-1)}.sidebar-sub{font-size:12px;color:var(--text-muted);letter-spacing:.5px}.sidebar-section{font-size:11px;font-weight:600;letter-spacing:2px;color:var(--text-muted);padding:0 var(--space-3);margin-bottom:var(--space-2);text-transform:uppercase}.nav-list{list-style:none;display:flex;flex-direction:column;gap:var(--space-2)}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-3);border-radius:var(--radius-md);font-size:13.5px;color:var(--text-secondary);cursor:pointer;transition:all .16s ease;width:100%;text-align:left}.nav-item:hover{background:var(--purple-50);color:var(--text-primary)}.nav-item.active{background:var(--text-primary);color:var(--text-inverse);font-weight:500}.nav-item.active .nav-num{background:var(--purple-300);color:var(--text-primary)}.nav-num{width:24px;height:24px;border-radius:50%;background:var(--bg-card);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}.sidebar-footer{margin-top:auto;padding:var(--space-3);font-size:12px;color:var(--text-muted)}.progress-bar{height:4px;background:var(--bg-card);border-radius:2px;overflow:hidden;margin-top:var(--space-2)}.progress-bar-fill{height:100%;background:var(--purple-500);border-radius:2px;transition:width .32s ease}.main{background:var(--bg-card);border-radius:var(--radius-xl);padding:var(--space-6) var(--space-7);overflow-y:auto;box-shadow:var(--shadow-card);border:1px solid var(--border-card)}.main-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-5);padding-bottom:var(--space-4);border-bottom:1px dashed var(--border-card)}.main-header-left{display:flex;align-items:center;gap:var(--space-3)}.step-tag{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--text-primary);color:var(--text-inverse);padding:4px 10px;border-radius:4px;font-size:11px;font-weight:600;letter-spacing:2px}.step-tag .dot{width:14px;height:14px;background:var(--purple-300);color:var(--text-primary);border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}.quarter-chip{background:var(--bg-tag);color:var(--purple-700);padding:6px 14px;border-radius:100px;font-size:12px;font-weight:500;border:1px solid var(--purple-200)}.main h1{margin-bottom:var(--space-2)}.main-lead{color:var(--text-secondary);font-size:15px;margin-bottom:var(--space-6);max-width:740px}.placeholder-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.stat-card{background:var(--bg-card-soft);border:1px solid var(--border-card);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5)}.stat-card-label{font-size:12px;color:var(--text-muted);letter-spacing:1px;margin-bottom:var(--space-2)}.stat-card-value{font-family:var(--font-serif);font-size:24px;font-weight:600;color:var(--text-primary)}.stat-card-hint{font-size:12px;color:var(--text-muted);margin-top:var(--space-1)}.empty-block{background:var(--bg-card-soft);border:1px dashed var(--border-strong);border-radius:var(--radius-md);padding:var(--space-7);text-align:center;color:var(--text-muted)}.empty-block-title{font-family:var(--font-serif);font-size:16px;color:var(--text-secondary);margin-bottom:var(--space-2)}.empty-block-hint{font-size:13px;color:var(--text-muted)}.btn{padding:8px 18px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;display:inline-flex;align-items:center;gap:6px;transition:all .16s ease}.btn-primary{background:var(--purple-500);color:var(--text-inverse)}.btn-primary:hover{background:var(--purple-600)}.btn-ghost{background:var(--bg-tag);color:var(--purple-700)}.btn-ghost:hover{background:var(--purple-100)}.row{display:flex;gap:var(--space-3);align-items:center}.mt-4{margin-top:var(--space-4)}.mt-5{margin-top:var(--space-5)}.ant-table-thead>tr>th{white-space:normal!important;word-break:break-word;line-height:1.3;padding:8px 6px!important}.ant-table-tbody>tr>td{padding:8px!important}
