*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f6fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.layout{display:flex;min-height:100vh}.sidebar{background:#1a1a2e;bottom:0;color:#fff;display:flex;flex-direction:column;left:0;position:fixed;top:0;width:240px}.sidebar-header{border-bottom:1px solid #ffffff1a;padding:24px 20px}.sidebar-header h1{font-size:20px;font-weight:700;margin:0 0 4px}.sidebar-header span{font-size:12px;opacity:.6}.sidebar-nav{display:flex;flex:1 1;flex-direction:column;padding:12px 0}.sidebar-nav a{color:#ffffffb3;display:block;font-size:14px;padding:12px 24px;text-decoration:none;transition:all .2s}.sidebar-nav a:hover{background:#ffffff0d;color:#fff}.sidebar-nav a.active{background:#ffffff1a;border-left:3px solid #e94560;color:#fff;font-weight:600}.sidebar-footer{align-items:center;border-top:1px solid #ffffff1a;display:flex;font-size:13px;justify-content:space-between;padding:16px 20px}.sidebar-footer button{background:none;border:1px solid #ffffff4d;border-radius:4px;color:#ffffffb3;cursor:pointer;font-size:12px;padding:4px 12px}.sidebar-footer button:hover{background:#ffffff1a;color:#fff}.main-content{background:#f5f6fa;flex:1 1;margin-left:240px;min-height:100vh;padding:32px}.login-page{align-items:center;background:#1a1a2e;display:flex;justify-content:center;min-height:100vh}.login-card{background:#fff;border-radius:12px;box-shadow:0 4px 24px #0003;padding:48px 40px;text-align:center;width:400px}.login-card h1{color:#1a1a2e;font-size:28px;margin:0 0 4px}.login-card p{color:#888;font-size:14px;margin:0 0 32px}.login-card form{display:flex;flex-direction:column;gap:12px}.login-card input{border:1px solid #ddd;border-radius:8px;font-size:14px;outline:none;padding:12px 16px;transition:border-color .2s}.login-card input:focus{border-color:#e94560}.login-card button{background:#e94560;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;margin-top:8px;padding:12px;transition:background .2s}.login-card button:hover{background:#d63851}.login-card button:disabled{background:#ccc;cursor:not-allowed}.login-card .error{color:#e94560;font-size:13px;text-align:left}.dashboard h2{color:#1a1a2e;font-size:24px;margin:0 0 24px}.kpi-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(4,1fr);margin-bottom:20px}.kpi-card{background:#fff;border-radius:12px;box-shadow:0 1px 4px #0000000f;padding:24px;text-align:center}.kpi-value{font-size:32px;font-weight:700;margin-bottom:4px}.kpi-label{color:#888;font-size:13px;font-weight:500}.status-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(4,1fr);margin-bottom:24px}.status-card{background:#fff;border-radius:12px;box-shadow:0 1px 4px #0000000f;padding:16px 20px}.status-value{font-size:24px;font-weight:700;margin-bottom:2px}.status-label{color:#333;font-size:13px;font-weight:600}.status-desc{color:#999;font-size:11px;margin-top:2px}.charts-row{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-bottom:24px}.chart-section{background:#fff;border-radius:12px;box-shadow:0 1px 4px #0000000f;padding:24px}.chart-section h3{color:#1a1a2e;font-size:15px;margin:0 0 16px}.recent-section{background:#fff;border-radius:12px;box-shadow:0 1px 4px #0000000f;padding:24px}.recent-section h3{color:#1a1a2e;font-size:15px;margin:0 0 16px}.loading{font-size:14px}.table-page h2{color:#1a1a2e;font-size:24px;margin:0 0 24px}.table-page h2 .count{color:#888;font-size:16px;font-weight:400}.table-page h3{color:#1a1a2e;font-size:16px;margin:32px 0 12px}.page-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.page-header h2{margin:0}.search-form{display:flex;gap:8px}.search-form input{border:1px solid #ddd;border-radius:6px;font-size:13px;padding:8px 12px;width:200px}.filter-group select,.search-form button{background:#fff;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:13px;padding:8px 16px}.search-form button{background:#1a1a2e;border:none;color:#fff}.table-wrapper{background:#fff;border-radius:12px;box-shadow:0 1px 4px #0000000f;overflow:hidden}table{border-collapse:collapse;width:100%}thead{background:#f8f9fa}th{border-bottom:1px solid #eee;color:#666;font-size:12px;font-weight:600;text-align:left;text-transform:uppercase}td,th{padding:12px 16px}td{border-bottom:1px solid #f0f0f0;color:#333;font-size:13px}td small{color:#999;font-size:11px}tr.clickable{cursor:pointer;transition:background .15s}tr.clickable:hover{background:#f8f9fa}.center{color:#888;padding:40px!important;text-align:center}.badge{border-radius:4px;display:inline-block;font-size:11px;font-weight:600;padding:2px 8px}.badge.green{background:#e6f9ee;color:#27ae60}.badge.gray{background:#f0f0f0;color:#888}.badge.pending{background:#fff3e0;color:#e67e22}.badge.delivered{background:#e3f2fd;color:#1976d2}.badge.viewed{background:#e8f5e9;color:#388e3c}.badge.guessed{background:#f3e5f5;color:#7b1fa2}.badge.matched{background:#fce4ec;color:#c62828}.badge.failed{background:#f0f0f0;color:#666}.badge.expired{background:#f0f0f0;color:#999}.pagination{align-items:center;display:flex;gap:16px;justify-content:center;margin-top:20px}.pagination button{background:#fff;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:13px;padding:8px 16px}.pagination button:disabled{cursor:not-allowed;opacity:.4}.pagination span{color:#666;font-size:13px}.back-btn{background:none;border:none;color:#4a90d9;cursor:pointer;font-size:14px;margin-bottom:16px;padding:0}.back-btn:hover{text-decoration:underline}.detail-header{align-items:center;display:flex;gap:12px;margin-bottom:16px}.detail-header h2{margin:0}.detail-info{color:#555;display:flex;font-size:13px;gap:32px;margin-bottom:24px}.detail-grid,.detail-info{background:#fff;border-radius:12px;box-shadow:0 1px 4px #0000000f;padding:20px}.detail-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.detail-field{padding:8px 0}.detail-label{color:#888;font-size:11px;font-weight:600;margin-bottom:4px;text-transform:uppercase}.detail-value{color:#333;font-size:14px;word-break:break-all}.loading{align-items:center;color:#888;display:flex;height:200px;justify-content:center}.badge.awaiting_result{background:#fff3e0;color:#e67e22}.chain-graph{align-items:center;background:#fff;border-radius:12px;box-shadow:0 1px 4px #0000000f;display:flex;gap:8px;margin-bottom:24px;overflow-x:auto;padding:20px}.chain-arrow{color:#ccc;flex-shrink:0;font-size:20px}.chain-node{border:2px solid #ddd;border-radius:8px;cursor:pointer;flex-shrink:0;min-width:120px;padding:12px;text-align:center;transition:border-color .2s}.chain-node:hover{border-color:#4a90d9}.chain-node-matched{background:#f0fff4;border-color:#27ae60}.chain-node-failed{background:#fff5f5;border-color:#e94560}.chain-node-awaiting_result{background:#fffaf0;border-color:#e67e22}.chain-node-label{color:#666;font-size:11px}.chain-node-arrow{color:#ccc;font-size:14px;margin:2px 0}.chain-node-status{margin-top:4px}.chain-node-phase{color:#999;font-size:10px;margin-top:2px}.settings-section{background:#fff;border-radius:12px;box-shadow:0 1px 4px #0000000f;margin-bottom:20px;padding:24px}.settings-section h3{color:#1a1a2e;font-size:16px;margin:0 0 8px}.settings-desc{color:#888;font-size:13px;margin:0 0 16px}.settings-form{display:flex;flex-direction:column;gap:12px}.settings-row{align-items:center;display:flex;gap:12px}.settings-row label{color:#555;font-size:13px;font-weight:600;min-width:140px}.settings-row input,.settings-row select{border:1px solid #ddd;border-radius:6px;font-size:13px;padding:8px 12px}.settings-row button{background:#1a1a2e;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;padding:8px 16px}.settings-row button:disabled{cursor:not-allowed;opacity:.4}.settings-message{border-radius:8px;font-size:13px;font-weight:500;margin-bottom:16px;padding:12px 16px}.settings-message.success{background:#e6f9ee;color:#27ae60}.settings-message.error{background:#fce4ec;color:#c62828}
/*# sourceMappingURL=main.b8a72ea2.css.map*/