:root{--paper: #eef0eb;--surface: #ffffff;--sunken: #f5f6f2;--ink: #1f2933;--ink-2: #4b5862;--muted: #74808a;--line: #d8dcd4;--line-strong: #b9bfb5;--source: #a35f00;--changelog: #ad3466;--problem: #4549b8;--task: #0c7266;--output: #587419;--source-tint: #fbf1e1;--changelog-tint: #fbeaf1;--problem-tint: #ececfb;--task-tint: #e3f3f0;--output-tint: #eef4e0;--danger: #b4321f;--danger-tint: #fbe9e5;--warn: #9a5b00;--ok: #2f7a32;--focus: #4549b8;--r-s: 4px;--r-m: 8px;--side: 232px;font-family:IBM Plex Sans KR,system-ui,sans-serif;font-size:14px;line-height:1.55;color:var(--ink);font-variant-numeric:tabular-nums}@media (prefers-color-scheme: dark){:root{--paper: #15191c;--surface: #1c2125;--sunken: #181c20;--ink: #e5e8e3;--ink-2: #b9c0bb;--muted: #8a948f;--line: #2d3439;--line-strong: #3d464c;--source: #e2a24b;--changelog: #e37aa5;--problem: #9a9df0;--task: #4cc2b1;--output: #a7c45e;--source-tint: #2b2316;--changelog-tint: #2d1c24;--problem-tint: #20223a;--task-tint: #14292a;--output-tint: #222915;--danger: #ef7d68;--danger-tint: #33201c;--warn: #e2a24b;--ok: #7cc47f;--focus: #9a9df0}}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--paper)}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.shell{display:grid;grid-template-columns:var(--side) minmax(0,1fr);min-height:100%;align-items:start;background:linear-gradient(90deg,var(--surface) var(--side),transparent var(--side))}.side{background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:18px 12px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:baseline;gap:8px;padding:0 8px 14px}.brand b{font-size:19px;font-weight:600;letter-spacing:-.01em}.brand .thread{flex:1;height:2px;align-self:center;border-radius:1px;background:linear-gradient(90deg,var(--source),var(--changelog),var(--problem),var(--task),var(--output))}.proj{margin:0 4px 16px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-m);background:var(--sunken)}.proj small{color:var(--muted);display:block;font-size:12px}.proj select{width:100%;border:0;background:transparent;font-weight:600;padding:0}.nav{display:grid;gap:2px}.nav a{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;border-radius:var(--r-s);text-decoration:none;color:var(--ink-2)}.nav a:hover{background:var(--sunken);color:var(--ink)}.nav a.active{background:var(--ink);color:var(--surface)}.nav .count{font-size:12px;min-width:20px;text-align:center;padding:0 6px;border-radius:10px;background:var(--danger);color:#fff}.nav a.active .count{background:var(--surface);color:var(--ink)}.who{margin-top:auto;padding:10px;border-top:1px solid var(--line);font-size:13px}.who b{display:block}.who span{color:var(--muted)}.who button{margin-top:6px}.main{padding:28px 36px 64px;min-width:0}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-head h1{font-size:24px;font-weight:600;margin:0;letter-spacing:-.015em}.page-head p{margin:4px 0 0;color:var(--muted);max-width:64ch}@media (max-width: 860px){.shell{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 16px}.brand,.proj{padding-bottom:0;margin:0}.nav{display:flex;flex-wrap:wrap}.who{display:none}.main{padding:20px 16px 48px}}.section{margin-bottom:30px}.section>h2{font-size:15px;font-weight:600;margin:0 0 4px;display:flex;gap:8px;align-items:baseline}.section>h2 .n{color:var(--muted);font-weight:400;font-size:13px}.section>.hint{color:var(--muted);margin:0 0 10px;font-size:13px}.list{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden}.row{display:grid;grid-template-columns:92px minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 14px;border-top:1px solid var(--line)}.row:first-child{border-top:0}.row.click{cursor:pointer}.row.click:hover{background:var(--sunken)}.row .title{font-weight:500;min-width:0}.row .title .sub{display:flex;gap:6px;flex-wrap:wrap;margin-top:3px;font-weight:400;font-size:12.5px;color:var(--muted)}.row .end{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.row.draft{background:repeating-linear-gradient(135deg,transparent 0 10px,var(--sunken) 10px 11px)}.row.with-check{grid-template-columns:24px 92px minmax(0,1fr) auto}@media (max-width: 720px){.row,.row.with-check{grid-template-columns:1fr}.row input[type=checkbox]{justify-self:start}.row .end{justify-content:flex-start}}.empty{padding:22px 16px;color:var(--muted)}.key{font-size:12.5px;font-weight:600;letter-spacing:.01em;padding:2px 7px;border-radius:var(--r-s);border:1px solid currentColor;white-space:nowrap;justify-self:start;text-decoration:none;cursor:pointer;background:transparent}.key.source{color:var(--source)}.key.changelog{color:var(--changelog)}.key.problem{color:var(--problem)}.key.task{color:var(--task)}.key.output{color:var(--output)}.key.is-draft{border-style:dashed}.chip{font-size:12px;padding:1px 8px;border-radius:10px;background:var(--sunken);color:var(--ink-2);border:1px solid var(--line);white-space:nowrap}.chip.draft{border-style:dashed;border-color:var(--line-strong);background:transparent}.chip.danger{background:var(--danger-tint);color:var(--danger);border-color:transparent}.chip.warn{color:var(--warn);border-color:currentColor;background:transparent}.chip.ok{color:var(--ok);border-color:currentColor;background:transparent}.chip.ink{background:var(--ink);color:var(--surface);border-color:var(--ink)}.st{font-size:12px;display:inline-flex;gap:6px;align-items:center;white-space:nowrap;color:var(--ink-2)}.st i{width:8px;height:8px;border-radius:50%;background:var(--line-strong)}.st.doing i,.st.in_progress i{background:var(--task)}.st.review i{background:var(--problem)}.st.done i,.st.resolved i,.st.closed i{background:var(--ok)}.st.blocked i{background:var(--danger)}.st.canceled i{background:transparent;border:1px solid var(--muted)}.due{font-size:12.5px;white-space:nowrap;color:var(--ink-2)}.due.late{color:var(--danger);font-weight:600}.due.soon{color:var(--warn);font-weight:600}.due.none{color:var(--danger)}.btn{border:1px solid var(--line-strong);background:var(--surface);border-radius:var(--r-s);padding:6px 12px;cursor:pointer;white-space:nowrap}.btn:hover{border-color:var(--ink)}.btn.primary{background:var(--ink);color:var(--surface);border-color:var(--ink)}.btn.primary:hover{opacity:.9}.btn.danger{color:var(--danger)}.btn.small{padding:3px 9px;font-size:13px}.btn:disabled{opacity:.45;cursor:default}.btn.link{border:0;padding:0;background:none;text-decoration:underline;color:var(--muted)}.field{display:grid;gap:4px;margin-bottom:12px}.field>span{font-size:12.5px;color:var(--ink-2);display:flex;justify-content:space-between;gap:8px}.field>span em{font-style:normal;color:var(--muted)}.input{width:100%;border:1px solid var(--line-strong);border-radius:var(--r-s);padding:7px 9px;background:var(--surface)}textarea.input{min-height:84px;resize:vertical}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 640px){.grid2{grid-template-columns:1fr}}.form-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}.err{color:var(--danger);font-size:13px;margin:6px 0}.note{font-size:13px;color:var(--muted)}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--surface);padding:9px 16px;border-radius:var(--r-m);z-index:60;font-size:13.5px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#141a1e47;z-index:40}.panel{position:fixed;top:0;right:0;bottom:0;width:min(640px,100vw);background:var(--surface);border-left:1px solid var(--line);z-index:50;overflow-y:auto;display:flex;flex-direction:column;animation:slide .18s ease-out}@keyframes slide{0%{transform:translate(24px);opacity:.6}}.panel-head{padding:18px 22px 14px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface);z-index:1}.panel-head .meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.panel-head h2{font-size:19px;font-weight:600;margin:8px 0 0;letter-spacing:-.01em}.panel-head .x{position:absolute;top:14px;right:16px}.panel-body{padding:18px 22px 40px;display:grid;gap:24px}.block>h3{font-size:13px;font-weight:600;margin:0 0 8px;color:var(--ink-2)}.kv{display:grid;grid-template-columns:108px minmax(0,1fr);gap:6px 12px;font-size:13.5px}.kv dt{color:var(--muted)}.kv dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.kv.props dt:after{content:""}.cols-label{font-size:12px;color:var(--muted);margin:10px 0 6px}.action-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:12px 14px;border-radius:var(--r-m);background:var(--sunken);border:1px solid var(--line)}.action-bar .note{flex:1 1 200px}.inline-form{margin-top:10px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-m)}.rail{position:relative;padding-left:22px}.rail:before{content:"";position:absolute;left:6px;top:8px;bottom:8px;width:2px;background:linear-gradient(180deg,var(--source),var(--changelog),var(--problem),var(--task),var(--output));border-radius:1px}.rail-step{position:relative;padding:4px 0 12px}.rail-step:before{content:"";position:absolute;left:-21px;top:9px;width:12px;height:12px;border-radius:50%;background:var(--surface);border:2px solid var(--c, var(--muted))}.rail-step.here:before{background:var(--c)}.rail-step.source{--c: var(--source)}.rail-step.changelog{--c: var(--changelog)}.rail-step.problem{--c: var(--problem)}.rail-step.task{--c: var(--task)}.rail-step.output{--c: var(--output)}.rail-step .lbl{font-size:12px;color:var(--muted)}.rail-step .items{display:grid;gap:4px;margin-top:2px}.rail-item{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:13.5px}.timeline{list-style:none;margin:0;padding:0;display:grid;gap:10px}.timeline li{display:grid;grid-template-columns:112px minmax(0,1fr);gap:10px;font-size:13.5px}.timeline time{color:var(--muted);font-size:12.5px}.timeline .by{font-size:12.5px;color:var(--muted)}.timeline .by b{color:var(--ink-2);font-weight:500}.agent{color:var(--changelog);font-size:12px}.table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden}.table th,.table td{text-align:left;padding:9px 12px;border-top:1px solid var(--line);vertical-align:middle;font-size:13.5px}.table th{font-weight:500;color:var(--muted);font-size:12.5px;background:var(--sunken);border-top:0}.table tr.click{cursor:pointer}.table tr.click:hover td{background:var(--sunken)}.table-wrap{overflow-x:auto}.bar{width:90px;height:6px;background:var(--sunken);border:1px solid var(--line);border-radius:3px;overflow:hidden;display:inline-block;vertical-align:middle}.bar i{display:block;height:100%;background:var(--task)}.figures{display:flex;gap:32px;flex-wrap:wrap;margin-bottom:26px;padding:16px 20px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m)}.figures div b{display:block;font-size:24px;font-weight:600}.figures div span{color:var(--muted);font-size:13px}.figures div.alert b{color:var(--danger)}.login{min-height:100%;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%)}.login-card h1{font-size:30px;font-weight:600;margin:0;letter-spacing:-.02em}.login-card .lede{color:var(--ink-2);margin:6px 0 22px}.login-card form{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:20px}.demo{margin-top:16px;font-size:13px;color:var(--muted)}.demo div{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.diff{display:grid;gap:6px;font-size:13.5px}.diff del{color:var(--danger);text-decoration:line-through}.diff ins{color:var(--ok);text-decoration:none}.graph-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--r-s);overflow:hidden;background:var(--surface)}.seg button{border:0;background:transparent;padding:5px 11px;cursor:pointer;font-size:13px}.seg button+button{border-left:1px solid var(--line)}.seg button.on{background:var(--ink);color:var(--surface)}.tog{display:inline-flex;gap:6px;align-items:center;font-size:13px;color:var(--ink-2)}.focus-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px;padding:8px 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);font-size:13.5px}.graph-frame{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);overflow:auto;max-height:calc(100vh - 220px);min-height:360px;background-image:radial-gradient(var(--line) 1px,transparent 1px);background-size:18px 18px}svg.graph{display:block}.g-col{font-size:12px;fill:var(--muted);font-weight:600}.g-edge{fill:none;stroke:var(--line-strong);stroke-width:1.3;transition:opacity .15s}.g-edge.r-changes,.g-edge.r-impacts{stroke:var(--changelog);stroke-width:1.6}.g-edge.r-depends_on{stroke:var(--task);stroke-dasharray:2 3;stroke-width:1.5}.g-edge.r-attached_to{stroke:var(--source);stroke-dasharray:2 3}.g-edge.r-requests_change{stroke:var(--danger);stroke-dasharray:5 3}.g-edge.r-works_for{stroke:var(--output);stroke-dasharray:5 3}.g-edge.r-owns{stroke:var(--muted);stroke-dasharray:1 3}.g-edge.draft{stroke-dasharray:4 3;opacity:.7}.g-edge.on{stroke-width:2.4;opacity:1}.g-edge.dim{opacity:.12}.g-node{cursor:pointer;transition:opacity .15s}.g-node .box{fill:var(--surface);stroke:var(--line-strong)}.g-node:hover .box,.g-node:focus-visible .box{stroke:var(--ink)}.g-node.sel .box{stroke:var(--ink);stroke-width:2}.g-node.draft .box{stroke-dasharray:4 3;fill:var(--sunken)}.g-node.closed .g-title{fill:var(--muted)}.g-node.dim{opacity:.18}.g-node:focus{outline:none}.g-node .g-bar{fill:var(--muted)}.g-node.t-source .g-bar{fill:var(--source)}.g-node.t-changelog .g-bar{fill:var(--changelog)}.g-node.t-problem .g-bar{fill:var(--problem)}.g-node.t-task .g-bar{fill:var(--task)}.g-node.t-output .g-bar{fill:var(--output)}.g-node.t-person .g-bar{fill:var(--ink-2)}.g-node.group .stack{fill:var(--sunken);stroke:var(--line-strong)}.g-node.group .box{fill:var(--sunken)}.g-node.group.open .box{fill:var(--surface);stroke-dasharray:2 3}.g-key{font-size:10.5px;font-weight:600;fill:var(--ink-2)}.g-node.t-source .g-key{fill:var(--source)}.g-node.t-changelog .g-key{fill:var(--changelog)}.g-node.t-problem .g-key{fill:var(--problem)}.g-node.t-task .g-key{fill:var(--task)}.g-node.t-output .g-key{fill:var(--output)}.g-title{font-size:12.5px;fill:var(--ink)}.g-badge{font-size:10.5px;fill:var(--muted)}.g-owner{fill:var(--ink-2);font-weight:600}.g-owner.none{fill:var(--danger)}.g-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12.5px;color:var(--muted)}.g-legend span{display:inline-flex;gap:6px;align-items:center}.g-legend .sw{width:10px;height:10px;border-radius:2px;background:var(--muted);display:inline-block}.g-legend .sw.t-source{background:var(--source)}.g-legend .sw.t-changelog{background:var(--changelog)}.g-legend .sw.t-problem{background:var(--problem)}.g-legend .sw.t-task{background:var(--task)}.g-legend .sw.t-output{background:var(--output)}.g-legend .sw.t-person{background:var(--ink-2)}.g-legend .sw.dashed{background:transparent;border:1.5px dashed var(--line-strong)}.g-legend .sw.stack{background:var(--sunken);border:1px solid var(--line-strong);box-shadow:2px 2px 0 var(--line-strong)}.g-legend .ln{width:18px;height:0;border-top:2px solid var(--line-strong);display:inline-block}.g-legend .ln.r-changes{border-color:var(--changelog)}.g-legend .ln.r-depends_on{border-top-style:dotted;border-color:var(--task)}.g-legend .ln.r-attached_to{border-top-style:dotted;border-color:var(--source)}.proj-new{display:block;margin-top:6px;font-size:12.5px;color:var(--muted);text-decoration:none}.proj-new:before{content:"+ "}.proj-new:hover{color:var(--ink);text-decoration:underline}.who-link{display:block;margin-top:8px;padding:6px 8px;border:1px solid var(--line);border-radius:var(--r-s);text-decoration:none;color:var(--ink-2);font-size:13px}.who-link:hover{border-color:var(--ink);color:var(--ink)}.who-link.active{background:var(--ink);color:var(--surface);border-color:var(--ink)}.addr{font-size:14px;padding:6px 10px;background:var(--sunken);border:1px solid var(--line);border-radius:var(--r-s)}.snippets{display:grid;gap:10px}.snippet{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:12px 14px}.snippet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:13.5px}.snippet pre{margin:0;padding:10px 12px;background:var(--sunken);border-radius:var(--r-s);overflow-x:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;white-space:pre-wrap}.snippet .note{margin:6px 0 0}.email-field{display:flex;align-items:center;border:1px solid var(--line-strong);border-radius:var(--r-s);background:var(--surface)}.email-field .input{border:0}.email-field span{padding:0 10px;color:var(--muted);white-space:nowrap}.email-field:focus-within{outline:2px solid var(--focus);outline-offset:1px}.part-picks{display:flex;flex-wrap:wrap;gap:6px}.part-picks .chip{cursor:pointer;font-size:13px;padding:4px 12px}.warnbox{padding:8px 12px;border-radius:var(--r-s);background:var(--danger-tint);color:var(--danger);font-size:13px}.focus-bar{height:52px;flex-wrap:nowrap;overflow-x:auto;white-space:nowrap}.focus-bar.idle{background:transparent;border-style:dashed}
