html,body,#root{width:100%;min-width:100%;height:100%;margin:0;padding:0}body{overflow:hidden}html,body,#root{width:100%;height:100%;margin:0;padding:0}body{overscroll-behavior:none;background:#f5f6fa;font-family:Arial,sans-serif;overflow:hidden}.app{box-sizing:border-box;background:#f5f6fa;width:100%;height:100vh;padding:10px;overflow:hidden}h1{text-align:center;margin:0 0 8px;font-size:20px}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;padding:0 10px;display:flex}.toolbar button,.toolbar input{cursor:pointer;background:#fff;border:1px solid #aaa;border-radius:8px;height:28px;padding:0 8px;font-size:12px}.toolbar button,.toolbar input[type=date]{box-sizing:border-box;height:28px}.toolbar input[type=date]{appearance:none}.active-range{font-weight:700;color:#fff!important;background:#374151!important;border-color:#374151!important}.stats{gap:8px;margin-left:auto;display:flex}.stats span{background:#fff;border:1px solid #ccc;padding:7px 10px;font-size:12px}.planner{background:#fff;border:1px solid #aaa;width:100%;height:calc(100vh - 128px);overflow:auto}.planner-inner{align-items:flex-start;min-width:max-content;display:flex}.info-panel{z-index:100;background:#fff;border-right:2px solid #777;width:655px;min-width:655px;position:sticky;left:0}.info-panel.compact{width:415px;min-width:415px}.toast{color:#fff;z-index:9999;background:#111827eb;border-radius:999px;padding:10px 18px;font-size:14px;font-weight:700;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #0003}.table-title{box-sizing:border-box;background:#d9d9d9;border-bottom:1px solid #999;justify-content:center;align-items:center;height:30px;font-weight:700;display:flex}.info-header{box-sizing:border-box;background:#eee;border-bottom:1px solid #aaa;grid-template-columns:100px 55px minmax(180px,1fr) 130px 110px 55px 25px;height:30px;font-size:11px;display:grid}.info-sticky-header{z-index:120;background:#fff;position:sticky;top:0}.info-panel.compact .info-header{grid-template-columns:100px 55px minmax(180px,1fr) 55px 25px}.info-header div{border-right:1px solid #ccc;justify-content:center;align-items:center;display:flex}.project-cell{box-sizing:border-box;background:#fff;border-bottom:1px solid #ddd;border-right:1px solid #ddd;flex-shrink:0;justify-content:space-between;align-items:center;width:100px;padding:0 4px;display:flex}.project-cell input{box-sizing:border-box;border:0;flex:1;min-width:0;height:100%;padding:0 4px;font-size:11px}.add-task-btn{cursor:pointer;background:#f3f4f6;border:1px solid #ccc;border-radius:4px;flex-shrink:0;width:18px;height:18px;padding:0;font-size:11px;line-height:1}.project-task-list{flex-direction:column;display:flex}.task-row-fields{box-sizing:border-box;border-bottom:1px solid #ddd;grid-template-columns:55px minmax(180px,1fr) 130px 110px 55px 25px;height:30px;display:grid}.info-panel.compact .task-row-fields{grid-template-columns:55px minmax(180px,1fr) 55px 25px}.task-row-fields input{box-sizing:border-box;background:#fff;border:0;border-right:1px solid #ddd;width:100%;height:100%;padding:0 8px;font-size:11px}.task-row-fields input:focus{z-index:2;outline:1px solid #3b82f6}.task-highlight,.task-highlight input,.task-highlight .doc-cell,.task-highlight .status-cell{animation:5s taskBlink}@keyframes taskBlink{0%{background-color:#fff7a8}25%{background-color:#ffe766}50%{background-color:#fff7a8}75%{background-color:#ffe766}to{background-color:#0000}}.doc-cell{grid-template-columns:1fr 28px;height:100%;display:grid}.doc-cell input{border:0;border-right:1px solid #ddd;padding:0 8px}.doc-cell.linked input{background:#dbeafe}.doc-cell.linked .url-button{color:#2563eb;background:#dbeafe;font-weight:700}.url-button{cursor:pointer;background:#f3f4f6;border:0;border-right:1px solid #ddd;font-size:9px}.url-button.linked{color:#2563eb;background:#dbeafe;font-weight:700}.url-input-row input{flex:1}.open-url-btn{cursor:pointer;flex-shrink:0;width:40px;height:40px}.timeline-header{box-sizing:border-box;z-index:80;background:#fafafa;border-bottom:1px solid #999;height:60px;position:sticky;top:0}.planner,.timeline-panel{overscroll-behavior:contain}.month-row,.week-row,.date-row{box-sizing:border-box;height:20px;display:flex}.month-cell,.week-cell,.day-cell{box-sizing:border-box;-webkit-user-select:none;user-select:none;border-bottom:1px solid #9a9a9a;border-right:1px solid #9a9a9a;justify-content:center;align-items:center;min-width:32px;height:20px;font-size:10px;line-height:1;display:flex}.month-cell{background:#f3f4f6;font-weight:600}.week-cell{background:#fafafa;font-weight:500}.day-cell{background:#fff;font-weight:400}.day-cell.today{color:#d00000;background:#fff3bf;font-weight:700}.timeline-row{box-sizing:border-box;border-bottom:1px solid #ddd;height:30px;display:flex}.day-cell.last-friday{color:#dc2626;background:#fee2e2;font-weight:700}.grid-cell{box-sizing:border-box;cursor:crosshair;border-right:1px solid #d6d6d6;min-width:32px;height:30px;position:relative;overflow:visible}.planner.locked .grid-cell{cursor:not-allowed}.grid-cell:hover{background:#eff6ff}.grid-cell.selected{background:#3b82f6;border-bottom:1px solid #d6d6d6;border-right:1px solid #d6d6d6}.timeline-row.project-bottom-line .grid-cell.selected{border-bottom:2px solid #999}.grid-cell.selected:hover{background:#2563eb}.grid-cell.today-line{background:#fff8dc}.grid-cell.selected.today-line{background:#2563eb}.status-cell{box-sizing:border-box;background:#fff;border-right:1px solid #ddd;justify-content:center;align-items:center;height:100%;display:flex}.status-pill{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:999px;justify-content:center;align-items:center;height:22px;padding:0 10px;font-size:10px;font-weight:500;line-height:1;transition:all .15s;display:inline-flex}.status-pill:hover{transform:scale(1.2)}.status-완료{color:#1d4ed8;background:#dbeafe}.status-진행{color:#15803d;background:#dcfce7}.status-대기{color:#4b5563;background:#f3f4f6}.delete-btn{color:#818181;cursor:pointer;background:#f8fafc;border:0;border-right:1px solid #ddd;width:100%;height:100%;font-size:12px;font-weight:200}.delete-btn:hover{color:#dc2626;background:#fee2e2}.day-cell.custom-holiday{color:#dc2626;background:#fee2e2;font-weight:700}.grid-cell.custom-holiday-line{background:#fff1f2}.grid-cell.selected.custom-holiday-line{background:#2563eb}.modal-backdrop{z-index:100;background:#00000040;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.url-modal{background:#fff;border-radius:18px;width:460px;padding:22px;box-shadow:0 20px 60px #0f172a47}.url-modal h3{margin:0 0 16px;font-size:20px}.url-list{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}.url-list-row{grid-template-columns:1fr 36px 36px;align-items:center;gap:6px;display:grid}.url-name-input,.url-url-input{box-sizing:border-box;border:1px solid #d1d5db;border-radius:10px;outline:none;height:38px;padding:0 10px;font-size:13px}.url-name-input:focus,.url-url-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.delete-url-btn{color:#dc2626;cursor:pointer;background:#fee2e2;border:0;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;font-size:16px;display:flex}.delete-url-btn:hover{background:#fca5a5}.add-url-btn{color:#374151;cursor:pointer;background:#f9fafb;border:1px dashed #9ca3af;border-radius:8px;width:100%;height:34px;margin-bottom:14px;padding:0 14px;font-size:13px}.add-url-btn:hover{background:#f3f4f6;border-color:#6b7280}.task-doc-links{flex-direction:column;gap:2px;display:flex}.url-input-row{align-items:center;gap:8px;display:flex}.url-input-row input{box-sizing:border-box;border:1px solid #d1d5db;border-radius:12px;outline:none;flex:1;height:42px;padding:0 12px;font-size:14px}.url-input-row input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.open-url-btn{color:#2563eb;cursor:pointer;background:#eff6ff;border:0;border-radius:12px;width:42px;height:42px;font-size:16px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.modal-actions button{cursor:pointer;color:#374151;background:#f3f4f6;border:0;border-radius:999px;height:36px;padding:0 16px;font-weight:700}.modal-actions button:first-child{color:#fff;background:#2563eb}.modal-actions button:nth-child(3){color:#dc2626;background:#fee2e2}.grid-cell.last-friday-line{background:#fff1f2}.grid-cell.selected.last-friday-line{background:#3b82f6}.red-selected{background:#ef4444}.red-selected:hover{background:#dc2626}.task-row-fields,.timeline-row,.project-cell{box-sizing:border-box}.project-group{align-items:stretch;display:flex}.project-cell.project-bottom-line,.task-row-fields.project-bottom-line{border-bottom:2px solid #999!important}.timeline-row.project-bottom-line{border-bottom:0}.timeline-row.project-bottom-line .grid-cell{border-bottom:2px solid #999}.topbar{z-index:50;background:#f5f6fa;height:98px;margin-bottom:10px;position:sticky;top:0}.header-row{align-items:center;height:48px;display:flex;position:relative}.page-tabs{z-index:2;gap:5px;margin-left:10px;display:flex}.page-tabs button{cursor:pointer;background:#fff;border:1px solid #aaa;border-radius:999px;width:110px;height:36px;font-size:13px;transition:all .15s}.page-tabs button.active{color:#fff;background:#374151;border-color:#374151;border-radius:999px;font-weight:700}.header-row h1{white-space:nowrap;margin:0;font-size:28px;font-weight:700;position:absolute;left:50%;transform:translate(-50%)}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;height:50px;display:flex}.dashboard{box-sizing:border-box;background:#f5f6fa;width:100%;height:calc(100vh - 128px);padding:0 16px 16px;overflow:auto}.dashboard-cards{grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:16px;display:grid}.dashboard-card.simple{justify-content:space-between;align-items:center;display:flex}.dashboard-card.simple span{font-size:18px;font-weight:600}.dashboard-card{box-sizing:border-box;background:#fff;border:1px solid #ddd;border-radius:8px;height:80px;padding:16px}.dashboard-card p{margin:0 0 8px;font-size:14px}.dashboard-card.simple strong{font-size:22px;font-weight:700}.dashboard-grid{grid-template-columns:repeat(4,1fr);align-items:stretch;gap:12px;display:grid}.dashboard-panel{box-sizing:border-box;background:#fff;border:1px solid #ddd;border-radius:8px;min-height:200px;padding:16px}.dashboard-panel h3{margin:0 0 16px}.donut-row{justify-content:center;align-items:center;gap:20px;height:150px;display:flex}.donut{border-radius:50%;width:120px;height:120px;position:relative}.donut:after{content:"";background:#fff;border-radius:50%;position:absolute;inset:35px}.project-donut{background:conic-gradient(#3b82f6 0 35%, #84cc16 35% 65%, #f59e0b 65% 85%, #8b5cf6 85% 100%)}.status-donut{background:conic-gradient(#3b82f6 0 40%, #f59e0b 40% 65%, #84cc16 65% 100%)}.dashboard-legend div{align-items:center;gap:8px;margin-bottom:10px;font-size:12px;display:flex}.legend-dot{background:#3b82f6;border-radius:50%;width:10px;height:10px}.legend-dot.orange{background:#f59e0b}.legend-dot.green{background:#84cc16}.project-donut.empty{background:conic-gradient(#3b82f6 0 100%)!important}.owner-bars{scrollbar-width:thin;flex-direction:column;gap:12px;height:150px;display:flex;overflow-y:auto}.owner-row{grid-template-columns:110px 1fr 30px;align-items:center;gap:16px;display:grid}.owner-row div{background:#e5e7eb;border-radius:4px;height:12px}.owner-row i{background:#3b82f6;border-radius:4px;height:100%;display:block}.urgent-list{scrollbar-width:thin;flex-direction:column;height:150px;display:flex;overflow-y:auto}.urgent-row{border-bottom:1px solid #eee;justify-content:space-between;align-items:center;height:30px;padding:0;display:flex}.urgent-row span{align-items:center;gap:10px;font-size:13px;font-weight:600;display:flex}.urgent-row em{color:#6b7280;font-style:normal;font-weight:500}.urgent-row b{color:#dc2626;font-size:13px;line-height:1}.urgent-row.clickable{color:#2563eb;cursor:pointer;font-weight:600}.urgent-row.clickable:hover{color:#1d4ed8}.project-board{box-sizing:border-box;background:#fff;border:1px solid #ddd;border-radius:8px;min-width:0;margin-top:12px;padding:16px;overflow:hidden}.project-board-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.project-board-head h3{margin:0}.project-bubbles{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.project-progress-click{text-align:left;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;padding:0;font-size:13px;font-weight:600;overflow:hidden}.project-progress-click:hover{color:#2563eb;text-decoration:underline}.project-bubbles button{cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:999px;height:30px;padding:0 14px}.project-bubbles button.active{color:#fff;background:#374151;font-weight:700}.bubble-scroll{overscroll-behavior-x:contain;scrollbar-width:none;width:100%;max-width:100%;overflow:auto hidden}.bubble-scroll::-webkit-scrollbar{display:none}.bubble-scroll .project-bubbles{flex-wrap:nowrap;gap:8px;width:max-content;display:flex}.bubble-scroll .project-bubbles button{flex-shrink:0}.project-task-table{border:1px solid #e5e7eb}.project-task-header,.project-task-row{grid-template-columns:90px 2fr 100px 70px 200px;align-items:center;min-height:34px;display:grid}.project-task-header{background:#f3f4f6;font-size:13px;font-weight:700}.project-task-row{border-top:1px solid #eee;font-size:13px}.project-task-header span,.project-task-row span{text-overflow:ellipsis;white-space:nowrap;padding:0 4px;font-size:13px;overflow:hidden}.task-doc-link{color:#2563eb;white-space:nowrap;font-weight:600;text-decoration:none}.task-doc-link:hover{text-decoration:underline}.project-progress-cell{align-items:center;gap:3px;display:flex}.project-progress-bar{background:#e5e7eb;border-radius:999px;flex-shrink:0;width:100px;height:11px;overflow:hidden}.project-progress-bar i{background:#3b82f6;border-radius:999px;height:100%;display:block}.project-progress-cell b{min-width:34px;font-size:12px}.dashboard-detail-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;margin-top:12px;display:grid}.owner-click{text-align:left;cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:600}.owner-click:hover{color:#2563eb;text-decoration:underline}.owner-task-header,.owner-task-row{grid-template-columns:90px 70px 2fr 60px 150px 110px;align-items:center;min-height:34px;display:grid}.owner-task-header{background:#f3f4f6;font-size:13px;font-weight:700}.owner-task-row{border-top:1px solid #eee;font-size:13px}.owner-task-header span,.owner-task-row span{padding:0 10px}.avg-progress{float:right;font-size:18px;font-weight:700}.project-progress-list{scrollbar-width:thin;flex-direction:column;gap:12px;height:150px;display:flex;overflow-y:auto}.project-progress-row{grid-template-columns:100px 1fr 42px;align-items:center;gap:10px;font-size:13px;display:grid}.project-progress-row span{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.project-progress-track{background:#e5e7eb;border-radius:999px;height:10px;overflow:hidden}.project-progress-track i{background:#3b82f6;border-radius:999px;height:100%;display:block}.project-progress-row b{text-align:right;font-size:12px}.cell-memo{color:#000;pointer-events:none;z-index:40;background:#f6ff00;border-radius:14px;align-items:center;max-width:120px;padding:4px 10px;font-size:10px;font-weight:400;line-height:1.4;display:inline-flex;position:absolute;top:-5px;left:calc(100% - 15px);box-shadow:0 3px 8px #00000038}.cell-memo-text{white-space:nowrap;text-overflow:ellipsis;max-width:100px;display:block;overflow:hidden}.memo-modal{background:#fff;border-radius:18px;width:420px;padding:22px;box-shadow:0 20px 60px #0f172a47}.memo-modal-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.memo-modal-head h3{margin:0;font-size:20px}.memo-modal-head span{color:#6b7280;font-size:13px}.memo-modal textarea{resize:none;box-sizing:border-box;border:1px solid #d1d5db;border-radius:12px;outline:none;width:100%;height:120px;padding:12px;font-size:14px}.memo-modal textarea:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.memo-modal-actions{justify-content:space-between;align-items:center;margin-top:16px;display:flex}.memo-modal-right{gap:8px;display:flex}.memo-modal button{cursor:pointer;border:0;border-radius:999px;height:36px;padding:0 16px;font-weight:700}.memo-modal button.primary{color:#fff;background:#2563eb}.memo-modal button.danger{color:#dc2626;background:#fee2e2}.memo-modal button:not(.primary):not(.danger){color:#374151;background:#f3f4f6}.project-progress-list::-webkit-scrollbar{width:4px}.urgent-list::-webkit-scrollbar{width:4px}.owner-bars::-webkit-scrollbar{width:4px}@media (width<=900px){body{min-height:100dvh;overflow:auto}.app{min-height:100dvh;padding:8px;overflow:auto}.planner{touch-action:pan-x pan-y;overscroll-behavior:none;-webkit-overflow-scrolling:touch;overflow:auto}.planner-mobile-hide{display:none!important}.planner-inner{align-items:flex-start;min-width:max-content;display:flex}.timeline-panel{overscroll-behavior:contain;min-width:max-content}.info-panel{z-index:100;background:#fff;border-right:2px solid #777;width:150px;min-width:150px;position:sticky;left:0}.info-sticky-header{z-index:150;position:sticky;top:0}.info-header{grid-template-columns:50px 100px;width:150px;min-width:150px;max-width:150px}.info-header div:nth-child(2),.info-header div:nth-child(n+4),.task-row-fields .doc-cell,.task-row-fields input[list=owner-suggestions],.task-row-fields .status-cell,.task-row-fields .delete-btn{display:none}.project-cell{width:50px;min-width:50px;max-width:50px}.info-panel{width:150px;min-width:150px;max-width:150px}.timeline-panel{min-width:max-content}.timeline-header{z-index:40;position:sticky;top:0}.cell-memo{z-index:6}.topbar{height:auto;margin-bottom:8px}.header-row{flex-direction:column;align-items:flex-start;gap:6px;height:auto;padding-top:10px;padding-bottom:8px}.header-row h1,.toolbar input[type=date],.toolbar-separator,.add-task-btn{display:none}.project-cell input,.task-row-fields input{pointer-events:none;-webkit-user-select:none;user-select:none;cursor:default;background:#fff}.task-row-fields input:focus{outline:none}.page-tabs{margin-left:0}.page-tabs button{width:84px;height:30px;font-size:12px}.toolbar{scrollbar-width:none;flex-wrap:nowrap;align-items:center;gap:6px;height:34px;padding:0;overflow:auto hidden}.topbar:before{content:"";background:#f5f6fa;height:80px;position:absolute;top:-80px;left:0;right:0}.toolbar::-webkit-scrollbar{display:none}.toolbar button,.toolbar input{white-space:nowrap;flex:none;height:28px;padding:0 8px;font-size:11px}.dashboard{height:auto;min-height:calc(100dvh - 96px);padding:0 0 120px;overflow:visible}.dashboard-cards{scrollbar-width:none;gap:8px;margin-bottom:12px;display:flex;overflow-x:auto}.dashboard-cards::-webkit-scrollbar{display:none}.dashboard-card{flex-shrink:0;min-width:110px;height:46px;padding:8px 10px}.dashboard-card.simple span{font-size:11px}.dashboard-card.simple strong{font-size:14px}.dashboard-grid{grid-template-columns:1fr;gap:10px}.dashboard-panel{min-height:190px;padding:14px}.dashboard-detail-grid{grid-template-columns:1fr;gap:10px}.project-board-head{justify-content:space-between;align-items:center;display:flex}.project-board-head h3{font-size:18px}.project-board-head strong{white-space:nowrap;font-size:13px}.project-task-table{width:100%;min-width:0}.project-task-list{width:100px;min-width:100px;max-width:100px}.task-row-fields{grid-template-columns:100px;width:100px;min-width:100px;max-width:100px}.task-row-fields input{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.task-row-fields input:first-child{display:none}.project-task-header,.project-task-row{grid-template-columns:45px minmax(80px,1fr) 60px 40px 70px}.project-task-header span:nth-child(6),.project-task-row span:nth-child(6){display:none}.owner-task-header,.owner-task-row{grid-template-columns:70px 45px minmax(100px,1fr) 40px 70px}.owner-task-header span:nth-child(6),.owner-task-row span:nth-child(6){display:none}.owner-task-header span,.owner-task-row span{text-overflow:ellipsis;word-break:keep-all;padding:0 4px;font-size:11px;overflow:hidden}.owner-task-row{min-height:40px}.owner-task-header span:nth-child(3),.owner-task-row span:nth-child(3){white-space:normal}.owner-task-header span:nth-child(4),.owner-task-row span:nth-child(4){white-space:nowrap;text-align:center}.owner-task-header{min-height:36px}.project-task-header span,.project-task-row span,.owner-task-header span,.owner-task-row span{word-break:keep-all;padding:0 6px;font-size:12px}.project-progress-bar{width:28px;height:8px}.project-progress-cell{gap:3px}.project-progress-cell b{min-width:24px;font-size:10px}.owner-click{pointer-events:none;cursor:default;color:inherit;background:0 0;border:0;text-decoration:none}.owner-click:hover{color:inherit;text-decoration:none}.project-progress-name{font:inherit;color:inherit;text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}}.history-page{box-sizing:border-box;height:calc(100vh - 128px);padding:16px;overflow:auto}.history-board{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:24px}.history-list{flex-direction:column;display:flex}.history-list-header{color:#475569;border-bottom:2px solid #cbd5e1;grid-template-columns:120px 56px 160px 1fr;gap:16px;padding:10px 8px 12px;font-size:13px;font-weight:700;display:grid}.history-item{border-bottom:1px solid #f1f5f9;grid-template-columns:120px 56px 160px 1fr;align-items:center;gap:16px;padding:12px 8px;font-size:14px;line-height:1.6;display:grid}.history-type{text-align:center;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.type-변경{color:#1d4ed8;background:#dbeafe}.type-삭제{color:#dc2626;background:#fee2e2}.type-이동{color:#374151;background:#f3f4f6}.history-time{color:#94a3b8;white-space:nowrap;font-size:12px}.history-project{color:#374151;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.history-sentence{color:#1e293b}.history-empty{text-align:center;color:#64748b;padding:28px;font-size:14px}.history-item.clickable{cursor:pointer}.history-item.clickable:hover{background:#f8fafc}.shift-draggable{cursor:grab!important}.shift-draggable *{pointer-events:none;cursor:grab!important}.dragging{opacity:.4}.drag-over-task{border-top:2px solid #3b82f6!important}.drag-over-project{outline-offset:-1px;outline:2px solid #3b82f6}.drag-over-project-line{border-top:2px solid #3b82f6!important}.daily-brief-modal{background:#fffef5;border-top:4px solid #f0d84a;border-radius:4px;width:480px;max-width:92vw;max-height:80vh;padding:28px 32px 22px;font-family:Arial,sans-serif;position:relative;overflow-y:auto;box-shadow:2px 3px #e2d97a,0 20px 60px #0f172a38}.daily-brief-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.daily-brief-date{color:#92870a;letter-spacing:.03em;font-size:13px;font-weight:700}.daily-brief-speak{color:#78680a;cursor:pointer;background:#faf5c0;border:1px solid #c9bb48;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:11px;transition:background .15s;display:flex}.daily-brief-speak:hover{background:#f0e85a}.daily-brief-speak.active{color:#fff;background:#f59e0b;border-color:#d97706;animation:1s infinite speakPulse}@keyframes speakPulse{0%,to{opacity:1}50%{opacity:.6}}.daily-brief-lines p{color:#2d2d1e;margin:0 0 12px;font-size:14px;line-height:1.7}.daily-brief-list{flex-direction:column;gap:6px;margin:0 0 12px;padding-left:18px;display:flex}.daily-brief-list li{color:#2d2d1e;font-size:14px;line-height:1.6}.brief-progress{font-weight:700}.brief-progress.high{color:#15803d}.brief-progress.mid{color:#2563eb}.brief-progress.low{color:#d97706}.daily-brief-urgent{color:#78350f;background:#fff7ed;border-left:3px solid #f59e0b;border-radius:4px;margin-bottom:12px;padding:10px 12px;font-size:13px;line-height:1.7}.daily-brief-urgent .daily-brief-list{color:#78350f;margin:6px 0}.daily-brief-actions{border-top:1px dashed #e2d97a;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:14px;display:flex}.daily-brief-dismiss{color:#78680a;cursor:pointer;background:#faf5c0;border:1px solid #c9bb48;border-radius:999px;height:34px;padding:0 14px;font-size:12px;font-weight:600}.daily-brief-dismiss:hover{background:#f0e85a}.daily-brief-close{color:#fff;cursor:pointer;background:#374151;border:0;border-radius:999px;height:34px;padding:0 18px;font-size:12px;font-weight:700}.daily-brief-close:hover{background:#1f2937}.project-progress-track i,.owner-row i,.project-progress-bar i{transform-origin:0;animation:.8s ease-out both fillBar}@keyframes fillBar{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.integrity-page{box-sizing:border-box;height:calc(100vh - 128px);padding:24px;overflow-y:auto}.integrity-tabs{gap:8px;margin-bottom:20px;display:flex}.integrity-tabs button{cursor:pointer;color:#374151;background:#f9fafb;border:1px solid #d1d5db;border-radius:6px;padding:6px 18px;font-size:13px}.integrity-tabs button.active{color:#fff;background:#1e293b;border-color:#1e293b}.integrity-section{overflow:auto}.integrity-score-header{flex-wrap:wrap;gap:16px;margin-bottom:20px;display:flex}.integrity-score-box{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;flex-direction:column;gap:4px;min-width:130px;padding:14px 20px;display:flex}.integrity-score-box span{color:#6b7280;font-size:12px}.integrity-score-box strong{font-size:22px;font-weight:700}.score-high{color:#16a34a}.score-mid{color:#d97706}.score-low{color:#dc2626}.integrity-table-wrap{border:1px solid #e5e7eb;border-radius:8px;overflow-x:auto}.integrity-table{border-collapse:collapse;width:100%;font-size:12px}.integrity-table th{color:#fff;text-align:left;white-space:nowrap;background:#1e293b;padding:8px 10px;font-weight:600;position:sticky;top:0}.integrity-table td{vertical-align:top;border-bottom:1px solid #f1f5f9;padding:7px 10px}.integrity-table tr:last-child td{border-bottom:none}.integrity-table tr:hover td{background:#f8fafc}.integrity-table.row-warn td,.integrity-table tr.row-warn td{background:#fffbeb}.integrity-table code{background:#f1f5f9;border-radius:4px;padding:1px 5px;font-family:monospace;font-size:12px}.badge-red{color:#dc2626;font-weight:600}.badge-orange{color:#d97706;font-weight:600}.opinion-cell{color:#374151;min-width:220px;max-width:300px;line-height:1.5}.integrity-bottom{grid-template-columns:1fr 1fr;gap:24px;margin-top:24px;display:grid}.integrity-list-section h4{color:#1e293b;margin-bottom:8px;font-size:13px;font-weight:700}.integrity-list-section ol,.integrity-list-section ul{margin:0;padding-left:18px;font-size:12px;line-height:1.8}.integrity-data-block{margin-bottom:20px}.integrity-data-block h4{color:#1e293b;margin-bottom:8px;font-size:13px;font-weight:700}.integrity-table.compact td,.integrity-table.compact th{padding:5px 10px}.integrity-ok{color:#16a34a;margin-top:12px;font-weight:600}.integrity-summary h3{margin-bottom:16px;font-size:16px;font-weight:700}.summary-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-bottom:24px;display:grid}.summary-card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;padding:16px}.summary-card h4{color:#374151;margin-bottom:8px;font-size:13px;font-weight:700}.summary-score{margin-bottom:8px;font-size:26px;font-weight:800}.summary-card p{color:#6b7280;margin:0;font-size:12px;line-height:1.6}.summary-actions h4{color:#1e293b;margin-bottom:10px;font-size:14px;font-weight:700}.summary-actions ol{margin:0;padding-left:18px;font-size:13px;line-height:2}.feature-list{flex-direction:column;gap:16px;display:flex}.feature-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;overflow:hidden}.feature-card.feature-critical{background:#fff8f8;border-color:#fca5a5}.feature-card.feature-warning{background:#fffdf4;border-color:#fcd34d}.feature-card-head{background:#f8fafc;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.feature-critical .feature-card-head{background:#fee2e2}.feature-warning .feature-card-head{background:#fef9c3}.feature-name{color:#1e293b;font-size:14px;font-weight:700}.feature-score{text-align:right;min-width:50px;font-size:18px;font-weight:800}.feature-body{grid-template-columns:1fr 1fr;align-items:start;gap:8px 24px;padding:12px 16px;display:grid}.feature-row{grid-template-columns:100px 1fr;align-items:start;gap:6px;display:grid}.feature-row dt{color:#64748b;white-space:nowrap;padding-top:2px;font-family:monospace;font-size:11px;font-weight:600}.feature-row dd{color:#374151;margin:0;font-size:11px;line-height:1.55}.feature-flow{scrollbar-width:thin;scrollbar-color:#6378b426 transparent;flex-direction:row;grid-column:1/-1;align-items:center;gap:0;padding-bottom:4px;display:flex;overflow-x:auto}.flow-step{flex-direction:row;flex-shrink:0;align-items:center;gap:0;display:flex}.flow-arrow{color:#94a3b8;flex-shrink:0;padding:0 6px;font-size:14px;font-weight:300}.feature-row code{background:#f1f5f9;border-radius:4px;padding:1px 5px;font-family:monospace;font-size:11px;display:inline-block}.state-tag,.table-tag{margin-bottom:2px;margin-right:4px}.state-tag{color:#1d4ed8!important;background:#eff6ff!important}.table-tag{color:#15803d!important;background:#f0fdf4!important}.feature-ul{margin:0;padding-left:16px;font-size:12px;line-height:1.7}.feature-ul.warn li{color:#b45309}.feature-opinion{font-style:italic;color:#1e40af!important}.integrity-graph-section{border:1px solid #6378b438;border-radius:12px;margin-bottom:28px;overflow:hidden;box-shadow:0 0 50px #3b82f61a,0 0 0 1px #3b82f60d}.integrity-graph-header{background:linear-gradient(90deg,#06101e 0%,#0d1e3f 100%);border-bottom:1px solid #6378b42e;justify-content:space-between;align-items:center;padding:11px 20px;display:flex}.integrity-graph-header-left{align-items:baseline;gap:12px;display:flex}.integrity-graph-title{color:#93c5fd;letter-spacing:.12em;text-transform:uppercase;text-shadow:0 0 12px #93c5fd80;font-family:monospace;font-size:13px;font-weight:700}.integrity-graph-sub{color:#334155;font-family:monospace;font-size:11px}.integrity-graph-toggle{color:#64748b;cursor:pointer;background:#3b82f61a;border:1px solid #3b82f647;border-radius:6px;padding:4px 14px;font-family:monospace;font-size:11px;transition:all .2s}.integrity-graph-toggle:hover{color:#93c5fd;background:#3b82f633}.graph-workspace{background:#050b18;height:450px;display:flex;overflow:hidden}.graph-canvas-area{flex:1;min-width:0;height:450px;position:relative;overflow:hidden}.graph-side-panel{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#030816f5;border-left:1px solid #6378b42e;flex-direction:column;flex-shrink:0;width:240px;height:450px;display:flex;overflow:hidden}.gsp-controls{border-bottom:1px solid #6378b41f;flex-shrink:0;padding:10px 10px 8px}.gsp-search{box-sizing:border-box;color:#93c5fd;background:#050b18e6;border:1px solid #6378b447;border-radius:7px;outline:none;width:100%;margin-bottom:7px;padding:6px 10px;font-family:monospace;font-size:11px;transition:border-color .2s}.gsp-search::placeholder{color:#1e293b}.gsp-search:focus{border-color:#93c5fd80;box-shadow:0 0 10px #3b82f61f}.gsp-filter-row{align-items:center;gap:5px;display:flex}.gsp-filter-btn{color:#334155;cursor:pointer;letter-spacing:.04em;background:#050b18e6;border:1px solid #6378b438;border-radius:5px;padding:3px 8px;font-family:monospace;font-size:10px;transition:all .18s}.gsp-filter-btn:hover,.gsp-filter-btn.active{color:#93c5fd;background:#3b82f629;border-color:#93c5fd66}.gsp-rotate-btn{color:#334155;cursor:pointer;background:#050b18e6;border:1px solid #6378b438;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:22px;margin-left:auto;font-size:14px;transition:all .18s;display:flex}.gsp-rotate-btn:hover,.gsp-rotate-btn.active{color:#93c5fd;text-shadow:0 0 8px #93c5fd99;background:#3b82f629;border-color:#93c5fd66}.gsp-section{flex-direction:column;min-height:0;display:flex;overflow:hidden}.gsp-fn-section{flex:55%}.gsp-feat-section{border-top:1px solid #6378b41f;flex:45%}.gsp-section-title{color:#1e3a5f;letter-spacing:.14em;flex-shrink:0;padding:7px 10px 4px;font-family:monospace;font-size:9px;font-weight:700}.gsp-count{color:#334155;font-weight:400}.gsp-list{scrollbar-width:thin;scrollbar-color:#6378b426 transparent;flex:1;padding:0 4px 4px;overflow-y:auto}.gsp-list::-webkit-scrollbar{width:4px}.gsp-list::-webkit-scrollbar-thumb{background:#6378b433;border-radius:2px}.gsp-item{cursor:pointer;border:1px solid #0000;border-radius:5px;align-items:center;gap:6px;padding:4px 7px;transition:background .14s;display:flex}.gsp-item:hover{background:#3b82f612}.gsp-item.selected{background:#3b82f624;border-color:#93c5fd40;box-shadow:inset 0 0 8px #3b82f61a}.gsp-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.gsp-name{color:#475569;text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:monospace;font-size:11px;transition:color .14s;overflow:hidden}.gsp-item:hover .gsp-name,.gsp-item.selected .gsp-name{color:#94a3b8}.gsp-score{flex-shrink:0;font-family:monospace;font-size:10px;font-weight:700}.gsp-feat-item.selected{background:rgba(var(--feat-glow-rgb,59,130,246), .12);border-color:rgba(var(--feat-glow-rgb,59,130,246), .3)}.graph-tooltip{z-index:9999;pointer-events:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#030816f5;border:1px solid #6378b459;border-radius:10px;min-width:160px;padding:10px 14px;position:fixed;box-shadow:0 0 22px #3b82f62e}.graph-tooltip-name{color:#e2e8f0;margin-bottom:3px;font-family:monospace;font-size:13px;font-weight:700}.graph-tooltip-score{margin-bottom:5px;font-family:monospace;font-size:15px;font-weight:800}.graph-tooltip-row{color:#475569;font-family:monospace;font-size:11px;line-height:1.6}.graph-legend{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#030816e0;border:1px solid #6378b438;border-radius:9px;padding:9px 12px;position:absolute;bottom:44px;left:14px}.graph-legend-title{color:#1e293b;letter-spacing:.14em;margin-bottom:5px;font-family:monospace;font-size:8px;font-weight:700}.graph-legend-row{color:#334155;align-items:center;gap:6px;font-family:monospace;font-size:10px;line-height:1.85;display:flex}.graph-legend-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.graph-legend-line{background:#60a5fa59;flex-shrink:0;width:16px;height:1px}.graph-legend-glow{background:#a855f740;border:1px solid #a855f780;border-radius:50%;flex-shrink:0;width:7px;height:7px;box-shadow:0 0 6px #a855f766}.graph-legend-divider{background:#6378b426;height:1px;margin:4px 0}.graph-minimap{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#030816e0;border:1px solid #6378b433;border-radius:7px;padding:5px 7px 7px;position:absolute;bottom:14px;left:14px}.graph-minimap-label{color:#1e293b;letter-spacing:.12em;margin-bottom:3px;font-family:monospace;font-size:8px;font-weight:700}.graph-minimap canvas{border-radius:3px;display:block}.graph-loading{z-index:20;color:#334155;letter-spacing:.1em;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#050b18b8;flex-direction:column;justify-content:center;align-items:center;gap:20px;font-family:monospace;font-size:12px;display:flex;position:absolute;inset:0}.graph-loading-pulse{background:radial-gradient(circle,#3b82f673 0%,#0000 70%);border-radius:50%;width:48px;height:48px;animation:1.4s ease-in-out infinite graphPulse;box-shadow:0 0 32px #3b82f68c}@keyframes graphPulse{0%,to{opacity:.45;transform:scale(.75)}50%{opacity:1;transform:scale(1.35)}}.graph-hint{z-index:10;color:#1e293b;letter-spacing:.05em;pointer-events:none;white-space:nowrap;font-family:monospace;font-size:10px;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.row-clickable{cursor:pointer}.integrity-table tr.row-clickable:hover td{background:#3b82f60d}.integrity-table tr.row-active td{border-left:2px solid #93c5fd80;background:#3b82f61f!important}.integrity-table tr.row-active td:first-child{padding-left:8px}.feature-card.row-clickable{cursor:pointer}.feature-card.row-clickable:hover{box-shadow:0 0 0 2px #3b82f640}.feature-card.feature-active{box-shadow:0 0 0 2px #93c5fd73,0 0 24px #3b82f626!important}.graph-focus-bar{z-index:12;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(90deg,#030816f7 0%,#0a142df0 100%);border-bottom:1px solid #6378b433;align-items:center;gap:10px;padding:8px 16px;font-family:monospace;display:flex;position:absolute;top:0;left:0;right:0}.gfb-type{letter-spacing:.14em;color:#334155;background:#3b82f61f;border:1px solid #3b82f633;border-radius:4px;flex-shrink:0;padding:2px 7px;font-size:9px;font-weight:700}.gfb-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.gfb-name{color:#e2e8f0;letter-spacing:.01em;font-size:14px;font-weight:700}.gfb-score{font-family:monospace;font-size:12px;font-weight:700}.gfb-file{color:#334155;margin-left:2px;font-size:11px}.gfb-clear{color:#334155;cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;margin-left:auto;padding:2px 6px;font-size:14px;line-height:1;transition:color .15s,background .15s}.gfb-clear:hover{color:#94a3b8;background:#6378b41a}.gsp-rotate-btn{display:none}.tab-level{color:#334155;letter-spacing:.05em;vertical-align:middle;background:#3b82f61a;border:1px solid #3b82f62e;border-radius:3px;margin-right:5px;padding:1px 5px;font-family:monospace;font-size:9px;font-weight:700;display:inline-block}.scenario-list{flex-direction:column;gap:8px;display:flex}.scenario-card{background:#fff;border:1px solid #6378b433;border-radius:10px;transition:box-shadow .18s;overflow:hidden}.scenario-card:hover{box-shadow:0 0 0 1px #3b82f640}.scenario-high{background:#fff8f8;border-color:#fca5a5}.scenario-mid{background:#fffdf4;border-color:#fcd34d}.scenario-active{box-shadow:0 0 0 2px #93c5fd80,0 0 20px #3b82f61f!important}.scenario-card-head{cursor:pointer;-webkit-user-select:none;user-select:none;background:#f8fafc;align-items:center;gap:10px;padding:11px 16px;display:flex}.scenario-high .scenario-card-head{background:#fee2e2}.scenario-mid .scenario-card-head{background:#fef9c3}.scenario-id{color:#64748b;min-width:28px;font-family:monospace;font-size:10px;font-weight:700}.scenario-risk-badge{letter-spacing:.06em;border-radius:4px;flex-shrink:0;padding:2px 7px;font-size:9px;font-weight:700}.risk-high{color:#dc2626;background:#fee2e2;border:1px solid #fca5a5}.risk-mid{color:#b45309;background:#fef9c3;border:1px solid #fcd34d}.risk-low{color:#16a34a;background:#f0fdf4;border:1px solid #86efac}.scenario-name{color:#1e293b;flex:1;font-size:14px;font-weight:600}.scenario-score{flex-shrink:0;font-family:monospace;font-size:15px;font-weight:800}.scenario-toggle{color:#94a3b8;flex-shrink:0;font-size:11px}.scenario-detail{border-top:1px solid #6378b41f;padding:16px}.scenario-detail-cols{grid-template-columns:1fr 1fr;gap:24px;display:grid}.scenario-col{flex-direction:column;gap:8px;display:flex}.scd-row{grid-template-columns:90px 1fr;align-items:start;gap:6px;font-size:12px;display:grid}.scd-row dt{color:#64748b;padding-top:1px;font-family:monospace;font-weight:600}.scd-row dd{color:#374151;margin:0;line-height:1.55}.scd-ok{color:#16a34a!important}.scd-fail{color:#dc2626!important}.scd-opinion{font-style:italic;color:#1e40af!important}.scd-section-title{color:#334155;letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px;font-family:monospace;font-size:10px;font-weight:700}.scenario-flow{flex-direction:column;gap:2px;display:flex}.sflow-item{flex-direction:column;gap:1px;display:flex}.sflow-arrow{color:#94a3b8;padding-left:10px;font-size:14px;line-height:1.2}.sflow-feat{cursor:pointer;background:#f8fafc;border:1px solid #6378b426;border-radius:6px;align-items:center;gap:6px;padding:5px 10px;transition:background .14s,border-color .14s;display:flex}.sflow-feat:hover{background:#3b82f60f;border-color:#93c5fd4d}.sflow-feat-active{background:#3b82f61f!important;border-color:#93c5fd66!important}.sflow-feat-danger{border-color:#fca5a5!important}.sflow-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.sflow-name{color:#374151;flex:1;font-family:monospace;font-size:12px}.sflow-score{flex-shrink:0;font-family:monospace;font-size:11px;font-weight:700}.sflow-warn{flex-shrink:0;font-size:11px}.sflow-fns{flex-wrap:wrap;gap:4px;padding:3px 10px 4px;display:flex}.sflow-fn{color:#64748b;background:#f1f5f9;border-radius:3px;padding:1px 6px;font-family:monospace;font-size:10px}.sflow-fn-more{color:#94a3b8;background:0 0;border:1px dashed #d1d5db}.scenario-danger-fns{flex-wrap:wrap;gap:6px;display:flex}.sdanger-fn{cursor:pointer;background:#f8fafc;border:1px solid #6378b433;border-radius:5px;align-items:center;gap:5px;padding:4px 9px;font-size:11px;transition:background .14s;display:flex}.sdanger-fn:hover{background:#3b82f60f}.sdanger-fn-active{background:#3b82f61f!important;border-color:#93c5fd66!important}.sdanger-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.sdanger-score{color:#64748b;font-family:monospace;font-size:10px;font-weight:700}.summary-health-header{margin-bottom:28px}.summary-health-header h3{color:#1e293b;margin-bottom:14px;font-size:16px;font-weight:700}.summary-health-grid{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.health-score-card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;padding:16px}.health-score-card.health-overall{background:#3b82f60a;border-color:#3b82f666;box-shadow:0 0 12px #3b82f614}.health-label{color:#64748b;margin-bottom:6px;font-family:monospace;font-size:11px;font-weight:600}.health-score{margin-bottom:8px;font-family:monospace;font-size:28px;font-weight:800;line-height:1.1}.health-denom{color:#94a3b8;font-size:14px;font-weight:400}.health-bar{background:#e5e7eb;border-radius:2px;height:4px;margin-bottom:8px;overflow:hidden}.health-bar-fill{border-radius:2px;height:100%;transition:width .8s}.health-desc{color:#94a3b8;font-family:monospace;font-size:11px}.summary-risk-section h3{color:#1e293b;margin-bottom:14px;font-size:16px;font-weight:700}.risk-list{flex-direction:column;gap:10px;margin-bottom:28px;display:flex}.risk-item{border:1px solid #0000;border-radius:10px;align-items:flex-start;gap:14px;padding:14px 16px;display:flex}.risk-p1{background:#fff8f8;border-color:#fca5a5}.risk-p2{background:#fffdf4;border-color:#fcd34d}.risk-p3{background:#f8fafc;border-color:#e5e7eb}.risk-priority{border-radius:5px;flex-shrink:0;margin-top:1px;padding:3px 8px;font-family:monospace;font-size:11px;font-weight:800}.risk-p1 .risk-priority{color:#dc2626;background:#fee2e2}.risk-p2 .risk-priority{color:#b45309;background:#fef9c3}.risk-p3 .risk-priority{color:#64748b;background:#f1f5f9}.risk-body{flex-direction:column;flex:1;gap:4px;display:flex}.risk-scenario-name{color:#1e293b;font-size:13px;font-weight:600}.risk-flow{color:#64748b;font-family:monospace;font-size:11px;line-height:1.6}.risk-fail{color:#b45309;font-size:11px;line-height:1.5}.risk-fns{flex-wrap:wrap;gap:5px;margin-top:2px;display:flex}.risk-fn{color:#475569;background:#f1f5f9;border-radius:3px;padding:1px 6px;font-family:monospace;font-size:10px}.risk-fn-danger{color:#dc2626;background:#fee2e2;border-radius:3px;padding:1px 6px;font-family:monospace;font-size:10px}.risk-score{text-align:right;flex-shrink:0;min-width:44px;font-family:monospace;font-size:16px;font-weight:800}.graph-canvas-area canvas{display:block}.ig-search-wrap{flex:1;max-width:420px;position:relative}.ig-global-search{box-sizing:border-box;color:#93c5fd;background:#050b18eb;border:1px solid #6378b459;border-radius:8px;outline:none;width:100%;padding:6px 14px;font-family:monospace;font-size:12px;transition:border-color .2s,box-shadow .2s}.ig-global-search::placeholder{color:#334155}.ig-global-search:focus{border-color:#93c5fd8c;box-shadow:0 0 14px #3b82f62e}.ig-search-dropdown{z-index:200;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#060c1cf7;border:1px solid #6378b459;border-radius:10px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow:hidden;box-shadow:0 8px 32px #00000080}.ig-search-item{cursor:pointer;border-bottom:1px solid #6378b41a;align-items:center;gap:8px;padding:8px 12px;font-family:monospace;font-size:12px;transition:background .12s;display:flex}.ig-search-item:last-child{border-bottom:none}.ig-search-item:hover{background:#3b82f61a}.ig-sr-type{letter-spacing:.08em;border-radius:3px;flex-shrink:0;padding:2px 6px;font-size:9px;font-weight:700}.ig-sr-function{color:#22c55e;background:#22c55e26;border:1px solid #22c55e4d}.ig-sr-feature{color:#a78bfa;background:#a855f726;border:1px solid #a855f74d}.ig-sr-scenario{color:#fb923c;background:#fb923c26;border:1px solid #fb923c4d}.ig-sr-id{color:#334155;flex-shrink:0;min-width:60px;font-size:10px}.ig-sr-name{color:#e2e8f0;flex:1}.ig-sr-score{flex-shrink:0;font-size:11px;font-weight:700}.integrity-breadcrumb{background:#f8fafc;border:1px solid #e5e7eb;border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;padding:8px 16px;display:flex}.ibc-label{letter-spacing:.1em;color:#94a3b8;text-transform:uppercase;flex-shrink:0;font-family:monospace;font-size:9px;font-weight:700}.ibc-crumb-group{align-items:center;gap:5px;display:flex}.ibc-sep{color:#cbd5e1;font-size:14px}.ibc-type{letter-spacing:.06em;border-radius:3px;flex-shrink:0;padding:2px 6px;font-size:9px;font-weight:700}.ibc-function{color:#16a34a;background:#22c55e1f;border:1px solid #22c55e40}.ibc-feature{color:#7c3aed;background:#a855f71f;border:1px solid #a855f740}.ibc-scenario{color:#c2410c;background:#fb923c1f;border:1px solid #fb923c40}.ibc-id{color:#64748b;background:#f1f5f9;border-radius:3px;padding:1px 5px;font-family:monospace;font-size:10px}.ibc-name{color:#1e293b;cursor:pointer;font-size:12px;font-weight:600;transition:color .14s}.ibc-name:hover{color:#3b82f6;text-decoration:underline}.ibc-clear{color:#94a3b8;cursor:pointer;background:0 0;border:1px solid #e5e7eb;border-radius:5px;flex-shrink:0;margin-left:auto;padding:3px 10px;font-size:11px;transition:all .14s}.ibc-clear:hover{color:#ef4444;background:#fff8f8;border-color:#fca5a5}.integrity-flow-bar{background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:10px;padding:12px 16px;overflow:hidden}.ifb-title{align-items:center;gap:8px;margin-bottom:10px;display:flex}.ifb-badge{letter-spacing:.1em;border-radius:4px;flex-shrink:0;padding:2px 8px;font-size:9px;font-weight:700}.ifb-feat{color:#7c3aed;background:#a855f71f;border:1px solid #a855f740}.ifb-sc{color:#c2410c;background:#fb923c1f;border:1px solid #fb923c40}.ifb-name{color:#374151;font-family:monospace;font-size:13px;font-weight:600}.ifb-scroll{scrollbar-width:thin;scrollbar-color:#6378b433 transparent;align-items:stretch;gap:0;padding-bottom:4px;display:flex;overflow-x:auto}.ifb-scroll::-webkit-scrollbar{height:4px}.ifb-scroll::-webkit-scrollbar-thumb{background:#6378b433;border-radius:2px}.ifb-step{flex-shrink:0;align-items:center;gap:0;display:flex}.ifb-arrow{color:#94a3b8;flex-shrink:0;padding:0 8px;font-size:16px;font-weight:300}.ifb-box{cursor:pointer;text-align:center;background:#fff;border:1px solid #e5e7eb;border-radius:8px;flex-direction:column;align-items:center;gap:2px;min-width:90px;max-width:140px;padding:8px 12px;transition:all .14s;display:flex}.ifb-box:hover{background:#3b82f60a;border-color:#93c5fd;transform:translateY(-1px);box-shadow:0 2px 8px #3b82f61a}.ifb-box-active{background:#3b82f614!important;border-color:#3b82f6!important;box-shadow:0 0 0 2px #3b82f633!important}.ifb-box-danger{background:#fff8f8;border-color:#fca5a5}.ifb-id{color:#94a3b8;letter-spacing:.05em;font-family:monospace;font-size:9px;font-weight:700}.ifb-fn-name{color:#374151;word-break:break-all;font-family:monospace;font-size:11px;line-height:1.3}.ifb-score{font-family:monospace;font-size:11px;font-weight:700}.gsp-tabs{border-bottom:1px solid #6378b41f;flex-shrink:0;display:flex}.gsp-tab-btn{color:#334155;letter-spacing:.06em;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:7px 4px;font-family:monospace;font-size:10px;font-weight:700;transition:all .14s}.gsp-tab-btn:hover{color:#64748b}.gsp-tab-btn.active{color:#93c5fd;border-bottom-color:#3b82f6}.gsp-tab-count{color:#334155;margin-left:2px;font-size:9px}.gsp-id{color:#1e3a5f;text-align:center;background:#1e3a5f1f;border-radius:3px;flex-shrink:0;min-width:46px;padding:1px 4px;font-family:monospace;font-size:9px}.gsp-risk-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.risk-h{background:#ef4444;box-shadow:0 0 4px #ef4444}.risk-m{background:#eab308;box-shadow:0 0 4px #eab308}.risk-l{background:#22c55e;box-shadow:0 0 4px #22c55e}.fn-id-badge{color:#16a34a;white-space:nowrap;background:#22c55e1a;border:1px solid #22c55e33;border-radius:4px;padding:1px 6px;font-family:monospace;font-size:10px}.feat-id-badge{color:#7c3aed;background:#a855f71a;border:1px solid #a855f733;border-radius:4px;flex-shrink:0;padding:1px 6px;font-family:monospace;font-size:10px}.integrity-graph-header{gap:12px}.sc2-layout{grid-template-columns:280px 1fr;align-items:start;gap:16px;min-height:500px;display:grid}.sc2-list{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;position:sticky;top:0;overflow:hidden}.sc2-list-header{color:#94a3b8;background:#1e293b;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.sc2-list-title{letter-spacing:.1em;font-family:monospace;font-size:10px;font-weight:700}.sc2-avg{font-family:monospace;font-size:11px;font-weight:700}.sc2-items{flex-direction:column;display:flex}.sc2-item{cursor:pointer;border-bottom:1px solid #f1f5f9;padding:10px 14px;transition:background .14s}.sc2-item:hover{background:#f0f9ff}.sc2-item-active{border-left:3px solid #3b82f6;background:#eff6ff!important}.sc2-item-high{border-left:3px solid #ef4444}.sc2-item-mid{border-left:3px solid #eab308}.sc2-item-head{align-items:center;gap:6px;display:flex}.sc2-id{color:#334155;background:#1e3a5f1a;border-radius:3px;flex-shrink:0;padding:1px 5px;font-family:monospace;font-size:9px}.sc2-risk{border-radius:3px;flex-shrink:0;padding:1px 6px;font-size:9px;font-weight:700}.sc2-name{color:#1e293b;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;font-weight:600;overflow:hidden}.sc2-score{flex-shrink:0;font-family:monospace;font-size:11px;font-weight:700}.sc2-item-meta{margin-top:4px}.sc2-meta-row{color:#64748b;font-family:monospace;font-size:10px}.sc2-detail{flex-direction:column;gap:14px;display:flex}.sc2-empty{text-align:center;color:#94a3b8;background:#f9fafb;border:1px dashed #e5e7eb;border-radius:10px;padding:60px 20px;font-size:13px}.sc2-overview{background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;flex-direction:column;gap:8px;padding:14px 16px;display:flex}.sc2-ov-title{align-items:center;gap:8px;font-size:14px;display:flex}.sc2-ov-title code{color:#64748b;background:#f1f5f9;border-radius:3px;padding:1px 6px;font-size:10px}.sc2-ov-title strong{color:#1e293b;font-size:15px}.sc2-ov-row{gap:8px;font-size:12px;display:flex}.sc2-ov-label{color:#94a3b8;letter-spacing:.06em;min-width:36px;font-family:monospace;font-size:10px;font-weight:700}.sc2-ov-screens{align-items:center;gap:10px;margin-top:2px;display:flex}.sc2-screen-badge{border-radius:5px;padding:3px 10px;font-family:monospace;font-size:11px;font-weight:600}.sc2-start{color:#1d4ed8;background:#3b82f61a;border:1px solid #3b82f640}.sc2-end{color:#15803d;background:#22c55e1a;border:1px solid #22c55e40}.sc2-screen-arrow{color:#94a3b8;font-size:13px}.sc2-path-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sc2-path-btn{cursor:pointer;color:#475569;background:#f1f5f9;border:1px solid #e5e7eb;border-radius:5px;padding:4px 10px;font-size:11px;transition:all .14s}.sc2-path-btn.active{color:#1d4ed8;background:#3b82f61a;border-color:#3b82f659;font-weight:600}.sc2-anim-btn{cursor:pointer;color:#475569;background:#f8fafc;border:1px solid #e5e7eb;border-radius:6px;margin-left:auto;padding:4px 12px;font-size:11px;transition:all .14s}.sc2-anim-btn.running{color:#2563eb;background:#3b82f614;border-color:#3b82f64d;animation:2s ease-in-out infinite anim-pulse}@keyframes anim-pulse{0%,to{box-shadow:0 0 #3b82f626}50%{box-shadow:0 0 0 4px #3b82f614}}.sc2-flow-title{color:#334155;letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;align-items:center;font-family:monospace;font-size:11px;font-weight:700;display:flex}.sc2-flow-count{color:#94a3b8;font-weight:400}.sc2-feature-flow{scrollbar-width:thin;scrollbar-color:#6378b426 transparent;flex-flow:row;align-items:flex-start;gap:0;padding-bottom:6px;display:flex;overflow-x:auto}.sc2-feat-item{flex-direction:row;flex-shrink:0;align-items:flex-start;gap:0;max-width:220px;display:flex}.sc2-feat-arrow{color:#94a3b8;margin:2px 0;padding-left:14px;font-size:18px;line-height:1.2}.sc2-feat-head{cursor:pointer;background:#fff;border:1px solid #e5e7eb;border-radius:8px;flex-direction:column;flex-shrink:0;align-items:flex-start;gap:4px;width:180px;min-height:60px;padding:8px 10px;transition:all .14s;display:flex}.sc2-feat-head:hover{background:#f0f9ff;border-color:#3b82f64d}.sc2-feat-item.sc2-feat-current .sc2-feat-head{background:#3b82f614;border-color:#3b82f673;box-shadow:0 0 0 2px #3b82f61f,0 0 12px #3b82f626}.sc2-feat-item.sc2-feat-passed .sc2-feat-head{background:#22c55e0a;border-color:#22c55e4d}.sc2-feat-item.sc2-feat-selected .sc2-feat-head{background:#3b82f61a;border-color:#3b82f666}.sc2-feat-item.sc2-feat-danger .sc2-feat-head{border-color:#fca5a5}.sc2-feat-arrow-icon{color:#94a3b8;flex-shrink:0;font-size:10px}.sc2-feat-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.sc2-feat-name{color:#1e293b;white-space:normal;word-break:break-word;font-size:11px;font-weight:600;line-height:1.3}.sc2-feat-fn-count{color:#94a3b8;font-family:monospace;font-size:10px}.sc2-feat-score{font-family:monospace;font-size:11px;font-weight:700}.sc2-feat-head-top{align-items:center;gap:5px;width:100%;display:flex}.sc2-feat-head-bottom{align-items:center;gap:8px;width:100%;display:flex}.sc2-danger-badge{color:#dc2626;background:#fee2e2;border:1px solid #fca5a5;border-radius:4px;padding:1px 6px;font-size:9px;font-weight:700}.sc2-current-badge{color:#2563eb;background:#3b82f61a;border:1px solid #3b82f64d;border-radius:4px;padding:1px 6px;font-size:9px;font-weight:700;animation:1.2s ease-in-out infinite badge-blink}@keyframes badge-blink{0%,to{opacity:1}50%{opacity:.5}}.sc2-fn-list{border-left:2px solid #e5e7eb;flex-direction:column;gap:2px;margin:2px 0 2px 24px;padding-left:12px;display:flex}.sc2-fn-item{cursor:pointer;border:1px solid #0000;border-radius:5px;align-items:baseline;gap:8px;padding:5px 8px;font-size:11px;transition:background .12s;display:flex}.sc2-fn-item:hover{background:#f0f9ff;border-color:#3b82f633}.sc2-fn-item.sc2-fn-current{background:#3b82f61a;border-color:#3b82f666;animation:.9s ease-in-out infinite fn-pulse}@keyframes fn-pulse{0%,to{box-shadow:0 0 #3b82f626}50%{box-shadow:0 0 0 4px #3b82f614}}.sc2-fn-item.sc2-fn-passed{opacity:.85;background:#22c55e0a;border-color:#22c55e33}.sc2-fn-status{color:#94a3b8;text-align:center;flex-shrink:0;width:14px;font-size:12px}.sc2-fn-current .sc2-fn-status{color:#2563eb}.sc2-fn-passed .sc2-fn-status{color:#16a34a}.sc2-fn-name{color:#374151;flex-shrink:0;min-width:140px;font-family:monospace;font-size:11px}.sc2-fn-desc{color:#64748b;flex:1;font-size:11px;line-height:1.4}.sc2-fn-score{flex-shrink:0;font-family:monospace;font-size:10px;font-weight:700}.sc2-danger-section{margin-top:4px}.sc2-steps{scrollbar-width:thin;scrollbar-color:#6378b426 transparent;background:#f1f5f9;border:1px solid #e5e7eb;border-radius:8px;flex-flow:row;align-items:center;gap:0;margin-top:8px;padding:10px 12px;display:flex;overflow-x:auto}.sc2-step-row{color:#64748b;white-space:nowrap;border-radius:5px;flex-shrink:0;align-items:center;gap:6px;padding:4px 8px;font-size:11px;display:flex;position:relative}.sc2-step-row+.sc2-step-row:before{content:"→";color:#cbd5e1;margin-right:8px;font-size:13px;font-weight:300}.sc2-step-row.sc2-step-current{color:#1d4ed8;background:#3b82f61a;font-weight:600;animation:.9s ease-in-out infinite fn-pulse}.sc2-step-row.sc2-step-past{color:#16a34a;opacity:.7;text-decoration:line-through}.sc2-step-num{color:#64748b;background:#e2e8f0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;font-family:monospace;font-size:9px;font-weight:700;display:flex}.sc2-step-current .sc2-step-num{color:#2563eb;background:#3b82f633}.sc2-step-past .sc2-step-num{color:#16a34a;background:#22c55e26}.sc2-step-label{white-space:normal;flex:none;max-width:180px;font-size:11px;line-height:1.4}.sc2-step-dot{color:#2563eb;font-size:12px;animation:.9s ease-in-out infinite badge-blink}.sc2-step-check{color:#16a34a;font-size:11px}
