.kb-load-fail{margin:8px 20px 0}.board-wrap{display:flex;flex-direction:column;flex:1 1;min-height:0;min-width:0}.board-head{justify-content:space-between;flex-wrap:wrap}.board-head>span:first-child{display:inline-flex;align-items:center;gap:var(--space-2)}.board-head .pj-status{margin-left:2px}.board-readonly{font-size:var(--fs-xs);color:var(--muted);font-weight:500}.rfp-modes{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-3)}.rfp-mode{flex:1 1 150px;min-width:0;text-align:left;display:flex;flex-direction:column;gap:2px;color:var(--text);background:var(--well);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.rfp-mode.on{border-color:var(--brand);background:var(--brand-soft)}.rfp-mode small{color:var(--muted);font-size:var(--fs-xs)}.pj-kinds{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:var(--space-2);gap:var(--space-2)}.pj-kind{text-align:left;display:flex;flex-direction:column;gap:5px;min-width:0;color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px}.pj-kind.on,.pj-kind:hover{border-color:var(--brand)}.pj-kind.on{background:var(--brand-soft)}.pj-kind-name{font-size:var(--fs-md)}.pj-kind-tags{display:flex;gap:4px;flex-wrap:wrap}.pj-kind-ex,.pj-kind-sum{color:var(--muted);line-height:1.5}.pj-kind-ex{font-size:var(--fs-xs)}.pj-kind-ex b{color:var(--text);margin-right:4px}.pj-kind-stages{margin:var(--space-2) 0 0;padding:10px 12px;border-radius:10px;background:var(--well);color:var(--muted);font-size:var(--fs-sm);line-height:1.6}.pj-kind-stages b{color:var(--text)}.wbs-start{display:grid;grid-gap:var(--space-3);gap:var(--space-3)}.req{color:var(--danger);font-size:var(--fs-xs)}.guide-roles{color:var(--muted);font-size:var(--fs-sm);margin:0 0 var(--space-3)}.guide-roles b{color:var(--text)}.guide-groups{display:grid;grid-gap:var(--space-3);gap:var(--space-3)}.guide-group-head{font-size:var(--fs-sm);color:var(--muted)}.guide-ability,.guide-faq{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-gap:8px;gap:8px}.guide-ability li,.guide-faq li{display:flex;flex-direction:column;gap:2px;background:var(--well);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.guide-ability small,.guide-faq small{color:var(--muted);font-size:var(--fs-sm);line-height:1.55}.fr-step h4{font-size:var(--fs-lg)}.fr-step h4,.fr-step p{margin:0 0 var(--space-2)}.fr-step p{line-height:1.65}.fr-note{background:var(--well);border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:var(--muted);font-size:var(--fs-sm)}.fr-note b{color:var(--text)}.fr-list{margin:0;padding-left:18px;line-height:1.8}.fr-dots{display:flex;gap:6px;justify-content:center;margin-top:var(--space-3)}.fr-dots span{width:7px;height:7px;border-radius:50%;background:var(--line)}.fr-dots span.on{background:var(--brand)}.bonus-total{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);border-radius:12px;background:var(--well);border:1px solid var(--line);margin-bottom:var(--space-3)}.bonus-total-num{font-size:var(--fs-xl);font-weight:800;display:flex;align-items:center;gap:8px}.bonus-total small{color:var(--muted);font-size:var(--fs-xs)}.bonus-rows{display:grid;grid-gap:6px;gap:6px}.bonus-row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.bonus-name{min-width:90px}.bonus-amt{width:140px;text-align:right}.bonus-note{flex:1 1;min-width:180px}.bonus-sum{margin-top:var(--space-3);font-size:var(--fs-sm)}.bonus-sum.over{color:var(--danger);font-weight:700}.bonus-warn{font-weight:700}.scope-pick{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:var(--fs-xs);color:var(--muted);font-weight:600}.scope-pick select{font-size:var(--fs-xs);padding:3px 6px;max-width:180px}.scope-pick small{color:var(--muted);font-weight:500}.pj-pm{display:inline-flex;align-items:center;gap:6px;margin-right:auto;padding-left:var(--space-3);font-size:var(--fs-xs);color:var(--muted);font-weight:600}.pj-pm b{color:var(--text);font-weight:700}.pj-pm select{font-size:var(--fs-xs);padding:3px 6px;max-width:170px}.kanban{flex:1 1;display:grid;grid-template-columns:repeat(4,minmax(230px,1fr));grid-gap:14px;gap:14px;padding:18px 20px 24px;overflow:auto;align-items:start}.kb-col{background:var(--well);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:var(--space-2);min-height:120px;border:1px solid var(--line)}.kb-col.drag-over{outline:2px dashed var(--brand);outline-offset:-2px}.kb-col h4{font-size:var(--fs-sm);letter-spacing:.03em;color:var(--text);display:flex;gap:7px;align-items:center;padding:2px 4px 4px}.kb-col h4:before{content:"";width:8px;height:8px;border-radius:50%;flex:none;background:var(--line)}.kb-col[data-col="할일"] h4:before{background:#94a3b8}.kb-col[data-col="진행중"] h4:before{background:var(--warn)}.kb-col[data-col="검토"] h4:before{background:var(--info)}.kb-col[data-col="완료"] h4:before{background:#22c55e}.kb-count{font-size:var(--fs-xs);color:var(--muted);font-weight:700;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:0 7px;line-height:1.6;margin-left:auto;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kb-card{background:var(--raised);border-left:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--elev-1);border:1px solid var(--line);border-left-width:3px;transition:transform var(--t-fast),box-shadow var(--t-fast),border-color var(--t-fast)}.kb-card:hover{border-color:var(--brand);box-shadow:var(--shadow)}.kb-card:has(.kb-title:focus-visible){border-color:var(--brand)}.kb-col[data-col="할일"] .kb-card{border-left-color:#94a3b8}.kb-col[data-col="진행중"] .kb-card{border-left-color:var(--warn)}.kb-col[data-col="검토"] .kb-card{border-left-color:var(--info)}.kb-col[data-col="완료"] .kb-card{border-left-color:#22c55e}.kb-card:hover{box-shadow:var(--elev-2);transform:translateY(-1px)}.kb-card[draggable=true]{cursor:-webkit-grab;cursor:grab}.kb-card[draggable=true]:active{cursor:-webkit-grabbing;cursor:grabbing}.kb-title-row{display:flex;justify-content:space-between;gap:6px;align-items:flex-start}.kb-title{font-size:var(--fs-md);font-weight:600;overflow-wrap:anywhere;background:none;border:none;padding:0;color:inherit;cursor:pointer;text-align:left;font-family:inherit;flex:1 1;min-width:0}.kb-title:focus-visible,.kb-title:hover{color:var(--brand);background:none;text-decoration:underline}.kb-open,input[type=date],input[type=month]{text-align:left}.kb-open{background:none;border:none;padding:2px 0;margin:0;font-size:var(--fs-xs);font-family:inherit;color:var(--brand);cursor:pointer;align-self:flex-start}.kb-open:focus-visible,.kb-open:hover{text-decoration:underline;background:none}.kb-del{background:none;border:none;color:var(--muted);cursor:pointer;font-size:var(--fs-md);padding:0 2px;line-height:1}.kb-del:hover{color:var(--danger);background:none}.kb-meta{display:flex;gap:6px;flex-wrap:wrap}.kb-meta input[type=date],.kb-meta select{font-size:var(--fs-xs);padding:3px 6px;border-radius:6px;width:auto;flex:1 1;min-width:0}.kb-chip{font-size:var(--fs-xs);background:var(--brand-soft);color:var(--brand);border-radius:999px;padding:1px 8px;font-weight:600}.kb-add input{font-size:var(--fs-sm);padding:6px 8px;background:transparent;border:1px dashed var(--line)}.kb-add input:focus{background:var(--card)}.board-head-actions{display:flex;align-items:center;gap:var(--space-2)}.info-msg{color:var(--ok);font-size:var(--fs-sm)}.modal-backdrop{position:fixed;inset:0;background:rgba(15,20,40,.45);align-items:center;justify-content:center;z-index:40}.modal,.modal-backdrop{display:flex;padding:20px}.modal{background:var(--card);border-radius:var(--radius);width:100%;max-width:480px;max-height:85vh;overflow-y:auto;flex-direction:column;gap:var(--space-3);border:1px solid var(--line);box-shadow:var(--shadow);animation:toast-in .15s ease}@media (max-width:720px){.modal-backdrop{align-items:flex-end;padding:0}.modal{max-width:none;max-height:88vh;border-radius:var(--radius) var(--radius) 0 0;border-bottom:none;animation:sheet-up .18s ease;padding-bottom:calc(20px + env(safe-area-inset-bottom, 0px))}.modal:before{content:"";align-self:center;flex:none;width:36px;height:4px;border-radius:999px;background:var(--line);margin-bottom:4px}}@keyframes sheet-up{0%{transform:translateY(12px);opacity:.6}to{transform:translateY(0);opacity:1}}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal>h3{font-size:var(--fs-lg);letter-spacing:-.01em;display:flex;align-items:baseline;gap:var(--space-2);flex-wrap:wrap;padding-bottom:10px;border-bottom:1px solid var(--line)}.git-block{border-top:1px solid var(--line);padding-top:10px}.git-toggle{background:none;border:none;padding:0;font-family:inherit;font-size:var(--fs-sm);color:var(--muted);cursor:pointer;display:flex;align-items:center;gap:6px;width:100%}.git-toggle:hover{background:none;color:var(--text)}.git-branch{font-family:var(--font-mono);font-size:var(--fs-xs);background:var(--brand-soft);color:var(--brand);border-radius:4px;padding:1px 6px}.git-body{gap:10px;margin-top:10px}.git-body,.git-guide{display:flex;flex-direction:column}.git-guide{list-style:none;gap:2px;margin:0;padding:0}.git-step{display:flex;gap:var(--space-2);align-items:flex-start;font-size:var(--fs-sm);padding:6px 8px;border-radius:6px}.git-step-mark{width:14px;flex:none;text-align:center;font-weight:700}.git-step-detail{display:block;font-size:var(--fs-xs);color:var(--muted);margin-top:1px}.git-step.done{color:var(--ok)}.git-step.done .git-step-detail{color:var(--muted)}.git-step.current{background:var(--brand-soft);color:var(--brand)}.git-step.todo{color:var(--muted)}.git-settings{display:flex;gap:var(--space-2);align-items:flex-end;flex-wrap:wrap}.git-settings label{display:flex;flex-direction:column;gap:3px;flex:1 1 220px}.git-settings label>span{font-size:var(--fs-xs);color:var(--muted)}.git-settings .git-base{flex:0 1 120px}.git-note{font-size:var(--fs-xs);color:var(--muted);line-height:1.5}.git-note code{background:var(--code-bg);border-radius:3px;padding:0 4px}.git-meta{font-size:var(--fs-xs);color:var(--muted);font-family:var(--font-mono)}.git-actions{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.git-pr{font-size:var(--fs-sm);color:var(--brand);text-decoration:none;font-weight:600}.git-pr:hover{text-decoration:underline}.bh-menu-wrap{position:relative}.bh-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:40;min-width:230px;padding:6px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);gap:2px}.bh-menu,.bh-menu button{display:flex;flex-direction:column}.bh-menu button{align-items:flex-start;gap:1px;background:none;color:var(--text);text-align:left;padding:8px 10px;border-radius:8px;font-size:var(--fs-md);font-weight:600}.bh-menu button:hover{background:var(--surface);filter:none}.bh-menu button small{font-size:var(--fs-xs);color:var(--muted);font-weight:400}.kb-links{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.kb-artifact{color:var(--muted)}.kb-artifact:hover{color:var(--brand)}.af-phase{flex-direction:column}.af-phase,.af-phase>h4{display:flex;gap:var(--space-2)}.af-phase>h4{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:4px;align-items:baseline}.af-entry{background:var(--surface);border-radius:var(--radius);padding:10px 12px;display:flex;flex-direction:column;gap:6px}.af-entry-head{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-md)}.af-entry-head .linklike{margin-left:auto}.af-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.af-project{width:auto;max-width:220px}.af-project,.af-search{flex:none;font-size:var(--fs-sm);padding:6px 10px}.af-search{width:170px;margin-left:auto}.af-phase-head{display:flex;align-items:center;gap:var(--space-2);width:100%;background:var(--surface);color:var(--text);text-align:left;border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:var(--fs-md)}.af-phase-head:hover{border-color:var(--brand);filter:none}.af-caret{color:var(--muted);font-size:var(--fs-xs);flex:none}.ref-box{background:var(--surface);border:1px dashed var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.ref-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);font-size:var(--fs-sm)}.ref-hint{font-size:var(--fs-xs);color:var(--muted);line-height:1.5}.ref-list{list-style:none;display:flex;flex-direction:column;gap:3px}.ref-list li{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-sm)}.ref-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-actions{gap:6px;white-space:nowrap}.admin-actions,.pa-sec-head{display:flex;align-items:center}.pa-sec-head{justify-content:space-between;gap:var(--space-2)}.ex-presets{display:inline-flex;gap:var(--space-1);margin-right:var(--space-2)}.pa-sec-head .pa-search{width:200px;font-size:var(--fs-sm);padding:5px 8px}.pa-toggle{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);cursor:pointer;white-space:nowrap}.pa-toggle input{width:auto;accent-color:var(--accent)}.inv-body{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.inv-code{flex:1 1;text-align:center;font-size:var(--fs-lg);letter-spacing:.12em}.inv-until{width:100%;margin:0}.hw-leave{display:flex;flex-direction:column;gap:4px}.hw-leave-num{font-size:var(--fs-xl);font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hw-leave-num em{font-style:normal;font-size:var(--fs-sm);font-weight:600;color:var(--muted);margin-left:6px}.hw-leave-sub,.hw-leave-why{color:var(--muted);font-size:var(--fs-xs)}.figma-row{display:flex;align-items:center;gap:var(--space-2);margin-top:4px}.figma-label{font-size:var(--fs-xs);color:var(--muted);flex:none}.figma-row input{font-size:var(--fs-sm);padding:5px 8px}.rfp-dates{display:flex;align-items:center;gap:var(--space-2)}.rfp-dates input{flex:1 1}.rfp-dates-sep{color:var(--muted);flex:none}.af-files{list-style:none;display:flex;flex-direction:column;gap:var(--space-1)}.af-file{width:100%;display:flex;align-items:baseline;gap:10px;background:var(--card);color:var(--text);text-align:left;border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:var(--fs-sm);font-weight:500}.af-file:hover{border-color:var(--brand);filter:none}.af-file-name{display:block;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.af-file-open{display:flex;min-width:0}.af-file-size{color:var(--muted)}.af-file-dl,.af-file-size{font-size:var(--fs-xs);flex:none}.af-file-dl{background:none;color:var(--brand);padding:2px var(--space-1);font-weight:700;border-radius:var(--radius-sm)}.af-file-dl:hover{background:var(--brand-soft);filter:none}.ui-backdrop{position:fixed;inset:0;z-index:var(--z-backdrop);background:rgba(15,20,40,.5);display:flex;align-items:center;justify-content:center;padding:3vh 16px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.ui-modal{width:100%;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--elev-3);display:flex;flex-direction:column;max-height:94vh;overflow:hidden;animation:toast-in .15s ease}.ui-sm{max-width:480px}.ui-md{max-width:640px}.ui-lg{max-width:860px}.ui-xl{max-width:1200px}.ui-full{max-width:96vw}.af-modal{height:min(88vh,1040px)}.ui-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:16px 20px;border-bottom:1px solid var(--line);background:var(--surface);flex:none}.ui-modal-title{display:flex;flex-direction:column;gap:2px;min-width:0}.ui-modal-title h3{font-size:var(--fs-lg);letter-spacing:-.01em}.ui-modal-sub{font-size:var(--fs-sm);color:var(--muted);font-weight:500;line-height:1.5}.console-head .kb-del,.main-view-head .kb-del,.run-head .kb-del,.ui-modal-head .kb-del,.ui-x{background:none;color:var(--muted);font-size:var(--fs-xl);line-height:1;padding:0 4px;border-radius:6px;flex:none}.main-view-head .kb-del:hover,.run-head .kb-del:hover,.ui-modal-head .kb-del:hover,.ui-x:hover{background:var(--card);color:var(--text);filter:none}.ui-modal-body{flex:1 1;overflow-y:auto;padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-4);font-size:var(--fs-md);line-height:1.55;overflow-x:hidden;min-width:0}.ui-modal-body>*{min-width:0;max-width:100%}.ui-modal-foot{display:flex;justify-content:flex-end;gap:var(--space-2);padding:12px 18px;border-top:1px solid var(--line);align-items:center}.af-split-body,.af-split-list,.console-body,.cp-list,.fv-md,.g2-scroll,.modal,.noti-body,.rd-body,.run-body,.side-panel-body,.ui-dialog,.ui-modal-body{overscroll-behavior:contain}.fv-layer .ui-backdrop{z-index:72}.ui-dialog-back{z-index:var(--z-dialog)}.ui-dialog{width:100%;max-width:420px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;display:flex;flex-direction:column;gap:var(--space-3);animation:toast-in .14s ease}.ui-dialog h3{font-size:var(--fs-lg)}.ui-dialog-msg{font-size:var(--fs-md);color:var(--muted);line-height:1.55;white-space:pre-wrap}.ui-dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:4px;align-items:center}.ui-danger,button.danger{background:var(--danger);color:var(--on-solid)}.ui-danger:hover,button.danger:hover{background:var(--tone-err-fg);filter:none}button.ghost.danger{background:none;color:var(--danger);border-color:var(--danger)}button.ghost.danger:hover{background:var(--tone-err-bg);color:var(--tone-err-fg)}.wbs-status{max-width:860px}.wbs-wide{max-width:1100px}.wbs-tabs{margin-bottom:4px}.wbs-toolbar{display:flex;align-items:center;gap:10px}.wbs-cell-bar{position:relative;height:16px;min-width:90px;background:var(--line);border-radius:999px;overflow:hidden}.wbs-cell-bar span{display:block;height:100%;background:var(--grad)}.wbs-cell-bar em{position:absolute;inset:0;display:grid;place-items:center;font-style:normal;font-size:var(--fs-xs);font-weight:700;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.wbs-edit{font-size:var(--fs-xs);padding:3px 6px;width:auto;min-width:90px}.gantt-wrap{overflow-x:auto}:root{--g2-left:280px}.g2-scroll{overflow:auto;max-height:min(62vh,calc(92vh - 360px));min-height:240px;border:1px solid var(--line);border-radius:var(--radius)}.g2-scroll::-webkit-scrollbar{height:12px;width:10px}.g2-scroll::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 45%,transparent);border-radius:8px;border:2px solid var(--card)}.g2-scroll::-webkit-scrollbar-thumb:hover{background:var(--muted)}.g2-canvas{position:relative;min-width:100%}.g2-overlay{left:var(--g2-left);pointer-events:none;z-index:0}.g2-overlay,.g2-weekend{position:absolute;top:0;bottom:0}.g2-weekend{background:var(--surface)}.g2-today{position:absolute;top:0;bottom:0;width:2px;background:var(--danger);opacity:.7;z-index:2}.g2-row{display:flex;position:relative;z-index:1;min-height:30px}.g2-left{width:var(--g2-left);padding:4px 10px;position:-webkit-sticky;position:sticky;left:0;z-index:3;background:var(--card);border-right:1px solid var(--line);align-items:center;gap:6px;font-size:var(--fs-sm)}.g2-left,.g2-time{flex:none;border-bottom:1px solid var(--line);display:flex}.g2-time{position:relative;z-index:0}.g2-days,.g2-months{position:-webkit-sticky;position:sticky;z-index:4;background:var(--card)}.g2-months{top:0}.g2-days{top:26px}.g2-days .g2-left,.g2-months .g2-left{border-bottom:1px solid var(--line);font-weight:700}.g2-corner{font-size:var(--fs-xs);color:var(--muted)}.g2-month{font-weight:700;color:var(--text);border-left:1px solid var(--line);padding:4px 6px;overflow:hidden;white-space:nowrap}.g2-day,.g2-month{flex:none;font-size:var(--fs-xs);background:var(--card)}.g2-day{text-align:center;color:var(--muted);border-left:1px solid color-mix(in srgb,var(--line) 55%,transparent);padding:3px 0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.g2-day.sat{color:var(--info)}.g2-day.sun{color:var(--tone-err-fg)}.g2-stage .g2-left{background:var(--brand-soft);color:var(--brand)}.g2-stage .g2-left small{color:var(--muted);font-weight:400}.g2-stage-bar{position:absolute;top:50%;transform:translateY(-50%);height:6px;border-radius:999px;background:var(--brand);opacity:.45}.g2-task:hover .g2-left{background:var(--surface)}.g2-name{background:none;color:var(--text);padding:0;text-align:left;font-size:var(--fs-xs);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.g2-name:hover:not(:disabled){color:var(--brand);filter:none}.g2-name:disabled{color:var(--muted);opacity:.6}.g2-id{color:var(--muted);font-size:var(--fs-xs);font-family:var(--font-mono)}.g2-bar{position:absolute;top:50%;transform:translateY(-50%);height:16px;border-radius:4px;overflow:hidden;cursor:pointer;border:1px solid transparent;display:flex;align-items:center}.g2-bar:hover{filter:brightness(1.06);box-shadow:var(--shadow)}.g2-fill{position:absolute;left:0;top:0;bottom:0;opacity:.55}.g2-b-wait{background:var(--line)}.g2-b-wait .g2-fill{background:#94a3b8}.g2-b-run{background:var(--tone-warn-bg);border-color:var(--tone-warn-fg)}.g2-b-run .g2-fill{background:var(--tone-warn-fg)}.g2-b-review{background:var(--tone-info-bg);border-color:var(--tone-info-fg)}.g2-b-review .g2-fill{background:var(--tone-info-fg)}.g2-b-ok{background:var(--tone-ok-bg);border-color:var(--tone-ok-fg)}.g2-b-ok .g2-fill{background:var(--tone-ok-fg)}.g2-who{position:relative;z-index:1;font-style:normal;font-weight:700;padding-left:6px;color:var(--text);white-space:nowrap}.g2-nodate,.g2-who{font-size:var(--fs-xs)}.g2-nodate{color:var(--muted);align-self:center;padding-left:8px}.g2-wrap{display:flex;flex-direction:column;gap:var(--space-2)}.g2-tools{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.g2-nav-btns{display:flex;gap:var(--space-2);flex:none;margin-left:auto}.g2-hint{font-size:var(--fs-xs);color:var(--muted)}.g2-zoom{display:flex;gap:2px;background:var(--surface);border-radius:8px;padding:3px;flex:none;align-items:center}.g2-zoom button{background:none;color:var(--muted);font-size:var(--fs-xs);font-weight:700;padding:4px 12px;border-radius:6px}.g2-zoom button:hover{color:var(--text);filter:none}.g2-zoom button.on{background:var(--card);color:var(--brand);box-shadow:0 1px 3px rgba(16,24,40,.12)}.g2-week{flex:none;text-align:left;font-size:var(--fs-xs);color:var(--muted);border-left:1px solid color-mix(in srgb,var(--line) 70%,transparent);padding:3px 0 3px 3px;background:var(--card);overflow:hidden;white-space:nowrap}.g2-editable{cursor:-webkit-grab;cursor:grab}.g2-dragging,.g2-editable:active{cursor:-webkit-grabbing;cursor:grabbing}.g2-dragging{opacity:.85;box-shadow:var(--shadow);z-index:2}.g2-drop{outline:2px solid var(--brand);outline-offset:1px}.g2-resize{position:absolute;right:0;top:0;bottom:0;width:7px;cursor:ew-resize;z-index:2}.g2-resize:hover{background:rgba(255,255,255,.4);border-radius:0 4px 4px 0}.g2-link-dot{position:absolute;top:50%;transform:translateY(-50%);width:12px;height:12px;border-radius:50%;z-index:2;background:var(--card);border:2px solid var(--brand);cursor:crosshair;opacity:0;transition:opacity var(--t-fast),transform var(--t-fast)}.g2-task:hover .g2-link-dot{opacity:1}.g2-link-dot:hover{background:var(--brand);transform:translateY(-50%) scale(1.25)}.g2-deps{position:absolute;top:0;left:0;pointer-events:none;z-index:0}.g2-dep-line{fill:none;stroke:var(--muted);stroke-width:1.6;opacity:.7;stroke-linecap:round}.g2-dep-arrow{fill:var(--muted)}.g2-linking line{stroke:var(--brand);stroke-width:2;stroke-dasharray:4 3}.g2-summary{position:absolute;top:9px;height:8px;border-radius:2px;background:var(--text);opacity:.75;z-index:1}.g2-summary:after,.g2-summary:before{content:"";position:absolute;top:8px;border:5px solid transparent;border-top:5px solid var(--text)}.g2-summary:before{left:0}.g2-summary:after{right:0}.wbs-cat td{background:var(--surface);font-size:var(--fs-sm);padding:8px 10px;border-top:2px solid var(--line)}.wbs-cat small{color:var(--muted);margin-left:6px}.wbs-cat-empty{font-style:italic}.wbs-cat-edit{background:none;color:var(--muted);font-size:var(--fs-sm);padding:0 5px;margin-left:6px;border-radius:4px}.wbs-cat-edit:hover{background:var(--card);color:var(--text);filter:none}.wbs-cat-toggle{background:none;color:var(--muted);font-size:var(--fs-sm);line-height:1;padding:2px 6px;margin-right:2px;border-radius:4px;min-width:20px}.wbs-cat-toggle:hover{background:var(--card);color:var(--brand);filter:none}.wbs-cat td{position:-webkit-sticky;position:sticky;top:0;z-index:2}.wbs-dlv{min-width:120px}.wbs-pick-col{width:28px;text-align:center}.wbs-pick{width:auto;margin:0;accent-color:var(--brand);cursor:pointer;vertical-align:middle}.wbs-cat .wbs-pick{margin-right:6px}.wbs-picked>td{background:var(--brand-soft)}.wbs-bulk{margin-bottom:8px;border-radius:var(--radius);border:1px solid var(--line)}.cons-card h4{display:flex;align-items:center;justify-content:space-between}.cons-group{display:flex;flex-direction:column;gap:var(--space-1);margin-top:8px}.cons-group>b{align-self:flex-start}.cons-ids{display:flex;flex-wrap:wrap;gap:var(--space-1);align-items:center;margin:0}.cons-ids code{font-family:var(--font-mono);font-size:var(--fs-xs);background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:1px 5px}.cons-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--fs-sm);line-height:1.5}.cons-list code{font-family:var(--font-mono);background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:0 4px}.hw-wrap{flex-direction:column;margin-bottom:16px}.hw-bar,.hw-wrap{display:flex;gap:10px}.hw-bar{align-items:center;flex-wrap:wrap}.hw-title{font-size:var(--fs-md)}.hw-help{font-size:var(--fs-xs);color:var(--muted)}.hw-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:var(--space-3);gap:var(--space-3)}.hw-sm{grid-column:span 1}.hw-md{grid-column:span 2}.hw-lg{grid-column:1/-1}@media (max-width:1100px){.hw-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hw-lg,.hw-md{grid-column:1/-1}}@media (max-width:640px){.hw-grid{grid-template-columns:1fr}.hw-lg,.hw-md,.hw-sm{grid-column:1/-1}}.hw-card{min-width:0}.hw-card[draggable=true]{cursor:-webkit-grab;cursor:grab}.hw-card[draggable=true]:active{cursor:-webkit-grabbing;cursor:grabbing}.hw-dragging{opacity:.45}.hw-over{box-shadow:inset 0 0 0 2px var(--brand)}.hw-head{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-sm);margin-bottom:var(--space-2);padding-bottom:var(--space-2);border-bottom:1px solid var(--line)}.hw-grip{color:var(--muted);-webkit-user-select:none;-moz-user-select:none;user-select:none}.hw-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--tone-warn-bg);color:var(--tone-warn-fg);font-size:var(--fs-xs);font-weight:800}.hw-actions{margin-left:auto;display:inline-flex;align-items:center;gap:var(--space-1)}.hw-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.hw-row{display:flex;align-items:center;gap:var(--space-2);width:100%;background:none;color:inherit;text-align:left;padding:5px 6px;border-radius:var(--radius-sm);font-size:var(--fs-sm)}.hw-row:hover{background:var(--surface);filter:none}.hw-row-title{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hw-row small{color:var(--muted);font-size:var(--fs-xs);white-space:nowrap}.hw-row .board-progress{width:90px;flex:none}.hw-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--space-2) var(--space-3);gap:var(--space-2) var(--space-3)}.hw-kpis>div{display:flex;flex-direction:column;gap:2px}.hw-kpis small{font-size:var(--fs-xs);color:var(--muted)}.hw-kpis b{font-size:var(--fs-md);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hw-pos{color:var(--ok)}.hw-neg{color:var(--danger)}.hw-note{grid-column:1/-1}.today-summary{margin:0 0 8px;font-size:var(--fs-sm);font-weight:600;color:var(--muted)}.today-summary.has-late{color:var(--danger)}.today-row{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:5px 6px;border-radius:var(--radius-sm);font-size:var(--fs-sm);transition:background var(--t-fast),border-color var(--t-fast)}.today-row:hover{background:var(--surface)}.today-ctx{white-space:nowrap}.today-ctx,.today-kind{color:var(--muted);font-size:var(--fs-xs)}.today-kind{flex:none;border:1px solid var(--border);border-radius:999px;padding:1px 7px}@media (max-width:640px){.today-row{flex-wrap:wrap;gap:6px}.today-row .hw-row-title{flex:1 1 100%;white-space:normal}}.run-banner{position:fixed;left:10px;z-index:55;bottom:calc(10px + env(safe-area-inset-bottom, 0px));display:flex;align-items:center;gap:var(--space-2);padding:8px 12px;font-size:var(--fs-xs);background:var(--card);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow)}.rb-text b{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.fab{position:fixed;z-index:var(--z-fab);right:calc(16px + env(safe-area-inset-right, 0px));bottom:calc(16px + env(safe-area-inset-bottom, 0px));width:var(--fab-size);height:var(--fab-size);padding:0;border:none;border-radius:999px;display:grid;place-items:center;font-size:var(--fs-xl);line-height:1;background:var(--grad);color:var(--on-solid);box-shadow:var(--elev-3);transition:right var(--t-fast),transform var(--t-fast),filter var(--t-fast)}.fab:hover{filter:brightness(1.06);transform:translateY(-2px)}.fab:focus-visible{outline:2px solid var(--brand);outline-offset:3px}.fab:active{transform:translateY(0)}.fab.shifted{right:calc(var(--run-w) + 16px)}.go-hint,.sc-help{--kb-h:20px}.go-hint kbd,.sc-help kbd{display:inline-grid;place-items:center;min-width:var(--kb-h);height:var(--kb-h);padding:0 var(--space-1);font-family:inherit;font-weight:700;color:var(--text);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--elev-1)}.go-hint,.go-hint kbd,.sc-help kbd{font-size:var(--fs-xs);background:var(--card)}.go-hint{position:fixed;left:50%;transform:translateX(-50%);z-index:55;bottom:calc(var(--space-3) + env(safe-area-inset-bottom, 0px));display:flex;justify-content:center;flex-wrap:wrap;gap:var(--space-1) var(--space-3);max-width:calc(100vw - var(--space-8));padding:var(--space-2) var(--space-3);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--elev-2)}.go-hint,.go-key{align-items:center}.go-key{display:inline-flex;gap:var(--space-1);color:var(--muted)}@media (max-width:720px){.go-hint{display:none}}.sc-help{display:flex;flex-direction:column;gap:var(--space-5)}.sc-help h4{padding-bottom:var(--space-1);font-size:var(--fs-md);border-bottom:1px solid var(--line)}.sc-help h4,.sc-lead{margin:0 0 var(--space-2)}.sc-lead{color:var(--muted);font-size:var(--fs-sm)}.sc-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:var(--space-1);gap:var(--space-1)}.sc-list li{display:grid;grid-template-columns:72px 1fr;align-items:center;grid-gap:var(--space-1) var(--space-3);gap:var(--space-1) var(--space-3);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);border:1px solid transparent}.sc-list li:hover{background:var(--surface)}.sc-keys{display:inline-flex;gap:var(--space-1)}.sc-label{font-size:var(--fs-sm);font-weight:600}.sc-list small{grid-column:2}.sc-list small,.sc-note{color:var(--muted);font-size:var(--fs-xs)}.sc-note{margin:0;padding:var(--space-3);background:var(--surface);border-radius:var(--radius-sm);line-height:1.6}@media (max-width:720px){.run-banner{right:10px;bottom:calc(76px + env(safe-area-inset-bottom, 0px))}}.ai-goto{display:flex}.ico{flex:none;display:inline-block;vertical-align:-.14em}.ico+*{margin-left:.4em}.new-ver{position:fixed;left:10px;right:10px;bottom:calc(12px + env(safe-area-inset-bottom, 0px));z-index:var(--z-sheet);display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;background:var(--card);border:1px solid var(--brand);border-radius:12px;box-shadow:var(--elev-3);padding:12px 14px}.new-ver-msg{display:flex;flex-direction:column;gap:2px;flex:1 1 200px;min-width:0}.new-ver-msg small{color:var(--muted);font-size:var(--fs-xs);line-height:1.5}@media (min-width:761px){.new-ver{left:auto;width:420px;right:16px;bottom:16px}}.a2hs{position:fixed;left:10px;right:10px;z-index:var(--z-backdrop);bottom:calc(10px + env(safe-area-inset-bottom, 0px));display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);animation:sheet-up .18s ease}.a2hs-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1}.a2hs-text b{font-size:var(--fs-md)}.a2hs-text small{color:var(--muted);font-size:var(--fs-xs);line-height:1.5}.a2hs-actions{display:flex;align-items:center;gap:6px;flex:none}@media (min-width:721px){.a2hs{display:none}}.leave-modal{display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-gap:var(--space-6);gap:var(--space-6);align-items:start}.leave-left{gap:var(--space-3);min-width:0}.leave-left,.leave-right{display:flex;flex-direction:column}.leave-right{gap:var(--space-4)}@media (max-width:720px){.leave-modal{grid-template-columns:minmax(0,1fr)}}.leave-modal .field{gap:var(--space-1)}.leave-modal .modal-head{padding-bottom:10px;margin-bottom:2px;border-bottom:1px solid var(--line)}.leave-modal .modal-actions{position:-webkit-sticky;position:sticky;bottom:0;z-index:1;margin:4px -20px -20px;padding:12px 20px;background:var(--card);border-top:1px solid var(--line)}.leave-modal{min-height:0}.leave-modal .error-msg{margin:0;padding:9px 11px;font-size:var(--fs-sm);line-height:1.55;background:var(--well);border-left:3px solid var(--danger);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.leave-balance{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;margin:0;padding:10px 12px;font-size:var(--fs-md);background:var(--surface);border-radius:var(--radius-sm)}.leave-balance b{font-size:var(--fs-lg);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.leave-balance small{color:var(--muted);font-size:var(--fs-xs);flex-basis:100%}.leave-cal-head{display:flex;align-items:center;justify-content:center;gap:var(--space-3)}.leave-cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:2px;gap:2px}.lc-dow{text-align:left;padding-left:var(--space-2);font-size:var(--fs-xs);color:var(--muted);padding-bottom:var(--space-1)}.lc-day{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:2px;min-height:56px;padding:var(--space-1) var(--space-2);background:var(--card);border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text);font-size:var(--fs-sm);line-height:1.1}@media (max-width:720px){.lc-day{min-height:44px;padding:var(--space-1)}}.lc-day:hover{background:var(--surface)}.lc-dow:nth-child(6){color:var(--info)}.lc-dow:nth-child(7){color:var(--danger)}.lc-day.sat .lc-n{color:var(--info)}.lc-day.sun .lc-n{color:var(--danger)}.lc-day.legal .lc-n{color:var(--danger);font-weight:600}.lc-day.company .lc-n{color:var(--brand);font-weight:600}.lc-day.legal .lc-holi{background:var(--danger)}.lc-day.company .lc-holi{background:var(--brand)}.lc-day:disabled{cursor:not-allowed;opacity:.75}.lc-day:disabled:hover{background:var(--card)}.lc-day.on{background:var(--brand);border-color:var(--brand)}.lc-day.holiday.on .lc-n,.lc-day.off.on .lc-n,.lc-day.on,.lc-day.on .lc-n{color:var(--on-solid)}.lc-day.mine{border-color:var(--brand)}.lc-n{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.lc-holi{width:4px;height:4px;border-radius:999px;background:var(--danger);overflow:hidden;text-indent:-999px}.lc-away{display:flex;gap:2px}.lc-away i{width:4px;height:4px;border-radius:999px;background:var(--muted)}.lc-day.on .lc-away i{background:#fff}.leave-quick{align-items:center}.leave-kinds,.leave-quick{display:flex;gap:6px;flex-wrap:wrap}.leave-kind{display:inline-flex;align-items:center;gap:5px;cursor:pointer;padding:6px 12px;border:1px solid var(--line);border-radius:999px;font-size:var(--fs-sm);white-space:nowrap;flex:none}.leave-kind.on{border-color:var(--brand);color:var(--brand);font-weight:600}.leave-kind input{accent-color:var(--brand)}.leave-confirm{margin:0;padding:10px 12px;font-size:var(--fs-md);line-height:1.6;background:var(--surface);border-left:3px solid var(--brand);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.leave-confirm b{font-size:var(--fs-lg)}.leave-confirm.empty{color:var(--muted);font-size:var(--fs-sm);border-left-color:var(--line)}.leave-confirm.empty b{font-size:inherit;color:var(--text)}.leave-warn{color:var(--danger)}