.login-container{align-items:center;background:linear-gradient(135deg,#1a1a2e,#16213e);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-box{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;max-width:420px;padding:48px;text-align:center;width:100%}.login-header h1{color:#1a1a2e;font-size:32px;font-weight:700;margin:0 0 8px}.login-subtitle{color:#666;font-size:14px;font-weight:500;margin:0}.login-content{margin-top:32px}.login-description{color:#555;font-size:15px;line-height:1.6;margin-bottom:32px}.login-error{background:#fee;border:1px solid #fcc;border-radius:8px;color:#c00;font-size:14px;margin-bottom:24px;padding:12px 16px}.login-button{align-items:center;background:#4285f4;border:none;border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;font-size:16px;font-weight:600;gap:12px;justify-content:center;padding:14px 24px;transition:background .2s,transform .1s;width:100%}.login-button:hover:not(:disabled){background:#3367d6}.login-button:active:not(:disabled){transform:scale(.98)}.login-button:disabled{cursor:not-allowed;opacity:.7}.google-icon{height:20px;width:20px}.login-note{color:#888;font-size:13px;margin-top:20px}.button-spinner,.loading-spinner{animation:spin .8s linear infinite;border:2px solid #ccc;border-radius:50%;border-top-color:#4285f4;height:20px;width:20px}.button-spinner{border-color:#fff #ffffff4d #ffffff4d}.heatmaps{margin:0 auto;max-width:1200px;padding:24px}.heatmaps-header{align-items:baseline;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}.heatmaps-header h2{color:#1a1a2e;font-size:24px;font-weight:600;margin:0 0 8px}.heatmaps-description{color:#666;flex-basis:100%;font-size:15px;margin:0 0 12px}.heatmaps-controls{background:#f5f6f8;border-bottom:1px solid #e0e0e0;display:flex;flex-direction:column;gap:10px;margin:0 -24px 16px;padding:12px 24px;position:-webkit-sticky;position:sticky;top:0;z-index:50}.heatmaps-summary{color:#888;font-size:14px}.heatmaps-filter{align-items:center;display:flex;gap:8px}.heatmaps-filter label{color:#666;font-size:14px}.heatmaps-filter select{background:#fff;border:1px solid #ddd;border-radius:6px;color:#333;cursor:pointer;font-size:14px;padding:6px 12px}.heatmaps-filter select:hover{border-color:#bbb}.heatmaps-filter select:focus{border-color:#06c;box-shadow:0 0 0 2px #06c3;outline:none}.custom-date-inputs{align-items:center;display:flex;gap:6px}.custom-date-inputs input[type=date]{background:#fff;border:1px solid #ddd;border-radius:6px;color:#333;font-size:13px;padding:5px 8px}.custom-date-inputs input[type=date]:focus{border-color:#06c;box-shadow:0 0 0 2px #06c3;outline:none}.custom-date-inputs .date-separator{color:#666;font-size:13px}.heatmaps-filters{display:flex;flex-direction:column;gap:10px}.heatmaps-filters-row{align-items:center;display:flex;flex-wrap:wrap;gap:16px}.multi-select{align-items:center;display:flex;gap:8px;position:relative}.multi-select>label{color:#666;font-size:14px;white-space:nowrap}.multi-select-trigger{align-items:center;background:#fff;border:1px solid #ddd;border-radius:6px;color:#333;cursor:pointer;display:flex;font-size:14px;gap:8px;justify-content:space-between;min-width:140px;padding:6px 12px}.multi-select-trigger:hover{border-color:#bbb}.multi-select-trigger.has-selection{background:#f0f7ff;border-color:#06c}.multi-select-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multi-select-arrow{color:#888;font-size:10px}.multi-select-dropdown{background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 12px #00000026;left:0;margin-top:4px;max-height:300px;min-width:180px;overflow-y:auto;padding:8px 0;position:absolute;right:0;top:100%;z-index:100}.multi-select-clear{background:#f5f5f5;border:none;border-radius:4px;color:#666;cursor:pointer;display:block;font-size:12px;margin:0 8px 8px;padding:6px 8px;text-align:center;width:calc(100% - 16px)}.multi-select-clear:hover{background:#eee;color:#333}.multi-select-option{align-items:center;cursor:pointer;display:flex;font-size:14px;gap:8px;padding:8px 12px}.multi-select-option:hover{background:#f5f5f5}.multi-select-option input[type=checkbox]{cursor:pointer;margin:0}.multi-select-option span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.heatmaps-empty,.heatmaps-error,.heatmaps-loading{align-items:center;color:#666;display:flex;flex-direction:column;justify-content:center;padding:60px 20px;text-align:center}.heatmaps-empty h3,.heatmaps-error h3{color:#333;margin:0 0 8px}.heatmaps-empty p,.heatmaps-error p{color:#888;margin:0}.areas-list{display:flex;flex-direction:column;gap:8px}.area-section{background:#fff;border-radius:8px;box-shadow:0 1px 4px #00000014;overflow:hidden}.area-header{align-items:center;background:#0000;border:none;cursor:pointer;display:flex;font-size:14px;gap:12px;padding:14px 18px;text-align:left;transition:background-color .15s;width:100%}.area-header:hover{background:#f8f9fa}.expand-icon{color:#888;font-size:10px}.area-name{color:#333;flex:1 1;font-weight:500}.area-stale-badge{flex-shrink:0;font-size:13px;opacity:.7}.area-map-link{border:1px solid #4a90d9;border-radius:3px;color:#4a90d9;font-size:11px;font-weight:600;margin-left:8px;padding:2px 6px;text-decoration:none}.area-map-link:hover{background:#4a90d9;color:#fff}.area-content{border-top:1px solid #eee;padding:0 18px 18px}.area-loading{color:#666;padding:24px}.area-error,.area-loading{align-items:center;display:flex;font-size:14px;gap:12px}.area-error{background:#fff5f5;border-radius:6px;color:#c00;margin-top:12px;padding:16px}.area-error button{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:13px;margin-left:auto;padding:6px 12px}.area-error button:hover{background:#f5f5f5}.area-controls{align-items:center;border-bottom:1px solid #eee;display:flex;gap:16px;margin-bottom:4px;padding:12px 0}.file-limit-control{align-items:center;display:flex;gap:8px}.file-limit-control label{color:#666;font-size:13px}.file-limit-control select{background:#fff;border:1px solid #ddd;border-radius:4px;color:#333;cursor:pointer;font-size:13px;padding:5px 10px}.file-limit-control select:hover{border-color:#bbb}.file-limit-control select:focus{border-color:#06c;box-shadow:0 0 0 2px #06c3;outline:none}.data-summary{display:flex;gap:24px;padding:16px 0}.summary-item{display:flex;flex-direction:column;gap:4px}.summary-label{color:#888;font-size:12px;letter-spacing:.5px;text-transform:uppercase}.summary-value{color:#333;font-size:20px;font-weight:600}.file-list{margin:16px 0}.file-list-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.file-list-actions{align-items:center;display:flex;gap:8px}.file-list-toggle{background:#0000;border:1px solid #06c;border-radius:4px;color:#06c;cursor:pointer;font-size:12px;padding:4px 10px}.file-list-toggle:hover{background:#e8f4ff}.file-list-summary{background:#f8f9fa;border-radius:6px;color:#555;display:flex;font-size:13px;gap:20px;padding:12px 16px}.file-list-summary .summary-item strong{color:#333;margin-right:4px}.file-list-header h4{color:#666;font-size:13px;font-weight:600;letter-spacing:.5px;margin:0;text-transform:uppercase}.file-clear-selection{background:#f5f5f5;border:1px solid #ddd;border-radius:4px;color:#666;cursor:pointer;font-size:12px;padding:4px 10px}.file-clear-selection:hover{background:#eee;color:#333}.file-list h4{color:#666;font-size:13px;font-weight:600;letter-spacing:.5px;margin:0 0 12px;text-transform:uppercase}.file-item{align-items:center;background:#f8f9fa;border:2px solid #0000;border-radius:4px;cursor:pointer;display:flex;font-size:13px;gap:16px;margin-bottom:6px;padding:8px 12px;transition:background-color .15s,border-color .15s}.file-item:hover{background:#f0f2f5}.file-item.file-selected{background:#e8f4ff;border-color:#06c}.file-item.file-has-selected-point{background:#fff8e6;border-color:#f5a623}.file-item.file-selected.file-has-selected-point{background:linear-gradient(135deg,#e8f4ff 50%,#fff8e6 0);border-color:#f5a623}.file-checkbox{cursor:pointer;flex-shrink:0;height:16px;width:16px}.file-device{color:#333;flex:1 1;font-weight:500}.file-quality{color:#666;min-width:80px}.file-points{color:#888;min-width:60px;text-align:right}.file-branch{background:#e8eaf6;color:#5c6bc0}.file-branch,.file-cl{border-radius:3px;font-size:12px;padding:2px 6px}.file-cl{background:#f3e5f5;color:#7b1fa2}.file-date{color:#888;min-width:90px;text-align:right}.file-item.file-loading{background:#f0f4f8;opacity:.8}.file-item.file-loading .file-device,.file-item.file-loading .file-quality{color:#999}.loading-dots{animation:pulse 1s ease-in-out infinite;color:#666;display:inline-block}.loading-progress{color:#888;font-size:16px;font-weight:400}.loading-indicator{animation:pulse 1s ease-in-out infinite;color:#888;display:inline-block;margin-left:4px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.viewer-container{margin-top:16px}.heatmap-viewer{background:#1a1a2e;border-radius:8px;overflow:hidden}.viewer-stats{background:#ffffff0d;border-bottom:1px solid #ffffff1a;display:flex;gap:24px;padding:12px 16px}.viewer-stats .stat{color:#fffc;font-size:13px}.viewer-stats .stat strong{color:#ffffff80;font-weight:500;margin-right:4px}.viewer-stats .stat-cell-size{color:#ffffff80;font-size:12px;margin-left:2px}.viewer-canvas{display:block;height:400px;width:100%}.viewer-note{background:#0003;color:#fff6;font-size:12px;margin:0;padding:8px 16px;text-align:center}.viewer-empty{background:#f8f9fa;border-radius:8px;color:#888;flex-direction:column;height:200px;justify-content:center}.viewer-empty,.viewer-loading-overlay{align-items:center;display:flex;gap:8px}.viewer-loading-overlay{background:#ffffffe6;border-radius:6px;box-shadow:0 1px 4px #0000001a;color:#555;font-size:13px;left:50%;padding:6px 14px;pointer-events:none;position:absolute;top:8px;transform:translateX(-50%);z-index:10}.viewer-container-inner{position:relative}.viewer-legend{background:#000000bf;border-radius:6px;bottom:16px;color:#ffffffe6;display:flex;flex-direction:column;font-size:11px;gap:4px;padding:10px 14px;position:absolute;right:16px}.legend-gradient{background:linear-gradient(90deg,maroon 0,red 20%,#ff0 40%,#0f0);border-radius:2px;height:12px;width:120px}.legend-reversed .legend-gradient{background:linear-gradient(90deg,#0f0 0,#ff0 60%,red 80%,maroon)}.legend-ticks{height:14px;position:relative;width:120px}.legend-tick{color:#fffc;font-size:10px;position:absolute;transform:translateX(-50%)}.legend-tick:first-child{transform:translateX(0)}.legend-tick:last-child{transform:translateX(-100%)}.legend-unit{color:#fff9;font-size:10px;margin-top:2px;text-align:center}.legend-label{font-weight:500;white-space:nowrap}.viewer-tooltip{background:#000000d9;border:1px solid #fff3;border-radius:6px;color:#fff;font-size:13px;padding:8px 12px;pointer-events:none;position:absolute;white-space:nowrap;z-index:20}.tooltip-fps{font-size:15px;font-weight:600;margin-bottom:2px}.tooltip-device{color:#ffffffb3;font-size:12px}.tooltip-lod-info{border-top:1px solid #ffffff26;color:#fff9;font-size:11px;margin-top:6px;padding-top:6px}.tooltip-lod-info>div{margin-bottom:2px}.tooltip-lod-info>div:last-child{margin-bottom:0}.tooltip-fps-range{color:#ffffff80;font-style:italic}.tooltip-evaluator{border-top:1px solid #ffffff26;margin-top:6px;padding-top:6px}.tooltip-eval-header{align-items:center;color:#ffffffe6;display:flex;font-size:11px;font-weight:600;gap:6px;margin-bottom:5px}.tooltip-eval-badge{border-radius:3px;font-size:9px;font-weight:700;letter-spacing:.5px;padding:1px 5px}.tooltip-eval-badge.ok{background:#28a745cc;color:#fff}.tooltip-eval-badge.exceeded{background:#dc3545d9;color:#fff}.tooltip-eval-rules{display:flex;flex-direction:column;gap:4px}.tooltip-eval-rule{font-size:11px}.tooltip-eval-rule-label{color:#ffffffbf;display:flex;gap:12px;justify-content:space-between;margin-bottom:2px}.tooltip-eval-rule-value{color:#ffffffe6;font-family:monospace;font-size:11px}.tooltip-eval-rule-threshold{color:#fff6}.tooltip-eval-bar-bg{background:#ffffff1f;border-radius:2px;height:3px;overflow:hidden}.tooltip-eval-bar{background:linear-gradient(90deg,#28a745,#ffc107);border-radius:2px;height:100%;transition:width .1s ease}.tooltip-eval-bar.exceeded{background:linear-gradient(90deg,#ffc107,#dc3545)}.run-table-metric-col{background:#6366f114;font-weight:600}th.run-table-metric-col{color:#6366f1}.tooltip-trend-ring{border-top:1px solid #ffffff26;margin-top:6px;padding-top:6px}.tooltip-trend-header{color:#ccc;font-size:11px;font-weight:600;letter-spacing:.5px;margin-bottom:4px;text-transform:uppercase}.tooltip-trend-delta{font-size:16px;font-weight:700;margin-bottom:4px}.tooltip-trend-delta.improved{color:#4caf50}.tooltip-trend-delta.worsened{color:#f44336}.tooltip-trend-delta.stable{color:#999}.tooltip-trend-scores{color:#aaa;display:flex;font-size:11px;gap:12px}.tooltip-trend-date{color:#777;font-size:10px;margin-top:2px}.detail-evaluator{background:#00000008;border:1px solid #eee;border-radius:4px;margin-top:4px;padding:8px}.detail-eval-header{align-items:center;display:flex;font-size:12px;gap:6px;margin-bottom:6px}.detail-eval-name{color:#333;font-weight:600}.detail-eval-badge{border-radius:3px;font-size:9px;font-weight:700;letter-spacing:.5px;padding:1px 5px}.detail-eval-badge.ok{background:#d4edda;color:#155724}.detail-eval-badge.exceeded{background:#f8d7da;color:#721c24}.detail-eval-score{color:#888;font-family:monospace;font-size:11px;margin-left:auto}.detail-eval-rule{margin-bottom:4px}.detail-eval-rule:last-child{margin-bottom:0}.detail-eval-rule-label{color:#555;display:flex;font-size:11px;justify-content:space-between;margin-bottom:2px}.lod-indicator{background:#6633991a;border-radius:4px;padding:4px 8px}.lod-cell-size{color:#888;font-size:12px;margin-left:4px}.lod-sample-count{color:#888;font-size:12px;margin-left:8px}.viewer-detail-panels{display:flex;flex-direction:column;gap:8px;left:12px;max-height:calc(100% - 24px);overflow-y:auto;position:absolute;top:12px;z-index:25}.viewer-detail-panel{background:#000000d9;border:1px solid #fff3;border-radius:8px;color:#fff;min-width:180px;padding:12px 16px;position:relative}.detail-close{background:none;border:none;color:#ffffff80;cursor:pointer;font-size:18px;line-height:1;padding:0;position:absolute;right:8px;top:6px}.detail-close:hover{color:#ffffffe6}.detail-row{align-items:baseline;display:flex;font-size:13px;gap:12px;justify-content:space-between;padding:4px 0}.detail-row.detail-fps{align-items:flex-start;border-bottom:1px solid #ffffff26;flex-direction:column;gap:0;margin-bottom:4px;padding-bottom:8px}.detail-fps .detail-value{font-size:28px;font-weight:700;line-height:1.1}.detail-fps .detail-label{color:#ffffff80;font-size:11px;text-transform:uppercase}.detail-fps-grid{border-bottom:1px solid #ffffff1a;display:flex;gap:12px;justify-content:flex-start;padding:8px 0}.detail-fps-item{align-items:center;display:flex;flex-direction:column;min-width:45px}.detail-fps-value{color:#fff;font-size:18px;font-weight:700;line-height:1.1}.detail-fps-label{color:#ffffff80;font-size:10px;text-transform:uppercase}.detail-render-grid{border-bottom:1px solid #ffffff1a;display:flex;gap:8px;justify-content:flex-start;padding:6px 0}.detail-render-item{align-items:center;display:flex;flex-direction:column;min-width:40px}.detail-render-value{color:#ffffffe6;font-size:13px;font-weight:600;line-height:1.1}.detail-render-label{color:#fff6;font-size:9px;text-transform:uppercase}.detail-label{color:#fff9;font-size:12px}.detail-value{color:#fff;font-weight:500;text-align:right}.detail-value.detail-source{font-size:11px;max-width:150px;word-break:break-all}.detail-row.detail-compact{color:#fff;display:block;font-size:12px;padding:2px 0}.detail-row.detail-compact.detail-muted{color:#888;font-size:11px}.detail-row.detail-compact.detail-source{font-size:10px;word-break:break-all}.detail-row.detail-links{display:flex;gap:6px;padding:4px 0 2px}.detail-link{border-radius:3px;color:#fff;font-size:11px;font-weight:500;padding:2px 8px;text-decoration:none}.detail-link-aws{background:#f90}.detail-link-aws:hover{background:#e68a00}.detail-link-build{background:#06c}.detail-link-build:hover{background:#0052a3}.loading-spinner{border:2px solid #eee;border-top-color:#4285f4}.no-map-note{background:#f8f9fa;border-radius:4px;color:#888;font-size:12px;margin:8px 0 0;padding:8px 12px}.fullscreen-toggle{align-items:center;background:#0009;border:1px solid #fff3;border-radius:6px;color:#ffffffe6;cursor:pointer;display:flex;font-size:18px;height:36px;justify-content:center;position:absolute;right:12px;top:12px;transition:all .15s;width:36px;z-index:10}.fullscreen-toggle:hover{background:#000c;border-color:#fff6}.viewer-lod-cache{align-items:center;background:#0009;border:1px solid #fff3;border-radius:4px;display:flex;gap:4px;padding:4px 8px;position:absolute;right:52px;top:12px;z-index:10}.viewer-lod-cache .lod-cache-label{color:#fff9;font-size:11px;margin-right:2px}.viewer-lod-cache .lod-cache-indicator{align-items:center;border-radius:3px;display:inline-flex;font-size:11px;font-weight:600;height:18px;justify-content:center;width:18px}.viewer-lod-cache .lod-cache-indicator.lod-pending{background:#333;color:#666}.viewer-lod-cache .lod-cache-indicator.lod-loading{animation:pulse 1s ease-in-out infinite;background:#1e3a5f;color:#60a5fa}.viewer-lod-cache .lod-cache-indicator.lod-loaded{background:#1a472a;color:#4ade80}.viewer-lod-cache .lod-cache-indicator.lod-error{background:#450a0a;color:#f87171}.viewer-lod-cache .lod-cache-indicator.lod-skipped{background:#422006;color:#fbbf24}.viewer-lod-cache .lod-cache-indicator.lod-active{border:2px solid #60a5fa;box-shadow:0 0 4px #60a5fa80}.heatmap-viewer.fullscreen{background:#1a1a2e;display:flex;flex-direction:column;height:100%;width:100%}.heatmap-viewer.fullscreen .viewer-container-inner{flex:1 1;min-height:0;position:relative}.heatmap-viewer.fullscreen .viewer-canvas{height:100%;left:0;position:absolute;top:0;width:100%}.performance-analysis{background:#f8f9fa;border-radius:8px;margin:16px 0;padding:16px}.performance-analysis h4{color:#333;font-size:14px;font-weight:600;letter-spacing:.5px;margin:0 0 16px;text-transform:uppercase}.performance-analysis.empty,.performance-analysis.error,.performance-analysis.loading{align-items:center;color:#666;display:flex;font-size:14px;gap:12px;padding:20px}.performance-analysis.error{background:#fff5f5;color:#c00}.severity-badge{align-items:center;display:inline-flex;flex-shrink:0;font-size:12px;font-weight:700;height:32px;justify-content:center;width:32px}.severity-badge.small{font-size:10px;height:18px;width:18px}.severity-badge.critical{background:#0000;font-size:24px}.severity-badge.high{background:#fd7e14;border-radius:50%;color:#fff}.severity-badge.medium{background:#ffc107;-webkit-clip-path:polygon(50% 0,0 100%,100% 100%);clip-path:polygon(50% 0,0 100%,100% 100%);color:#000;height:32px;padding-top:8px;width:36px}.severity-badge.good{background:#28a745;border-radius:4px;color:#fff}.severity-badge.untested{background:#6c757d;border-radius:50%;color:#fff}.area-summary-stats{align-items:center;cursor:help;display:flex;gap:6px;margin-left:auto;margin-right:12px}.area-fps-label{color:#888;font-size:12px;font-weight:400}.area-fps-value{font-size:13px;font-weight:600}.area-fps-value.good{color:#28a745}.area-fps-value.medium{color:#d4a017}.area-fps-value.critical{color:#dc3545}.bottleneck-section{margin-bottom:20px}.bottleneck-header{margin-bottom:12px}.bottleneck-title{color:#666;font-size:12px;font-weight:600;text-transform:uppercase}.bottleneck-bar{display:flex;flex-direction:column;gap:10px}.bottleneck-item{align-items:center;display:flex;gap:10px}.bottleneck-label{align-items:center;display:flex;gap:6px;min-width:70px}.bottleneck-type{color:#333;font-size:13px;font-weight:600}.bottleneck-pct{color:#666;font-size:12px}.bottleneck-bar-track{background:#e5e7eb;border-radius:5px;flex:1 1;height:10px;max-width:200px;overflow:hidden}.bottleneck-bar-fill{border-radius:5px;height:100%;transition:width .3s ease}.bottleneck-bar-fill.gpu{background:linear-gradient(90deg,#ef4444,#f87171)}.bottleneck-bar-fill.cpu{background:linear-gradient(90deg,#f59e0b,#fbbf24)}.bottleneck-hint{color:#888;font-size:11px;font-style:italic}.device-list{background:#fff;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.device-list-header{background:#f3f4f6;border-bottom:1px solid #e5e7eb;color:#666;font-size:11px;font-weight:600;letter-spacing:.5px;padding:10px 14px;text-transform:uppercase}.device-list-empty{color:#888;font-size:13px;padding:16px;text-align:center}.device-row{align-items:center;border-bottom:1px solid #e5e7eb;cursor:pointer;display:flex;gap:10px;padding:12px 14px;transition:background .15s}.device-row:last-child{border-bottom:none}.device-row:hover{background:#f9fafb}.device-row.expanded{background:#f0f7ff}.device-expand-icon{color:#888;font-size:10px;width:12px}.device-status{font-size:14px;text-align:center;width:20px}.device-name{color:#333;flex:1 1;font-size:13px;font-weight:500}.device-fps,.device-quality{color:#666;font-size:12px}.device-fps{margin-left:auto}.device-bottleneck{border-radius:3px;font-size:10px;font-weight:600;padding:2px 6px;text-transform:uppercase}.device-bottleneck.gpu{background:#fee2e2;color:#991b1b}.device-bottleneck.cpu{background:#fef3c7;color:#92400e}.device-trend-section{background:#fff;border:1px solid #e5e7eb;border-radius:8px;margin-top:16px;padding:16px}.trend-loading{align-items:center;color:#666;display:flex;font-size:13px;gap:10px;padding:20px}.loading-spinner.small{height:18px;width:18px}.trend-header{margin-bottom:12px}.trend-title{color:#333;font-size:13px;font-weight:500}.trend-empty{color:#888;font-size:13px;padding:16px;text-align:center}.trend-chart{margin-bottom:16px}.trend-chart-empty{background:#f9fafb;border-radius:6px;color:#888;font-size:13px;padding:24px}.chart-tooltip{background:#fff;border:1px solid #e5e7eb;border-radius:6px;box-shadow:0 2px 8px #0000001f;font-size:13px;padding:10px 14px}.chart-tooltip .tooltip-date{color:#888;font-size:11px;margin-bottom:4px}.trend-cl-list{border-top:1px solid #e5e7eb;display:flex;flex-direction:column;gap:8px;padding-top:12px}.trend-cl-item{align-items:center;background:#f9fafb;border-radius:6px;display:flex;font-size:13px;gap:10px;padding:8px 12px}.trend-cl-status{font-size:14px}.trend-cl-number{color:#333;font-weight:500}.trend-cl-date{color:#888;font-size:12px}.trend-cl-fps{color:#666;margin-left:auto}.trend-cl-view-btn{background:#fff;border:1px solid #06c;border-radius:4px;color:#06c;cursor:pointer;font-size:11px;font-weight:500;padding:4px 10px;transition:all .15s}.trend-cl-view-btn:hover{background:#06c;color:#fff}.lod-progress{align-items:center;display:flex;gap:4px}.lod-progress-indicator{background:#444;border-radius:3px;color:#888;cursor:help;font-size:11px;font-weight:500;padding:2px 6px;transition:all .15s}.lod-progress-indicator.lod-pending{background:#333;color:#666}.lod-progress-indicator.lod-loading{animation:pulse 1s ease-in-out infinite;background:#422006;color:#fbbf24}.lod-progress-indicator.lod-loaded{background:#1a472a;color:#4ade80}.lod-progress-indicator.lod-error{background:#450a0a;color:#f87171}.lod-progress-indicator.lod-skipped{background:#422006;color:#fbbf24}.lod-progress-indicator.lod-clickable{cursor:pointer}.lod-progress-indicator.lod-clickable:hover{background:#7f1d1d;transform:scale(1.1)}.lod-progress-indicator.lod-active{border:2px solid #60a5fa;box-shadow:0 0 4px #60a5fa66}.compare-mode-toggle{background:#fff;border:1px solid #06c;border-radius:4px;color:#06c;cursor:pointer;font-size:13px;font-weight:500;padding:6px 12px;transition:all .15s}.compare-mode-toggle:hover{background:#e8f4ff}.compare-mode-toggle.active{background:#06c;color:#fff}.layer-checkboxes{align-items:center;display:flex;gap:12px}.layer-checkbox{align-items:center;color:#555;cursor:pointer;display:flex;font-size:13px;gap:4px;-webkit-user-select:none;user-select:none}.layer-checkbox input[type=checkbox]{accent-color:#4285f4;cursor:pointer}.layer-checkbox select{background:#fff;border:1px solid #ddd;border-radius:4px;color:#333;cursor:pointer;font-size:13px;padding:2px 6px}.stf-scan-select{background:#fff;border:1px solid #ccc;border-radius:4px;font-size:12px;padding:4px 8px}.area-analysis-panels{display:flex;flex-direction:column;gap:4px;margin-top:12px}.analysis-panel{border:1px solid #e0e0e0;border-radius:6px;overflow:hidden}.analysis-panel-header{align-items:center;background:#f8f8f8;border:none;color:#333;cursor:pointer;display:flex;font-size:13px;font-weight:600;gap:8px;padding:8px 12px;text-align:left;width:100%}.analysis-panel-header:hover{background:#f0f0f0}.analysis-panel-hint{color:#999;font-size:12px;font-weight:400;margin-left:auto}.analysis-expand-icon{color:#888;display:inline-block;font-size:10px;transition:transform .15s}.analysis-expand-icon.expanded{transform:rotate(90deg)}.analysis-panel-body{padding:12px}.analysis-controls{align-items:center;display:flex;gap:8px;margin-bottom:10px}.analysis-control-label{color:#888;font-size:12px}.analysis-metric-select{background:#fff;border:1px solid #ccc;border-radius:4px;font-size:12px;padding:4px 8px}.analysis-hotspots-table,.analysis-summary-table{border-collapse:collapse;font-size:12px;width:100%}.analysis-hotspots-table th,.analysis-summary-table th{border-bottom:1px solid #e0e0e0;color:#888;font-size:11px;font-weight:500;padding:4px 8px;text-align:right}.analysis-hotspots-table th:first-child,.analysis-summary-table th:first-child{text-align:left}.analysis-hotspots-table td,.analysis-summary-table td{font-family:SF Mono,Menlo,Monaco,monospace;font-size:11px;padding:4px 8px;text-align:right}.analysis-hotspots-table td:first-child,.analysis-summary-table td:first-child{color:#555;text-align:left}.analysis-hotspots-table tbody tr:hover{background:#f5f5f5}.analysis-over-budget{color:#e53935}.analysis-budget-pct{font-size:10px;font-weight:500;margin-left:6px}.analysis-budget-pct.over{color:#e53935}.analysis-budget-pct.under{color:#43a047}.analysis-empty{color:#999;font-size:12px;font-style:italic}.compare-mode{padding:16px 0}.compare-mode-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;margin-bottom:16px;padding-bottom:12px}.compare-mode-title{color:#333;font-size:16px;font-weight:600}.compare-mode-controls{align-items:center;display:flex;gap:12px}.compare-mode-exit{background:#f5f5f5;border:1px solid #ddd;border-radius:4px;color:#666;cursor:pointer;font-size:13px;padding:6px 12px}.compare-mode-exit:hover{background:#eee;color:#333}.compare-viewers{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr;margin-bottom:16px}.compare-viewer-panel{background:#f8f9fa;border-radius:8px;display:flex;flex-direction:column;overflow:hidden}.compare-viewer-header{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;gap:12px;padding:12px 16px}.compare-viewer-label{color:#666;font-size:12px;font-weight:600;min-width:40px;text-transform:uppercase}.compare-viewer-label.left{color:#3b82f6}.compare-viewer-label.right{color:#f97316}.compare-selector{align-items:center;display:flex;flex:1 1;gap:8px}.compare-selector select{background:#fff;border:1px solid #ddd;border-radius:4px;color:#333;cursor:pointer;font-size:13px;max-width:180px;padding:5px 10px}.compare-selector select:hover{border-color:#bbb}.compare-selector select:focus{border-color:#06c;box-shadow:0 0 0 2px #06c3;outline:none}.compare-viewer-content{flex:1 1;min-height:400px}.compare-viewer-content .heatmap-viewer{border-radius:0;height:100%}.sync-indicator{align-items:center;background:#f0f0f0;border-radius:4px;color:#888;display:flex;font-size:12px;gap:6px;padding:4px 8px}.sync-indicator-dot{background:#10b981;border-radius:50%;height:8px;width:8px}.compare-unmatched-toggle{align-items:center;color:#666;display:flex;font-size:13px;gap:8px}.compare-unmatched-toggle input{cursor:pointer}.compare-unmatched-count{color:#888;font-size:12px}.difference-summary{background:#fff;border:1px solid #e5e7eb;border-radius:8px;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px;padding:16px}.difference-summary-title{color:#666;font-size:13px;font-weight:600;margin-bottom:4px;text-transform:uppercase;width:100%}.diff-item{align-items:center;background:#f8f9fa;border-radius:6px;display:flex;flex-direction:column;min-width:90px;padding:8px 16px}.diff-label{color:#666;font-size:11px;font-weight:500;margin-bottom:4px;text-transform:uppercase}.diff-delta{font-size:16px;font-weight:600}.diff-item.delta-improved .diff-delta{color:#10b981}.diff-item.delta-regressed .diff-delta{color:#ef4444}.diff-item.delta-neutral .diff-delta{color:#6b7280}.diff-percent{color:#888;font-size:11px;margin-top:2px}.compare-charts{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:16px}.compare-charts-title{color:#666;font-size:13px;font-weight:600;margin-bottom:16px;text-transform:uppercase}.compare-chart{margin-bottom:16px}.compare-chart:last-child{margin-bottom:0}.compare-chart-label{color:#333;font-size:12px;font-weight:500;margin-bottom:8px}.compare-loading{color:#666}.compare-error,.compare-loading{align-items:center;display:flex;gap:12px;justify-content:center;padding:40px}.compare-error{background:#fff5f5;border-radius:8px;color:#c00}.cl-badge{align-items:center;background:#f3e5f5;border-radius:4px;color:#7b1fa2;display:inline-flex;font-size:12px;gap:4px;padding:2px 8px}.cl-badge.left{background:#e3f2fd;color:#1976d2}.cl-badge.right{background:#fff3e0;color:#e65100}.run-table-section{border:1px solid #e5e7eb;border-radius:8px;margin-top:16px;overflow:hidden}.run-table-header{align-items:center;background:#f8f9fa;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:10px 14px}.run-table-header h4{color:#333;font-size:13px;font-weight:600;margin:0}.run-table-layer-toggle{align-items:center;cursor:pointer;display:flex;gap:6px}.run-table-layer-toggle input[type=checkbox]{cursor:pointer}.run-table-info{align-items:center;color:#888;display:flex;font-size:12px;gap:8px}.run-table-clear{background:none;border:none;color:#4285f4;cursor:pointer;font-size:12px;padding:0}.run-table-clear:hover{text-decoration:underline}.run-table{border-collapse:collapse;font-size:12px;width:100%}.run-table thead th{background:#fafafa;border-bottom:1px solid #e5e7eb;color:#666;font-weight:600;padding:6px 10px;text-align:left;white-space:nowrap}.run-table tbody td{border-bottom:1px solid #f0f0f0;padding:5px 10px;white-space:nowrap}.run-table-row{transition:background .1s}.run-table-row:hover{background:#f0f7ff}.run-table-row-selected{background:#e8f0fe}.run-table-row-selected:hover{background:#d2e3fc}.run-table-check{text-align:center;width:32px}.run-table-check input[type=checkbox]{cursor:pointer}.run-table-date{color:#555}.run-table-report{text-align:center}.run-table-pagination{align-items:center;background:#fafafa;border-top:1px solid #e5e7eb;color:#666;display:flex;font-size:12px;gap:12px;justify-content:center;padding:8px 14px}.run-table-pagination button{background:none;border:1px solid #d0d0d0;border-radius:4px;color:#333;cursor:pointer;font-size:12px;padding:3px 10px}.run-table-pagination button:hover:not(:disabled){background:#e8f0fe;border-color:#4285f4;color:#4285f4}.run-table-pagination button:disabled{cursor:default;opacity:.4}.scan-delta{display:inline-block;font-size:10px;font-weight:500;margin-left:4px}.scan-delta-better{color:#43a047}.scan-delta-worse{color:#e53935}.scan-report-link{background:none;border:1px solid #4285f4;border-radius:4px;color:#4285f4;cursor:pointer;font-size:11px;padding:2px 8px;white-space:nowrap}.scan-report-link:hover{background:#4285f4;color:#fff}.scan-report-link:disabled{cursor:wait;opacity:.5}.detail-link-unity{background:none;border:1px solid #7cb3f0;border-radius:4px;color:#7cb3f0;cursor:pointer;font-family:inherit;font-size:11px;padding:2px 8px}.detail-link-unity:hover{background:#7cb3f0;color:#fff}.detail-link-disconnected{border-color:#999;color:#999}.detail-link-disconnected:hover{background:#999;color:#fff}.heatmaps-unity-status{margin-left:auto}.unity-indicator{border-radius:4px;font-size:12px;font-weight:500;padding:4px 10px}.unity-connected{background:#43a0471f;border:none;color:#43a047}.unity-disconnected{background:none;border:1px solid #999;color:#999;cursor:pointer;font-family:inherit}.unity-disconnected:hover{border-color:#7cb3f0;color:#7cb3f0}.area-header-btn{border-radius:4px;cursor:pointer;font-family:inherit;font-size:11px;font-weight:500;padding:2px 8px;white-space:nowrap}.area-unity-btn.unity-connected{background:#43a0471f;border:1px solid #43a047;color:#43a047}.area-unity-btn.unity-connected:hover{background:#43a047;color:#fff}.area-unity-btn.unity-disconnected{background:none;border:1px solid #bbb;color:#999}.area-unity-btn.unity-disconnected:hover{border-color:#7cb3f0;color:#7cb3f0}.asset-budgets{margin:0 auto;max-width:1400px;padding:20px}.asset-budgets-error,.asset-budgets-loading{align-items:center;display:flex;flex-direction:column;gap:16px;justify-content:center;min-height:300px}.asset-budgets-error{color:#dc3545}.asset-budgets-error button{background:#007bff;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:8px 16px}.asset-budgets-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.asset-budgets-header h2{color:#333;margin:0}.asset-budgets-controls{align-items:center;display:flex;gap:12px}.category-select,.days-select,.limit-select{background:#fff;border:1px solid #ddd;border-radius:4px;font-size:14px;padding:8px 12px}.asset-budgets-controls .custom-date-inputs{align-items:center;display:flex;gap:6px}.asset-budgets-controls .custom-date-inputs input[type=date]{background:#fff;border:1px solid #ddd;border-radius:4px;font-size:13px;padding:7px 8px}.asset-budgets-controls .custom-date-inputs .date-separator{color:#666;font-size:13px}.refresh-btn,.sync-btn{border:none;border-radius:4px;cursor:pointer;font-size:14px;padding:8px 16px}.refresh-btn{background:#6c757d;color:#fff}.refresh-btn:hover{background:#5a6268}.sync-btn{background:#007bff;color:#fff}.sync-btn:hover{background:#0056b3}.sync-btn:disabled{background:#94b8d4;cursor:not-allowed}.sync-status{align-items:center;background:#f8f9fa;border-radius:4px;display:flex;font-size:13px;gap:8px;margin-bottom:20px;padding:8px 16px}.status-label{color:#666}.status-value{color:#333;font-weight:500}.status-separator{color:#ddd}.asset-budgets-summary{display:flex;flex-wrap:wrap;gap:24px;margin-bottom:24px}.asset-budgets-summary .summary-stat{align-items:center;background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;display:flex;flex-direction:column;min-width:120px;padding:16px 24px}.asset-budgets-summary .stat-value{color:#333;font-size:28px;font-weight:600}.asset-budgets-summary .stat-label{color:#666;font-size:12px;margin-top:4px;text-transform:uppercase}.asset-budgets-summary .summary-stat.oversized{border-color:#dc3545}.asset-budgets-summary .summary-stat.oversized .stat-value{color:#dc3545}.asset-budgets-summary .summary-stat.optimal{border-color:#28a745}.asset-budgets-summary .summary-stat.optimal .stat-value{color:#28a745}.asset-budgets-summary .summary-stat.undersized{border-color:#ffc107}.asset-budgets-summary .summary-stat.undersized .stat-value{color:#856404}.asset-budgets-summary .summary-stat.waste{border-color:#fd7e14}.asset-budgets-summary .summary-stat.waste .stat-value{color:#fd7e14}.asset-budgets-summary .summary-stat.savings{border-color:#17a2b8}.asset-budgets-summary .summary-stat.savings .stat-value{color:#17a2b8}.snapshot-info{background:#e9ecef;border-radius:4px;color:#495057;font-size:14px;margin-bottom:24px;padding:12px 16px}.snapshot-info strong{color:#333}.trend-section{margin-bottom:32px}.trend-section h3{color:#333;font-size:16px;margin:0 0 16px}.trend-chart{background:#fff;border:1px solid #e9ecef;border-radius:8px;padding:16px}.trend-chart svg{display:block;height:200px;width:100%}.trend-chart-empty{background:#f8f9fa;border-radius:8px;color:#666;padding:48px;text-align:center}.table-pagination{align-items:center;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;margin-bottom:8px;padding:12px 0}.pagination-info{color:#666;font-size:.85rem}.pagination-controls{align-items:center;display:flex;gap:4px}.page-size-select{margin-right:12px}.page-btn,.page-size-select{border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.85rem;padding:6px 10px}.page-btn{background:#fff;min-width:32px;transition:all .15s ease}.page-btn:hover:not(:disabled){background:#f0f0f0;border-color:#ccc}.page-btn:disabled{cursor:not-allowed;opacity:.4}.page-btn.active{background:#007bff;border-color:#007bff;color:#fff}.table-section{margin-bottom:32px}.table-section h3{color:#333;font-size:16px;margin:0 0 16px}.no-data{background:#f8f9fa;border-radius:8px;color:#666;padding:48px;text-align:center}.no-data p{margin:0}.asset-budget-table-container{border:1px solid #e9ecef;border-radius:8px;overflow-x:auto}.asset-budget-table{border-collapse:collapse;font-size:14px;width:100%}.asset-budget-table td,.asset-budget-table th{border-bottom:1px solid #e9ecef;padding:12px 16px;text-align:left}.asset-budget-table th{background:#f8f9fa;color:#333;font-weight:600;white-space:nowrap}.asset-budget-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.asset-budget-table th.sortable:hover{background:#e9ecef}.asset-budget-table tbody tr:hover{background:#f8f9fa}.asset-budget-table .asset-path{font-family:monospace;font-size:12px;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asset-budget-table .resolution{font-family:monospace;text-align:center}.asset-budget-table .waste-score{font-weight:600;text-align:right}.asset-budget-table .waste-score.status-oversized{color:#dc3545}.asset-budget-table .waste-score.status-optimal{color:#28a745}.asset-budget-table .waste-score.status-undersized{color:#856404}.asset-budget-table .savings{color:#17a2b8;font-weight:600;text-align:right}.category-badge{background:#f0f0f0;border-radius:4px;color:#333;display:inline-block;font-size:12px;font-weight:500;padding:2px 8px}.category-sections{display:flex;flex-direction:column;gap:16px}.category-section{background:#fff;border:1px solid #e9ecef;border-radius:8px;overflow:hidden}.category-header{align-items:center;background:#f8f9fa;border-left:4px solid #0000;cursor:pointer;display:flex;gap:12px;padding:16px 20px;transition:background-color .15s ease;-webkit-user-select:none;user-select:none}.category-header:hover{background:#e9ecef}.category-header h3{color:#333;flex-shrink:0;font-size:16px;margin:0}.expand-icon{color:#666;font-size:12px;text-align:center;width:16px}.category-header-stats{display:flex;font-size:14px;gap:20px;margin-left:auto}.header-stat{color:#666}.header-stat strong{color:#333;margin-right:4px}.header-stat.oversized strong{color:#dc3545}.header-stat.waste strong{color:#fd7e14}.header-stat.savings strong{color:#17a2b8}.category-content{border-top:1px solid #e9ecef;padding:20px}.category-trend{margin-bottom:24px}.category-table{margin-top:0}.category-section.collapsed .category-content{display:none}.loading-spinner{animation:spin 1s linear infinite;border:3px solid #f3f3f3;border-top-color:#007bff;height:40px;width:40px}.trend-indicator{display:inline-block;font-size:12px;font-weight:700;margin-right:6px;vertical-align:middle}.trend-indicator.trend-worse{color:#dc3545}.trend-indicator.trend-better{color:#28a745}.trend-indicator.trend-new{background:#e3f2fd;border-radius:3px;color:#007bff;font-size:10px;padding:1px 4px}.filter-bar{display:flex;flex-direction:column;gap:10px}.filter-bar-row{align-items:center;display:flex;flex-wrap:wrap;gap:16px}.filter-bar-item{align-items:center;display:flex;gap:8px}.filter-bar-item label{color:#666;font-size:14px}.filter-bar-item select{background:#fff;border:1px solid #ddd;border-radius:6px;color:#333;cursor:pointer;font-size:14px;padding:6px 12px}.filter-bar-item select:hover{border-color:#bbb}.filter-bar-item select:focus{border-color:#06c;box-shadow:0 0 0 2px #06c3;outline:none}.perf-trends{padding:0}.perf-trends-header{margin-bottom:16px}.perf-trends-header h2{color:#333;font-size:22px;margin:0 0 4px}.perf-trends-description{color:#666;font-size:14px;margin:0}.perf-trends-controls{background:#f9f9f9;border:1px solid #eee;border-radius:8px;display:flex;flex-direction:column;gap:12px;margin-bottom:24px;padding:16px}.perf-trends-metric-row{align-items:center;display:flex;gap:16px;margin-top:4px}.perf-trends-context-count{color:#888;font-size:13px}.perf-trends-chart-section{background:#fff;border:1px solid #eee;border-radius:8px;margin-bottom:32px;padding:16px}.perf-trends-chart-section h3{color:#333;font-size:16px;margin:0 0 16px}.perf-trends-empty,.perf-trends-loading{align-items:center;color:#888;display:flex;font-size:14px;justify-content:center;padding:40px}.perf-trends-error{background:#fef0f0;border:1px solid #fdd;border-radius:6px;color:#c33;font-size:14px;margin-bottom:16px;padding:12px 16px}.cl-dates{margin-top:8px}.cl-dates h4{color:#333;font-size:15px;margin:0 0 12px}.cl-dates-table-wrapper{max-height:400px;overflow-y:auto}.cl-dates-table{border-collapse:collapse;font-size:13px;width:100%}.cl-dates-table th{background:#f5f5f5;border-bottom:2px solid #ddd;color:#555;font-weight:600;padding:8px 12px;position:-webkit-sticky;position:sticky;text-align:left;top:0}.cl-dates-table td{border-bottom:1px solid #eee;color:#333;padding:6px 12px}.cl-dates-count{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.cl-dates-loading{color:#888;font-size:14px;padding:20px;text-align:center}.ability-perf{padding:0}.ability-perf-header{margin-bottom:16px}.ability-perf-header h2{color:#333;font-size:22px;margin:0 0 4px}.ability-perf-description{color:#666;font-size:14px;margin:0}.ability-perf-controls{background:#f9f9f9;border:1px solid #eee;border-radius:8px;margin-bottom:20px;padding:16px}.ability-perf-layout{display:flex;gap:20px;min-height:600px}.ability-perf-sidebar{display:flex;flex-direction:column;flex-shrink:0;gap:8px;width:240px}.ability-perf-category-filter{display:flex;flex-wrap:wrap;gap:4px}.category-btn{background:#fff;border:1px solid #ddd;border-radius:4px;color:#555;cursor:pointer;font-size:12px;padding:4px 10px}.category-btn:hover{background:#f5f5f5;border-color:#bbb}.category-btn.active{background:#06c;border-color:#06c;color:#fff}.ability-perf-test-list{background:#fff;border:1px solid #eee;border-radius:8px;flex:1 1;max-height:calc(100vh - 350px);overflow-y:auto}.test-group-header{background:#f9f9f9;border-bottom:1px solid #eee;color:#888;font-size:11px;font-weight:600;letter-spacing:.5px;padding:8px 12px;position:-webkit-sticky;position:sticky;text-transform:uppercase;top:0;z-index:1}.test-item{align-items:center;background:#fff;border:none;border-bottom:1px solid #f0f0f0;color:#333;cursor:pointer;display:flex;font-size:13px;justify-content:space-between;padding:8px 12px;text-align:left;width:100%}.test-item:hover{background:#f5f8ff}.test-item.active{background:#e8f0fe;color:#06c;font-weight:500}.test-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.test-count{color:#999;flex-shrink:0;font-size:11px;margin-left:8px}.ability-perf-charts{flex:1 1;min-width:0}.ability-perf-chart-title{color:#333;font-size:18px;margin:0 0 16px}.ability-perf-chart-subtitle{color:#888;font-size:13px;font-weight:400;margin-left:12px}.ability-perf-chart-section{background:#fff;border:1px solid #eee;border-radius:8px;margin-bottom:24px;padding:16px}.ability-perf-chart-section h4{color:#555;font-size:14px;margin:0 0 12px}.ability-perf-empty,.ability-perf-loading{align-items:center;color:#888;display:flex;font-size:14px;justify-content:center;padding:60px 20px}.ability-perf-error{background:#fef0f0;border:1px solid #fdd;border-radius:6px;color:#c33;font-size:14px;padding:12px 16px}.quest-perf{padding:20px}.quest-perf-header{align-items:center;display:flex;gap:12px;margin-bottom:16px}.quest-perf-header h2{font-size:1.3em;margin:0}.quest-perf-count{color:#888;font-size:.9em}.quest-perf-empty,.quest-perf-error,.quest-perf-loading{color:#888;padding:40px;text-align:center}.quest-perf-error{color:#ff6b6b}.quest-perf-hint{color:#666;font-size:.85em;margin-top:8px}.quest-perf-list{display:flex;flex-direction:column;gap:2px}.quest-perf-item{background:#1e1e1e;border:1px solid #333;border-radius:6px;overflow:hidden}.quest-perf-item-header{align-items:center;cursor:pointer;display:flex;gap:10px;padding:10px 14px;-webkit-user-select:none;user-select:none}.quest-perf-item-header:hover{background:#252525}.quest-expand-icon{color:#888;font-size:.7em;width:12px}.quest-name{flex:1 1;font-weight:500}.quest-so-id{color:#666;font-size:11px;font-weight:400;margin-left:8px}.quest-stats{color:#aaa;display:flex;font-size:.85em;gap:12px}.quest-pass-rate,.quest-result.pass{color:#4caf50}.quest-result.fail{color:#ff6b6b}.quest-detail{background:#181818;border-top:1px solid #333;padding:12px 14px 16px}.quest-detail-loading{color:#888;padding:20px;text-align:center}.quest-trend-section{margin-bottom:16px}.quest-trend-section h4{color:#ccc;font-size:.95em;margin:0 0 8px}.quest-trend-chart{background:#1a1a1a;border-radius:4px;padding:8px}.quest-zones h4{color:#ccc;font-size:.95em;margin:0 0 8px}.quest-zone-item{background:#1e1e1e;border:1px solid #2a2a2a;border-radius:4px;margin-bottom:2px}.quest-zone-header{align-items:center;cursor:pointer;display:flex;font-size:.9em;gap:8px;padding:8px 12px;-webkit-user-select:none;user-select:none}.quest-zone-header:hover{background:#252525}.zone-expand-icon{color:#888;font-size:.65em;width:10px}.zone-status{font-size:.85em;text-align:center;width:18px}.zone-status.good{color:#4caf50}.zone-status.warning{color:#ff9800}.zone-status.critical{color:#f44336}.zone-name{flex:1 1;font-weight:500}.zone-metrics{color:#aaa;display:flex;font-size:.85em;gap:10px}.zone-fps{color:#4caf50}.zone-fps-min{color:#ff9800}.quest-no-zones{color:#666;font-style:italic;padding:8px 0}.zone-heatmap-detail{background:#1a1a1a;border-top:1px solid #2a2a2a;padding:10px 12px}.zone-heatmap-empty,.zone-heatmap-loading{color:#666;font-size:.85em;padding:12px;text-align:center}.zone-heatmap-stats{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:8px}.zone-heatmap-stats .stat{align-items:center;display:flex;flex-direction:column;gap:2px}.zone-heatmap-stats .stat-label{color:#888;font-size:.75em;text-transform:uppercase}.zone-heatmap-stats .stat-value{color:#ddd;font-size:1.1em;font-weight:600}.zone-heatmap-meta{color:#888;font-size:.8em;margin-bottom:6px}.zone-heatmap-meta .meta-label{color:#aaa;margin-left:8px}.zone-heatmap-meta .meta-label:first-child{margin-left:0}.zone-heatmap-hint{color:#555;font-size:.8em;font-style:italic;margin:6px 0 0}.zone-heatmap-controls{align-items:center;display:flex;gap:8px;margin:8px 0}.zone-heatmap-controls .metric-label{color:#aaa;font-size:.85em}.zone-heatmap-controls .metric-select{background:#1a1a2e;border:1px solid #333;border-radius:4px;color:#ddd;font-size:.85em;padding:4px 8px}.zone-heatmap-viewer{border-radius:6px;height:500px;margin-top:4px;overflow:hidden;position:relative;width:100%}.zone-heatmap-controls .file-limit-control{align-items:center;display:flex;gap:4px;margin-left:auto}.zone-heatmap-controls .file-limit-control label{color:#aaa;font-size:.85em}.zone-heatmap-controls .file-limit-control select{background:#1a1a2e;border:1px solid #333;border-radius:4px;color:#ddd;font-size:.85em;padding:4px 8px}.zone-heatmap-controls .compare-mode-toggle{background:#2a2a3a;border:1px solid #444;border-radius:4px;color:#aaa;cursor:pointer;font-size:.85em;padding:4px 10px}.zone-heatmap-controls .compare-mode-toggle:hover{background:#333;color:#ddd}.zone-heatmap-controls .compare-mode-toggle.active{background:#2196f3;border-color:#2196f3;color:#fff}.zone-compare-mode{margin-top:8px}.zone-compare-selectors{display:flex;gap:16px;margin-bottom:8px}.zone-compare-selector{align-items:center;display:flex;font-size:.85em;gap:6px}.zone-compare-selector label{color:#aaa}.zone-compare-selector select{background:#1a1a2e;border:1px solid #333;border-radius:4px;color:#ddd;font-size:.85em;padding:4px 8px}.zone-compare-viewers{display:flex;gap:4px}.zone-compare-viewer{flex:1 1;min-width:0}.zone-compare-label{background:#222;border-radius:4px 4px 0 0;color:#888;font-size:.8em;padding:4px 8px;text-align:center}.zone-compare-viewer .zone-heatmap-viewer{border-radius:0 0 6px 6px;height:400px}.no-map-note{bottom:8px;color:#555;font-size:.75em;font-style:italic;left:50%;margin:0;pointer-events:none;position:absolute;transform:translateX(-50%)}.loading-spinner{animation:spin .8s linear infinite;border:3px solid #333;border-radius:50%;border-top-color:#2196f3;display:inline-block;height:24px;margin-right:8px;vertical-align:middle;width:24px}.loading-spinner.small{border-width:2px;height:16px;width:16px}.evaluator-mgr{margin:0 auto;max-width:900px}.evaluator-mgr-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.evaluator-mgr-header h2{color:#333;font-size:20px;margin:0}.evaluator-mgr-error{background:#fff0f0;border:1px solid #fcc;border-radius:6px;color:#c33;font-size:14px;margin-bottom:16px;padding:10px 16px}.evaluator-mgr-empty{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;color:#888;font-size:14px;padding:48px 24px;text-align:center}.new-eval-btn{background:#007bff;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:8px 18px}.new-eval-btn:hover{background:#0069d9}.evaluator-list{display:flex;flex-direction:column;gap:12px}.evaluator-card{background:#fff;border:1px solid #e9ecef;border-radius:8px;padding:16px 20px}.evaluator-card-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.evaluator-card-title{color:#333;font-size:16px;font-weight:600}.evaluator-card-mode{background:#f0f0f0;border-radius:12px;color:#666;font-size:12px;letter-spacing:.5px;padding:2px 10px;text-transform:uppercase}.evaluator-card-rules{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.rule-chip{background:#eef3ff;border-radius:4px;color:#36c;font-family:monospace;font-size:13px;padding:3px 10px}.evaluator-card-meta{color:#999;display:flex;font-size:12px;gap:16px;margin-bottom:10px}.evaluator-card-actions{display:flex;gap:8px}.edit-btn{background:#f8f9fa;border:1px solid #ddd;border-radius:4px;color:#333;cursor:pointer;font-size:13px;padding:5px 14px}.edit-btn:hover{background:#e9ecef}.delete-btn{background:#f8f9fa;border:1px solid #ddd;border-radius:4px;color:#c33;cursor:pointer;font-size:13px;padding:5px 14px}.delete-btn:hover{background:#fff0f0;border-color:#fcc}.delete-confirm-btn{background:#c33;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;padding:5px 14px}.delete-confirm-btn:hover{background:#a22}.evaluator-editor{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:24px}.editor-field{margin-bottom:16px}.editor-field label{color:#555;display:block;font-size:13px;font-weight:600;margin-bottom:6px}.editor-field input[type=text],.editor-field select{background:#fff;border:1px solid #ddd;border-radius:4px;box-sizing:border-box;font-size:14px;padding:8px 12px;width:100%}.editor-field select{max-width:500px}.editor-rules{margin-bottom:20px}.editor-rules-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.editor-rules-header label{color:#555;font-size:13px;font-weight:600}.add-rule-btn{background:#fff;border:1px solid #007bff;border-radius:4px;color:#007bff;cursor:pointer;font-size:13px;padding:4px 12px}.add-rule-btn:hover{background:#eef3ff}.rule-row{align-items:center;background:#fff;border:1px solid #e9ecef;border-radius:6px;display:flex;gap:10px;margin-bottom:8px;padding:8px 12px}.rule-row select{border:1px solid #ddd;border-radius:4px;font-size:14px;min-width:180px;padding:6px 10px}.threshold-input{align-items:center;display:flex;flex:1 1;gap:6px}.threshold-label{color:#666;font-size:13px}.threshold-input input{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:6px 10px;width:120px}.remove-rule-btn{align-items:center;background:none;border:1px solid #ddd;border-radius:4px;color:#999;cursor:pointer;display:flex;font-size:18px;height:28px;justify-content:center;line-height:1;padding:0;width:28px}.remove-rule-btn:hover{background:#fff0f0;border-color:#c33;color:#c33}.remove-rule-btn:disabled{cursor:not-allowed;opacity:.3}.editor-actions{border-top:1px solid #e9ecef;display:flex;gap:10px;padding-top:8px}.save-btn{background:#007bff;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:8px 24px}.save-btn:hover{background:#0069d9}.save-btn:disabled{cursor:not-allowed;opacity:.5}.cancel-btn{background:#fff;border:1px solid #ddd;border-radius:6px;color:#333;cursor:pointer;font-size:14px;padding:8px 18px}.cancel-btn:hover{background:#f0f0f0}.cancel-btn:disabled{cursor:not-allowed;opacity:.5}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f7fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}.app,.app-loading{display:flex;flex-direction:column;min-height:100vh}.app-loading{align-items:center;background:#f5f7fa;color:#666;justify-content:center}.app-loading .loading-spinner{animation:spin .8s linear infinite;border:3px solid #eee;border-radius:50%;border-top-color:#4285f4;height:40px;margin-bottom:16px;width:40px}.app-loading.large .loading-spinner{height:48px;width:48px}@keyframes spin{to{transform:rotate(1turn)}}.app-header{background:linear-gradient(135deg,#1a1a2e,#16213e);box-shadow:0 2px 10px #0003;color:#fff;justify-content:space-between;padding:16px 24px}.app-header,.header-left{align-items:center;display:flex}.header-left{gap:12px}.app-title{font-size:22px;font-weight:700;letter-spacing:-.5px;margin:0}.header-divider{color:#ffffff4d}.header-subtitle{color:#ffffffb3;font-size:14px;font-weight:400}.header-right{gap:20px}.header-right,.server-status{align-items:center;display:flex}.server-status{color:#ffffffb3;font-size:13px;gap:8px}.status-dot{background:#888;border-radius:50%;height:8px;width:8px}.server-status.ok .status-dot{background:#10b981}.server-status.error .status-dot{background:#ef4444}.user-info{align-items:center;display:flex;gap:12px}.user-name{color:#ffffffe6;font-size:14px}.logout-button{background:#ffffff1a;border:1px solid #fff3;border-radius:6px;color:#ffffffe6;cursor:pointer;font-size:13px;font-weight:500;padding:8px 16px;transition:background .2s}.logout-button:hover{background:#fff3}.app-nav{background:#fff;border-bottom:1px solid #e5e7eb;display:flex;gap:4px;padding:0 24px}.nav-tab{background:none;border:none;border-bottom:2px solid #0000;color:#666;cursor:pointer;font-size:14px;font-weight:500;padding:16px 24px;transition:color .2s,border-color .2s}.nav-tab:hover{color:#333}.nav-tab.active{border-bottom-color:#4285f4;color:#4285f4}.nav-tab.external{color:#999;font-size:13px;text-decoration:none}.nav-tab.external:hover{color:#666}.nav-divider{color:#ddd;padding:16px 8px;-webkit-user-select:none;user-select:none}.cross-link-pill{background:#6366f126;border-radius:4px;color:#6366f1;display:inline-block;font-size:12px;padding:2px 8px;text-decoration:none;transition:background .15s,color .15s}.cross-link-pill:hover{background:#6366f140;color:#818cf8}.app-main{background:#f5f7fa;flex:1 1;padding:24px}.tab-content{height:100%}.tab-content.hidden{display:none}.tab-content.active{display:block}.placeholder-content{align-items:center;color:#666;display:flex;flex-direction:column;justify-content:center;padding:80px 40px;text-align:center}.placeholder-content h2{color:#333;font-size:24px;font-weight:600;margin:0 0 12px}.placeholder-content p{color:#888;font-size:15px;margin:0}@media (max-width:768px){.app-header{flex-direction:column;gap:16px;padding:16px}.header-right{justify-content:space-between;width:100%}.app-nav{overflow-x:auto;padding:0 16px}.nav-tab{padding:12px 16px;white-space:nowrap}.app-main{padding:16px}}
/*# sourceMappingURL=main.14964516.css.map*/