:root{--bg:#f5f7fa;--panel:#fff;--line:#e6e8ec;--line-strong:#d0d4da;--text:#1a1f2b;--muted:#6b7280;--accent:#1f6fe5;--accent-bg:#e8f0fd;--danger:#d92d20;--danger-bg:#fdecea;--warn:#b7791f;--warn-bg:#fff4d6;--ok:#178a4c;--ok-bg:#e6f6ec;--radius:6px;--font:-apple-system, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font:13px/1.4 var(--font);margin:0;padding:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1{letter-spacing:-.01em;margin:0;font-size:20px;font-weight:600}h2{margin:0 0 8px;font-size:14px;font-weight:600}.sub{color:var(--muted);margin-top:2px;font-size:12px}code,.mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:12px}.shell{grid-template-columns:196px 1fr;min-height:100vh;display:grid}.nav{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;gap:2px;height:100vh;padding:12px 10px;display:flex;position:sticky;top:0}.nav .brand{padding:4px 8px 14px}.nav .brand b{font-size:14px;display:block}.nav .brand span{color:var(--muted);font-size:11px}.nav a{border-radius:var(--radius);color:var(--text);align-items:center;gap:8px;padding:7px 10px;display:flex}.nav a:hover{background:var(--bg);text-decoration:none}.nav a.active{background:var(--accent-bg);color:var(--accent);font-weight:600}.nav a .ico{text-align:center;width:16px;color:var(--muted);font-size:13px}.nav a.active .ico{color:var(--accent)}.nav .section{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:14px 10px 4px;font-size:11px}.nav a.view{padding:5px 10px;font-size:12.5px}.nav a.view .n{color:var(--muted);margin-left:auto;font-size:11px}.nav .spacer{flex:1}.nav .me{color:var(--muted);border-top:1px solid var(--line);padding:8px 10px 56px;font-size:12px}.nav .me b{color:var(--text);display:block}.main{flex-direction:column;min-width:0;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--line);z-index:5;align-items:center;gap:8px;min-height:50px;padding:8px 16px;display:flex;position:sticky;top:0}.topbar .search{min-width:300px}.content{flex:1;min-width:0;padding:14px 16px}.pagehead{align-items:flex-end;gap:12px;margin:2px 0 10px;display:flex}.pagehead .grow{flex:1}.badge{background:var(--danger);color:#fff;text-align:center;border-radius:8px;min-width:16px;margin-left:auto;padding:0 5px;font-size:11px;display:inline-block}.count{background:var(--bg);color:var(--muted);white-space:nowrap;border-radius:14px;align-items:center;gap:4px;padding:3px 9px;font-size:12px;display:inline-flex}.count b{color:var(--text);font-weight:600}.count.blue{background:var(--accent-bg);color:var(--accent)}.count.blue b{color:var(--accent)}.count.red{background:var(--danger-bg);color:var(--danger)}.count.red b{color:var(--danger)}.count.yellow{background:var(--warn-bg);color:var(--warn)}.count.yellow b{color:var(--warn)}.btn{border:1px solid var(--line-strong);background:var(--panel);border-radius:var(--radius);white-space:nowrap;padding:5px 11px;line-height:1.3}.btn:hover{border-color:#9aa0a8;text-decoration:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#185fc9}.btn.danger{color:var(--danger)}.btn.small{padding:2px 7px;font-size:12px}.btn.ghost{color:var(--accent);background:0 0;border-color:#0000}.btn:disabled{opacity:.5;cursor:default}.input,select.input,textarea.input{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel);min-width:0;padding:5px 8px}.input:focus{outline:2px solid var(--accent-bg);border-color:var(--accent)}textarea.input{resize:vertical;width:100%;min-height:60px}label.field{color:var(--muted);flex-direction:column;gap:3px;font-size:12px;display:flex}label.field>.input{color:var(--text)}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.stack{flex-direction:column;gap:10px;display:flex}.muted{color:var(--muted)}.err{color:var(--danger);background:var(--danger-bg);border-radius:var(--radius);border:1px solid #f3c2c2;padding:6px 10px}.ok{color:var(--ok);background:var(--ok-bg);border-radius:var(--radius);padding:6px 10px}.toast{z-index:50;border-radius:var(--radius);color:#fff;background:#222;padding:8px 12px;position:fixed;bottom:16px;right:16px;box-shadow:0 4px 16px #0003}.toast.err{background:var(--danger)}.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px}.filters{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chip{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel);color:var(--muted);align-items:center;gap:4px;padding:3px 4px 3px 9px;font-size:12.5px;display:inline-flex}.chip.on{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.chip select{max-width:170px;color:var(--text);background:0 0;border:0;font-size:12.5px}.chip.on select{color:var(--accent);font-weight:600}.chip select:focus{outline:none}.switch{color:var(--muted);align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.tablewrap{border:1px solid var(--line);background:var(--panel);border-radius:8px;overflow:auto}table.grid{border-collapse:separate;border-spacing:0;width:100%;font-size:12.5px}table.grid th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;z-index:2;background:#fafbfc;padding:7px 8px;font-size:11.5px;font-weight:500;position:sticky;top:0}table.grid td{border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:middle;text-overflow:ellipsis;max-width:360px;height:34px;padding:5px 8px;overflow:hidden}table.grid td.title{min-width:280px;max-width:420px}table.grid td.title .cell,table.grid td.title>span{text-overflow:ellipsis;display:block;overflow:hidden}table.grid tr.sel td{background:var(--accent-bg)}table.grid tr.cur td{box-shadow:inset 0 0 0 1px var(--accent)}table.grid tbody tr:hover td{background:#f7f9fc}table.grid tr.sel:hover td{background:#dde9fb}table.grid td.ro{color:#555}table.grid td.flash{animation:1.2s ease-out flash}@keyframes flash{0%{background:#fff3b0}to{background:0 0}}table.grid tr.overdue td:first-child{box-shadow:inset 3px 0 0 var(--danger)}table.grid tr.soon td:first-child{box-shadow:inset 3px 0 0 var(--warn)}table.grid td.due.overdue{color:var(--danger);font-weight:600}table.grid td.due.soon{color:var(--warn);font-weight:600}table.grid tr.group td{cursor:pointer;background:#f3f5f8;height:30px;font-weight:600}table.grid tr.group td .n{color:var(--muted);margin-left:6px;font-weight:400}table.grid tr.group td .r{float:right;color:var(--muted);font-size:11.5px;font-weight:400}table.grid td .cell{cursor:text;min-height:18px;display:block}table.grid td select,table.grid td input{border:1px solid var(--accent);background:#fff;border-radius:4px;width:100%;padding:2px 4px}table.grid td input[type=number]{width:56px}table.grid td input[type=date]{width:128px}.dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-left:5px;display:inline-block}.tag{color:#3b4250;white-space:nowrap;background:#eef1f5;border-radius:4px;padding:1px 8px;font-size:11.5px;line-height:17px;display:inline-block}.tag.run{color:#178a4c;background:#e6f6ec}.tag.change{color:#1f6fe5;background:#e8f0fd}.tag.st-new,.tag.st-prioritized,.tag.st-planned{color:#4b5563;background:#eef1f5}.tag.st-analysis,.tag.st-in_progress,.tag.st-active,.tag.st-in_progress_stage{color:#1f6fe5;background:#e8f0fd}.tag.st-testing,.tag.st-awaiting_deploy{background:var(--warn-bg);color:var(--warn)}.tag.st-on_hold,.tag.st-paused{color:#7e22ce;background:#f3e8ff}.tag.st-done,.tag.st-completed,.tag.st-done_stage{background:var(--ok-bg);color:var(--ok)}.tag.st-cancelled,.tag.st-cancelled_project,.tag.st-skipped{color:#6b7280;background:#f1f1f1;text-decoration:line-through}.tag.vendor{color:#92400e;background:#fff4d6}.tag.customer{color:#7e22ce;background:#f3e8ff}.tag.it{color:#4b5563;background:#eef1f5}.tag.big{padding:4px 10px;font-size:13px;font-weight:600;line-height:18px}.prio{align-items:center;gap:1px;display:inline-flex}.prio button{color:#c3c8d0;background:0 0;border:0;padding:0 2px;font-size:10px;line-height:1}.prio button:hover{color:var(--accent)}.prio .cell{text-align:center;min-width:16px;font-weight:600}.drag{cursor:grab;color:#c3c8d0}.drag:hover{color:var(--muted)}tr.dragover td{border-top:2px solid var(--accent)}.bulk{background:var(--accent-bg);border-radius:var(--radius);border:1px solid #c7d9fb;align-items:center;gap:6px;padding:6px 12px;display:flex}.av{color:#334;vertical-align:middle;background:#dfe6f2;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;margin-right:4px;font-size:10px;font-weight:600;display:inline-flex}.who{white-space:nowrap;align-items:center;margin-right:8px;display:inline-flex}.drawer{background:var(--panel);border-left:1px solid var(--line);z-index:20;flex-direction:column;width:520px;max-width:94vw;height:100vh;display:flex;position:fixed;top:0;right:0;box-shadow:-12px 0 32px #0f172a14}.drawer .head{border-bottom:1px solid var(--line);flex-direction:column;gap:8px;padding:12px 18px 8px;display:flex}.drawer .title{letter-spacing:-.01em;border-radius:var(--radius);border:1px solid #0000;margin:0 -4px;padding:2px 4px;font-size:17px;font-weight:600}.drawer .title:hover,.drawer .title:focus{border-color:var(--line-strong);outline:none}.drawer .body{flex:1;padding:12px 18px;overflow:auto}.tabs{border-bottom:1px solid var(--line);gap:2px;padding:0 18px;display:flex}.tabs button{color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;padding:8px 10px;font-size:13px}.tabs button.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.kv{grid-template-columns:128px 1fr;align-items:center;gap:6px 10px;font-size:12.5px;display:grid}.kv>span:nth-child(odd){color:var(--muted)}table.mini{border-collapse:collapse;width:100%;font-size:12px}table.mini th,table.mini td{text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;padding:5px 6px}table.mini th{color:var(--muted);font-size:11.5px;font-weight:500}.timeline{background:#f3f5f8;border-radius:4px;height:24px;margin:4px 0 8px;position:relative}.timeline .bar{background:#bcd2f7;border-radius:3px;height:5px;position:absolute;top:6px}.timeline .bar.fact{background:var(--accent);top:13px}.timeline .tick{background:var(--danger);width:1px;position:absolute;top:0;bottom:0}.hist{grid-template-columns:118px 82px 1fr;gap:4px 8px;font-size:12px;display:grid}.hist .when{color:var(--muted);white-space:nowrap}.hist .src{color:var(--muted)}.hist .src.import{color:var(--warn)}.hist .src.rule{color:var(--ok)}.comment{border-bottom:1px solid var(--line);padding:6px 0}.comment .meta{color:var(--muted);font-size:11px}.tree ul{margin:0;padding-left:14px;list-style:none}.tree>ul{padding-left:0}.tree li{padding:1px 0}.tree .node{cursor:pointer;border-radius:var(--radius);padding:3px 6px;display:block}.tree .node:hover{background:var(--bg)}.tree .node.on{background:var(--accent-bg);color:var(--accent);font-weight:600}.login{max-width:340px;margin:14vh auto}.kbd{border:1px solid var(--line-strong);background:#fff;border-bottom-width:2px;border-radius:3px;padding:0 4px;font-size:11px}.two{grid-template-columns:320px 1fr;align-items:start;gap:14px;display:grid}.steps{gap:14px;margin-bottom:4px;display:flex}.steps span{color:var(--muted)}.steps span.on{color:var(--text);font-weight:600}.res-new{color:var(--ok)}.res-changed{color:var(--accent)}.res-rejected{color:var(--danger)}.res-conflict,.res-possible_duplicate{color:var(--warn)}.res-unchanged{color:var(--muted)}@media (max-width:800px){.shell{grid-template-columns:1fr}.nav{flex-flow:wrap;height:auto;position:static}.drawer{width:100vw}.two{grid-template-columns:1fr}}
