:root{--bg: #f4f5f7;--surface: #ffffff;--line: #e3e5ea;--line-soft: #f0f1f4;--ink: #15171c;--ink-2: #3d4250;--muted: #5b6170;--accent: #1d4ed8;--accent-ink: #1e3a8a;--accent-soft: #eaf0fd;--bar: #2f5fd6;--bar-sub: #a9c0f2;--warn: #b4510b;--warn-soft: #fbe3d2;--busy-soft: #fdf4e3;--busy-ink: #7a4a00;--radius: 8px;font-family:Pretendard Variable,Pretendard,-apple-system,Apple SD Gothic Neo,Malgun Gothic,system-ui,sans-serif;color:var(--ink);background:var(--bg);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3{margin:0}h1{font-size:24px;font-weight:700;letter-spacing:-.01em}h2{font-size:16px;font-weight:700}p{margin:0}.app{display:flex;min-height:100vh}.sidebar{width:236px;flex:none;background:var(--surface);border-right:1px solid var(--line);padding:24px 14px;display:flex;flex-direction:column;gap:22px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{padding:0 10px;display:flex;flex-direction:column;gap:2px}.brand small{font-size:12px;color:var(--muted)}.brand strong{font-size:18px}.nav-group{display:flex;flex-direction:column;gap:2px}.nav-group>span{font-size:12px;font-weight:600;color:var(--muted);padding:0 10px 4px}.nav-item{text-align:left;border:0;background:none;padding:10px 12px;border-radius:6px;font-size:14px;color:var(--ink);display:flex;justify-content:space-between;align-items:center;gap:8px}.nav-item:hover{background:#f3f4f6}.nav-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-count{font-size:12px;background:var(--warn-soft);color:var(--warn);border-radius:999px;padding:1px 8px;font-weight:600}.sidebar-foot{margin-top:auto;border-top:1px solid var(--line);padding:14px 10px 0;display:flex;flex-direction:column;gap:8px;font-size:13px}.main{flex:1;min-width:0;padding:32px 40px 56px;display:flex;flex-direction:column;gap:20px}.page-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px}.page-head .sub{font-size:13px;color:var(--muted);margin-top:6px}@media (max-width: 860px){.app{flex-direction:column}.sidebar{width:auto;height:auto;position:static;flex-direction:row;overflow-x:auto;padding:12px;gap:12px;border-right:0;border-bottom:1px solid var(--line)}.nav-group{flex-direction:row;align-items:center}.nav-group>span,.brand small,.sidebar-foot{display:none}.nav-item{white-space:nowrap}.main{padding:20px 16px 40px}}.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:20px;display:flex;flex-direction:column;gap:14px}.card.flush{padding:0;overflow:hidden}.card-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px}.card-head small{font-size:12px;color:var(--muted)}.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12px}.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.spacer{flex:1}.btn{min-height:40px;padding:0 16px;border-radius:6px;border:1px solid #d3d6dd;background:var(--surface);font-size:14px;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}.btn:hover{background:#f7f8fa}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn.primary:hover{background:#1a44bf}.btn.small{min-height:32px;padding:0 10px;font-size:13px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.danger-soft{border-color:#f0c3a4;color:var(--warn);background:#fff8f3}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.input,.select{min-height:40px;padding:0 12px;border:1px solid #d3d6dd;border-radius:6px;background:var(--surface);font-size:14px;color:var(--ink);width:100%}.input:read-only{background:#f3f4f6;color:var(--ink-2)}.seg{display:inline-flex;background:#e9ebef;border-radius:8px;padding:4px;gap:4px}.seg button{border:0;background:transparent;border-radius:6px;min-height:36px;padding:0 16px;font-size:14px;color:var(--muted)}.seg button.on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px #15171c14}.field>.seg{display:flex}.field>.seg>button{flex:1 1 0;min-width:0;padding:0 8px}.pill{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;white-space:nowrap}.pill.blue{background:var(--accent-soft);color:var(--accent-ink)}.pill.orange{background:var(--warn-soft);color:#8a2e07}.pill.gray{background:#edeef2;color:var(--ink-2)}.pill.amber{background:var(--busy-soft);color:var(--busy-ink)}.pill.green{background:#e5f3ec;color:#1f5c3d}.lv{display:inline-flex;align-items:center;font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;white-space:nowrap}.lv-free{background:#edeef2;color:var(--muted)}.lv-ok{background:var(--accent-soft);color:var(--accent-ink)}.lv-busy{background:var(--busy-soft);color:var(--busy-ink)}.lv-over{background:var(--warn-soft);color:#8a2e07}.tbl-wrap{overflow-x:auto}.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl th{font-size:12px;font-weight:600;color:var(--muted);text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);background:#fafafb;white-space:nowrap}.tbl td{padding:12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.tbl tr.clickable{cursor:pointer}.tbl tr.clickable:hover td{background:#f7f9fe}.tbl tr.selected td{background:var(--accent-soft)}.num{text-align:right}.neg{color:var(--warn)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;padding:12px 18px;border-radius:8px;font-size:14px;box-shadow:0 6px 24px #0003;z-index:50;max-width:calc(100vw - 32px)}@media (prefers-reduced-motion: no-preference){.toast{animation:toast-in .2s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}}.note{font-size:12px;color:var(--muted)}.legend{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:12px;color:var(--ink-2)}.legend i{display:inline-block;width:14px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}.kpi-value{font-size:28px;font-weight:700;letter-spacing:-.01em}.bar-track{height:8px;background:#edeef2;border-radius:4px;overflow:hidden}.bar-fill{height:100%;border-radius:4px}.gantt{display:grid;grid-template-columns:250px repeat(var(--weeks),minmax(64px,1fr));grid-auto-rows:minmax(50px,auto);min-width:calc(250px + var(--weeks) * 64px);position:relative}.g-today{background:#f1f5fe;border-left:2px solid var(--accent)}.g-head{padding:8px 4px;border-bottom:1px solid var(--line);border-left:1px solid var(--line-soft);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;position:relative}.g-head b{font-size:12px;font-weight:600}.g-head span{font-size:11px;color:var(--muted)}.g-head.now b{color:var(--accent);font-weight:700}.g-corner{padding:8px 16px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;justify-content:center;gap:2px;position:relative}.g-rowline{grid-column:1 / -1;border-bottom:1px solid var(--line-soft)}.g-label{padding:6px 12px;display:flex;align-items:center;gap:8px;position:relative;min-width:0}.g-label .t{display:flex;flex-direction:column;gap:2px;min-width:0}.g-label .t b{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-label .t span{font-size:12px;color:var(--muted)}.g-label.sub{padding-left:46px}.g-label.sub .t b{font-size:13px;font-weight:500}.g-toggle{width:26px;height:26px;flex:none;border:1px solid #d3d6dd;background:var(--surface);border-radius:6px;font-size:11px;padding:0;color:var(--ink-2)}.g-bar{align-self:center;margin:0 4px;border-radius:6px;display:flex;align-items:center;justify-content:space-between;gap:6px;padding:0 10px;font-size:12px;font-weight:600;position:relative;overflow:hidden;white-space:nowrap;min-height:30px}.g-bar.sub{min-height:22px;font-weight:500}.st-진행중{background:var(--bar);color:#fff}.st-예정{background:#dce5fa;color:var(--accent-ink)}.st-완료{background:#c9cdd5;color:#2a2e37}.st-지연{background:var(--warn);color:#fff}.sub.st-진행중{background:var(--bar-sub);color:#13275e}.sub.st-예정{background:#e6ecfb;color:var(--accent-ink)}.sub.st-완료{background:#e1e3e8;color:var(--ink-2)}.sub.st-지연{background:#efb892;color:#5a2604}.g-foot-label{padding:8px 16px;background:#fafafb;border-top:1px solid var(--line);display:flex;flex-direction:column;justify-content:center;gap:2px;position:relative}.g-foot{border-top:1px solid var(--line);border-left:1px solid var(--line-soft);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;position:relative;font-size:13px;font-weight:700}.g-foot span{font-size:11px;font-weight:500}.g-foot.lv-free{background:#fff;color:var(--muted)}.g-foot.lv-ok{background:#eef3fd;color:var(--accent-ink)}.g-foot.lv-busy{background:var(--busy-soft);color:var(--busy-ink)}.g-foot.lv-over{background:var(--warn-soft);color:#8a2e07}.chip{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid #d3d6dd;background:var(--surface);font-size:14px;display:inline-flex;align-items:center;gap:8px}.chip.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}.summary-card{border-left:4px solid var(--line)}.summary-card.lv-free{border-left-color:#c9cdd5}.summary-card.lv-ok{border-left-color:var(--bar)}.summary-card.lv-busy{border-left-color:#d49a2a}.summary-card.lv-over{border-left-color:var(--warn)}.week-strip{display:flex;gap:8px;align-items:stretch;flex-wrap:wrap}.day-btn{flex:1 1 96px;min-height:62px;border:1px solid #d3d6dd;background:var(--surface);border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:13px}.day-btn span{font-size:12px;color:var(--muted)}.day-btn.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:700}.day-btn .missing{color:var(--warn)}.log-grid{display:grid;grid-template-columns:minmax(200px,1.4fr) minmax(0,2fr) 76px minmax(0,1.4fr) 112px 40px;gap:8px;align-items:center}.log-grid.head{font-size:12px;color:var(--muted);padding:0 2px}.log-row{padding:8px 2px;border-top:1px solid var(--line-soft)}.log-meta{font-size:11px;color:var(--muted);margin-top:3px}.icon-btn{width:36px;height:36px;border:1px solid transparent;background:none;border-radius:6px;color:var(--muted);font-size:16px}.icon-btn:hover{background:#f3f4f6;color:var(--warn)}@media (max-width: 1100px){.log-grid{grid-template-columns:1fr 1fr}.log-grid.head{display:none}}.chat-shell{max-width:720px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:16px}.chat{background:var(--surface);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;min-height:460px}.chat-log{flex:1;padding:20px;display:flex;flex-direction:column;gap:12px;overflow-y:auto;max-height:60vh}.msg{max-width:82%;padding:12px 14px;border-radius:12px;font-size:14px;line-height:1.55;white-space:pre-wrap}.msg.bot{background:#f3f4f6;align-self:flex-start;border-top-left-radius:4px}.msg.me{background:var(--accent);color:#fff;align-self:flex-end;border-top-right-radius:4px}.confirm{border:1px solid #c9d6f7;background:#f7f9ff;border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:10px;align-self:stretch}.confirm dl{display:grid;grid-template-columns:90px 1fr;gap:6px 12px;margin:0;font-size:14px}.confirm dt{color:var(--muted)}.confirm dd{margin:0;font-weight:600}.chat-input{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line)}.chat-input textarea{flex:1;resize:none;min-height:44px;max-height:120px;padding:10px 12px;border:1px solid #d3d6dd;border-radius:8px;font-size:14px}.receipt{background:#e5f3ec;color:#1f5c3d;border-radius:10px;padding:14px;font-size:14px;align-self:stretch;display:flex;flex-direction:column;gap:4px}.landing{min-height:100vh;display:grid;place-items:center;padding:24px}.landing-box{width:min(880px,100%);display:grid;grid-template-columns:1.1fr 1fr;background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden}.landing-left{padding:40px;display:flex;flex-direction:column;gap:18px}.landing-right{padding:40px;background:#f7f8fa;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:14px;justify-content:center}.landing h1{font-size:28px;line-height:1.3}@media (max-width: 760px){.landing-box{grid-template-columns:1fr}.landing-right{border-left:0;border-top:1px solid var(--line)}}.pipeline{display:flex;gap:6px;flex-wrap:wrap}.pipeline span{font-size:12px;padding:4px 10px;border-radius:999px;background:#edeef2;color:var(--muted)}.pipeline span.done{background:var(--accent-soft);color:var(--accent-ink)}.pipeline span.now{background:var(--accent);color:#fff;font-weight:600}.cand{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--line-soft)}.chain-input{display:grid;grid-template-columns:4px 1fr;gap:12px}.chain-input i{border-radius:2px}.k-auto{background:var(--accent)}.k-manual{background:var(--warn)}.k-fixed{background:#8a8f9c}.next-group>span:first-child{color:#8a8f9c}.nav-next{padding:8px 12px;font-size:13px;color:#8a8f9c}.next-group{border-top:1px solid var(--line);padding-top:14px}.two-col{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}.col-main{flex:2 1 560px;min-width:0;display:flex;flex-direction:column;gap:12px}.col-side{flex:1 1 280px;min-width:0;position:sticky;top:16px}.task-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;gap:12px}.task-card.on{border:1.5px solid var(--accent)}.task-card.unplanned{border:1.5px solid #d49a2a}.task-title{font-size:16px;font-weight:700}.task-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding-top:10px;border-top:1px solid var(--line-soft)}.hour-chip{min-width:56px;min-height:44px;padding:0 14px;border-radius:8px;border:1px solid #d3d6dd;background:var(--surface);font-size:15px;font-weight:700}.hour-chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.add-unplanned{min-height:52px;border:1.5px dashed #b9c0cc;background:transparent;border-radius:12px;font-size:15px;font-weight:600;color:var(--ink-2)}.add-unplanned:hover{background:#fff}.inline-form{background:#fafafb;border-radius:8px;padding:12px;align-items:flex-end}.drop{border:2px dashed #b9c0cc;border-radius:12px;background:var(--surface);padding:24px 28px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}.drop.over{border-color:var(--accent);background:var(--accent-soft)}.req{border:1px solid #f2d3bc;background:#fff8f3;border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.req.done{border-color:#c9d6f7;background:#f7f9ff}.landing-box.single{grid-template-columns:1fr;width:min(380px,100%);padding:36px 32px;gap:16px;display:flex;flex-direction:column}.login-head{text-align:center;display:flex;flex-direction:column;gap:8px;margin-bottom:6px}.login-head p{font-size:14px}.input:disabled{background:#f7f8fa;color:var(--muted)}.day-btn:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 860px){.next-group,.col-side{position:static}.next-group{display:none}}.kpi-tbl th[scope=row]{font-weight:500;white-space:nowrap}.kpi-tbl td,.kpi-tbl th{padding:10px 12px}.kpi-tbl .future{color:#9aa0ad}.kpi-tbl .total-col{background:#f7f8fa;font-weight:600;border-left:1px solid var(--line)}.kpi-tbl thead .total-col{background:#f1f3f6}.kpi-tbl tr.sec-row th{background:#fff;color:var(--ink-2);font-size:13px;font-weight:700;padding-top:16px;border-bottom:1px solid var(--line)}.kpi-tbl tr.strong th,.kpi-tbl tr.strong td{font-weight:700}.kpi-tbl tr.r-kpi th[scope=row]{color:var(--accent-ink)}.kpi-tbl tr.r-target td,.kpi-tbl tr.r-target th{color:var(--muted)}.kpi-tbl tr.r-rate td{color:var(--accent-ink)}.kpi-tbl tr.selected th,.kpi-tbl tr.selected td{background:var(--accent-soft)!important}.kpi-tbl tr.selected th[scope=row]{box-shadow:inset 3px 0 0 var(--accent)}.recalc{margin-left:8px;font-size:11px;font-weight:600;padding:1px 6px;border-radius:999px;background:var(--busy-soft);color:var(--busy-ink);vertical-align:1px}.sec-toggle{border:0;background:none;padding:0;font-weight:700;color:var(--ink-2);text-align:left}.baseline{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.mini{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}.mini span{font-size:12px;color:var(--muted)}.mini strong{font-size:16px}.mini.accent{background:#f7f9ff;border-color:#c9d6f7}.kpi-chart{display:flex;flex-direction:column;gap:14px}.note-card{background:#fffdf7;border-color:#f0e2bf}.note-card ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--ink-2);line-height:1.55}.tbl th.num{text-align:right}.kpi-tbl .item-col{min-width:230px}.kpi-tbl th.num,.kpi-tbl td.num{min-width:96px}.kpi-tbl .base{color:#9aa0ad;background:#fafafb}.kpi-tbl thead th.base{background:#f1f3f6}.base-tag{margin-left:4px;font-size:10px;font-weight:600;padding:1px 5px;border-radius:999px;background:#e4e6eb;color:#5b6170;vertical-align:1px}.assumed{margin-right:6px;font-size:10px;font-weight:600;padding:1px 5px;border-radius:999px;background:var(--busy-soft);color:var(--busy-ink)}.task-card.new{border:1.5px solid var(--accent)}.task-card.done{opacity:.7}.task-card.done .task-title{text-decoration:line-through;text-decoration-color:#9aa0ad}.small-seg button{min-height:32px;padding:0 12px;font-size:13px}.chip.on-amber{border-color:#d49a2a;background:var(--busy-soft);color:var(--busy-ink);font-weight:600}.link-btn{border:0;background:none;color:var(--accent);font-size:13px;padding:4px}.recs{display:flex;flex-direction:column;gap:8px;background:#f7f9ff;border:1px solid #c9d6f7;border-radius:10px;padding:12px}.rec{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:2px 12px;text-align:left;border:1px solid #d3d6dd;background:#fff;border-radius:8px;padding:10px 12px}.rec:hover{border-color:var(--accent)}.rec .rec-main{font-size:14px}.rec .rec-sub{grid-column:1;font-size:12px;color:var(--muted)}.rec .pill{grid-row:1 / span 2;grid-column:2;align-self:center}.rec.unsorted{grid-template-columns:1fr;background:#fffdf7;border-style:dashed}.todo{border-top:1px solid var(--line-soft);padding-top:10px;display:flex;flex-direction:column;gap:8px}.empty{align-items:flex-start;gap:6px;border-style:dashed}.rgrid{display:grid;grid-template-columns:minmax(170px,1.1fr) minmax(200px,1.5fr) minmax(160px,1.1fr) 92px;gap:16px;align-items:center;padding:12px 20px}.rhead{font-size:12px;font-weight:600;color:var(--muted);background:#fafafb;border-bottom:1px solid var(--line)}.rteam{padding:10px 20px 4px;font-size:13px;font-weight:700;color:var(--ink-2);border-top:1px solid var(--line)}.rrow{width:100%;border:0;border-top:1px solid var(--line-soft);background:none;text-align:left}.rrow:hover{background:#f7f9fe}.rrow.on{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.rjob{display:flex;flex-direction:column;gap:2px;min-width:0}.rjob b{font-size:14px}.rjob small{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rcell{display:flex;flex-direction:column;gap:4px}.rcell small{font-size:12px;color:var(--ink-2)}.rcell em{font-style:normal;color:#8a3d07}.rcell .over{color:var(--warn)}.rbar{display:flex;height:10px;background:#f0f1f4;border-radius:3px;overflow:hidden}.rbar span{height:100%;display:block}.seg-main.plan{background:#c9cdd5}.seg-scm.plan{background:#e4c3a8}.seg-main.actual{background:var(--bar)}.seg-scm.actual{background:var(--warn)}.seg-main.next{background:#9db6ee}.seg-scm.next{background:#efb892}.rout{display:grid;grid-template-columns:auto auto;gap:0 6px;justify-content:end;align-items:baseline}.rout b{font-size:15px;text-align:right}.rout small{font-size:11px;color:var(--muted);text-align:left}.lg{display:inline-block;width:14px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}.lg.plan{background:#c9cdd5}.lg.actual{background:var(--bar)}.lg.next{background:#9db6ee}.lg.scm{background:var(--warn)}.report-text{margin:0;white-space:pre-wrap;font-family:inherit;font-size:13px;line-height:1.65;background:#fafafb;border:1px solid var(--line);border-radius:8px;padding:14px;max-height:70vh;overflow:auto}@media (max-width: 900px){.rgrid{grid-template-columns:1fr 1fr}.rhead{display:none}}.task-card.plan{border:1.5px solid #9db6ee;background:#fbfcff}.plan-row{display:grid;grid-template-columns:minmax(0,1.3fr) auto minmax(160px,1fr);gap:10px;align-items:center;border-top:1px solid var(--line-soft);padding-top:10px}.hour-chip.sm{min-width:44px;min-height:36px;padding:0 8px;font-size:13px}.chip.on-scm{border-color:var(--warn);background:var(--warn-soft);color:#8a2e07;font-weight:600}.out-row{gap:6px}.input.sm{width:160px;min-height:32px;font-size:13px}.pill.as-btn{border:1px dashed #b9c0cc;cursor:pointer}@media (max-width: 1100px){.plan-row{grid-template-columns:1fr}}.rdetail{padding:16px 20px 20px;background:#fbfcff;border-top:1px solid #dbe4fa;display:flex;flex-direction:column;gap:14px}.dpart{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 16px}.dpart.scm{border-color:#f2d3bc;background:#fffaf6}.dpart-title{font-size:13px;font-weight:700;color:#8a2e07;margin-bottom:10px}.dcols{display:grid;grid-template-columns:1fr 1fr;gap:24px}.dcol{display:flex;flex-direction:column;gap:10px;min-width:0}.dhead{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;font-weight:700;color:var(--ink-2);border-bottom:1px solid var(--line-soft);padding-bottom:6px}.dnums{font-weight:500;color:var(--muted)}.dnums b{color:var(--ink)}.dnums b.over{color:var(--warn)}.ditems{display:flex;flex-direction:column;gap:8px}.ditem{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(60px,1fr) 40px;gap:10px;align-items:center;font-size:13px}.dtitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dtitle small{color:var(--muted)}.dbar{height:8px;background:#f0f1f4;border-radius:3px;overflow:hidden}.dbar span{display:block;height:100%;border-radius:3px}.b-actual{background:var(--bar)}.b-next{background:#9db6ee}.b-scm{background:var(--warn)}.b-scm-next{background:#efb892}.dh{text-align:right;font-weight:600}.douts{display:flex;flex-direction:column;gap:6px;padding-top:4px}.pill.dashed{background:#fff;border:1px dashed #b9c0cc}@media (max-width: 900px){.dcols{grid-template-columns:1fr}}.nc-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}.nc-form .wide{grid-column:1 / -1}.nc-foot{justify-content:space-between;border-top:1px solid var(--line);padding-top:14px}@media (max-width: 760px){.nc-form{grid-template-columns:1fr}}.board{background:#0b1a33;color:#e6edf7;border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:14px;font-variant-numeric:tabular-nums}.board:fullscreen{border-radius:0;padding:28px;overflow:auto}.b-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}.b-title{font-size:20px;font-weight:700;display:flex;gap:10px;align-items:center}.b-title b{letter-spacing:.04em}.b-title span{color:#4a6086}.b-clock{font-size:14px;color:#b9c7de}.b-btn{border:1px solid #3a5480;background:#13284a;color:#e6edf7;border-radius:6px;min-height:34px;padding:0 12px;font-size:13px}.b-date{display:flex;align-items:center;gap:6px;font-size:13px;color:#b9c7de}.b-date input{background:#13284a;color:#e6edf7;border:1px solid #3a5480;border-radius:6px;min-height:34px;padding:0 8px;color-scheme:dark}.b-panel{background:#102446;border:1px solid #23406e;border-radius:10px;padding:14px 16px}.b-ptitle{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;font-size:15px;font-weight:700;margin-bottom:12px;color:#dbe6f7}.b-ptitle small{font-weight:400;color:#8fa3c4}.b-legend{display:flex;gap:10px;align-items:center;font-size:12px;font-weight:500;color:#b9c7de}.b-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-left:6px}.b-legend i.good{background:#2fbf71}.b-legend i.warn{background:#f29b38}.b-legend i.bad{background:#e5484d}.b-legend i.tot{background:#4c8dff}.b-legend i.won{background:#2fd0e0}.b-legend i.jak{background:#f29b38}.b-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.b-tile{background:#0d1f3d;border:1px solid #23406e;border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:6px;align-items:center}.b-tile span{font-size:13px;color:#9fb2d2}.b-tile b{font-size:30px;font-weight:800}.b-tile b small{font-size:14px;font-weight:500;color:#9fb2d2}.b-tile.rate.good{background:#13492f;border-color:#2fbf71}.b-tile.rate.warn{background:#f29b38;border-color:#f29b38}.b-tile.rate.warn span,.b-tile.rate.warn small{color:#3d2200}.b-tile.rate.warn b{color:#1f1300}.b-tile.rate.bad{background:#5a1a1f;border-color:#e5484d}.b-table{width:100%;border-collapse:collapse;font-size:14px}.b-table th{background:#1b3765;color:#cfdcf2;font-weight:600;padding:9px 10px;text-align:center}.b-table td{padding:9px 10px;border-bottom:1px solid #1d355e;text-align:center}.b-table td.num,.b-table th.num{text-align:right}.b-table tr.empty td{color:transparent}.b-chart{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:10px;align-items:end}.b-week{display:flex;flex-direction:column;align-items:center;gap:4px}.b-bars{height:150px;width:100%;display:flex;justify-content:center;align-items:flex-end;gap:4px}.b-barwrap{height:100%;width:16px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;position:relative}.b-val{font-size:12px;font-weight:700;white-space:nowrap;margin-bottom:3px}.b-bar{width:100%;border-radius:3px 3px 0 0;min-height:2px}.b-bar.tot{background:#4c8dff}.b-bar.won{background:#2fd0e0}.b-bar.jak{background:#f29b38}.b-wl{font-size:12px;font-weight:600;text-align:center}.b-wl em{display:block;font-style:normal;font-size:10px;color:#2fd0e0}.b-ws{font-size:11px;color:#8fa3c4;text-align:center}.b-note{margin:0;font-size:11px;color:#7f93b5}@media (max-width: 760px){.b-tiles{grid-template-columns:repeat(2,1fr)}}.db-badge{font-size:12px;font-weight:600;margin:0}.db-badge.db{color:#1f7a4d}.db-badge.mock{color:var(--muted)}.db-badge.checking{color:var(--busy-ink)}code{font-family:ui-monospace,Menlo,monospace;font-size:12px;background:#f1f3f6;padding:1px 5px;border-radius:4px}.person{display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1px solid #d3d6dd;background:#fff;border-radius:10px;padding:8px 14px;cursor:grab;min-width:110px}.person b{font-size:14px}.person small{font-size:12px;color:var(--muted)}.person.on{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 2px #c9d6f7}.person.none{border-style:dashed;border-color:#e0a27a}.board-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}.team-col{gap:10px}.job-box{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;min-height:64px;background:#fafbfc;transition:background .12s,border-color .12s}.job-box.empty{border-style:dashed;border-color:#f0c3a4;background:#fffaf6}.job-box.over,.job-box.pickable:hover{border-color:var(--accent);background:var(--accent-soft)}.job-box.pickable{cursor:pointer}.holder{display:inline-flex;align-items:center;gap:4px;background:#fff;border:1px solid #d3d6dd;border-radius:999px;padding:3px 6px 3px 4px;font-size:13px;cursor:grab}.holder.primary{border-color:#9db6ee;background:#f3f6fe;font-weight:600}.holder .star,.holder .x{border:0;background:none;padding:0 2px;font-size:13px;color:var(--muted)}.holder .star{color:#d49a2a}.holder .x:hover{color:var(--warn)}@media (max-width: 1000px){.board-grid{grid-template-columns:1fr}}.plan-banner{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;background:#f3f6fe;border:1px solid #c9d6f7;border-radius:10px;padding:12px 16px}.plan-banner>div{display:flex;flex-direction:column;gap:2px}.db-badge.error{color:var(--warn)}.task-edit{display:flex;flex-wrap:wrap;gap:10px;background:#fafbfc;border:1px solid var(--line);border-radius:8px;padding:12px}.ai-block{display:flex;flex-direction:column;gap:8px;border:1px solid #d9ccf5;background:#faf7ff;border-radius:10px;padding:10px}.rec.ai{border-color:#d9ccf5}.rec.ai:hover{border-color:#6d3fd1}.nb{display:flex;flex-direction:column;gap:20px}.nb:fullscreen{background:var(--bg);padding:32px 40px;overflow:auto}.nb:fullscreen h1{font-size:34px}.nb:fullscreen .nb-tile b{font-size:52px}.nb:fullscreen .tbl{font-size:18px}.nb-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.nb-tile{gap:6px}.nb-tile>span{font-size:13px;color:var(--muted);font-weight:600}.nb-tile b{font-size:34px;font-weight:800;letter-spacing:-.02em}.nb-tile b small{font-size:15px;font-weight:500;color:var(--muted);margin-left:4px}.nb-tile.rate.good{background:#eaf6ef;border-color:#a9dcbd}.nb-tile.rate.good b{color:#1f7a4d}.nb-tile.rate.warn{background:#fdf4e3;border-color:#f0d199}.nb-tile.rate.warn b{color:#9a5b00}.nb-tile.rate.bad{background:#fdecec;border-color:#f2b8b8}.nb-tile.rate.bad b{color:#b42318}.nb-scale{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted)}.nb-scale i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-left:4px}.nb-scale i.good{background:#2fbf71}.nb-scale i.warn{background:#e8a33d}.nb-scale i.bad{background:#e5484d}.nb-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:16px;align-items:start}.nb-chart{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;align-items:end;height:220px;padding-top:8px}.nb-week{height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px}.nb-val{font-size:12px;font-weight:700}.nb-stack{width:60%;max-width:34px;min-height:2px;display:flex;flex-direction:column;border-radius:4px 4px 0 0;overflow:hidden}.nb-stack .won{background:var(--bar)}.nb-stack .jak{background:#e8a33d}.nb-wl{font-size:11px;color:var(--ink-2);text-align:center;white-space:nowrap}.nb-auto{font-size:10px;color:var(--accent)}@media (max-width: 1000px){.nb-tiles{grid-template-columns:repeat(2,1fr)}.nb-grid{grid-template-columns:1fr}}.wrap-cell{min-width:140px;max-width:220px;white-space:normal;word-break:keep-all}.plan-wrap{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.plan-panel{overflow:hidden}.pp-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;color:#fff;font-size:15px}.plan-panel.plan .pp-head{background:#2f5fd0}.plan-panel.actual .pp-head{background:#17867a}.pp-grid{display:grid;grid-template-columns:48px repeat(5,minmax(72px,1fr));overflow-x:auto;-webkit-user-select:none;user-select:none}.pp-times .pp-time{font-size:11px;color:var(--muted);text-align:right;padding-right:6px;transform:translateY(-6px)}.pp-dayhead{height:34px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;border:0;border-bottom:1px solid var(--line);background:#fafbfc;width:100%}.pp-day{border-left:1px solid var(--line-soft)}.pp-day.sel .pp-dayhead{background:var(--accent-soft);color:var(--accent-ink)}.pp-col{position:relative}.pp-slot{border-top:1px dashed #eef0f3;cursor:cell}.pp-slot.hour{border-top:1px solid #e3e5ea}.pp-slot.drag{background:#dbe6fb}.pp-slot.lunch{background:#f1f2f5;cursor:default;position:relative}.pp-lunch{position:absolute;left:0;right:0;top:14px;text-align:center;font-size:11px;color:var(--muted)}.pp-block{position:absolute;left:3px;right:3px;border-radius:6px;padding:3px 6px;text-align:left;display:flex;flex-direction:column;overflow:hidden;border:1px solid;font-size:11px;line-height:1.3;cursor:pointer}.pp-block .pb-job{font-weight:700;font-size:10px;opacity:.85}.pp-block .pb-title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pp-block .pb-time{font-size:10px;opacity:.75}.pp-block.dev{background:#e6eefc;border-color:#b4c8f3;color:#1d3f8f}.pp-block.mfg{background:#e5f5ef;border-color:#a8dcc7;color:#155c45}.pp-block.qa{background:#fdf0e1;border-color:#f0cd9f;color:#8a4b05}.pp-block.none{background:#f1f2f5;border-color:#d3d6dd;color:#3d4250}.pp-block.unplanned{border-style:dashed;border-width:1.5px}.pp-block.on{box-shadow:0 0 0 2px var(--accent)}.legend-chip{padding:3px 10px;border-radius:999px;font-weight:600;font-size:12px}.legend-chip.dev{background:#e6eefc;color:#1d3f8f}.legend-chip.mfg{background:#e5f5ef;color:#155c45}.legend-chip.qa{background:#fdf0e1;color:#8a4b05}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#14182159;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal{width:min(640px,100%);max-height:90vh;overflow:auto;gap:12px}@media (max-width: 1100px){.plan-wrap{grid-template-columns:1fr}}.pp-block.compact{justify-content:center;padding:0 6px}.pp-block .pb-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.pp-block .pb-line b{font-size:10px;margin-right:2px}.pp-block>span{display:block}.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}.perm{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13px;background:#fff}.perm.on{border-color:#b4c8f3;background:#f3f6fe}.perm.fixed{color:var(--ink-2)}.perm small{margin-left:auto;font-size:11px;color:var(--muted)}.pill.purple{background:#f1ebfd;color:#5b2fb8}.sync-box{display:flex;flex-direction:column;gap:2px;margin-top:4px}.sync{border:0;background:none;padding:0;text-align:left;font-size:12px;font-weight:600}.sync.ok{color:#1f7a4d}.sync.pending{color:var(--busy-ink)}.sync.failed,.sync.conflict{color:var(--warn);cursor:pointer;text-decoration:underline}.sync-refresh{border:0;background:none;padding:0;text-align:left;font-size:11px;color:var(--muted);cursor:pointer}.sync-refresh:hover{color:var(--accent)}.conflict-item{border:1px solid #f2d3bc;background:#fffaf6;border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px}.warn-box{display:flex;flex-direction:column;gap:4px;background:#fdecec;border:1px solid #f2b8b8;color:#8f1d1d;border-radius:8px;padding:10px 12px}.base-tag.closed{background:#e5f5ef;color:#155c45}.base-tag.stale{background:#fdecec;color:#b42318}.pp-block.hq{background:#efeafc;border-color:#cbbcf3;color:#4b2d9a}.pp-block.common{background:#f1f2f5;border-color:#cfd3da;color:#3d4250}.pp-block.overlap{border:2px solid #e5484d!important}.legend-chip.hq{background:#efeafc;color:#4b2d9a}.legend-chip.common{background:#eef0f3;color:#3d4250}.board-grid{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width: 1200px){.board-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 700px){.board-grid{grid-template-columns:1fr}}.vform{width:min(720px,100%)}.vgroup{border:1px solid var(--line);border-radius:10px;padding:12px 14px 14px;margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 14px;align-items:start}.vgroup legend{font-size:13px;font-weight:700;padding:0 6px;color:var(--ink-2)}.vgroup .wide{grid-column:1 / -1}.vgroup .field{min-width:0}.vgroup .num-in{text-align:right}.vgroup .vcheck{grid-column:1 / -1;gap:6px}.vsum{background:#f7f9fe;border-radius:8px;padding:8px 10px;margin:0}.field-err{font-size:11px;color:var(--warn)}@media (max-width: 700px){.vgroup{grid-template-columns:1fr}}.roster{display:flex;flex-wrap:wrap;gap:6px}.roster .holder{cursor:default;padding-left:10px}
