:root{--bg:#f4f5f7;--panel:#fff;--line:#e4e7ec;--line-soft:#eef0f3;--ink:#14171c;--ink-2:#5b6472;--ink-3:#98a0ad;--accent:#2f6feb;--accent-soft:#eaf1fe;--ok:#16884d;--warn:#c07800;--bad:#cf3f3f;--head-h:52px;--radius:8px;--shadow:0 1px 2px #10182808, 0 6px 16px #10182810}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font:13px/1.45 -apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Inter,Roboto,sans-serif;-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}.spacer{flex:1}.dim{color:var(--ink-3);font-weight:400}b.over{color:var(--bad)}b.warn{color:var(--warn)}.app{height:100%;display:flex;flex-direction:column;min-width:0}.toolbar{flex:none;height:var(--head-h);display:flex;align-items:center;gap:8px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--line)}.brand{font-weight:650;white-space:nowrap;letter-spacing:-.01em}.brand .dim{margin-left:8px;font-size:12px}.seg{display:flex;background:#f1f3f6;border-radius:8px;padding:2px;gap:2px}.seg-btn{border:none;background:none;padding:3px 10px;border-radius:6px;cursor:pointer;font-size:12px;font-weight:650;color:var(--ink-3)}.seg-btn.on{background:var(--panel);box-shadow:0 1px 2px #10182814}.seg-btn.on.P0{color:var(--bad)}.seg-btn.on.P1{color:var(--accent)}.seg-btn.on.P2{color:#7b8493}.select-wrap{position:relative;display:flex;align-items:center}.select-wrap select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:5px 26px 5px 10px;cursor:pointer}.select-wrap svg{position:absolute;right:8px;color:var(--ink-3);pointer-events:none}.search{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:5px 10px;width:230px}.search:focus,.select-wrap select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2f6feb1f}.field{display:flex;align-items:center;gap:6px;color:var(--ink-3);font-size:12px}.field .num{width:48px;border:1px solid var(--line);border-radius:7px;padding:4px 6px;text-align:right;background:var(--panel);color:var(--ink)}.btn{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:5px 10px;cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){border-color:#cbd2dc;background:#fcfcfd}.btn:disabled{opacity:.45;cursor:default}.btn.icon{padding:5px 7px}.btn.small{padding:3px 8px;font-size:12px}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.danger:hover{border-color:#f0c4c4;color:var(--bad);background:#fff7f7}.status{font-size:12px;color:var(--ok);white-space:nowrap;padding-left:2px}.status:before{content:"●";margin-right:5px;font-size:9px;vertical-align:1px}.status.offline{color:var(--bad)}.status.connecting{color:var(--warn)}.banner{flex:none;display:flex;align-items:center;gap:10px;padding:8px 14px;background:#fff8e8;border-bottom:1px solid #f2dfae;color:#7a5a00;position:relative;z-index:50}.banner .btn{background:#fff;border-color:#ecd7a5}.banner .btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.app.viewing .row-tools,.app.viewing .row-x,.app.viewing .insert,.app.viewing .grip,.app.viewing .add-epic{display:none!important}.app.viewing .text-cell{pointer-events:none}.app.viewing .num,.app.viewing select{pointer-events:none;opacity:.85}.grid-wrap{flex:1;overflow:auto;background:var(--panel)}table.grid,table.cap{border-collapse:separate;border-spacing:0;table-layout:fixed;width:max-content}.grid th{position:sticky;top:0;z-index:20;background:#fafbfc;text-align:left;padding:0 9px;height:34px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);white-space:nowrap}.grid th.sticky-col{z-index:30}.grid th.sprint{text-align:center;text-transform:none;letter-spacing:0;font-size:12px;color:var(--ink-2);padding:0}.grid th.ta-r{text-align:right}.grid td{padding:6px 9px;vertical-align:top;background:var(--panel);border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft)}.grid tr.epic-start td{border-top:1px solid var(--line)}.grid tbody tr:hover td{background:#fbfcfe}.sticky-col{position:sticky;z-index:10}.grid tbody tr:hover .sticky-col{background:#fbfcfe}td.name,.cap-name{box-shadow:1px 0 0 var(--line)}td.name{padding-right:60px}th.sticky-col:nth-child(3){box-shadow:1px 0 0 var(--line)}td.gutter{padding:0;text-align:center;overflow:visible;position:sticky}td.gutter:hover{z-index:40}.grip{display:flex;align-items:center;justify-content:center;height:30px;color:#c9cfd8;cursor:grab;opacity:0;transition:opacity .12s,color .12s}tr:hover .grip{opacity:1}.grip:hover{color:var(--accent)}.grip:active{cursor:grabbing}.insert{position:absolute;left:50%;bottom:-11px;transform:translate(-50%);width:20px;height:20px;padding:0;border-radius:50%;border:1px solid var(--line);background:var(--panel);color:var(--accent);display:grid;place-items:center;cursor:pointer;opacity:0;transition:opacity .12s,box-shadow .12s;z-index:15}td.gutter:hover .insert{opacity:1}.insert:hover{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 3px #2f6feb1f}td.drop-before{box-shadow:inset 0 3px 0 var(--accent)}td.drop-after{box-shadow:inset 0 -3px 0 var(--accent)}.prio-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;cursor:pointer;font-weight:700;font-size:11px;padding:2px 6px;border-radius:6px;text-align:center;text-align-last:center;background:#f1f3f6;color:var(--ink-2)}.prio-chip.P0{background:#fdecec;color:var(--bad)}.prio-chip.P1{background:var(--accent-soft);color:var(--accent)}.prio-chip.P2{background:#f1f3f6;color:#7b8493}.prio-chip:focus{outline:none;box-shadow:0 0 0 2px #2f6feb40}.epic-name{font-weight:600}.row-tools{position:absolute;top:5px;right:6px;display:flex;gap:3px;opacity:0;transition:opacity .12s}tr:hover .row-tools,.row-tools:focus-within{opacity:1}.tool{width:22px;height:22px;padding:0;display:grid;place-items:center;cursor:pointer;border:1px solid var(--line);background:var(--panel);border-radius:6px;color:var(--ink-3)}.tool:hover{border-color:var(--accent);color:var(--accent);background:#f7faff}.tool.danger:hover{border-color:#f0c4c4;color:var(--bad);background:#fff6f6}td.path{color:var(--ink-2)}td.works{position:relative;padding-right:24px}.row-x{position:absolute;top:5px;right:4px;width:19px;height:19px;border-color:transparent;background:none;opacity:0}tr:hover .row-x{opacity:1}.text-cell{border-radius:6px;padding:2px 4px;margin:-2px -4px;min-height:19px;cursor:text;white-space:pre-wrap}.text-cell:hover{box-shadow:inset 0 0 0 1px var(--line)}.text-cell:focus{outline:none;box-shadow:inset 0 0 0 1px var(--accent);background:#fff;-webkit-line-clamp:unset!important;display:block}.text-cell.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.text-cell.empty:before{content:attr(data-ph);color:var(--ink-3);font-weight:400}.chip-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:6px;padding:2px 7px;cursor:pointer;font-size:11px;font-weight:650;background:transparent;max-width:100%}.chip-select.muted{color:var(--ink-3)}.chip-select:hover{border-color:var(--line)}.chip-select:focus{outline:none;border-color:var(--accent)}.plain-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:6px;padding:2px 5px;cursor:pointer;background:transparent;max-width:100%;font-size:12px;color:inherit}.plain-select:hover{border-color:var(--line)}.plain-select:focus{outline:none;border-color:var(--accent)}td.crit.hot .plain-select{color:var(--bad)}td.est{text-align:right;white-space:nowrap}td.est .num{width:52px;border:1px solid transparent;border-radius:6px;padding:2px 5px;text-align:right;background:transparent;font-weight:650;font-variant-numeric:tabular-nums}td.est .num:hover{border-color:var(--line)}td.est .num:focus{outline:none;border-color:var(--accent);background:#fff}.state{display:block;font-size:11px;font-weight:600;margin-top:2px}.state.ok{color:var(--ok)}.state.part,.state.none{color:var(--warn)}.state.over{color:var(--bad)}.num{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.num::-webkit-outer-spin-button,.num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}td.cell{padding:3px 2px;text-align:center;background:#fcfdff}td.cell.no-team .num{color:var(--ink-3)}td.cell.no-team .num:hover{border-color:#e2d7b8;background:#fffdf6}td.cell .num{width:100%;border:1px solid transparent;border-radius:6px;padding:2px 3px;text-align:center;background:transparent;font-variant-numeric:tabular-nums}td.cell .num:hover{border-color:var(--line)}td.cell .num:focus{outline:none;border-color:var(--accent);background:#fff}td.cell .num.filled{background:var(--accent-soft);font-weight:650}.month{border-left:2px solid var(--line)!important}.add-epic td{background:#fafbfc;padding:8px 10px;border-bottom:none}.ghost{display:inline-flex;align-items:center;gap:6px;background:none;border:1px dashed #cdd4de;border-radius:8px;padding:5px 12px;color:var(--accent);cursor:pointer}.ghost:hover{border-color:var(--accent);background:#f7faff}.cap-wrap{flex:none;overflow:hidden;background:var(--panel);border-top:1px solid var(--ink);box-shadow:0 -6px 16px #1018280d}.cap td{padding:4px 9px;background:#fbfcfd;border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);vertical-align:middle}.cap tr:last-child td{border-bottom:none}.cap .sticky-col{position:sticky;z-index:10;background:#fbfcfd}.cap-name{font-weight:650;white-space:nowrap;box-shadow:1px 0 0 var(--line)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:0}.cap-controls{white-space:nowrap;color:var(--ink-3);font-size:12px}.cap-field{display:inline-flex;align-items:center;gap:4px}.cap-field .num{width:44px;border:1px solid var(--line);border-radius:7px;padding:2px 5px;text-align:right;background:#fff;color:var(--ink);font-weight:600}.times{margin:0 7px;color:var(--ink-3)}.cap-sum{margin-left:12px;color:var(--ink-2)}.cap-sum b{color:var(--ink);font-variant-numeric:tabular-nums}.cap-est{font-variant-numeric:tabular-nums;text-align:right}td.cap-cell{padding:2px;text-align:center}td.cap-cell .num.head{width:100%;border:1px solid transparent;border-radius:5px;padding:0 2px;text-align:center;font-size:11px;font-weight:600;color:var(--ink-3);background:#ffffff8c}td.cap-cell .num.head::placeholder{color:transparent;font-weight:400}.cap tr:hover td.cap-cell .num.head::placeholder{color:#c6ccd6}td.cap-cell .num.head:focus::placeholder{color:#c6ccd6}td.cap-cell .num.head:hover{border-color:var(--line)}td.cap-cell .num.head:focus{outline:none;border-color:var(--accent);background:#fff;color:var(--ink)}td.cap-cell .num.head.manual{color:var(--accent);background:#fff;border-color:#c9dcfb}.load{display:block;font-weight:650;font-variant-numeric:tabular-nums;line-height:1.3}td.cap-cell.idle .load{color:#c2c8d1;font-weight:400}td.cap-cell.fit{background:#eefaf2}td.cap-cell.tight{background:#fff6e6}td.cap-cell.over{background:#fdecec}td.cap-cell.over .load{color:var(--bad)}.shade{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d182b1f;z-index:60;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.drawer{position:fixed;top:0;right:0;bottom:0;width:380px;z-index:61;background:var(--panel);border-left:1px solid var(--line);box-shadow:-10px 0 30px #10182814;display:flex;flex-direction:column}.drawer-head{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line)}.snap-form{display:flex;gap:6px;padding:10px 14px;border-bottom:1px solid var(--line);background:#fafbfc}.snap-form input{flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;padding:5px 9px;background:#fff}.snap-form input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2f6feb1f}.drawer-list{flex:1;overflow:auto;padding:4px 10px 12px}.drawer-foot{padding:10px 14px;border-top:1px solid var(--line);color:var(--ink-3);font-size:11px}.day{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);padding:12px 6px 6px;position:sticky;top:0;background:var(--panel)}.version{display:flex;gap:10px;padding:8px 10px;border-radius:10px;cursor:pointer;border:1px solid transparent;align-items:flex-start}.version:hover{background:#f7f9fc;border-color:var(--line)}.version.current{background:var(--accent-soft);border-color:#cadcfb;cursor:default}.version.active{background:#fff8e8;border-color:#f2dfae}.version .time{font-weight:650;font-variant-numeric:tabular-nums;min-width:42px;color:var(--ink-2)}.version .meta{flex:1;min-width:0}.chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.chip{font-size:10.5px;padding:1px 7px;border-radius:20px;background:#eef1f5;color:var(--ink-2)}.link{border:none;background:none;color:var(--accent);cursor:pointer;padding:4px 0 0;font-size:11px;opacity:0;transition:opacity .12s}.version:hover .link{opacity:1}.link:hover{text-decoration:underline}.gate{height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg)}.gate-card{width:400px;max-width:calc(100vw - 48px);padding:36px 40px 34px;background:var(--panel);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;gap:0}.gate-brand{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#8b93a1;margin-bottom:18px}.gate-card h1{font-size:19px;font-weight:650;letter-spacing:-.01em;margin:0 0 10px}.gate-card p{margin:0 0 18px;color:var(--ink-2);font-size:14px;line-height:1.6}.gate-card input{border:1px solid var(--line);border-radius:8px;padding:9px 12px;font-size:15px;margin-bottom:14px;width:100%;box-sizing:border-box}.gate-card input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2f6feb1f}.gate-code{letter-spacing:8px;font-size:20px!important;text-align:center;font-variant-numeric:tabular-nums}.gate-card .btn{justify-content:center;padding:9px 16px;font-size:14px}.gate-card .btn.primary{background:var(--ink);border-color:var(--ink)}.gate-card .btn.primary:hover:not(:disabled){background:#2a2f36;border-color:#2a2f36}.gate-err{color:var(--bad);font-size:13px;margin:-4px 0 12px}.gate-back{margin-top:12px;align-self:center}.who{font-size:12px;color:var(--ink-3);white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}
