:root{--bg:#f1f4f5;--surface:#fff;--sunk:#e7edef;--fg:#1c2429;--muted:#5a6872;--line:#d5dde1;--accent:#1d6f8c;--accent-soft:#dcedf3;--on-accent:#fff;--ok:#2b7a4b;--ok-soft:#dff1e6;--warn:#8a5a0c;--warn-soft:#f7ecd2;--bad:#a83f2f;--bad-soft:#f8e0db;--shadow:0 8px 28px #14232d2e;--font-body:"Noto Sans KR", system-ui, -apple-system, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#12181b;--surface:#1a2226;--sunk:#222c31;--fg:#e4eaed;--muted:#94a3ac;--line:#2f3c42;--accent:#6bbad6;--accent-soft:#1b3540;--on-accent:#0f1a1f;--ok:#6ccb93;--ok-soft:#1c3527;--warn:#e3b25c;--warn-soft:#3a2f17;--bad:#ec8b7a;--bad-soft:#3e2420;--shadow:0 8px 28px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);padding:20px 16px 60px;font-size:14px;line-height:1.55}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.55}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}[hidden]{display:none!important}.app{flex-direction:column;gap:14px;max-width:1180px;margin-inline:auto;display:flex}.top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;display:flex}.brand{align-items:baseline;gap:8px;font-size:17px;font-weight:700;display:flex}.brand small{color:var(--muted);font-size:12px;font-weight:400}.me{color:var(--muted);align-items:center;gap:8px;font-size:12.5px;display:flex}.av{background:var(--accent-soft);width:24px;height:24px;color:var(--accent);border-radius:50%;flex:none;place-items:center;font-size:11.5px;font-weight:700;display:inline-grid}.av.sm{width:18px;height:18px;font-size:10px}.tabs{border-bottom:1px solid var(--line);gap:2px;display:flex;overflow-x:auto}.tab{color:var(--muted);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:8px 14px;display:flex}.tab[aria-selected=true]{color:var(--fg);border-bottom-color:var(--accent);font-weight:700}.badge{font-family:var(--font-mono);background:var(--sunk);color:var(--muted);border-radius:99px;padding:0 7px;font-size:11px}.badge.hot{background:var(--accent);color:var(--on-accent)}.bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.grow{flex:1}.seg{border:1px solid var(--line);background:var(--surface);border-radius:6px;display:inline-flex;overflow:hidden}.seg button{color:var(--muted);background:0 0;border:0;padding:4px 12px;font-size:13px}.seg button+button{border-left:1px solid var(--line)}.seg button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);font-weight:700}.inp{background:var(--surface);border:1px solid var(--line);border-radius:6px;min-width:0;min-height:30px;padding:5px 10px}.btn{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:5px 12px;font-size:13px}.btn:hover:not(:disabled){border-color:var(--accent)}.btn.pri{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:700}.btn.bad{color:var(--bad)}.btn.sm{padding:2px 10px;font-size:12.5px}.board{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:12px;display:grid}.col{background:var(--sunk);border-radius:8px;flex-direction:column;gap:8px;min-height:160px;padding:10px;display:flex}.col.over{outline:2px dashed var(--accent)}.col h3{justify-content:space-between;align-items:baseline;margin:0 2px;font-size:13px;display:flex}.col .hint{color:var(--muted);font-size:11.5px;font-weight:400}.empty{color:var(--muted);text-align:center;padding:18px 6px;font-size:12.5px}.hintline{color:var(--muted);font-size:12px}.card{background:var(--surface);border:1px solid var(--line);border-radius:6px;flex-direction:column;width:100%;display:flex;position:relative}.card:hover,.card:focus-within{border-color:var(--accent)}.card.u-high{border-left:3px solid var(--bad)}.card.dragging{opacity:.4}.card-main{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:6px;flex-direction:column;gap:6px;width:100%;padding:9px 11px;display:flex}.card-actions{gap:6px;padding:0 11px 9px;display:none}.card:hover .card-actions,.card:focus-within .card-actions{display:flex}@media (hover:none){.card-actions{display:flex}}.sig{color:var(--muted);background:var(--sunk);border-radius:4px;padding:0 6px;font-size:11.5px}.sig.ok{background:var(--ok-soft);color:var(--ok)}.sig.stale{background:var(--warn-soft);color:var(--warn)}.inp.search{flex:200px;min-width:160px;max-width:320px}.ct{overflow-wrap:anywhere;font-weight:500;line-height:1.4}.meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:12px;display:flex}.seq{font-family:var(--font-mono);color:var(--muted);font-size:11.5px}.k-bug{color:var(--bad)}.k-improvement{color:var(--accent)}.k-question{color:var(--warn)}.k-ops{color:var(--muted)}.due{font-family:var(--font-mono);background:var(--sunk);border-radius:4px;padding:0 6px;font-size:11.5px}.due.over{background:var(--bad-soft);color:var(--bad)}.due.today{background:var(--warn-soft);color:var(--warn)}.tag{background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:0 6px;font-size:11px}.tag.biz{background:var(--warn-soft);color:var(--warn)}.pill{background:var(--sunk);color:var(--muted);border-radius:99px;padding:0 8px;font-size:11.5px;display:inline-block}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden}.tblwrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th[aria-sort]{cursor:pointer;-webkit-user-select:none;user-select:none}th[aria-sort]:hover{color:var(--fg)}.dot{background:var(--line);border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.dot.high{background:var(--bad)}.dot.medium{background:var(--warn)}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;padding:8px 12px;font-size:13px}th{font-size:11.5px;font-family:var(--font-mono);color:var(--muted);background:var(--sunk);letter-spacing:.04em;white-space:nowrap;font-weight:500}tbody tr{cursor:pointer}tbody tr:hover{background:var(--accent-soft)}tbody tr:last-child td{border-bottom:0}.group{flex-direction:column;gap:8px;margin-bottom:14px;display:flex}.group h3{color:var(--muted);margin:0;font-size:13px}.group.bad h3{color:var(--bad)}.stack{flex-direction:column;gap:10px;display:flex}.rv{background:var(--surface);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.rv.focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.quote{border-left:3px solid var(--line);color:var(--muted);overflow-wrap:anywhere;padding-left:10px;font-size:13px}dl.keys{gap:6px;margin:0;display:grid}dl.keys>div{grid-template-columns:90px minmax(0,1fr);align-items:center;gap:10px;display:grid}dl.keys dt,dl.keys dd{margin:0}kbd{font-family:var(--font-mono);background:var(--sunk);border:1px solid var(--line);border-radius:3px;padding:0 5px;font-size:11px}.warnline{background:var(--warn-soft);border-radius:5px;padding:5px 10px;font-size:12.5px}.scrim{z-index:20;background:#0a121859;position:fixed;inset:0}.drawer{background:var(--surface);width:min(480px,100%);box-shadow:var(--shadow);z-index:21;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}.dh{border-bottom:1px solid var(--line);align-items:flex-start;gap:10px;padding:14px 16px;display:flex}.dh .t{flex:1;min-width:0}.dh input.title{background:0 0;border:1px solid #0000;border-radius:5px;width:100%;margin-left:-6px;padding:2px 6px;font-size:16px;font-weight:700}.dh input.title:hover,.dh input.title:focus{border-color:var(--line);background:var(--surface)}.db{flex-direction:column;flex:1;gap:16px;padding:14px 16px;display:flex;overflow-y:auto}.df{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding:12px 16px;display:flex}.fields{grid-template-columns:70px minmax(0,1fr);align-items:center;gap:8px 10px;display:grid}.fields label,.cap{color:var(--muted);font-size:11.5px;font-family:var(--font-mono);letter-spacing:.04em}.sec{flex-direction:column;gap:6px;display:flex}.chk{align-items:center;gap:8px;font-size:13px;display:flex}.chk.done span{color:var(--muted);text-decoration:line-through}.hist{color:var(--muted);flex-direction:column;gap:2px;font-size:12px;display:flex}.note{background:var(--sunk);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:5px;padding:6px 10px;font-size:13px}.acts{flex-wrap:wrap;gap:8px;display:flex}.conflict{background:var(--bad-soft);border:1px solid var(--bad);border-radius:6px;flex-direction:column;gap:8px;padding:10px 12px;font-size:13px;display:flex}textarea.inp{resize:vertical;width:100%;min-height:64px;max-height:40vh}.df .sec{border:1px solid var(--line);background:var(--sunk);border-radius:6px;gap:6px;padding:10px 12px}.toast{background:var(--fg);color:var(--bg);z-index:40;max-width:calc(100% - 32px);box-shadow:var(--shadow);border-radius:8px;padding:9px 16px;font-size:13px;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast.error{background:var(--bad);color:#fff}.modalscrim{z-index:30;background:#0a121859;position:fixed;inset:0}.modal{background:var(--surface);width:min(440px,100% - 32px);box-shadow:var(--shadow);z-index:31;border-radius:10px;flex-direction:column;gap:12px;max-height:calc(100% - 32px);padding:18px;display:flex;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.modal h2{margin:0;font-size:16px}.login{background:var(--surface);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:14px;max-width:380px;margin:12vh auto 0;padding:24px;display:flex}.login h1{margin:0;font-size:18px}.login p{color:var(--muted);margin:0;font-size:13px}.login .field{flex-direction:column;gap:4px;display:flex}.login label{color:var(--muted);font-size:12px}.errline{color:var(--bad);font-size:13px}.skeleton{color:var(--muted);text-align:center;padding:24px}@media (width<=820px){.board{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:no-preference){.card,.btn{transition:border-color .12s}}.lanes{flex-direction:column;gap:14px;display:flex}.lane-head{color:var(--muted);font-size:12px;font-family:var(--font-mono);grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding-inline:4px;display:grid}.lane{flex-direction:column;gap:6px;display:flex}.lane-title{align-items:center;gap:8px;font-size:13.5px;font-weight:700;display:flex}.lane .col{min-height:60px}@media (width<=820px){.lane-head{display:none}}:root{--chart:#137aa8;--chart-track:#d3e6f0}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--chart:#3a9fc9;--chart-track:#24404c}}.dash{flex-direction:column;gap:14px;display:flex}.tiles{grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:10px;display:grid}.tile{background:var(--surface);border:1px solid var(--line);text-align:left;border-radius:8px;flex-direction:column;gap:2px;padding:12px 14px;display:flex}.tile:hover{border-color:var(--accent)}.tile.alert{border-color:var(--bad)}.tile-label{color:var(--muted);font-size:12.5px}.tile.alert .tile-label{color:var(--bad);font-weight:700}.tile-value{font-size:28px;font-weight:700;line-height:1.2}.tile-hint{color:var(--muted);font-size:11.5px}.dash-cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:14px;display:grid}@media (width<=900px){.dash-cols{grid-template-columns:minmax(0,1fr)}}.pad{flex-direction:column;gap:10px;padding:14px 16px;display:flex}.sec-title{margin:0;font-size:14px}table.load td,table.load th{padding:6px 8px}.meter{background:var(--chart-track);vertical-align:middle;border-radius:4px;width:calc(100% - 28px);height:8px;display:inline-block;overflow:hidden}.meter-fill{background:var(--chart);border-radius:4px;height:100%;display:block}ul.plain{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.linkish{text-align:left;cursor:pointer;text-underline-offset:3px;background:0 0;border:0;padding:0;text-decoration:underline}.chart{flex-direction:column;gap:8px;margin:0;display:flex}.chart-head{flex-wrap:wrap;align-items:baseline;gap:8px 12px;font-size:14px;font-weight:700;display:flex}.chart-head .btn{margin-left:auto;font-weight:400}.chart-box{position:relative}.chart-svg{width:100%;height:auto;display:block}.chart-svg .grid{stroke:var(--line);stroke-width:1px}.chart-svg .baseline{stroke:var(--muted);stroke-width:1px}.chart-svg .axis{fill:var(--muted);font-size:10px;font-family:var(--font-mono)}.chart-svg .val{fill:var(--fg);font-size:11px;font-weight:700}.chart-svg .bar{fill:var(--chart)}.chart-svg .bar.on{fill:var(--accent)}.chart-svg rect:focus-visible{outline:2px solid var(--accent)}.tip{background:var(--fg);color:var(--bg);pointer-events:none;white-space:nowrap;border-radius:6px;padding:3px 9px;font-size:12px;position:absolute;top:0;transform:translate(-50%)}.cal{border:1px solid var(--line);background:var(--surface);border-radius:8px;grid-template-columns:repeat(7,minmax(0,1fr));display:grid;overflow:hidden}.cal-wd{background:var(--sunk);color:var(--muted);text-align:center;padding:4px 8px;font-size:12px}.cal-wd.sun{color:var(--bad)}.cal-cell{border-top:1px solid var(--line);border-left:1px solid var(--line);flex-direction:column;gap:3px;min-width:0;min-height:96px;padding:4px 5px;display:flex}.cal-cell:nth-child(7n+1){border-left:0}.cal-cell.off{background:var(--sunk);opacity:.55}.cal-cell.today{box-shadow:inset 0 0 0 2px var(--accent)}.cal-day{color:var(--muted);font-size:12px;font-family:var(--font-mono)}.cal-cell.today .cal-day{color:var(--accent);font-weight:700}.chip{background:var(--accent-soft);color:var(--fg);border:0;border-left:3px solid var(--accent);text-align:left;text-overflow:ellipsis;white-space:nowrap;border-radius:3px;padding:1px 6px;font-size:11.5px;overflow:hidden}.chip.u-high{border-left-color:var(--bad)}.chip.late{background:var(--bad-soft)}.more{color:var(--accent);text-align:left;background:0 0;border:0;padding:0 2px;font-size:11.5px}.cal-title{text-align:center;min-width:110px}@media (width<=700px){.cal-cell{min-height:70px}.chip{padding:0 4px;font-size:10.5px}}
