:root{--bg:#f6f7fb;--panel:#fff;--line:#e6e8ef;--line-soft:#f0f1f5;--text:#1f2433;--muted:#7a8194;--primary:#4f46e5;--primary-soft:#eef0ff;--danger:#e5484d;--sel:#eef2ff;--row-h:36px;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Pretendard,Apple SD Gothic Neo,Noto Sans KR,Segoe UI,Roboto,sans-serif;font-size:13px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit;border:1px solid var(--line);background:#fff;border-radius:6px;outline:none;padding:5px 8px}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4f46e51f}input[type=checkbox],input[type=radio]{box-shadow:none;padding:0}.muted{color:var(--muted)}.small{font-size:11.5px}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.done-text{color:var(--muted);text-decoration:line-through}.placeholder{color:#b4b9c7}.row-gap{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.spacer{flex:1}.btn{border:1px solid var(--line);white-space:nowrap;background:#fff;border-radius:7px;align-items:center;gap:6px;height:30px;padding:5px 11px;display:inline-flex}.btn:hover{background:#f5f6fa}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:#4338ca}.btn.danger{color:var(--danger);border-color:#f5c2c4}.btn.danger:hover{background:#fff1f1}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:#eef0f5}.btn.sm{height:26px;padding:3px 9px;font-size:12px}.btn.active{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.icon-btn{color:#4a5164;background:0 0;border:none;border-radius:7px;justify-content:center;align-items:center;width:30px;height:30px;font-size:15px;display:inline-flex}.icon-btn:hover:not(:disabled){background:#eef0f5}.icon-btn:disabled{opacity:.35;cursor:default}.icon-btn.sm{width:22px;height:22px;font-size:12px}.icon-btn.danger:hover{color:var(--danger);background:#fff1f1}.link-btn{color:var(--primary);background:0 0;border:none;padding:0 4px;font-size:11.5px}.plain{background:0 0;border:none;padding:0}.seg{border:1px solid var(--line);background:#fff;border-radius:7px;flex-wrap:wrap;display:inline-flex;overflow:hidden}.seg button{border:none;border-right:1px solid var(--line);background:0 0;padding:5px 10px;font-size:12.5px}.seg button:last-child{border-right:none}.seg button.on{background:var(--primary-soft);color:var(--primary);font-weight:600}.app{height:100%;display:flex}.sidebar{color:#d5d8e3;background:#1d2030;flex-direction:column;flex:none;width:236px;padding:12px 10px;display:flex}.brand{color:#fff;align-items:center;gap:9px;padding:4px 6px 16px;font-size:17px;font-weight:700;display:flex}.side-section{flex:1;overflow:auto}.side-title{text-transform:uppercase;letter-spacing:.06em;color:#8b90a6;justify-content:space-between;align-items:center;padding:6px;font-size:11px;display:flex}.side-title .link-btn{color:#a5b4fc;text-transform:none;letter-spacing:0}.proj-item{border-radius:7px;align-items:center;gap:8px;padding:6px;display:flex}.proj-item:hover{background:#ffffff0f}.proj-item:not(.on) .proj-label{opacity:.5}.proj-label{cursor:pointer;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.proj-edit{flex:1;min-width:0;padding:2px 6px}.proj-count{color:#8b90a6;font-size:11px}.proj-more{color:#8b90a6;opacity:0}.proj-item:hover .proj-more{opacity:1}.add-proj{color:#a5b4fc;justify-content:flex-start;width:100%;margin-top:6px}.add-proj:hover{background:#ffffff0f!important}.side-foot{border-top:1px solid #ffffff14;flex-direction:column;gap:6px;padding-top:10px;display:flex}.side-foot .btn{color:#d5d8e3;justify-content:flex-start}.side-foot .btn:hover{background:#ffffff0f}.side-foot .muted{color:#6f7590;padding:0 10px}.main{flex-direction:column;flex:1;min-width:0;display:flex}.toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:8px;height:52px;padding:0 12px;display:flex;overflow-x:auto}.tabs{background:#f0f1f6;border-radius:9px;gap:2px;padding:3px;display:flex}.tab{color:#555c70;background:0 0;border:none;border-radius:7px;align-items:center;gap:6px;padding:5px 12px;font-weight:500;display:flex}.tab.on{color:var(--text);background:#fff;box-shadow:0 1px 3px #1418281a}.tab-icon{opacity:.6}.search input{width:180px;height:30px}.content{flex:1;min-height:0;display:flex}.view{background:var(--panel);flex-direction:column;flex:1;min-width:0;display:flex}.popover{z-index:1000;border:1px solid var(--line);background:#fff;border-radius:10px;min-width:180px;max-height:80vh;padding:6px;position:fixed;overflow:auto;box-shadow:0 12px 32px #14182829}.menu{flex-direction:column;display:flex}.menu-item{text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;width:100%;padding:6px 10px;display:flex}.menu-item:hover:not(:disabled){background:#f2f3f8}.menu-item:disabled{opacity:.4;cursor:default}.menu-item.danger{color:var(--danger)}.menu-item.active{background:var(--primary-soft)}.menu-check{width:14px;color:var(--primary);font-size:12px}.menu-label{flex:1}.menu-hint{color:var(--muted);font-size:11px}.menu-divider{background:var(--line);height:1px;margin:4px 0}.menu-sub{flex-direction:column;gap:6px;padding:6px 10px;display:flex}.check-label{cursor:pointer;align-items:center;gap:7px;display:flex}.filter-pop,.baseline-pop,.dep-pop{flex-direction:column;gap:10px;width:250px;padding:6px;display:flex}.filter-pop label,.dep-pop label{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.filter-pop label.check-label{color:var(--text);flex-direction:row;font-size:13px}.baseline-pop form{gap:6px;display:flex}.baseline-pop form input{flex:1;min-width:0}.dep-pop-title{font-weight:600}.confirm{width:240px;padding:8px}.confirm p{margin:0 0 10px}.member-picker{width:220px}.member-add{padding:6px 4px 2px}.member-add input{width:100%}.avatars{display:inline-flex}.avatars .avatar+.avatar{margin-left:-6px}.avatar{color:#fff;text-align:center;white-space:nowrap;border-radius:50%;flex:none;font-weight:600;display:inline-block;overflow:hidden;box-shadow:0 0 0 2px #fff}.avatar.more{color:#3d4457;background:#cbd2e0}.gantt-scroll{flex:1;position:relative;overflow:auto}.gantt-inner{background:#fff;min-height:100%;position:relative}.gantt-head{z-index:20;border-bottom:1px solid var(--line);background:#fff;display:flex;position:sticky;top:0}.grid-head{z-index:21;border-right:1px solid var(--line);background:#fafbfd;align-items:flex-end;display:flex;position:sticky;left:0}.grid-head .gcell{height:100%;color:var(--muted);align-items:flex-end;padding-bottom:8px;font-size:12px;font-weight:600}.time-head{height:100%;position:relative}.tier{position:absolute;left:0;right:0}.tier.top{border-bottom:1px solid var(--line-soft);height:26px;top:0}.tier.bottom{height:26px;top:26px}.tunit{border-left:1px solid var(--line-soft);color:#5b6275;white-space:nowrap;justify-content:center;align-items:center;gap:2px;height:100%;font-size:11.5px;display:flex;position:absolute;top:0;overflow:hidden}.tier.top .tunit{color:var(--text);justify-content:flex-start;font-weight:600}.sticky-label{padding:0 8px;position:sticky;left:8px}.tunit small{color:#a0a6b6;font-size:10px}.tunit.today{color:#fff}.tunit.today:before{content:"";background:var(--danger);z-index:-1;border-radius:5px;position:absolute;inset:3px}.tunit.today small{color:#ffe1e1}.tunit.off{color:#a0a6b6}.gantt-body{display:flex;position:relative}.grid-body{z-index:10;border-right:1px solid var(--line);background:#fff;flex:none;position:sticky;left:0}.gcell{border-right:1px solid var(--line-soft);flex:none;align-items:center;height:100%;padding:0 8px;display:flex;position:relative;overflow:hidden}.gcell:last-child{border-right:none}.gcell.name{gap:4px}.gcell.clickable{cursor:pointer}.gcell.clickable:hover{background:#f5f6fa}.grid-row{border-bottom:1px solid var(--line-soft);background:#fff;display:flex;position:relative}.grid-row:hover{background:#fafbff}.grid-row.selected,.grid-row.selected:hover{background:var(--sel)}.grid-row.dragging{opacity:.4}.grid-row.section-row .task-name{font-weight:700}.project-row{background:#f8f9fc}.project-row:hover{background:#f3f4f9}.project-row .proj-name{flex:1;font-size:13.5px;font-weight:700}.proj-dot{border-radius:3px;flex:none;width:10px;height:10px;display:inline-block}.caret{color:#7a8194;background:0 0;border:none;flex:none;width:16px;padding:0;font-size:11px}.caret-space{flex:none;width:16px}.drag-handle{cursor:grab;color:#c4c8d4;letter-spacing:-2px;opacity:0;-webkit-user-select:none;user-select:none;flex:none;width:10px;font-size:11px}.grid-row:hover .drag-handle{opacity:1}body.dragging-row,body.dragging-row *{-webkit-user-select:none;user-select:none;cursor:grabbing!important}.check{color:#fff;background:#fff;border:1.5px solid #b8bdcb;border-radius:50%;flex:none;justify-content:center;align-items:center;width:16px;height:16px;padding:0;font-size:10px;line-height:1;display:inline-flex}.check:hover{border-color:#10b981}.check.done{background:#10b981;border-color:#10b981}.check.big{width:22px;height:22px;margin-top:6px;font-size:13px}.check.sm{width:14px;height:14px;font-size:9px}.ms-icon{color:#8b5cf6;text-align:center;cursor:pointer;flex:none;width:16px;font-size:12px}.ms-icon.done{color:#10b981}.task-name{text-overflow:ellipsis;white-space:nowrap;cursor:text;flex:1;min-width:0;overflow:hidden}.task-name.done{color:var(--muted);text-decoration:line-through}.task-name.critical{color:#dc2626}.name-input{flex:1;min-width:0;height:26px;padding:2px 6px}.row-meta{color:var(--muted);white-space:nowrap;font-size:11px}.row-open,.row-add{color:#5b6275;opacity:0;background:#eef0f6;border:none;border-radius:5px;flex:none;width:22px;height:22px;font-size:12px}.grid-row:hover .row-open,.grid-row:hover .row-add,.cal-day:hover .row-add{opacity:1}.row-open:hover,.row-add:hover{background:var(--primary);color:#fff}.cell-input{background:0 0;border:1px solid #0000;border-radius:5px;width:100%;height:26px;padding:3px 4px;font-size:12px}.cell-input:hover{border-color:var(--line);background:#fff}.cell-input.num{text-align:right}.cell-input::-webkit-calendar-picker-indicator{opacity:0;width:0;margin:0;padding:0}.cell-input:hover::-webkit-calendar-picker-indicator{opacity:.5;width:12px}.cell-input:focus::-webkit-calendar-picker-indicator{opacity:.5;width:12px}.status-select{font-weight:600}.add-row{color:var(--muted);cursor:pointer;height:var(--row-h);align-items:center;gap:6px;padding:0 14px}.add-row:hover{color:var(--primary)}.drop-before{box-shadow:inset 0 2px 0 var(--primary)}.drop-after{box-shadow:inset 0 -2px 0 var(--primary)}.drop-inside{background:var(--primary-soft);outline:1.5px dashed var(--primary);outline-offset:-2px}.col-resizer{cursor:col-resize;z-index:2;width:6px;position:absolute;top:0;bottom:0;right:-3px}.col-resizer:hover{background:var(--primary);opacity:.4}.time-body{-webkit-user-select:none;user-select:none;flex:none;position:relative}.trow{height:var(--row-h);border-bottom:1px solid var(--line-soft);position:absolute;left:0;right:0}.trow.project{background:#f8f9fcb3}.trow.selected{background:#4f46e50f}.trow.undated{cursor:crosshair}.trow.undated:hover{background:repeating-linear-gradient(45deg,#0000 0 8px,#4f46e50a 8px 16px)}.offday{background:#f6f7fa;position:absolute;top:0;bottom:0}.vline{background:var(--line-soft);width:1px;position:absolute;top:0;bottom:0}.today-line{background:var(--danger);z-index:3;opacity:.8;pointer-events:none;width:2px;position:absolute;top:0;bottom:0}.today-line span{color:var(--danger);white-space:nowrap;font-size:10px;font-weight:600;position:absolute;top:2px;left:4px}.bar{background:color-mix(in srgb, var(--c) 30%, white);z-index:5;cursor:grab;border:1px solid color-mix(in srgb, var(--c) 55%, white);border-radius:6px;height:22px;position:absolute}.bar:hover{box-shadow:0 2px 8px #1418282e}.bar.selected{box-shadow:0 0 0 2px var(--c), 0 2px 8px #1418282e}.bar.critical{border-color:#ef4444;box-shadow:0 0 0 1.5px #ef4444}.bar.done{opacity:.65}.bar-progress{background:var(--c);pointer-events:none;border-radius:5px 0 0 5px;position:absolute;top:0;bottom:0;left:0}.bar-inner-text{color:#fff;pointer-events:none;text-shadow:0 0 2px #0000004d;font-size:11px;font-weight:600;line-height:20px;position:absolute;top:0;left:7px}.handle{cursor:ew-resize;z-index:2;width:7px;position:absolute;top:0;bottom:0}.handle.l{left:-2px}.handle.r{right:-2px}.bar:hover .handle:after{content:"";background:#ffffffe6;border-radius:2px;width:3px;position:absolute;top:5px;bottom:5px;left:2px;box-shadow:0 0 0 1px #00000026}.progress-handle{cursor:ew-resize;opacity:0;z-index:3;border-bottom:7px solid #4a5164;border-left:5px solid #0000;border-right:5px solid #0000;width:0;height:0;margin-left:-5px;position:absolute;bottom:-7px}.bar:hover .progress-handle{opacity:1}.link-dot{opacity:0;cursor:crosshair;z-index:4;background:#fff;border:2px solid #64748b;border-radius:50%;width:11px;height:11px;margin-top:-5.5px;position:absolute;top:50%}.link-dot.left{left:-16px}.link-dot.right{right:-16px}.bar:hover .link-dot,.milestone:hover .link-dot{opacity:1}.link-dot:hover{background:var(--primary);border-color:var(--primary)}.milestone .link-dot.left{left:-12px}.milestone .link-dot.right{right:-12px}.bar.summary{background:color-mix(in srgb, var(--c) 35%, white);border:none;border-radius:2px;height:10px}.bar.summary:before,.bar.summary:after{content:"";border-top:6px solid var(--c);width:0;height:0;position:absolute;bottom:-6px}.bar.summary:before{border-right:6px solid #0000;left:0}.bar.summary:after{border-left:6px solid #0000;right:0}.bar.summary.section{--c:#1f2433;background:#c7c8cc}.summary-progress{background:var(--c);pointer-events:none;border-radius:2px;position:absolute;top:0;bottom:0;left:0}.milestone{z-index:5;cursor:grab;width:18px;height:18px;position:absolute}.milestone .diamond{background:var(--c);border-radius:2px;width:13px;height:13px;margin:2.5px;transform:rotate(45deg);box-shadow:0 0 0 2px #fff}.milestone.done .diamond{background:#10b981}.milestone.selected .diamond{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--c)}.milestone.critical .diamond{background:#ef4444}.bar-label{height:var(--row-h);white-space:nowrap;pointer-events:none;z-index:4;transform:translateY(var(--y,0));align-items:center;gap:6px;font-size:12px;display:flex;position:absolute;top:0}.bar-label-date{color:var(--muted);font-size:11px}.project-bar{opacity:.35;border-radius:3px;height:6px;position:absolute}.baseline-bar{z-index:4;opacity:.9;background:#9aa3b5;border-radius:3px;height:5px;position:absolute}.baseline-bar.late{background:#f59e0b}svg.deps{z-index:6;pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.dep-line{fill:none;stroke:#64748b;stroke-width:1.4px}.dep.critical .dep-line{stroke:#ef4444;stroke-width:1.8px}.dep-hit{fill:none;stroke:#0000;stroke-width:10px;pointer-events:stroke;cursor:pointer}.dep:hover .dep-line,.dep.active .dep-line{stroke:var(--primary);stroke-width:2.2px}.link-preview{stroke:var(--primary);stroke-width:2px;stroke-dasharray:5 4}.detail{border-left:1px solid var(--line);background:#fff;flex-direction:column;flex:none;width:440px;min-height:0;display:flex;box-shadow:-8px 0 24px #1418280d}.detail-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:8px 10px 8px 16px;display:flex}.crumbs{color:var(--muted);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:flex;overflow:hidden}.detail-actions{display:flex}.detail-body{flex:1;padding:14px 18px 30px;overflow:auto}.detail-title-row{align-items:flex-start;gap:10px;margin-bottom:14px;display:flex}.detail-title{resize:none;field-sizing:content;border:1px solid #0000;flex:1;padding:4px 6px;font-size:19px;font-weight:700}.detail-title:hover{border-color:var(--line)}.fields{grid-template-columns:84px 1fr;align-items:center;gap:10px 12px;margin-bottom:18px;display:grid}.fields>label{color:var(--muted);font-size:12px}.fields select{justify-self:start}.date-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.date-row input[type=date]{width:132px}.dur{width:64px}.progress-row{align-items:center;gap:10px;display:flex}.progress-row input{accent-color:var(--primary);flex:1}.detail section{border-top:1px solid var(--line-soft);padding:12px 0}.detail h4{align-items:center;gap:6px;margin:0 0 8px;font-size:13px;display:flex}.count{color:#5b6275;background:#eef0f5;border-radius:9px;padding:0 7px;font-size:11px;font-weight:600}.desc{resize:vertical;width:100%;min-height:80px}.sub-row,.check-row{border-radius:6px;align-items:center;gap:8px;padding:5px 4px;display:flex}.sub-row{cursor:pointer}.sub-row:hover{background:#f5f6fa}.sub-row span:nth-child(2),.check-row span{flex:1}.check-row a{color:var(--primary);text-overflow:ellipsis;white-space:nowrap;flex:1;text-decoration:none;overflow:hidden}.inline-input{border-color:#0000;width:100%}.inline-input:hover{border-color:var(--line)}.dep-list{flex-direction:column;gap:4px;margin-bottom:6px;display:flex}.dep-row{align-items:center;gap:6px;display:flex}.dep-dir{color:#4338ca;background:#e0e7ff;border-radius:4px;padding:1px 5px;font-size:10.5px;font-weight:700}.dep-dir.succ{color:#15803d;background:#dcfce7}.dep-name{cursor:pointer;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.dep-name:hover{color:var(--primary)}.dep-row select{padding:2px 4px;font-size:12px}.lag{width:48px;padding:2px 4px}.add-dep{width:100%;color:var(--muted)}.comment{gap:10px;margin-bottom:10px;display:flex}.comment-meta{color:var(--muted);font-size:11.5px}.comment-meta b{color:var(--text)}.comment-text{white-space:pre-wrap;margin-top:2px}.comment-form{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.comment-form textarea{resize:vertical;width:100%;min-height:56px}.swatches{flex-wrap:wrap;gap:5px;display:flex}.swatch{width:20px;height:20px;box-shadow:0 0 0 1px var(--line);border:2px solid #fff;border-radius:50%;padding:0}.swatch.on{box-shadow:0 0 0 2px var(--text)}.swatch.none{color:var(--muted);background:#fff;font-size:11px}.board{background:var(--bg);flex:1;gap:14px;padding:16px;display:flex;overflow:auto}.board-col{background:#eef0f5;border-radius:12px;flex-direction:column;flex:none;width:290px;max-height:100%;display:flex}.board-col.over{background:#e0e7ff}.board-col-head{align-items:center;gap:8px;padding:12px 14px 8px;font-weight:700;display:flex}.status-dot{border-radius:50%;width:9px;height:9px}.board-cards{flex-direction:column;flex:1;gap:8px;min-height:40px;padding:4px 10px;display:flex;overflow:auto}.board-add{color:var(--muted);justify-content:flex-start;margin:6px 10px 10px}.card{cursor:grab;border-left:4px solid var(--primary);background:#fff;border-radius:9px;padding:10px 12px;box-shadow:0 1px 2px #14182814}.card:hover{box-shadow:0 4px 12px #1418281f}.card-proj{color:var(--muted);margin-bottom:3px;font-size:11px}.card-title{margin-bottom:8px;font-weight:600}.card-progress{background:#eef0f5;border-radius:2px;height:4px;margin-bottom:8px;overflow:hidden}.card-progress div{height:100%}.card-foot{align-items:center;gap:8px;font-size:11.5px;display:flex}.card-date{color:#5b6275}.card-date.overdue{color:var(--danger);font-weight:600}.prio{border-radius:4px;padding:1px 6px;font-size:10.5px;font-weight:600}.prio.high{color:#b91c1c;background:#fee2e2}.prio.medium{color:#b45309;background:#fef3c7}.prio.low{color:#0369a1;background:#e0f2fe}.workload{flex-direction:column;flex:1;min-height:0;display:flex}.workload-bar{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;padding:8px 14px;display:flex}.legend{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.wl{border-radius:3px;width:12px;height:12px;margin-left:6px;display:inline-block}.wl.ok,.wl-cell.ok{color:#047857;background:#d1fae5}.wl.full,.wl-cell.full{color:#92400e;background:#fde68a}.wl.over,.wl-cell.over{color:#b91c1c;background:#fecaca}.wl-cell.none{color:#4b5563;background:#e5e7eb}.wl-row{border-bottom:1px solid var(--line-soft);height:44px;display:flex}.wl-row.sub{height:32px}.wl-name{z-index:3;border-right:1px solid var(--line);cursor:pointer;background:#fff;flex:none;align-items:center;gap:8px;padding:0 12px;font-weight:600;display:flex;position:sticky;left:0}.wl-name.sub{padding-left:40px;font-weight:400}.wl-cells{flex:none;position:relative}.wl-cell{border-radius:5px;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:flex;position:absolute;top:8px;bottom:8px;overflow:hidden}.wl-task{color:#fff;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border-radius:4px;height:18px;padding:0 6px;font-size:11px;line-height:18px;position:absolute;top:7px;overflow:hidden}.calendar{flex-direction:column;flex:1;min-height:0;padding:12px 16px;display:flex}.cal-head{align-items:center;gap:8px;margin-bottom:10px;display:flex}.cal-head h2{text-align:center;min-width:120px;margin:0 8px;font-size:18px}.cal-grid{border-left:1px solid var(--line);border-top:1px solid var(--line);flex:1;grid-template-rows:32px;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(100px,1fr);display:grid;overflow:auto}.cal-wd{text-align:center;color:var(--muted);border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fafbfd;padding:6px;font-weight:600}.cal-day{border-right:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;gap:2px;min-width:0;padding:4px;display:flex;overflow:hidden}.cal-day.off{background:#fafbfc}.cal-day.out{background:#f7f8fa}.cal-day.out .cal-num{color:#c0c4cf}.cal-day-head{justify-content:space-between;align-items:center;display:flex}.cal-num{padding:2px 5px;font-size:12px;font-weight:600}.cal-day.today .cal-num{background:var(--danger);color:#fff;border-radius:10px}.cal-chip{white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border-radius:4px;min-height:18px;padding:1px 6px;font-size:11px;overflow:hidden}.cal-chip.ms{font-weight:600}.cal-chip.done{opacity:.5}.cal-more{color:var(--muted);padding-left:4px;font-size:11px}.modal-backdrop{z-index:900;background:#0f121e66;justify-content:center;align-items:flex-start;padding-top:6vh;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:14px;flex-direction:column;max-width:94vw;max-height:88vh;display:flex;box-shadow:0 24px 64px #00000040}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-head h3{margin:0}.modal-body{padding:4px 20px 20px;overflow:auto}.set-section{border-bottom:1px solid var(--line-soft);flex-direction:column;gap:10px;padding:14px 0;display:flex}.set-section h4{margin:0}.member-table{border-collapse:collapse;width:100%}.member-table th{text-align:left;color:var(--muted);padding:4px;font-size:11.5px;font-weight:600}.member-table td{padding:4px;position:relative}.member-table input[type=number]{width:70px}.inline-swatches{z-index:5;border:1px solid var(--line);background:#fff;border-radius:8px;width:150px;padding:6px;position:absolute;box-shadow:0 6px 18px #0000001f}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{background:#eef0f5;border-radius:12px;align-items:center;gap:4px;padding:2px 4px 2px 10px;font-size:12px;display:inline-flex}.chip button{color:var(--muted);background:0 0;border:none;font-size:10px}.shortcuts{margin:0;padding-left:18px;line-height:1.9}kbd{background:#f1f2f6;border:1px solid #dcdfe7;border-bottom-width:2px;border-radius:4px;padding:0 5px;font-family:inherit;font-size:11px}.export-form{grid-template-columns:64px 1fr;align-items:center;gap:12px;padding:14px 0 6px;display:grid}.export-form>label{color:var(--muted);font-size:12px}.export-form .seg{justify-self:start}.export-actions{justify-content:flex-end;gap:8px;padding-top:8px;display:flex}.btn:disabled{opacity:.6;cursor:default}.toaster{z-index:2000;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{color:#fff;background:#1f2433;border-radius:8px;padding:9px 16px;animation:.2s pop;box-shadow:0 8px 24px #0003}@keyframes pop{0%{opacity:0;transform:translateY(8px)}}@media print{@page{size:landscape;margin:8mm}body{background:#fff;overflow:visible}.sidebar,.toolbar,.detail,.toaster,.row-open,.row-add,.drag-handle{display:none!important}.app,.main,.content,.view{height:auto;display:block}.gantt-scroll{overflow:visible}.gantt-head,.grid-head,.grid-body{position:static}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
