@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #faf9f7;--paper: #ffffff;--ink: #0f0f0e;--ink-2: #4a4a48;--ink-3: #9a9a97;--rule: #e8e7e4;--rule-dark:#c8c7c4;--accent: #c8102e;--accent-bg:#fff0f2;--green: #166534;--green-bg: #f0fdf4;--yellow: #854d0e;--yellow-bg:#fefce8;--font: "IBM Plex Mono", "Courier New", monospace;--sz-xs: 10px;--sz-sm: 11px;--sz-base: 13px;--sz-md: 15px;--sz-lg: 20px;--sz-xl: 28px}html,body,#root{height:100%;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:var(--sz-base);line-height:1.6;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--rule-dark)}.app{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1;max-width:1280px;margin:0 auto;width:100%;padding:28px 32px}.app-footer{border-top:1px solid var(--rule);padding:12px 32px;display:flex;justify-content:space-between;color:var(--ink-3);font-size:var(--sz-xs)}.navbar{border-bottom:2px solid var(--ink);padding:0 32px;display:flex;align-items:center;height:52px;gap:32px;background:var(--paper)}.navbar-brand{display:flex;align-items:baseline;gap:10px;flex-shrink:0}.navbar-title{font-size:var(--sz-md);font-weight:700;letter-spacing:-.01em;color:var(--ink)}.navbar-title .accent{color:var(--accent)}.blink-cursor,.navbar-logo{display:none}.navbar-sub{font-size:var(--sz-xs);color:var(--ink-3);font-weight:300}.navbar-tabs{display:flex;gap:0;margin-left:auto;height:100%}.nav-tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;color:var(--ink-3);font-family:var(--font);font-size:var(--sz-sm);font-weight:400;letter-spacing:.05em;padding:0 16px;cursor:pointer;transition:color .1s}.nav-tab:hover{color:var(--ink)}.nav-tab.active{color:var(--ink);font-weight:600;border-bottom-color:var(--accent)}.navbar-badge{display:flex;align-items:center;gap:6px;font-size:var(--sz-xs);color:var(--accent);letter-spacing:.05em}.badge-dot{width:5px;height:5px;border-radius:50%;background:var(--accent)}.setup-layout{display:grid;grid-template-columns:1fr 360px;gap:32px;align-items:start}.simulate-layout{display:flex;flex-direction:column;gap:24px}.sim-bottom{display:grid;grid-template-columns:1fr 300px;gap:24px;align-items:start}.section-title{font-size:var(--sz-xs);font-weight:600;letter-spacing:.12em;color:var(--ink-3);padding-bottom:8px;border-bottom:1px solid var(--rule);margin-bottom:14px}.preset-buttons{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.btn-preset{background:none;border:1px solid var(--rule-dark);color:var(--ink-2);font-family:var(--font);font-size:var(--sz-xs);padding:3px 10px;cursor:pointer;transition:all .1s}.btn-preset:hover{border-color:var(--ink);color:var(--ink)}.btn-preset.btn-danger:hover{border-color:var(--accent);color:var(--accent)}.proc-table{width:100%;border-collapse:collapse;font-size:var(--sz-base)}.proc-table th{text-align:left;padding:5px 10px;font-size:var(--sz-xs);font-weight:500;letter-spacing:.08em;color:var(--ink-3);border-bottom:1px solid var(--rule)}.proc-table td{padding:5px 10px;border-bottom:1px solid var(--rule)}.proc-row:last-child td{border-bottom:none}.proc-row:hover{background:var(--bg)}.color-dot,.proc-dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.cell-value{cursor:text;border:1px solid transparent;padding:1px 4px;display:inline-block;min-width:30px;transition:border-color .1s}.cell-value:hover{border-color:var(--rule-dark)}.cell-input{background:var(--paper);border:1px solid var(--ink);color:var(--ink);font-family:var(--font);font-size:var(--sz-base);padding:1px 6px;width:80px;outline:none}.btn-delete{background:none;border:none;color:var(--ink-3);cursor:pointer;font-size:15px;padding:0 4px;transition:color .1s}.btn-delete:hover{color:var(--accent)}.table-footer{display:flex;align-items:center;gap:14px;padding-top:10px;margin-top:4px;border-top:1px solid var(--rule)}.btn-add{background:none;border:1px solid var(--ink);color:var(--ink);font-family:var(--font);font-size:var(--sz-sm);font-weight:500;padding:4px 12px;cursor:pointer;transition:all .1s}.btn-add:hover{background:var(--ink);color:var(--paper)}.table-hint{font-size:var(--sz-xs);color:var(--ink-3)}.algo-select-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:18px}.algo-btn{background:none;border:1px solid var(--rule);color:var(--ink-2);padding:8px 10px;cursor:pointer;transition:all .1s;text-align:left;display:flex;flex-direction:column;gap:1px;font-family:var(--font)}.algo-btn:hover{border-color:var(--rule-dark);color:var(--ink)}.algo-btn.active{border-color:var(--accent);color:var(--ink);background:var(--accent-bg)}.algo-short{font-size:var(--sz-sm);font-weight:700}.algo-btn.active .algo-short{color:var(--accent)}.algo-full{font-size:var(--sz-xs);color:var(--ink-3)}.algo-badge{font-size:9px;letter-spacing:.06em;padding:0 4px;width:fit-content;margin-top:2px;border:1px solid}.algo-badge.classic{color:var(--ink-3);border-color:var(--rule-dark)}.algo-badge.advanced{color:var(--accent);border-color:var(--accent)}.config-fields{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}.config-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.config-label{font-size:var(--sz-xs);color:var(--ink-2)}.config-slider-row{display:flex;align-items:center;gap:10px}.config-slider{-webkit-appearance:none;width:110px;height:2px;background:var(--rule-dark);outline:none}.config-slider::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;background:var(--ink);cursor:pointer}.config-val{font-size:var(--sz-sm);font-weight:600;min-width:18px;text-align:right}.config-number{background:var(--paper);border:1px solid var(--rule-dark);color:var(--ink);font-family:var(--font);font-size:var(--sz-base);padding:3px 8px;width:72px;outline:none;text-align:right;transition:border-color .1s}.config-number:focus{border-color:var(--ink)}.config-no-params{font-size:var(--sz-xs);color:var(--ink-3);padding:6px 0}.btn-run{width:100%;background:var(--ink);border:1px solid var(--ink);color:var(--paper);font-family:var(--font);font-size:var(--sz-sm);font-weight:600;letter-spacing:.1em;padding:9px;cursor:pointer;transition:all .1s}.btn-run:hover{background:var(--accent);border-color:var(--accent)}.gantt-empty{padding:32px 0;color:var(--ink-3);font-size:var(--sz-sm)}.gantt-scroll-container{overflow-x:auto;padding-bottom:4px}.gantt-svg{display:block;overflow:visible}.gantt-legend{display:flex;flex-wrap:wrap;gap:14px;padding-top:12px;border-top:1px solid var(--rule);margin-top:12px}.legend-item{display:flex;align-items:center;gap:6px;font-size:var(--sz-xs);color:var(--ink-2)}.legend-dot{width:8px;height:8px;flex-shrink:0}.metrics-empty{color:var(--ink-3);font-size:var(--sz-sm);padding:24px 0}.metrics-table{width:100%;border-collapse:collapse;font-size:var(--sz-base)}.metrics-table th{padding:5px 10px;text-align:right;font-size:var(--sz-xs);letter-spacing:.08em;color:var(--ink-3);border-bottom:1px solid var(--rule);font-weight:500}.metrics-table th:first-child{text-align:left}.metrics-table td{padding:5px 10px;text-align:right;border-bottom:1px solid var(--rule)}.metrics-table td:first-child{text-align:left}.metrics-table tbody tr:hover{background:var(--bg)}.proc-id-cell{display:flex;align-items:center;gap:8px}.cell-good{color:var(--green)}.cell-bad{color:var(--accent)}.metrics-table tfoot .avg-row td{font-weight:600;border-top:1px solid var(--ink);border-bottom:none;padding-top:7px}.btn-export{background:none;border:1px solid var(--rule-dark);color:var(--ink-2);font-family:var(--font);font-size:var(--sz-xs);padding:3px 9px;cursor:pointer;transition:all .1s}.btn-export:hover{border-color:var(--ink);color:var(--ink)}.metrics-legend{display:flex;gap:16px;padding-top:8px;margin-top:4px;border-top:1px solid var(--rule)}.legend-tag{font-size:var(--sz-xs);color:var(--ink-3)}.legend-tag.good{color:var(--green)}.legend-tag.bad{color:var(--accent)}.fairness-body{display:flex;flex-direction:column;gap:20px}.jains-label{font-size:var(--sz-xs);letter-spacing:.1em;color:var(--ink-3);margin-bottom:6px}.jains-number{font-size:52px;font-weight:700;line-height:1;letter-spacing:-.03em}.jains-number.fair{color:var(--green)}.jains-number.mod{color:var(--yellow)}.jains-number.unfair{color:var(--accent)}.jains-verdict{font-size:var(--sz-xs);letter-spacing:.12em;margin-top:4px;font-weight:600}.jains-verdict.fair{color:var(--green)}.jains-verdict.mod{color:var(--yellow)}.jains-verdict.unfair{color:var(--accent)}.jains-desc{font-size:var(--sz-xs);color:var(--ink-3);margin-top:2px}.fairness-stats{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);border:1px solid var(--rule)}.stat-box{padding:10px 12px;background:var(--paper)}.stat-label{font-size:9px;letter-spacing:.1em;color:var(--ink-3);margin-bottom:3px}.stat-value{font-size:var(--sz-md);font-weight:600}.starvation-warning{display:flex;flex-direction:column;gap:3px;border:1px solid var(--accent);padding:10px 12px;font-size:var(--sz-sm);color:var(--accent)}.warning-icon{font-size:14px}.chart-label{font-size:var(--sz-xs);letter-spacing:.1em;color:var(--ink-3);margin-bottom:8px}.lottery-legend{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:4px}.lottery-legend-item{font-size:var(--sz-xs);color:var(--ink-2)}.queue-history-grid{display:flex;flex-direction:column;gap:3px}.queue-history-item{display:flex;align-items:center;gap:8px;font-size:var(--sz-sm)}.arrow{color:var(--ink-3)}.queue-badge{padding:0 5px;font-size:var(--sz-xs);font-weight:600;border:1px solid}.queue-badge.q0{color:var(--green);border-color:var(--green)}.queue-badge.q1{color:var(--yellow);border-color:var(--yellow)}.queue-badge.q2{color:var(--accent);border-color:var(--accent)}.compare-view{display:flex;flex-direction:column;gap:32px}.compare-empty{color:var(--ink-3);font-size:var(--sz-sm);padding:60px 0;text-align:center}.compare-table{width:100%;border-collapse:collapse;font-size:var(--sz-base)}.compare-table th{padding:5px 10px;text-align:right;font-size:var(--sz-xs);letter-spacing:.08em;color:var(--ink-3);border-bottom:2px solid var(--ink);font-weight:500}.compare-table th:first-child{text-align:left}.compare-table td{padding:5px 10px;text-align:right;border-bottom:1px solid var(--rule)}.compare-table td:first-child{text-align:left}.compare-table tbody tr:hover{background:var(--bg)}.compare-table tbody tr:last-child td{border-bottom:none}.algo-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:8px}.cell-best{font-weight:700}.starved-tag{color:var(--accent);font-size:var(--sz-xs)}.ok-tag{color:var(--green)}.compare-charts{display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px}.about-layout{display:flex;flex-direction:column;gap:28px}.about-header{border-bottom:1px solid var(--rule);padding-bottom:18px}.about-title{font-size:var(--sz-xl);font-weight:700;letter-spacing:-.02em;margin-bottom:6px}.about-sub{font-size:var(--sz-sm);color:var(--ink-2);max-width:520px;line-height:1.65}.about-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1px;border:1px solid var(--rule);background:var(--rule)}.about-card{background:var(--paper);padding:20px;display:flex;flex-direction:column;gap:12px}.about-card:hover{background:var(--bg)}.about-card-header{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.about-short{font-size:var(--sz-md);font-weight:700;color:var(--accent)}.about-full{font-size:var(--sz-sm);font-weight:600}.about-desc{font-size:var(--sz-sm);line-height:1.65;color:var(--ink-2)}.about-meta{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:10px 0}.about-row{display:flex;gap:10px;font-size:var(--sz-xs);line-height:1.5}.about-label{font-size:9px;letter-spacing:.08em;color:var(--ink-3);min-width:50px;padding-top:2px;flex-shrink:0}.btn-try{background:none;border:1px solid var(--rule-dark);color:var(--ink-2);font-family:var(--font);font-size:var(--sz-xs);padding:5px 12px;cursor:pointer;transition:all .1s;align-self:flex-start;margin-top:auto}.btn-try:hover{border-color:var(--accent);color:var(--accent)}@media (max-width: 900px){.setup-layout,.sim-bottom,.compare-charts,.about-grid{grid-template-columns:1fr}.main-content{padding:16px}.navbar{padding:0 16px}}@media (max-width: 600px){.algo-select-grid{grid-template-columns:1fr}.nav-tab{padding:0 10px}}
