@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--text-primary: #f8fafc;--text-secondary: #94a3b8;--accent: #3b82f6;--accent-hover: #2563eb;--border: #334155}*{box-sizing:border-box}body{margin:0;font-family:Inter,sans-serif;background-color:var(--bg-primary);color:var(--text-primary)}.app-container{display:flex;height:100vh;overflow:hidden}.sidebar{width:250px;background-color:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column}.sidebar-header{padding:16px;border-bottom:1px solid var(--border);font-weight:700;font-size:1.2rem}.channel-list{flex:1;overflow-y:auto;padding:8px}.channel-item{display:flex;align-items:center;padding:10px;cursor:pointer;border-radius:6px;color:var(--text-secondary);transition:all .2s}.channel-item:hover,.channel-item.active{background-color:#3b82f61a;color:var(--text-primary)}.channel-item:hover .favorite-btn{opacity:1!important}.channel-item.disabled{opacity:.5}.channel-icon{margin-right:10px;width:20px;height:20px}.main-content{flex:1;min-width:0;display:flex;flex-direction:column;background-color:var(--bg-primary);overflow:hidden}.header{height:60px;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;justify-content:space-between}.messages-area{flex:1 1 auto;min-height:0;overflow-y:auto;padding:20px;display:flex;flex-direction:column}.messages-area>:last-child{margin-bottom:0}.chat-container{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.message{margin-bottom:8px;line-height:1.4}.message:last-child{margin-bottom:0}.timestamp{color:var(--text-secondary);font-size:.8rem;margin-right:8px;font-family:monospace}.badge-list{display:inline;margin-right:4px}.badge-image{height:18px;width:18px;vertical-align:middle;margin-right:2px;display:inline-block}.username{font-weight:600;margin-right:8px}.login-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;display:flex;justify-content:center;align-items:center;z-index:1000}.login-box{background:var(--bg-secondary);padding:30px;border-radius:8px;width:300px;border:1px solid var(--border)}input{background:var(--bg-primary);border:1px solid var(--border);color:#fff;padding:8px;border-radius:4px;width:100%;margin-bottom:10px}input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1);cursor:pointer;opacity:.7}input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1}button{background:var(--accent);color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;width:100%}button:hover{background:var(--accent-hover)}.message-content{display:inline}.emote-image{height:28px;vertical-align:middle;margin:0 2px;display:inline-block;border-radius:2px;transition:transform .1s ease}.emote-image:hover{transform:scale(1.2)}.chat-gif{display:inline-block;width:160px;height:120px;object-fit:contain;vertical-align:middle;margin:2px 4px}.virtual-scroll-container{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;position:relative;will-change:transform;-webkit-overflow-scrolling:touch}.virtual-scroll-container::-webkit-scrollbar{width:8px}.virtual-scroll-container::-webkit-scrollbar-track{background:var(--bg-secondary)}.virtual-scroll-container::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.virtual-scroll-container::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.emote-viewer{padding:20px;overflow-y:auto;height:100%}.emote-section{margin-bottom:30px;border:1px solid var(--border);border-radius:8px;overflow:hidden}.emote-section-header{background:var(--bg-secondary);padding:12px 16px;font-weight:600;font-size:16px;border-bottom:1px solid var(--border)}.provider-section{border-bottom:1px solid var(--border)}.provider-section:last-child{border-bottom:none}.provider-header{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:#3b82f60d;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s}.provider-header:hover{background:#3b82f61a}.emote-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(60px,1fr));gap:8px;padding:16px}.emote-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;border-radius:4px;cursor:pointer;transition:all .2s;position:relative}.emote-cell:hover{background:#3b82f61a;transform:scale(1.1)}.emote-cell img{max-width:50px;max-height:50px;object-fit:contain}.emote-code{font-size:10px;color:var(--text-secondary);margin-top:4px;text-align:center;word-break:break-word}.temporal-controls{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--bg-secondary);border-radius:8px;margin-bottom:20px;position:relative}.temporal-controls button{width:auto;padding:6px 12px;font-size:14px;display:flex;align-items:center}.temporal-controls button:disabled{opacity:.3;cursor:not-allowed}.timestamp-display{font-family:monospace;font-size:14px;padding:6px 12px;background:var(--bg-primary);border-radius:4px;cursor:pointer;border:1px solid var(--border);transition:all .2s}.timestamp-display:hover{background:#3b82f61a;border-color:var(--accent)}.pagination-controls{display:flex;justify-content:center;align-items:center;gap:10px;padding:12px;border-top:1px solid var(--border)}.pagination-controls button{width:auto;font-size:12px}.copy-feedback{position:absolute;background:#22c55e;color:#fff;padding:4px 8px;border-radius:4px;font-size:11px;pointer-events:none;animation:fadeOut 1s forwards}@keyframes fadeOut{0%{opacity:1}70%{opacity:1}to{opacity:0}}.emote-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--bg-secondary);overflow-x:auto}.emote-tab{flex:1;padding:12px 16px;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;font-weight:500;font-size:14px;transition:all .2s;white-space:nowrap;border-bottom:2px solid transparent}.emote-tab:hover{color:var(--text-primary);background:#3b82f60d}.emote-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.emote-sub-tabs{background:var(--bg-primary)}.emote-sub-tabs .emote-tab{flex:0;font-size:13px;padding:8px 16px}.stream-state-bar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border);font-size:13px}.live-indicator{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;text-transform:uppercase}.live-indicator.live{background:#ef4444;color:#fff}.live-indicator.offline{background:#444;color:#999}.state-item{color:var(--text-secondary)}.stream-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;padding:16px}.stat-card{background:var(--bg-secondary);border-radius:8px;padding:14px;text-align:center;border:1px solid var(--border)}.stat-value{font-size:22px;font-weight:700;color:var(--text-primary)}.stat-label{font-size:11px;color:var(--text-secondary);margin-top:4px}.stream-chart{padding:0 16px 16px;overflow:hidden}.session-list{padding:0 16px 16px}.session-header{display:flex;gap:12px;padding:6px 0;font-size:11px;color:var(--text-secondary);border-bottom:1px solid var(--border);text-transform:uppercase;font-weight:600}.session-row{display:flex;gap:12px;padding:8px 0;font-size:13px;color:var(--text-primary);border-bottom:1px solid #1a1a2e;text-decoration:none;cursor:pointer}.session-row:hover{background:#3b82f61a;color:var(--text-primary)}.sidebar-search{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--border)}.sidebar-search input{flex:1;background:transparent;border:none;color:var(--text-primary);outline:none;margin:0;padding:4px 0}.sidebar-search input::placeholder{color:var(--text-secondary)}.platform-filters{display:flex;gap:4px;padding:8px 10px;border-bottom:1px solid var(--border)}.platform-chip{padding:6px 12px;border-radius:4px;background:#222;border:1px solid #444;cursor:pointer;opacity:.4;transition:all .2s;font-size:14px}.platform-chip:hover{opacity:.7}.platform-chip.active{opacity:1;border-color:var(--accent);background:#3b82f61a}.status-tabs{display:flex;gap:4px;padding:8px 10px;border-bottom:1px solid var(--border)}.status-tabs button{flex:1;padding:6px 8px;font-size:11px;background:#222;border:none;border-radius:4px;cursor:pointer;color:var(--text-secondary);transition:all .2s}.status-tabs button:hover{background:#333;color:var(--text-primary)}.status-tabs button.active{background:var(--accent);color:#fff}.view-tabs{display:flex;gap:4px;padding:8px 10px}.view-tabs button{flex:1;padding:6px 8px;font-size:11px;background:#222;border:none;border-radius:4px;cursor:pointer;color:var(--text-secondary);transition:all .2s}.view-tabs button:hover{background:#333;color:var(--text-primary)}.view-tabs button.active{background:var(--accent);color:#fff}.sidebar-stats{padding:10px;border-top:1px solid var(--border);color:var(--text-secondary);font-size:12px}.channel-item .live-indicator{font-size:8px;margin-right:4px;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.channel-item .platform-icon{margin-right:6px}.channel-item .channel-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.channel-item .viewer-count{font-size:10px;color:var(--text-secondary);background:#ef444433;padding:2px 6px;border-radius:4px;margin-right:4px}.channel-item .channel-actions{display:flex;align-items:center;gap:0}.header-actions{display:flex;gap:4px;margin-left:8px}.header-btn{background:transparent;border:1px solid var(--border);border-radius:4px;padding:6px 8px;cursor:pointer;color:var(--text-secondary);transition:all .2s;width:auto;display:flex;align-items:center;justify-content:center}.header-btn:hover{background:#3b82f61a;color:var(--text-primary);border-color:var(--accent)}.header-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.header-btn.enabled{color:#22c55e}.header-btn.disabled{color:#ef4444}.header-btn.danger:hover{background:#ef44441a;border-color:#ef4444;color:#ef4444}.header-divider{width:1px;height:24px;background:var(--border);margin:0 8px}.dashboard{padding:20px;overflow-y:auto;height:100%}.dashboard-loading,.dashboard-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary)}.dashboard-section{margin-bottom:30px}.dashboard-section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:16px;font-weight:600;color:var(--text-primary)}.dashboard-section-title .live-dot{width:8px;height:8px;background:#ef4444;border-radius:50%;animation:pulse 2s infinite}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.dashboard-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;overflow:hidden;cursor:pointer;transition:all .2s}.dashboard-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.dashboard-card.live{border-color:#ef44444d}.dashboard-card.live:hover{border-color:#ef4444}.dashboard-card-thumbnail{position:relative;width:100%;aspect-ratio:16 / 9;background:var(--bg-primary);overflow:hidden}.dashboard-card-thumbnail img{width:100%;height:100%;object-fit:cover}.dashboard-card-offline-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:48px;color:var(--text-secondary)}.dashboard-card-offline-placeholder .offline-avatar{width:64px;height:64px;border-radius:50%;opacity:.5}.dashboard-card-live-badge{position:absolute;top:8px;left:8px;background:#ef4444;color:#fff;font-size:10px;font-weight:700;padding:2px 6px;border-radius:4px}.dashboard-card-uptime{position:absolute;bottom:8px;right:8px;background:#000000b3;color:#fff;font-size:11px;padding:2px 6px;border-radius:4px}.dashboard-card-info{padding:12px}.dashboard-card-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.dashboard-card-avatar{width:32px;height:32px;border-radius:50%}.dashboard-card-name{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-card-name .platform-icon{margin-right:4px}.dashboard-card-viewers{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--text-primary);margin-bottom:4px}.dashboard-card-game{font-size:12px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px}.dashboard-card-activity{font-size:11px;color:var(--text-secondary)}.dashboard-card-offline-text{font-size:13px;color:var(--text-secondary);margin-bottom:4px}.dashboard-card-last-seen{font-size:11px;color:var(--text-secondary)}.file-uploader{padding:20px;max-width:900px}.uploader-header h3{margin:0 0 8px;font-size:18px}.uploader-header p{margin:0;color:var(--text-secondary);font-size:14px}.uploader-actions{display:flex;gap:10px;margin-top:20px}.btn-primary{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--accent);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-success{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#22c55e;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px}.btn-success:hover{background:#16a34a}.btn-success:disabled{opacity:.6;cursor:not-allowed}.btn-icon{display:flex;align-items:center;justify-content:center;padding:8px;background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border);border-radius:6px;cursor:pointer}.btn-icon:hover{background:var(--border);color:var(--text-primary)}.detection-result{display:flex;align-items:center;gap:12px;margin-top:20px;padding:12px 16px;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border)}.detection-result.high{border-color:#22c55e}.detection-result.medium{border-color:#f59e0b}.detection-result.low{border-color:#ef4444}.format-icon{font-size:24px}.format-info{display:flex;flex-direction:column;gap:2px}.format-info strong{font-size:14px}.format-info .confidence{font-size:12px;color:var(--text-secondary)}.format-info .reason{font-size:11px;color:var(--text-secondary)}.upload-progress{margin-top:20px;display:flex;align-items:center;gap:12px}.progress-bar{flex:1;height:8px;background:var(--bg-secondary);border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);transition:width .3s}.upload-stats{display:flex;gap:16px;margin-top:16px}.upload-stats .stat{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary)}.upload-stats .stat.done{color:#22c55e}.upload-stats .stat.error{color:#ef4444}.file-list{margin-top:20px;max-height:400px;overflow-y:auto;border:1px solid var(--border);border-radius:8px}.file-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--border);font-size:13px}.file-item:last-child{border-bottom:none}.file-item.done{color:#22c55e}.file-item.error{color:#ef4444}.file-item.more{color:var(--text-secondary);font-style:italic}.file-status{width:20px;display:flex;align-items:center;justify-content:center}.file-path{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{color:var(--text-secondary);font-size:12px}.uploader-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--text-secondary);text-align:center}.uploader-empty svg{margin-bottom:16px;opacity:.5}.uploader-empty .hint{font-size:13px;margin-top:8px;opacity:.7}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.uploaded-files{padding:20px}.uploaded-files-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.uploaded-files-header h3{margin:0;font-size:18px}.import-library-caption{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.uploaded-files-header .btn-icon{width:34px;height:34px;flex:none}.import-library{display:grid;gap:8px}.import-library-group{border:1px solid var(--border);border-radius:8px;overflow:hidden}.import-library-group .upload-group-row{border-bottom:0}.import-library-group:has(.import-streamers) .upload-group-row{border-bottom:1px solid var(--border)}.import-library-group .upload-group-toggle{justify-content:flex-start}.import-library-group .upload-group-toggle>svg{flex:none}.import-group-identity{display:grid;gap:3px;flex:1;min-width:150px}.import-group-identity strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-group-identity small{font-size:11px;font-weight:400}.import-group-stats{width:215px;flex:none}.import-group-range{width:190px;flex:none}.import-status{display:inline-flex;align-items:center;width:130px;flex:none;color:var(--text-secondary);font-size:12px;text-transform:capitalize}.import-status:before{content:"";width:6px;height:6px;margin-right:7px;border-radius:50%;background:var(--text-secondary)}.import-status-ready:before{background:#22c55e}.import-status-error:before{background:#ef4444}.import-status-processing:before{background:#3b82f6}.import-status-uploading:before{background:#eab308}.import-streamers{background:var(--bg-primary)}.import-streamer-row{display:flex;align-items:center;gap:14px;width:100%;padding:10px 16px 10px 35px;border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent;color:var(--text-primary);text-align:left;font-size:13px;cursor:pointer}.import-streamer-row:hover,.import-library-group .upload-group-toggle:hover{background:#ffffff09}.import-streamer-row>svg{flex:none}.import-streamer-row strong{flex:1;min-width:130px}.import-streamer-row>span:nth-of-type(1){width:170px;flex:none;color:var(--text-secondary)}.import-streamer-row>span:nth-of-type(2){width:190px;flex:none;color:var(--text-secondary)}.import-empty{padding:12px 54px;color:var(--text-secondary);font-size:13px}.import-file-detail{padding:4px 16px 4px 68px;background:#0000001f;border-bottom:1px solid var(--border)}.import-file-row{display:flex;align-items:center;gap:14px;min-height:44px;padding:5px 0;border-bottom:1px solid var(--border);font-size:12px}.import-file-name{display:grid;gap:2px;flex:1;min-width:0;overflow:hidden}.import-file-name strong,.import-file-name small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-file-name small{color:var(--text-secondary)}.import-file-row>span:nth-of-type(1){width:170px;flex:none;color:var(--text-secondary)}.import-file-row .import-status{width:130px}.import-file-actions{display:flex;gap:4px;width:100px;flex:none}.import-file-actions button,.import-file-pager button{width:auto}.import-file-pager{display:flex;justify-content:space-between;align-items:center;padding:10px 0;color:var(--text-secondary);font-size:12px}.import-file-pager>div{display:flex;gap:6px}@media(max-width:900px){.import-group-range,.import-streamer-row>span:nth-of-type(2){display:none}.import-group-stats,.import-streamer-row>span:nth-of-type(1),.import-file-row>span:nth-of-type(1){width:175px}}@media(max-width:600px){.import-group-stats,.import-streamer-row>span:nth-of-type(1){display:none}.import-file-detail{padding-left:20px}.import-file-row>span:nth-of-type(1){display:none}}.upload-group-row{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:12px 16px;border:0;border-bottom:1px solid var(--border);border-radius:0;background:var(--bg-secondary);color:var(--text-primary);text-align:left;font-size:13px}.upload-group-toggle{display:flex;align-items:center;justify-content:space-between;gap:16px;flex:1;min-width:0;color:inherit;text-align:left}.upload-group-toggle{width:auto;padding:0;border:0;background:none;cursor:pointer}.upload-group-toggle:hover strong{text-decoration:underline}.upload-group-row span{color:var(--text-secondary);white-space:nowrap}.upload-group-reprocess{display:inline-flex;align-items:center;gap:5px;width:auto;flex:none;white-space:nowrap}.loading,.empty{text-align:center;padding:40px;color:var(--text-secondary)}.import-jobs{padding:20px}.import-jobs-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.import-jobs-header h3{margin:0;font-size:18px}.header-actions{display:flex;gap:10px}.jobs-list{display:flex;flex-direction:column;gap:12px}.job-item{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;overflow:hidden}.job-item.completed{border-color:#22c55e40}.job-item.running{border-color:var(--accent)}.job-item.failed{border-color:#ef444480}.job-header{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer}.job-header:hover{background:#ffffff08}.expand-icon{color:var(--text-secondary)}.job-status{display:flex;align-items:center}.job-id{font-weight:600}.job-files{color:var(--text-secondary);font-size:13px}.job-duration{color:var(--text-secondary);font-size:13px;margin-left:auto}.job-created{color:var(--text-secondary);font-size:12px}.btn-cancel{color:var(--text-secondary);background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center}.btn-cancel:hover{color:#ef4444}.job-batches{border-top:1px solid var(--border);padding:8px 16px}.batch-row{display:grid;grid-template-columns:40px 1fr 100px 80px 80px 80px 80px;align-items:center;padding:8px 0;font-size:13px;border-bottom:1px solid var(--border)}.batch-row:last-child{border-bottom:none}.batch-row.header{font-weight:600;font-size:11px;color:var(--text-secondary)}.batch-row .col-file{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batch-error{grid-column:1 / -1;display:flex;align-items:center;gap:6px;padding:6px 0;color:#ef4444;font-size:12px}.job-error{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#ef44441a;color:#ef4444;font-size:13px;border-top:1px solid var(--border)}.status-pending{color:var(--text-secondary)}.status-running{color:var(--accent)}.status-completed{color:#22c55e}.status-failed{color:#ef4444}.status-cancelled{color:#f59e0b}.archived-chats{padding:20px;max-width:800px}.archived-chats-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.archived-chats-header h3{margin:0;font-size:18px}.archive-info-box{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:16px;margin-bottom:20px}.archive-info-box p{margin:0 0 8px;color:var(--text-secondary);font-size:14px}.archive-info-box code{display:block;background:var(--bg-primary);padding:8px 12px;border-radius:4px;font-size:13px;margin:8px 0;color:var(--accent)}.archive-reload-form{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:16px;margin-bottom:20px}.archive-reload-form h4{margin:0 0 16px;font-size:14px}.form-row{display:flex;gap:12px;margin-bottom:12px}.form-group{flex:1;display:flex;flex-direction:column;gap:6px}.form-group label{font-size:12px;color:var(--text-secondary)}.form-group input{padding:8px 12px;background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;color:var(--text-primary);font-size:14px}.reload-result{background:var(--bg-secondary);border:1px solid var(--accent);border-radius:8px;padding:16px;margin-bottom:20px}.reload-result pre{margin:0;font-size:13px;white-space:pre-wrap;word-break:break-all;color:var(--accent)}.archive-empty{display:flex;flex-direction:column;align-items:center;padding:40px 20px;color:var(--text-secondary);text-align:center}.archive-empty svg{margin-bottom:16px;opacity:.5}.archive-empty .hint{font-size:13px;margin-top:8px;opacity:.7}.archive-list{display:flex;flex-direction:column;gap:8px}.archive-item{display:flex;align-items:center;gap:16px;padding:12px 16px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px}.archive-channel{display:flex;align-items:center;gap:8px;flex:1;font-weight:500}.archive-stats{display:flex;gap:16px;color:var(--text-secondary);font-size:13px}.archive-dates{display:flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:12px}.import-options{padding:16px;margin:16px 0;border:1px solid #444;border-left:3px solid #8aab8a;border-radius:4px}.import-options h4{margin:0 0 12px}.import-options p{color:#aaa;font-size:13px;max-width:80ch}.import-fields{display:flex;flex-wrap:wrap;gap:16px}.import-fields label{display:flex;flex-direction:column;gap:6px;font-size:13px}.import-fields input,.import-fields select{padding:8px;color:inherit;background:#252525;border:1px solid #555;border-radius:4px}.source-summary{display:block;color:#aaa;font-size:11px;line-height:1.6;white-space:normal}.source-issue{display:block;color:#f4b55f}.replay-planner{width:100%;padding:24px 28px 40px;color:#e9ecec;overflow-y:auto}.replay-planner-intro{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px}.replay-planner-intro>div{flex:1;min-width:0}.replay-planner-intro>button{flex:none;width:36px;height:36px;padding:8px}.replay-planner-intro h2{font-size:28px;letter-spacing:-.04em;margin:4px 0}.replay-planner-intro p,.replay-build p{color:#9ca7a8;line-height:1.45}.replay-eyebrow{color:#a7c2a4;font-size:10px;font-weight:700;letter-spacing:.16em}.replay-planner-stack{display:grid;gap:20px;width:100%}.replay-calendar,.replay-build{width:100%;border:1px solid #344043;background:#1b2427;border-radius:9px;padding:18px 22px}.replay-calendar-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:15px}.replay-calendar-toolbar>div{display:flex;align-items:baseline;gap:12px;flex:1;min-width:0}.replay-calendar-toolbar strong{font-size:15px}.replay-calendar-toolbar span{color:#89999a;font-size:12px}.replay-calendar-toolbar button,.replay-month-action,.replay-build-actions button{border:1px solid #536460;background:#293735;color:#e9eeec;padding:6px 10px;border-radius:5px;cursor:pointer}.replay-calendar-toolbar button,.replay-month-action,.replay-build-actions button{width:auto;flex:none;white-space:nowrap}.replay-calendar-toolbar button:disabled,.replay-build-actions button:disabled{opacity:.45;cursor:default}.replay-months{display:grid;gap:2px}.replay-year{margin:14px 0 4px;padding-bottom:7px;border-bottom:1px solid #3f514d;color:#d8e6dc;font-size:14px;letter-spacing:.08em}.replay-year:first-child{margin-top:0}.replay-month{display:grid;grid-template-columns:80px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:5px 0}.replay-month-label{color:#bbc9c8;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.replay-month-action{padding:3px 8px;border-color:#3f4d4b;color:#b7c8c2;font-size:11px;font-weight:400;letter-spacing:0;text-transform:none}.replay-month-days{display:grid;grid-template-columns:repeat(31,minmax(0,1fr));gap:3px;width:100%}.replay-day,.replay-day-outside{min-width:0;height:24px;border-radius:3px}.replay-day{padding:0 2px;border:1px solid #354246;background:#273235;display:grid;place-items:center;cursor:pointer}.replay-day.has-data{background:#303d3d;border-color:#556a66}.replay-day:hover{border-color:#c0d3a9;background:#3c5246}.replay-day.selected{border-color:#c1dba9;background:#4b6650;box-shadow:inset 0 0 0 1px #c1dba9}.replay-day.range-preview{border-color:#94bba0;background:#3d5b4b}.replay-day.range-start{box-shadow:inset 0 0 0 1px #d2e9b9}.replay-day:focus-visible{outline:2px solid #e6d9a3;outline-offset:2px}.replay-day-outside{background:#263033;border:1px solid #303b3d;opacity:.45}.replay-day-marks{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:2px}.replay-day-marks .mark{width:5px;height:5px}.mark{display:inline-block;width:7px;height:7px;border-radius:50%;flex:none}.mark.chunks{background:#9fcab2}.mark.live-log{background:#72aade}.mark.live-db{background:#c0a1d6}.mark.imports{background:#e7b770}.replay-legend{display:flex;gap:14px;flex-wrap:wrap;color:#aab7b5;font-size:11px;margin-top:13px}.replay-legend span{display:inline-flex;align-items:center;gap:5px}.replay-build h3{font-size:20px;margin:6px 0}.replay-build h4{margin:20px 0 10px}.replay-source-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:7px;max-height:290px;overflow:auto}.replay-source{display:flex;gap:10px;align-items:flex-start;padding:11px;border:1px solid #3a4948;border-radius:7px;cursor:pointer}.replay-source input{width:16px;height:16px;flex:0 0 16px;margin:3px 0 0;padding:0;accent-color:#a9cba4}.replay-source span{min-width:0;flex:1;text-align:left}.replay-source strong{display:block;overflow-wrap:anywhere;font-size:13px}.replay-source small{display:block;color:#9ca7a8;margin-top:3px}.replay-empty{border:1px dashed #485957;border-radius:7px;padding:16px}.replay-match{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.replay-match label{display:grid;gap:6px;color:#aab7b5;font-size:12px;min-width:230px}.replay-match select,.replay-match input{background:#263534;border:1px solid #52615e;border-radius:5px;color:#f0f3ee;padding:9px}.replay-build-actions{display:flex;gap:10px;margin-top:20px}.replay-build-actions .btn-success{background:#92bc91;color:#18261c;font-weight:700}.replay-error{border:1px solid #a55b57;color:#ffd8d3;padding:12px;border-radius:7px;margin-bottom:16px}@media(max-width:880px){.replay-planner{padding:18px}.replay-calendar,.replay-build{padding:16px}.replay-month-days{gap:2px}.replay-day,.replay-day-outside{height:20px}}
