:root{--bg:#f6f7f5;--panel:#ffffff;--ink:#1d2421;--muted:#66706b;--line:#e2e6e3;--accent:#0f6b5c;--accent-soft:#e3f1ed;--warn:#b45309;--warn-soft:#fdf0dc;--crit:#b42318;--crit-soft:#fde8e6;--p-hk:#e0a800;--p-dd:#d9534f;--p-ml:#d6649a;--p-hj:#3b7dd8;--collab:#9a8fbf;--font:"IBM Plex Sans KR",-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;--mono:"IBM Plex Mono",ui-monospace,Menlo,monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#131816;--panel:#1b211f;--ink:#e8ece9;--muted:#9aa49f;--line:#2c3431;--accent:#4fbfa8;--accent-soft:#1d3530;--warn:#f0a94a;--warn-soft:#3a2c17;--crit:#f2766b;--crit-soft:#3d1f1c;color-scheme:dark}}:root[data-theme=dark]{--bg:#131816;--panel:#1b211f;--ink:#e8ece9;--muted:#9aa49f;--line:#2c3431;--accent:#4fbfa8;--accent-soft:#1d3530;--warn:#f0a94a;--warn-soft:#3a2c17;--crit:#f2766b;--crit-soft:#3d1f1c;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.55;padding:24px 16px 48px}.wrap{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr);grid-gap:20px;gap:20px}header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}h1{font-size:22px;margin:0;font-weight:700;letter-spacing:-.01em}.sub{color:var(--muted);margin:2px 0 0}.today{font-family:var(--mono);font-size:13px;color:var(--accent);background:var(--accent-soft);padding:6px 10px;border-radius:6px}h2{font-size:15px;margin:0 0 10px;font-weight:600}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px}.kpi .l{color:var(--muted);font-size:12px}.kpi .v{font-size:26px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin-top:2px}.kpi .n{color:var(--muted);font-size:12px}.kpi.alert .v{color:var(--crit)}@media (max-width:760px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}.week{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));grid-gap:10px;gap:10px}.task,.week{display:grid}.task{border:1px solid var(--line);border-radius:8px;padding:12px;grid-gap:4px;gap:4px;background:var(--panel)}.task .top{display:flex;justify-content:space-between;gap:8px;align-items:center}.dday{font-family:var(--mono);font-size:12px;padding:2px 7px;border-radius:5px;background:var(--accent-soft);color:var(--accent);white-space:nowrap}.dday.soon{background:var(--warn-soft);color:var(--warn)}.dday.live{background:var(--accent);color:var(--panel)}.task .what{font-weight:600}.task .meta{color:var(--muted);font-size:12px}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:1px}.lanes{overflow-x:auto}.grid{min-width:860px;display:grid;grid-template-columns:110px 1fr;grid-row-gap:8px;row-gap:8px}.axis{position:relative;height:34px;border-bottom:1px solid var(--line)}.axis span{position:absolute;bottom:4px;font-family:var(--mono);font-size:11px;color:var(--muted);transform:translateX(-50%)}.axis span.m{bottom:18px;color:var(--ink);font-weight:500;transform:none}.who{display:flex;align-items:center;font-weight:600;font-size:13px}.lane{position:relative;height:46px;border-radius:6px;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(100%/var(--weeks) - 1px),var(--line) calc(100%/var(--weeks) - 1px),var(--line) calc(100%/var(--weeks)))}.lane.empty:after{content:attr(data-empty);inset:0;align-items:center;padding-left:12px;color:var(--muted)}.bar,.lane.empty:after{position:absolute;display:flex;font-size:12px}.bar{top:6px;height:34px;border-radius:5px;padding:2px 8px;line-height:1.25;color:#1d2421;flex-direction:column;justify-content:center;white-space:nowrap;cursor:default}.bar,.bar b{overflow:hidden}.bar b{font-weight:600;text-overflow:ellipsis}.bar small{opacity:.8;font-family:var(--mono);font-size:10.5px}.promo{position:absolute;top:14px;height:18px;border-radius:4px;opacity:.55}.todayline{position:absolute;top:0;bottom:0;width:2px;background:var(--crit);z-index:2}.legend{display:flex;flex-wrap:wrap;gap:14px;color:var(--muted);font-size:12px;margin-top:10px}.legend i{display:inline-block;width:18px;height:10px;border-radius:3px;margin-right:6px;vertical-align:0}.people{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:12px;gap:12px}.person{background:var(--panel);border-radius:10px;padding:14px;display:grid;grid-gap:8px;gap:8px;border:1px solid var(--line);border-top:4px solid var(--c)}.person h3{margin:0;font-size:15px}.person .tag{color:var(--muted);font-size:12px}.row{display:grid;grid-template-columns:88px 1fr;grid-gap:8px;gap:8px;font-size:13px}.row .k{color:var(--muted)}.pill{display:inline-block;font-size:11px;padding:1px 8px;border-radius:999px;font-weight:600}.pill.ok{background:var(--accent-soft);color:var(--accent)}.pill.wait{background:var(--crit-soft);color:var(--crit)}.log{display:grid;grid-gap:0;gap:0}.log div{display:grid;grid-template-columns:72px 90px 1fr auto;grid-gap:10px;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);align-items:center;font-size:13px}.log div:last-child{border-bottom:0}.h2row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px}.h2links{display:flex;gap:12px;font-size:12px;font-weight:400}.h2links a{color:var(--muted)}.loglink{color:inherit;text-decoration:none}.loglink:hover{text-decoration:underline}.loglink .via{font-size:11px;color:var(--muted);white-space:nowrap}.log .d{font-family:var(--mono);font-size:12px;color:var(--muted)}@media (max-width:560px){.log div{grid-template-columns:60px 1fr}.log div span:nth-child(2){display:none}}.note{color:var(--muted);font-size:12px}.two{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);grid-gap:20px;gap:20px}@media (max-width:900px){.two{grid-template-columns:1fr}}.bar{z-index:1}.bar:not(.collab){box-shadow:0 0 0 2px color-mix(in srgb,var(--c) 45%,transparent),0 2px 6px rgba(0,0,0,.12)}.bar.collab{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--collab) 70%,#fff) 0 8px,color-mix(in srgb,var(--collab) 55%,#fff) 8px 16px)!important;border-left:4px solid var(--c);color:#1d2421}.promo.collab{background:var(--collab)!important}.pill.collab{background:color-mix(in srgb,var(--collab) 25%,transparent);color:var(--ink);font-weight:500}.banner{background:var(--warn-soft);color:var(--warn);border-radius:8px;padding:8px 12px;font-size:13px}.undated{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}a.plain{color:inherit;text-decoration:none}.login{min-height:80vh;display:grid;place-items:center}.login form{width:min(360px,100%);display:grid;grid-gap:12px;gap:12px}.login h1{font-size:20px}.login input{font:inherit;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink)}.login button{font:inherit;font-weight:600;padding:10px;border:0;border-radius:8px;background:var(--accent);color:#fff;cursor:pointer}.login .err{color:var(--crit);font-size:13px;margin:0}.followers{font-size:12px;font-weight:500;color:var(--muted)}.termslink{margin-top:6px;color:inherit;font-weight:600}.sheetlink,.termslink{display:block;font-size:12px;text-decoration:underline}.sheetlink{margin-top:4px;color:var(--muted)}.calc button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:var(--panel);border-radius:6px;padding:8px 14px;cursor:pointer;white-space:nowrap}.calc button:disabled{opacity:.5;cursor:default}.calc button.ghost{background:transparent;color:var(--accent)}.calc button.sm{padding:4px 10px;font-size:12px}.calc input{font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:7px 9px;width:100%;min-width:0}.calc input:focus{outline:2px solid var(--accent);outline-offset:-1px}.calc label{display:grid;grid-gap:4px;gap:4px;font-size:12px;color:var(--muted)}.calc a.today{text-decoration:none}.calc .lookup{display:flex;gap:8px}.calc .pair{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;margin-top:10px}.calc .note{color:var(--muted);font-size:12px;margin:10px 0 0}.calc .result{margin-top:14px;display:grid;grid-template-columns:minmax(200px,260px) 1fr;grid-gap:16px;gap:16px;align-items:start;border-top:1px solid var(--line);padding-top:14px}.calc .big{display:grid;grid-gap:6px;gap:6px;background:var(--accent-soft);border-radius:10px;padding:14px 16px}.calc .big .l{font-size:12px;color:var(--muted)}.calc .big .v{font-size:28px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--accent)}.calc dl{margin:0;display:grid;grid-gap:6px;gap:6px}.calc dl div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px dashed var(--line);padding-bottom:4px}.calc dt{color:var(--muted)}.calc dd{margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.calc .neg{color:var(--crit)}.calc .verdict{display:inline-block;justify-self:start;font-size:12px;padding:2px 8px;border-radius:5px;white-space:nowrap}.calc .verdict.ok{background:var(--accent);color:var(--panel)}.calc .verdict.mid{background:var(--warn-soft);color:var(--warn)}.calc .verdict.no{background:var(--crit-soft);color:var(--crit)}.calc .assume{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));grid-gap:10px;gap:10px}.calc table{border-collapse:collapse;width:100%;font-size:13px}.calc td,.calc th{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.calc th{font-size:12px;color:var(--muted);font-weight:500;white-space:nowrap}.calc table.num td{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.calc .rates{margin-top:12px}.calc .rates input{max-width:90px}.calc .scroll{overflow-x:auto}.calc .head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}.calc .head h2{margin:0}.calc .actions{display:flex;gap:8px;flex-wrap:wrap}.calc .people-table input.name{width:130px}.calc .people-table input.url{width:240px}.calc .people-table input.n{width:90px}.calc .people-table small{display:block;color:var(--muted);font-size:11px;margin-top:2px;max-width:240px;white-space:normal}@media (max-width:640px){.calc .pair,.calc .result{grid-template-columns:1fr}}.calc .two>*,.calc>*{min-width:0}.bar.tentative{background:repeating-linear-gradient(135deg,#fff 0 6px,color-mix(in srgb,var(--c) 12%,#fff) 6px 12px)!important;border-left:1.5px dashed var(--c);border:1.5px dashed var(--c);box-shadow:none;color:#4a524e}.bar.tentative .tag{display:inline-block;margin-right:4px;padding:0 4px;border-radius:3px;background:var(--c);color:#fff;font-size:10px;font-weight:700;vertical-align:1px}.promo.tentative{opacity:.25!important}.taskhint{margin:-4px 0 10px}.overdue{margin-left:8px;vertical-align:2px}.kanban{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}@media (max-width:860px){.kanban{grid-template-columns:1fr}}.kcol{background:var(--bg);border-radius:8px;padding:10px;display:grid;grid-gap:8px;gap:8px;align-content:start}.kcol h3{margin:0;font-size:13px;font-weight:600}.kcol .count{color:var(--muted);font-family:var(--mono);font-weight:500}.ttask{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--c);border-radius:8px;padding:10px;display:grid;grid-gap:4px;gap:4px}.ttask .bottom,.ttask .top{display:flex;justify-content:space-between;gap:8px;align-items:center}.ttask .what{font-weight:600}.ttask .meta{color:var(--muted);font-size:12px}.ttask.done{opacity:.6}.ttask.done .what{text-decoration:line-through}.dday.late{background:var(--crit-soft);color:var(--crit)}.statuswrap{display:inline-flex;flex-direction:column;align-items:flex-end;gap:2px}.status{font:inherit;font-size:12px;font-weight:600;border:1px solid var(--line);border-radius:6px;padding:2px 6px;background:var(--panel);color:var(--ink);cursor:pointer}.status.s-1{background:var(--accent-soft);color:var(--accent)}.status.s-1,.status.s-2{border-color:transparent}.status.s-2{background:var(--line);color:var(--muted)}.status:disabled{opacity:.6;cursor:wait}.statusmsg{font-size:11px;color:var(--crit);max-width:180px;text-align:right}.catgoal{margin:-4px 0 2px;font-size:12px}.kcol.cat-plan h3{color:#2f6fbf}.kcol.cat-prep h3{color:#b07d00}.kcol.cat-run h3{color:#2e8a57}.pcard{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--c);border-radius:8px;padding:10px;display:grid;grid-gap:6px;gap:6px}.pcard .top{display:flex;justify-content:space-between;gap:8px;align-items:center}.pcard .meta{color:var(--muted);font-size:12px}.pcard .what{font-weight:600}.pcard .what .pill{margin-left:4px;vertical-align:1px}.steps{display:grid;grid-template-columns:repeat(12,1fr);grid-gap:2px;gap:2px}.steps i{height:6px;border-radius:2px;background:var(--line)}.steps i:nth-child(-n+5).done{background:#2f6fbf}.steps i:nth-child(n+6):nth-child(-n+8).done{background:#d9a400}.steps i:nth-child(n+9).done{background:#2e8a57}.steps i.now{background:transparent;box-shadow:inset 0 0 0 1.5px var(--ink)}.ptasks{display:grid;grid-gap:6px;gap:6px;margin-top:2px}.ttask.compact{padding:8px;border-left-width:2px;background:var(--bg)}.orphans{margin-top:12px;display:grid;grid-gap:8px;gap:8px}.orphans h3{margin:0;font-size:13px}.pill.ing{background:color-mix(in srgb,#2f6fbf 15%,transparent);color:#2f6fbf}.btabs{display:flex;gap:4px;border-bottom:2px solid var(--line);margin-bottom:-8px}.btab{border:1px solid var(--line);border-bottom:0;border-radius:8px 8px 0 0;background:var(--bg);color:var(--muted);font:inherit;font-size:14px;font-weight:600;padding:8px 16px;cursor:pointer;margin-bottom:-2px;display:inline-flex;align-items:center;gap:6px}.btab.on{background:var(--panel);color:var(--ink);border-color:var(--line);border-bottom:2px solid var(--panel)}.btab .cnt{font-size:11px;padding:1px 7px;border-radius:999px;background:#fdecea;color:#b3261e}.tabpane{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:20px;gap:20px;min-width:0}.tabpane[hidden]{display:none}.kpis.k5{grid-template-columns:repeat(5,minmax(0,1fr))}@media (max-width:900px){.kpis.k5{grid-template-columns:repeat(2,minmax(0,1fr))}}.plist .h2row .meta{font-size:13px;font-weight:500;color:var(--muted)}.plist .warn{color:#b3261e}.plistbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-size:13px;margin:4px 0 10px}.tablewrap{overflow-x:auto}.ptable{width:100%;border-collapse:collapse;font-size:13px;min-width:860px}.ptable th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;padding:8px;white-space:nowrap}.ptable td,.ptable th{border-bottom:1px solid var(--line)}.ptable td{padding:10px 8px;vertical-align:top}.prow{cursor:pointer}.prow.on,.prow:hover{background:var(--accent-soft)}.prow .who{border-left:4px solid var(--c);white-space:nowrap;flex-wrap:wrap}.prow .who b{margin-left:4px}.prow .who small{display:block;font-size:11px;margin-left:14px}.prow .who small,.ptable .muted{color:var(--muted)}.ptable .num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.ptable .clip{max-width:260px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ptable .nowrap{white-space:nowrap}.ptable .hl.ok{color:var(--accent);font-weight:600}.ptable .hl.ad{color:#6b4fbb;font-weight:600}.ptable .hl.bad{color:#b3261e;font-weight:700}.flag{display:inline-block;font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;margin:0 4px 4px 0;white-space:nowrap}.flag.ok{background:var(--accent-soft);color:var(--accent)}.flag.warn{background:#fff4d6;color:#8a5a00}.flag.bad{background:#fdecea;color:#b3261e}.pdetail td{background:var(--bg)}.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:8px 20px;gap:8px 20px}.prow .who .up{color:var(--accent)}.prow .who .down{color:#b3261e}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{font:inherit;font-size:12px;font-weight:600;border:0;background:var(--panel);color:var(--muted);padding:5px 10px;cursor:pointer}.seg button+button{border-left:1px solid var(--line)}.seg button.on{background:var(--accent-soft);color:var(--accent)}.stagechip{font-size:10px;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 6px;margin-left:6px;vertical-align:1px}.prow .who .pname{margin-left:4px;font-weight:700;color:inherit;text-decoration:none;border-bottom:1px dotted var(--muted)}.prow .who .pname:hover{color:var(--accent);border-bottom-color:var(--accent)}.prow .who .flags{display:block;flex-basis:100%;margin:6px 0 0 14px;white-space:normal;max-width:240px}.blink{font-size:12px;font-weight:600;color:var(--accent);text-decoration:none}.blink:hover{text-decoration:underline}.blink.new{color:var(--muted);border:1px dashed var(--line);border-radius:6px;padding:2px 7px}.stepctl{display:inline-flex;gap:4px;align-items:flex-start;vertical-align:middle}.stepback{font:inherit;font-size:10px;line-height:1;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--muted);padding:5px 6px;cursor:pointer}.stepback:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}.stepback:disabled{opacity:.35;cursor:default}.pcard[draggable=true]{cursor:-webkit-grab;cursor:grab}.pcard.dragging{opacity:.45}.kcol.droppable{outline:2px dashed var(--line);outline-offset:-2px}.kcol.droppable.over{outline-color:var(--accent);background:var(--accent-soft)}.modalback{position:fixed;inset:0;background:rgba(0,0,0,.35);display:grid;place-items:center;padding:16px;z-index:50}.modal{background:var(--panel);color:var(--ink);border-radius:12px;padding:18px;width:min(480px,100%);max-height:85vh;overflow:auto;display:grid;grid-gap:10px;gap:10px;box-shadow:0 10px 40px rgba(0,0,0,.2)}.modal h3{margin:0;font-size:16px}.modal .meta{margin:0;color:var(--muted);font-size:12px}.modal .note{margin:0}.mgroup{display:grid;grid-gap:4px;gap:4px}.mgroup b{font-size:13px}.mitem{display:flex;gap:8px;align-items:flex-start;font-size:14px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;cursor:pointer}.mitem.on{background:var(--accent-soft);border-color:transparent}.mitem input{margin-top:3px}.mactions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;position:-webkit-sticky;position:sticky;bottom:-18px;background:var(--panel);padding:8px 0 4px}.mactions button{font:inherit;font-size:13px;font-weight:600;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:8px;padding:7px 12px;cursor:pointer}.mactions button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.mactions button:disabled{opacity:.5;cursor:default}.statusmsg.left{text-align:left;max-width:none}