:root{--bg: #f4f6f9;--panel: #ffffff;--border: #d8dee7;--text: #1f2733;--muted: #6b7785;--accent: #2563eb;--a: #fde9c8;--b: #d7ebff;--uncovered: #ffd4d4}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:14px}.app{max-width:1200px;margin:0 auto;padding:16px}header h1{margin:0 0 4px;font-size:22px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin:12px 0}.panel h2{margin:0 0 10px;font-size:16px}.panel h3{margin:18px 0 8px;font-size:14px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row.spread{justify-content:space-between}.muted{color:var(--muted)}.error{color:#c0392b;font-weight:600}.warn{background:var(--uncovered);font-weight:700}td.over{background:#ffd4d4;font-weight:700}td.under{background:#fff3c4}.badge{display:inline-block;padding:0 6px;border-radius:4px;font-size:11px;margin:0 3px}.badge.over{background:#ffd4d4}.badge.under{background:#fff3c4}button{border:1px solid var(--border);background:#fff;border-radius:7px;padding:6px 12px;cursor:pointer;font-size:13px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.link{background:none;border:none;color:var(--accent);padding:0;font-size:13px}.filebtn{border:1px solid var(--border);border-radius:7px;padding:6px 12px;cursor:pointer;font-size:13px}.flags{display:flex;flex-direction:column;gap:8px;margin:6px 0 14px}.flag{display:flex;align-items:center;gap:8px;cursor:pointer;padding:7px 10px;border:1px solid var(--border);border-radius:8px;background:#fafbfc}.flag:hover{border-color:var(--accent)}.tabs{display:flex;gap:4px}.tab{border-radius:7px 7px 0 0}.tab.on{background:var(--accent);color:#fff;border-color:var(--accent)}.tablewrap{overflow:auto;max-height:70vh;border:1px solid var(--border);border-radius:8px}table.grid{border-collapse:collapse;width:100%}table.grid th,table.grid td{border:1px solid var(--border);padding:3px 6px;text-align:center;white-space:nowrap}table.grid.small{font-size:12px}table.grid th{background:#eef2f7;position:sticky;top:0;z-index:2}th.we,td.cell.we{background:#eef2f7}.sticky{position:sticky;left:0;background:#fff;z-index:1}th.sticky{z-index:3;background:#eef2f7}td.label{text-align:left;font-weight:600;max-width:200px;overflow:hidden;text-overflow:ellipsis}td.cell{font-weight:600}td.cell.A{background:var(--a)}td.cell.B{background:var(--b)}td.cell.uncovered{background:var(--uncovered)}td.empty{background:#fafbfc}.num{width:64px}input.num{padding:3px 5px}select,input[type=number],input[type=text],input:not([type]){border:1px solid var(--border);border-radius:5px;padding:3px 5px;font-size:12px}tr.inactive{opacity:.45}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.chip{background:#eef2f7;border:1px solid var(--border);border-radius:14px;padding:2px 8px;font-size:12px;display:inline-flex;align-items:center;gap:4px}.chip .x{border:none;background:none;cursor:pointer;color:var(--muted);padding:0 2px}.grid-settings{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-bottom:12px}.grid-settings label{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted)}.warnings{margin:8px 0}.warnings summary{cursor:pointer;color:#c0392b}td.services{text-align:left;white-space:normal;max-width:320px;font-size:11px}
