:root{--font-sans: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", Consolas, monospace;--bg-app: #f8fafc;--bg-panel: #ffffff;--bg-subtle: #f1f5f9;--bg-hover: #e2e8f0;--border-light: #e2e8f0;--border-medium: #cbd5e1;--border-dark: #94a3b8;--text-main: #0f172a;--text-muted: #475569;--text-subtle: #64748b;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-subtle: #eff6ff;--success: #16a34a;--success-bg: #dcfce7;--success-border: #bbf7d0;--warning: #d97706;--warning-bg: #fef3c7;--danger: #dc2626;--danger-bg: #fee2e2;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .05), 0 2px 4px -2px rgba(0, 0, 0, .05)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg-app);color:var(--text-main);line-height:1.45;-webkit-font-smoothing:antialiased;height:100vh;overflow:hidden}.app-shell{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden}.app-header{height:48px;background:var(--bg-panel);border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between;padding:0 16px;flex-shrink:0;z-index:10}.header-left{display:flex;align-items:center;gap:12px}.app-logo{display:flex;align-items:center;gap:8px}.logo-icon{color:var(--primary)}.logo-title{font-size:.95rem;font-weight:700;color:var(--text-main)}.logo-badge{font-size:.6875rem;font-family:var(--font-mono);background:var(--primary-subtle);color:var(--primary);padding:1px 6px;border-radius:var(--radius-xs);font-weight:600}.header-divider{width:1px;height:16px;background:var(--border-light)}.header-subtitle{font-size:.8125rem;color:var(--text-subtle)}.header-center{display:flex;align-items:center;gap:8px}.status-chip{display:inline-flex;align-items:center;gap:5px;font-size:.725rem;font-weight:500;padding:3px 8px;border-radius:var(--radius-xs);border:1px solid var(--border-light);background:var(--bg-subtle);color:var(--text-muted)}.chip-success{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}.chip-neutral{background:var(--bg-subtle);color:var(--text-muted)}.header-right{display:flex;align-items:center;gap:6px}.nav-btn{display:inline-flex;align-items:center;gap:4px;font-size:.775rem;font-weight:600;color:var(--text-muted);text-decoration:none;padding:4px 10px;border-radius:var(--radius-xs);border:1px solid transparent;transition:all .15s ease}.nav-btn:hover{background:var(--bg-subtle);color:var(--text-main);border-color:var(--border-light)}.nav-btn-github{background:var(--bg-subtle);border-color:var(--border-light)}.workspace-layout{display:flex;flex:1;height:calc(100vh - 48px);overflow:hidden}.sidebar-controls{width:320px;flex-shrink:0;background:var(--bg-panel);border-right:1px solid var(--border-light);display:flex;flex-direction:column;overflow-y:auto;padding:16px;gap:16px}.action-box{display:flex;flex-direction:column;gap:10px}.btn-run{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:38px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.875rem;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm);transition:background .15s ease}.btn-run:hover{background:var(--primary-hover)}.btn-stop{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:38px;background:var(--danger);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.875rem;font-weight:600;cursor:pointer;transition:opacity .15s ease}.sidebar-progress{display:flex;flex-direction:column;gap:6px;padding:8px 10px;background:var(--bg-subtle);border:1px solid var(--border-light);border-radius:var(--radius-sm)}.progress-info-row{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}.progress-current{display:flex;align-items:center;gap:6px}.progress-step{color:var(--text-subtle);font-family:var(--font-mono)}.spinner{animation:spin 1s linear infinite;color:var(--primary)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.progress-bar-track{height:4px;background:var(--border-light);border-radius:999px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--primary);transition:width .2s ease-out}.control-section{display:flex;flex-direction:column;gap:8px}.section-label{font-size:.725rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-subtle)}.section-header-row{display:flex;justify-content:space-between;align-items:center}.mini-presets{display:flex;gap:3px;flex-wrap:wrap}.mini-presets button{background:transparent;border:1px solid var(--border-light);font-size:.65rem;font-weight:600;color:var(--text-muted);padding:1px 5px;border-radius:var(--radius-xs);cursor:pointer;transition:all .15s ease}.mini-presets button:hover:not(:disabled){background:var(--bg-hover);color:var(--text-main);border-color:var(--border-medium)}.segmented-control{display:flex;background:var(--bg-subtle);padding:3px;border-radius:var(--radius-sm);border:1px solid var(--border-light);gap:3px}.seg-btn{flex:1;background:transparent;border:none;font-size:.75rem;font-weight:600;color:var(--text-muted);padding:5px 0;border-radius:var(--radius-xs);cursor:pointer;transition:all .15s ease}.seg-btn:hover:not(:disabled){color:var(--text-main)}.seg-btn.active{background:var(--bg-panel);color:var(--primary);font-weight:700;box-shadow:var(--shadow-sm)}.items-list{display:flex;flex-direction:column;gap:4px}.item-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius-xs);border:1px solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:.8125rem}.item-row:hover:not(.disabled){background:var(--bg-subtle)}.item-row.checked{background:#f8fafc;border-color:var(--border-light)}.item-row input[type=checkbox]{cursor:pointer;accent-color:var(--primary)}.item-name{flex:1;font-weight:500;color:var(--text-main)}.type-tag{font-size:.65rem;font-weight:700;padding:1px 5px;border-radius:var(--radius-xs);font-family:var(--font-mono)}.tag-ram{background:#e0f2fe;color:#0369a1}.tag-disk{background:#fce7f3;color:#be185d}.workspace-main{flex:1;display:flex;flex-direction:column;background:var(--bg-app);overflow:hidden}.results-wrapper{display:flex;flex-direction:column;height:100%;overflow:hidden}.results-toolbar{height:42px;background:var(--bg-panel);border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between;padding:0 16px;flex-shrink:0}.toolbar-tabs{display:flex;gap:4px}.tab-btn{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid transparent;padding:5px 12px;border-radius:var(--radius-xs);font-size:.775rem;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .15s ease}.tab-btn:hover{color:var(--text-main);background:var(--bg-subtle)}.tab-btn.active{background:var(--bg-subtle);color:var(--primary);border-color:var(--border-light)}.toolbar-actions{display:flex;align-items:center;gap:8px}.scale-indicator{font-size:.75rem;color:var(--text-subtle);font-family:var(--font-mono);margin-right:4px}.action-pill-btn{display:inline-flex;align-items:center;gap:4px;background:var(--bg-subtle);border:1px solid var(--border-light);color:var(--text-muted);padding:3px 8px;border-radius:var(--radius-xs);font-size:.725rem;font-weight:600;cursor:pointer}.action-pill-btn:hover{background:var(--bg-hover);color:var(--text-main)}.empty-results-box{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:32px;text-align:center}.empty-icon-wrap{width:56px;height:56px;border-radius:50%;background:var(--bg-subtle);display:flex;align-items:center;justify-content:center;margin-bottom:12px;border:1px solid var(--border-light)}.empty-title{font-size:1.05rem;font-weight:700;color:var(--text-main);margin-bottom:6px}.empty-desc{max-width:440px;font-size:.8125rem;color:var(--text-subtle);line-height:1.5}.matrix-container{flex:1;overflow:auto;padding:16px}.matrix-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--bg-panel);border:1px solid var(--border-light);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.matrix-table th{background:#f8fafc;padding:10px 14px;border-bottom:1px solid var(--border-light);border-right:1px solid var(--border-light);text-align:left;font-size:.75rem;font-weight:700;color:var(--text-muted)}.matrix-table th:last-child{border-right:none}.th-scenario{width:250px}.th-engine-wrap{display:flex;align-items:center;justify-content:space-between;gap:8px}.th-name{font-weight:700;color:var(--text-main)}.th-tag{font-size:.65rem;font-weight:700;padding:1px 5px;border-radius:var(--radius-xs);font-family:var(--font-mono)}.matrix-table td{padding:10px 14px;border-bottom:1px solid var(--border-light);border-right:1px solid var(--border-light);vertical-align:middle}.matrix-table td:last-child{border-right:none}.matrix-table tbody tr:last-child td{border-bottom:none}.td-scenario-info{background:#fafafa;vertical-align:middle}.matrix-scen-header{display:flex;align-items:center;justify-content:space-between;gap:6px}.matrix-scen-title{font-size:.8125rem;font-weight:700;color:var(--text-main)}.btn-info-icon{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:2px 4px;border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;transition:all .15s ease;flex-shrink:0}.btn-info-icon:hover{color:var(--color-primary);background:var(--bg-hover)}.matrix-scen-hint{font-size:.6875rem;font-family:var(--font-mono);color:var(--text-subtle);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.td-matrix-cell{background:var(--bg-panel)}.cell-content{display:flex;flex-direction:column;gap:2px}.cell-primary{display:flex;align-items:center;justify-content:space-between;gap:6px}.cell-ops{font-size:.875rem;font-family:var(--font-mono);font-weight:700;color:var(--text-main)}.cell-ops small{font-size:.675rem;font-weight:500;color:var(--text-subtle)}.cell-secondary{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:.725rem;font-family:var(--font-mono);color:var(--text-subtle)}.cell-tertiary{display:flex;align-items:center;justify-content:flex-end;margin-top:2px}.cell-mem-badge{font-size:.625rem;font-family:var(--font-mono);font-weight:600;color:var(--text-muted);background:var(--bg-hover, rgba(0, 0, 0, .04));padding:0 4px;border-radius:var(--radius-xs);border:1px solid var(--border-light)}.cell-winner{background:#f0fdf4!important}.cell-winner .cell-ops{color:#15803d}.winner-badge{display:inline-flex;align-items:center;gap:3px;font-size:.65rem;font-weight:700;background:#dcfce7;color:#15803d;padding:1px 5px;border-radius:var(--radius-xs);border:1px solid #bbf7d0}.baseline-selector-box{display:flex;align-items:center;gap:5px;background:var(--bg-panel);border:1px solid var(--border-light);padding:2px 7px;border-radius:var(--radius-sm)}.baseline-label{font-weight:700;color:var(--text-muted);font-size:.675rem;text-transform:uppercase;letter-spacing:.4px}.baseline-select{background:transparent;border:none;font-size:.75rem;font-weight:600;color:var(--text-main);cursor:pointer;outline:none;font-family:inherit}.cell-badges{display:flex;align-items:center;gap:5px}.winner-medal-wrap{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.winner-medal{color:#eab308;filter:drop-shadow(0 1px 1px rgba(202,138,4,.4))}.winner-medal-inline{color:#eab308;margin-right:4px;vertical-align:-2px;display:inline-block;filter:drop-shadow(0 1px 1px rgba(202,138,4,.3))}.table-speedup-cell{display:inline-flex;align-items:center;gap:5px;justify-content:flex-end}.speedup-badge{font-size:.725rem;font-weight:700;padding:2px 7px;border-radius:var(--radius-xs);display:inline-flex;align-items:center;line-height:1.25;white-space:nowrap}.speedup-badge.badge-winner{background:#dcfce7;color:#15803d;border:1px solid #86efac;box-shadow:0 1px 2px #1665341a}.speedup-badge.badge-faster{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.speedup-badge.badge-baseline{background:#f1f5f9;color:#475569;border:1px solid #cbd5e1}.speedup-badge.badge-slower{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.speedup-badge.badge-parity{background:#f8fafc;color:#64748b;border:1px solid #e2e8f0}.bar-speedup-hint{font-size:.725rem;font-weight:600;margin-left:5px;color:var(--text-muted)}.bar-val-text.winner .bar-speedup-hint{color:#047857}.cell-empty{text-align:center;color:var(--text-subtle)}.cell-error{display:flex;align-items:center;gap:6px;color:var(--danger);font-size:.775rem;font-weight:600}.charts-view-container{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}.metric-toggle-bar{display:flex;gap:6px;align-self:flex-start}.metric-choice{display:inline-flex;align-items:center;gap:5px;background:var(--bg-panel);border:1px solid var(--border-light);font-size:.75rem;font-weight:600;color:var(--text-muted);padding:4px 10px;border-radius:var(--radius-xs);cursor:pointer}.metric-choice.active{background:var(--primary);color:#fff;border-color:var(--primary)}.charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:12px}.chart-card{background:var(--bg-panel);border:1px solid var(--border-light);border-radius:var(--radius-sm);padding:12px 14px;box-shadow:var(--shadow-sm)}.chart-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.chart-scen-name{font-size:.8125rem;font-weight:700;color:var(--text-main)}.chart-winner-pill{font-size:.675rem;font-weight:600;background:var(--success-bg);color:var(--success);padding:1px 6px;border-radius:var(--radius-xs)}.bars-stack{display:flex;flex-direction:column;gap:6px}.chart-bar-row{display:flex;align-items:center;gap:10px;font-size:.75rem}.bar-eng-label{width:140px;flex-shrink:0;font-weight:500;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-trough{flex:1;height:14px;background:var(--bg-subtle);border-radius:var(--radius-xs);overflow:hidden}.bar-fill-light{height:100%;background:#3b82f6;border-radius:var(--radius-xs);transition:width .25s ease}.bar-fill-light.winner{background:#22c55e}.bar-fill-light.error{background:var(--danger)}.bar-val-text{width:110px;flex-shrink:0;text-align:right;font-family:var(--font-mono);font-weight:600;color:var(--text-muted)}.bar-val-text.winner{color:var(--success);font-weight:700}.table-view-container{flex:1;overflow-y:auto;padding:16px}.detailed-table{width:100%;border-collapse:collapse;background:var(--bg-panel);border:1px solid var(--border-light);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);font-size:.8125rem}.detailed-table th{text-align:left;background:#f8fafc;padding:8px 12px;border-bottom:1px solid var(--border-light);font-size:.725rem;font-weight:700;color:var(--text-subtle);text-transform:uppercase}.detailed-table td{padding:8px 12px;border-bottom:1px solid var(--border-light)}.detailed-table tbody tr:hover{background:#f8fafc}.detailed-table .num{text-align:right}.font-mono{font-family:var(--font-mono)}.bold{font-weight:700}.text-muted{color:var(--text-subtle)}.text-danger{color:var(--danger)}.row-fail{background:#fef2f2}.notes-view-container{flex:1;overflow-y:auto;padding:16px}.notes-classic-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:12px}.note-card{background:var(--bg-panel);border:1px solid var(--border-light);border-radius:var(--radius-sm);padding:14px;box-shadow:var(--shadow-sm)}.note-card-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.note-title{font-size:.85rem;font-weight:700;color:var(--text-main)}.note-body{font-size:.775rem;color:var(--text-muted);line-height:1.45}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px;animation:modalFadeIn .15s ease}.modal-dialog{background:var(--bg-panel);border:1px solid var(--border-medium);border-radius:var(--radius-md);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;width:100%;max-width:540px;overflow:hidden;display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-light);background:var(--bg-subtle)}.modal-title-wrap{display:flex;align-items:center;gap:8px}.modal-title{font-size:.9375rem;font-weight:700;color:var(--text-main);margin:0}.btn-close-modal{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;transition:all .15s ease}.btn-close-modal:hover{background:var(--bg-hover);color:var(--text-main)}.modal-body{padding:16px;display:flex;flex-direction:column;gap:14px}.modal-section{display:flex;flex-direction:column;gap:6px}.modal-label-row{display:flex;align-items:center;justify-content:space-between}.modal-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.modal-desc{font-size:.8125rem;color:var(--text-main);line-height:1.45;margin:0}.modal-code-block{background:#f8fafc;border:1px solid var(--border-light);border-radius:var(--radius-sm);padding:10px 12px;margin:0;overflow-x:auto;font-family:var(--font-mono);font-size:.775rem;color:#0f172a;line-height:1.45;white-space:pre-wrap;word-break:break-word}.btn-copy-code{background:transparent;border:1px solid var(--border-light);border-radius:var(--radius-xs);padding:2px 7px;font-size:.675rem;font-weight:600;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;gap:4px;transition:all .15s ease}.btn-copy-code:hover{background:var(--bg-hover);color:var(--text-main);border-color:var(--border-medium)}.modal-category-badge{font-size:.65rem;font-weight:700;font-family:var(--font-mono);color:var(--color-primary);background:#ede9fe;padding:2px 6px;border-radius:var(--radius-xs);align-self:flex-start}.modal-footer{padding:10px 16px;border-top:1px solid var(--border-light);background:var(--bg-subtle);display:flex;justify-content:flex-end}.btn-modal-close{background:var(--bg-panel);border:1px solid var(--border-medium);border-radius:var(--radius-sm);padding:6px 14px;font-size:.8125rem;font-weight:600;color:var(--text-main);cursor:pointer;transition:all .15s ease}.btn-modal-close:hover{background:var(--bg-hover)}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}
