*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #F7F8FA;--panel: #FFFFFF;--border: #E5E7EB;--text: #1F2328;--sub: #6B7280;--muted: #9CA3AF;--primary: #4F7CFF;--deadline: #EF4444;--r-sm: 6px;--r-md: 8px}body{font-family:system-ui,-apple-system,sans-serif;font-size:13px;color:var(--text);background:var(--bg)}#sticky-top{position:sticky;top:0;z-index:20;background:var(--panel);box-shadow:0 1px 3px #0000000a}#gantt-header-pane{overflow-x:hidden}.toolbar{height:56px;padding:0 24px;background:var(--panel);border-bottom:1px solid var(--border);font-size:13px;display:flex;align-items:center;gap:12px}.toolbar label{display:flex;align-items:center;gap:6px;color:var(--sub)}.toolbar select{height:32px;padding:0 28px 0 10px;font-size:13px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--panel);color:var(--text);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.toolbar select:focus{outline:none;border-color:var(--primary)}#rebuild-btn{height:32px;margin-left:auto;padding:0 14px;font-size:13px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--panel);cursor:pointer;color:var(--sub)}#rebuild-btn:hover:not(:disabled){background:var(--bg);color:var(--text)}#rebuild-btn:disabled{color:var(--muted);cursor:default}#gantt-container{overflow-x:auto}.gantt{display:inline-flex;flex-direction:column;min-width:100%}.gantt-header,.gr{display:flex;border-bottom:1px solid var(--border)}.gh-left,.gr-left{width:300px;min-width:300px;flex-shrink:0;padding:6px 12px;background:var(--panel);border-right:1px solid var(--border);position:sticky;left:0;z-index:10}.gh-left{height:48px;display:flex;align-items:center;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;background:var(--bg);color:var(--muted);border-bottom:1px solid var(--border)}.gh-right{position:relative;flex-shrink:0;display:flex;flex-direction:column;background:var(--bg)}.gh-months{position:relative;height:26px;border-bottom:1px solid var(--border);overflow:hidden}.gh-month{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding-left:8px;font-size:11px;font-weight:600;color:var(--sub);border-right:1px solid var(--border);background:#eceef2;white-space:nowrap;overflow:hidden}.gh-month.is-odd{background:#f1f3f7}.gh-days{position:relative;height:22px;background-image:repeating-linear-gradient(90deg,transparent 0,transparent calc(var(--day-px) - 1px),var(--border) calc(var(--day-px) - 1px),var(--border) var(--day-px))}.date-tick{position:absolute;bottom:2px;width:var(--day-px);text-align:center;font-size:9px;color:var(--muted);white-space:nowrap}.gr-left{display:flex;flex-direction:column;justify-content:center;gap:2px}.gr-title{font-size:12px;font-weight:600;line-height:1.4;color:var(--text)}.gr-meta{font-size:11px;color:var(--sub)}.gr-status{display:inline-block;font-size:11px;font-weight:500;padding:1px 6px;border-radius:4px;line-height:1.6;white-space:nowrap}.gr[data-status=受注前] .gr-status{background:#eff6ff;color:#3b82f6;border:1px solid #BFDBFE}.gr[data-status=要件定義中] .gr-status{background:#dbeafe;color:#1e40af}.gr[data-status=制作] .gr-status{background:#bfdbfe;color:#1d4ed8}.gr[data-status=IG検収中] .gr-status{background:#93c5fd;color:#1e3a8a}.gr[data-status=先方検収中] .gr-status,.gr[data-status=承認待ち] .gr-status{background:#fef9c3;color:#a16207}.gr[data-status=完了] .gr-status{background:#dcfce7;color:#166534}.gr-right{position:relative;flex-shrink:0;align-self:stretch;background-image:repeating-linear-gradient(90deg,transparent 0,transparent calc(var(--day-px) - 1px),var(--border) calc(var(--day-px) - 1px),var(--border) var(--day-px))}.gr:nth-child(2n) .gr-left{background-color:#fafbfc}.day-bg-week,.day-bg-sat,.day-bg-sun{position:absolute;top:0;pointer-events:none;z-index:0}.day-bg-week{background:#ffc83c12}.day-bg-sat{background:#e4eefe}.day-bg-sun{background:#ffececbf}.gl-month{position:absolute;top:0;width:1px;background:#d1d5db;z-index:1;pointer-events:none}.gl-week{position:absolute;top:0;width:1px;background:var(--border);z-index:1;pointer-events:none}.phase-bar{position:absolute;background:var(--primary);border-radius:var(--r-sm);display:flex;align-items:center;padding:0 6px;overflow:hidden;cursor:pointer;z-index:2;transition:filter .15s}.phase-bar span{color:#fff;font-size:11px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1}.phase-bar:hover{filter:brightness(.88)}.gr[data-status=完了] .phase-bar{opacity:.45}.phase-bar[data-label=先方確認],.gr[data-status=先方検収中] .phase-bar,.gr[data-status=承認待ち] .phase-bar,.gr[data-assignees~=YHD] .phase-bar{background:#eab308;color:#713f12}.today-line{position:absolute;top:0;width:2px;background:#4f7cff8c;z-index:5;pointer-events:none}.today-label{position:absolute;top:2px;font-size:9px;font-weight:600;color:var(--primary);white-space:nowrap;padding-left:3px;z-index:5}.deadline-marker{position:absolute;top:0;width:2px;background:var(--deadline);transform:translate(-1px);z-index:3;pointer-events:none}.deadline-marker:before{content:"▼";position:absolute;top:-1px;left:50%;transform:translate(-50%);font-size:8px;color:var(--deadline);line-height:1;pointer-events:none}.deadline-label{position:absolute;bottom:4px;left:4px;font-size:9px;color:var(--deadline);white-space:nowrap;background:#ffffffd9;padding:1px 3px;border-radius:2px;line-height:1.4;pointer-events:auto;cursor:pointer}.bar-popup{position:fixed;z-index:100;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 16px;box-shadow:0 8px 24px #0000001a,0 2px 6px #0000000f;font-size:12px;line-height:1.7;min-width:170px;pointer-events:auto}.bar-popup strong{display:block;font-weight:600;margin-bottom:2px;color:var(--text)}.bar-popup span{display:block;color:var(--sub)}.bar-popup .popup-memo{margin-top:4px;padding-top:4px;border-top:1px solid var(--border);color:var(--muted);font-size:11px;white-space:pre-wrap}.billing-area{margin:32px 24px}.billing-title{font-size:13px;font-weight:600;color:var(--sub);padding-bottom:6px;border-bottom:1px solid var(--border);margin-bottom:8px}.billing-group{margin-bottom:16px}.billing-group-title{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.billing-cards{display:flex;flex-wrap:wrap;gap:10px}.bc{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);padding:10px 14px;width:220px;display:flex;flex-direction:column;gap:3px;transition:box-shadow .15s}.bc:hover{box-shadow:0 4px 12px #00000014}.bc-id{font-size:10px;color:var(--muted)}.bc-title{font-size:13px;font-weight:600;color:var(--text);line-height:1.4;margin-bottom:2px}.bc-assignees{font-size:12px;font-weight:500;color:var(--sub)}.pipeline-area{margin:32px 24px;padding:20px 20px 24px;background:#fffbeb;border:1px solid #FDE68A;border-radius:10px}.pipeline-title{font-size:13px;font-weight:600;color:#92400e;padding-bottom:6px;border-bottom:1px solid #FDE68A;margin-bottom:12px}.pipeline-cards{display:flex;flex-wrap:wrap;gap:10px}.pc{background:#fff;border:1px solid #FDE68A;border-left:3px solid #F59E0B;border-radius:var(--r-md);padding:10px 14px;width:220px;display:flex;flex-direction:column;gap:3px;transition:box-shadow .15s}.pc[data-has-memo=true]{cursor:pointer}.pc[data-has-memo=true]:hover{box-shadow:0 4px 12px #f59e0b26}.pc-title{font-size:13px;font-weight:600;color:var(--text);line-height:1.4;margin-bottom:2px}.pc-assignees{font-size:12px;font-weight:500;color:var(--sub)}.pc-id{font-size:10px;color:var(--muted)}.pc-memo{margin-top:8px;padding-top:8px;border-top:1px solid #FDE68A}.pc-memo pre{font-size:11px;color:var(--sub);white-space:pre-wrap;font-family:inherit;line-height:1.6}
