/* 원본 index.html의 공통 스타일과 정적 요소 선언이다. 화면 구조와 선언 순서는 유지한다. */
:root{--bg:#f6f7f9;--ink:#202838;--muted:#8991a1;--line:#e8ebf0;--purple:#7162df}*{box-sizing:border-box}body{margin:0;font:13px 'DM Sans','Noto Sans KR',sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #bcb4f3;outline-offset:3px}button{border:0;background:none;color:inherit} .app{display:flex;min-height:100vh}.sidebar{width:236px;background:#fff;border-right:1px solid var(--line);padding:30px 19px;flex-shrink:0;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0}.brand{font-size:25px;font-weight:800;letter-spacing:-1px;padding:0 12px 33px;display:flex;align-items:center;gap:10px}.brand-mark{background:var(--purple);width:29px;height:29px;border-radius:10px;color:white;display:grid;place-items:center;font-size:26px}.workspace{border:1px solid var(--line);border-radius:9px;padding:12px;display:flex;align-items:center;gap:10px;margin-bottom:25px}.ws-icon{background:#eeebfc;color:var(--purple);padding:8px;border-radius:7px;font-weight:700}.workspace small{display:block;color:var(--muted);margin-top:3px;font-size:10px}.nav{display:flex;flex-direction:column;gap:5px}.nav button{text-align:left;padding:12px;border-radius:7px;display:flex;gap:12px;align-items:center;color:#6e7787}.nav button.active{background:#efecfd;color:#6e5bd7;font-weight:700}.nav-icon{font-size:17px;width:20px}.section-label{font-size:10px;letter-spacing:1.5px;color:#9ca3b0;margin:30px 12px 12px;display:flex;justify-content:space-between}.project-nav button{width:100%;text-align:left;padding:11px 12px;display:flex;gap:10px;align-items:center;border-radius:6px;color:#78808f;font-size:12px}.project-nav button.selected{background:#f5f5f9;color:#323b4c;font-weight:600}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0}.sidebar-foot{margin-top:auto;padding-top:35px}.tip{background:#f7f7fc;border:1px solid #eeedf6;border-radius:10px;padding:15px;font-size:11px;line-height:1.8;color:#85859c}.tip strong{display:block;color:#57516f;margin-bottom:4px}.user{display:flex;gap:10px;align-items:center;margin-top:22px;padding:0 9px}.avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:10px;background:#e9e4f7;color:#7763a0;font-weight:700}.user small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.main{margin-left:236px;flex:1;min-width:0}.topbar{height:74px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px}.breadcrumbs{font-size:11px;color:#8b93a1;display:flex;gap:13px;align-items:center}.breadcrumbs b{color:#536071;font-weight:500}.top-actions{display:flex;align-items:center;gap:19px}.search{border:1px solid var(--line);background:#fafbfc;border-radius:7px;padding:8px 12px;display:flex;gap:9px;align-items:center;color:#8b94a3}.search input{width:164px;border:0;outline:none;background:none;font-size:11px}.search kbd{font-size:9px;border:1px solid #e3e6eb;border-radius:3px;padding:2px 4px}.notification{position:relative;font-size:19px}.notification:after{content:'';position:absolute;width:5px;height:5px;border-radius:50%;background:#eb9989;top:3px;right:5px}.content{padding:33px 38px}.eyebrow{font-size:10px;letter-spacing:1.8px;color:#959dac;margin-bottom:8px}.heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.heading h1{font-size:26px;letter-spacing:-1px;margin:0 0 9px;font-weight:700}.heading p{font-size:12px;color:#8892a0;margin:0;line-height:1.7}.primary{background:var(--purple);color:#fff;border-radius:7px;padding:11px 17px;font-size:12px;box-shadow:0 3px 7px #7162df18}.summary{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:28px 0}.metric{background:white;border:1px solid var(--line);border-radius:10px;padding:19px 20px;display:flex;justify-content:space-between;align-items:center}.metric label{font-size:11px;color:#8c94a1}.metric strong{display:block;font-size:25px;margin-top:8px;font-weight:600}.metric strong small{font-size:10px;font-weight:400;color:#9ba3af;margin-left:7px}.metric-icon{width:37px;height:37px;border-radius:10px;display:grid;place-items:center;font-size:17px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin:30px 0 20px;gap:12px}.tabs{display:flex;background:#ebedf2;border-radius:8px;padding:4px;gap:3px}.tabs button{padding:8px 14px;color:#8b93a3;font-size:11px;border-radius:6px}.tabs button.active{background:#fff;color:#514879;box-shadow:0 2px 4px #2028380a;font-weight:600}.filters{display:flex;align-items:center;gap:9px}.filters select,.outline{background:white;border:1px solid #e2e5eb;border-radius:6px;padding:8px 11px;font-size:11px;color:#748093}.people{display:flex;margin-right:6px}.people .avatar{width:26px;height:26px;border:2px solid var(--bg);margin-left:-6px;font-size:8px}.board-wrap{overflow:auto;padding-bottom:20px}.board{display:grid;grid-template-columns:repeat(7,minmax(192px,1fr));gap:14px;min-width:1430px}.column{background:#eef0f4;border:1px solid #e9ecf1;border-radius:10px;padding:12px 10px;min-height:460px}.col-heading{display:flex;align-items:center;justify-content:space-between;margin:3px 3px 16px;font-size:11px;font-weight:600}.col-heading .title{display:flex;gap:7px;align-items:center}.count{background:#e4e7ed;padding:2px 5px;border-radius:4px;font-size:9px;color:#8b93a1}.card{background:#fff;border:1px solid #e6e9ef;border-radius:8px;margin-bottom:10px;padding:14px;box-shadow:0 2px 2px #1c2a3c03;cursor:pointer;transition:transform .15s,box-shadow .15s}.card:hover{transform:translateY(-2px);box-shadow:0 5px 12px #20283809}.card-top{display:flex;justify-content:space-between;align-items:center;font-size:9px;color:#9ba3b0}.tag{font-size:9px;padding:3px 6px;border-radius:4px;background:#ece9fb;color:#8b77c4}.card h3{font-size:12px;line-height:1.7;font-weight:500;margin:12px 0 8px;letter-spacing:-.2px}.card p{font-size:10px;color:#9ba2af;line-height:1.7;margin:0 0 13px}.card-meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:9px}.priority{background:#fff1eb;color:#d78c6f;border-radius:4px;padding:3px 6px}.priority.medium{background:#f9f3e3;color:#b49b58}.priority.low{background:#eef3f9;color:#8a9bb1}.card-bottom{border-top:1px solid #f0f1f4;margin-top:13px;padding-top:10px;display:flex;align-items:center;justify-content:space-between;font-size:9px;color:#98a0ad}.card-bottom .avatar{width:22px;height:22px;font-size:8px}.add-card{width:100%;padding:10px;font-size:11px;color:#a0a7b4;text-align:left}.board-note{display:flex;justify-content:space-between;font-size:10px;color:#a1a8b4;margin-top:9px}.table-wrap,.gantt{background:white;border:1px solid var(--line);border-radius:10px;overflow:auto}table{border-collapse:collapse;width:100%;min-width:780px;text-align:left}th{background:#fafbfc;font-size:10px;color:#9ba3af;font-weight:500;padding:15px}td{padding:16px 15px;border-top:1px solid var(--line);font-size:11px}tbody tr{cursor:pointer}tbody tr:hover{background:#faf9ff}.status{padding:4px 8px;border-radius:5px;background:#f0edfc;color:#7665b8;font-size:10px}.gantt-row{display:grid;grid-template-columns:230px repeat(14,1fr);min-width:950px;min-height:52px;border-bottom:1px solid var(--line);position:relative;align-items:center}.gantt-row>label{padding:15px;font-size:11px;border-right:1px solid var(--line);height:100%}.day{font-size:10px;text-align:center;color:#9ca3af}.bar{height:25px;background:#c8bef4;border-radius:5px;font-size:9px;padding:6px 9px;color:#645590;grid-row:1;z-index:1;margin:0 5px;white-space:nowrap;overflow:hidden}.gantt-head{background:#fafbfc;min-height:42px}.empty{padding:40px;text-align:center;color:#9098a6}.modal-backdrop{position:fixed;inset:0;background:#19223650;display:none;align-items:center;justify-content:center;z-index:10;padding:20px;backdrop-filter:blur(3px)}.modal-backdrop.open{display:flex}.modal{width:480px;background:white;border-radius:16px;padding:28px;box-shadow:0 20px 90px #19223630}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.modal h2{margin:0;font-size:19px}.field{display:block;font-size:11px;color:#7a8291;margin:15px 0}.field input,.field select,.field textarea{display:block;width:100%;padding:11px;border:1px solid #e1e5ed;border-radius:7px;margin-top:7px;background:#fafbfc;color:var(--ink)}.modal-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.mobile-brand{display:none}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#30384b;color:white;padding:12px 22px;border-radius:8px;font-size:12px;display:none;z-index:20}.project-banner{display:none} @media(min-width:1800px){.board{min-width:0}}@media(max-width:1100px){.sidebar{width:204px}.main{margin-left:204px}.content{padding:28px 24px}.topbar{padding:0 24px}.metric{padding:16px}.metric-icon{display:none}.people{display:none}}@media(max-width:720px){.sidebar{display:none}.main{margin-left:0}.topbar{height:60px;padding:0 18px}.mobile-brand{display:block;font-size:20px;font-weight:800;color:var(--purple)}.breadcrumbs{display:none}.search input{width:110px}.search kbd,.notification{display:none}.top-actions{gap:12px}.content{padding:25px 18px}.heading{align-items:flex-start}.heading h1{font-size:23px}.heading p{max-width:220px;font-size:11px}.primary{white-space:nowrap;padding:10px 12px;font-size:11px}.summary{grid-template-columns:repeat(2,1fr);gap:10px;margin:23px 0}.metric{padding:15px}.metric strong{font-size:23px}.toolbar{flex-wrap:wrap;margin-top:22px}.tabs{width:100%;justify-content:space-between}.tabs button{flex:1}.filters{width:100%;justify-content:flex-end}.board{min-width:1470px}.column{min-height:440px}.board-note{line-height:1.7;gap:15px}.project-banner{display:block;margin:18px 0 0}.project-banner select{width:100%;padding:10px;background:white;border:1px solid var(--line);border-radius:6px;color:#7d8594}.modal{padding:22px}}

.filter-panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:18px;margin:-4px 0 20px}.filter-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.filter-top strong{font-size:12px}.filter-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.filter-actions select,.condition select,.condition input{border:1px solid #e2e5eb;border-radius:6px;background:#fafbfc;padding:8px 10px;font-size:11px;color:#657184}.filter-actions select{max-width:210px}.condition{display:flex;align-items:center;gap:8px;margin-top:10px}.condition select:first-child{width:135px}.condition select:nth-child(2){width:115px}.condition input,.condition select:nth-child(3){flex:1;min-width:100px}.condition button{color:#a092b5;padding:8px}.filter-info{font-size:10px;color:#9a92ab;margin:12px 0 0}.active-filters{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.filter-chip{background:#f1eefb;color:#7b6caa;font-size:10px;padding:5px 9px;border-radius:5px}.filter-name{width:100%;border:1px solid var(--line);padding:12px;border-radius:7px;margin:14px 0}.quick-filters{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap}.quick-filters button{font-size:10px;border:1px solid var(--line);padding:6px 10px;border-radius:20px;color:#8b829e}.quick-filters button:hover{background:#f0edfc}.filter-panel summary{cursor:pointer;list-style:none}.filter-panel summary::-webkit-details-marker{display:none}@media(max-width:720px){.condition{flex-wrap:wrap;padding:10px;background:#fafbfc;border-radius:7px}.condition select:first-child,.condition select:nth-child(2){flex:1;width:auto}.condition input,.condition select:nth-child(3){flex-basis:80%;width:80%}.filter-top{align-items:flex-start}.filter-actions{width:100%}.filter-panel{padding:14px}.filters{flex-wrap:wrap}}
.kanban-settings{background:#fff;border:1px solid var(--line);border-radius:9px;padding:14px 16px;margin-bottom:16px}.kanban-settings-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-size:11px}.column-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.column-option{display:flex;align-items:center;gap:6px;padding:7px 10px;border:1px solid var(--line);border-radius:6px;font-size:11px;color:#8e95a2;cursor:pointer}.column-option.checked{background:#f3f0fd;border-color:#d9d0f6;color:#75639f}.column-option input,.hide-empty input{accent-color:var(--purple)}.hide-empty{font-size:11px;color:#8d94a1;display:flex;align-items:center;gap:5px}.kanban-caption{font-size:10px;color:#a0a7b3;margin:12px 0 0}.board.selectable-board{grid-template-columns:repeat(var(--column-count),minmax(220px,1fr));min-width:calc(var(--column-count) * 234px - 14px)}@media(max-width:720px){.board.selectable-board{grid-template-columns:repeat(var(--column-count),minmax(240px,1fr));min-width:calc(var(--column-count) * 254px - 14px)}}

.board.selectable-board.jira-board{grid-template-columns:repeat(var(--column-count),280px);min-width:calc(var(--column-count) * 292px - 12px);gap:12px;align-items:start;justify-content:start}.jira-board .column{background:#f7f8fa;border:0;border-radius:12px;padding:6px;min-height:0}.jira-board .col-heading{height:30px;margin:0 10px 4px;font-size:12px;font-weight:400;color:#505967}.jira-board .count{background:none;font-size:11px;color:#75829a;padding:0;margin-left:2px}.jira-board .card{border:1px solid #e6e8ed;border-bottom-color:#c6cbd3;border-radius:9px;padding:13px 12px;margin-bottom:2px;box-shadow:0 1px 1px #182b4910;min-height:82px}.jira-board .card:hover{background:#fafbff;transform:none;box-shadow:0 1px 2px #182b4920}.jira-board .card h3{font-size:13px;font-weight:400;margin:0 0 10px;line-height:1.6;color:#25334b}.jira-board .issue-date{font-size:11px;margin:0 0 12px;color:#52627a}.jira-board .issue-footer{display:flex;align-items:center;gap:7px;font-size:11px;color:#536175}.issue-type{color:#619d2a;font-size:16px;line-height:1}.issue-key{font-size:11px}.issue-priority{margin-left:auto;font-size:16px;font-weight:500}.jira-board .avatar{width:24px;height:24px;font-size:10px;background:#dfe1e6;color:#596371}.jira-board .add-card{margin-top:5px;padding:2px;border:1px dashed #d4d8df;border-radius:8px;text-align:center;font-size:18px;height:26px;color:#b0b7c2}.jira-board .add-card:hover{background:#eef1f6;color:#5a6c86}.inline-create{background:white;border:2px solid #4d8eff;border-radius:8px;padding:11px;margin-top:6px}.inline-create textarea{width:100%;resize:vertical;min-height:53px;border:0;outline:none;font-size:12px;line-height:1.7;color:#25334b}.inline-create select,.inline-create input{width:100%;border:1px solid #e4e7ed;border-radius:5px;padding:6px;font-size:10px;margin:4px 0;color:#6e7b91;background:#fafbfc}.inline-create label{font-size:10px;color:#818b9c}.inline-create-footer{display:flex;align-items:center;justify-content:space-between;margin-top:8px}.inline-create-footer button{font-size:10px;padding:6px 9px;border-radius:5px}.inline-create-footer button[type=submit]{background:#e9efff;color:#3976dd}.kanban-settings{margin-bottom:18px;padding:11px 14px}.kanban-settings summary{cursor:pointer;list-style:none}.kanban-settings summary::-webkit-details-marker{display:none}.filter-panel{margin-bottom:12px}.board-wrap{padding-bottom:16px}@media(max-width:720px){.board.selectable-board.jira-board{grid-template-columns:repeat(var(--column-count),270px);min-width:calc(var(--column-count) * 282px - 12px)}}

.issue-modal{width:min(1240px,96vw);height:min(890px,94vh);padding:0;display:flex;flex-direction:column;border-radius:12px}.issue-modal-header{display:flex;align-items:center;justify-content:space-between;padding:24px 30px;font-size:12px;color:#717987;flex-shrink:0}.issue-modal-header button{border:1px solid var(--line);border-radius:5px;width:32px;height:32px}.issue-modal-body{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(290px,1fr);gap:40px;padding:0 30px 24px;overflow:auto;flex:1}.issue-main h3,.issue-details h3{font-size:14px;margin:24px 0 12px;font-weight:600}.issue-title-input{width:100%;font-size:24px;font-weight:700;letter-spacing:-.5px;border:0;background:#f1f2f4;padding:11px;border-radius:6px;color:#2e3440}.issue-description{width:100%;border:1px solid transparent;resize:vertical;border-radius:6px;padding:10px;font:12px 'Noto Sans KR',sans-serif;line-height:1.8;background:#fff;outline:none}.issue-description:hover{background:#fafbfc}.issue-description:focus{border-color:#5996ff}.comment-input{border-color:#dde1e9;margin-top:12px}.issue-details{border:1px solid #dfe2e8;border-radius:8px;padding:0 18px 18px;margin-top:13px}.issue-details .field{display:grid;grid-template-columns:100px 1fr;align-items:center;margin:15px 0;gap:5px;font-size:12px}.issue-details .field input,.issue-details .field select{margin:0;background:white;font-size:12px;border-color:transparent;padding:7px;min-width:0}.issue-details .field input:hover,.issue-details .field select:hover{border-color:#dce1e9}.issue-details .field small{grid-column:2;line-height:1.8;color:#9c92a9;font-size:10px}.issue-status{border:1px solid #8fb5ff;border-radius:5px;background:#dfebff;padding:8px 12px;color:#2361bf;font-size:12px;margin-top:10px}.issue-hint{font-size:10px;color:#98a0ad;line-height:1.8}.issue-modal-footer{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--line);padding:15px 30px;flex-shrink:0}.activity-tabs{display:flex;gap:4px;padding:3px;border:1px solid var(--line);border-radius:6px;width:max-content}.activity-tabs button{padding:5px 12px;font-size:11px;color:#7a8597;border-radius:4px}.activity-tabs button.active{background:#e9f0ff;color:#3978dc}.activity-item{display:flex;gap:10px;margin:15px 0;font-size:12px;line-height:1.8}.activity-item small{color:#9ca3b1;font-size:10px}.issue-dev{border:1px solid var(--line);border-radius:6px;padding:13px;font-size:11px;line-height:1.9;color:#8490a2}.dev-page{background:#fff;border:1px solid var(--line);border-radius:10px;padding:23px}.dev-header{display:flex;justify-content:space-between;align-items:center;gap:15px;flex-wrap:wrap;margin-bottom:20px}.dev-header h2{font-size:18px;margin:0 0 8px}.dev-header p{font-size:11px;color:#939bad;margin:0}.dev-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0}.dev-metric{border:1px solid #dfe3ea;border-radius:7px;padding:18px}.dev-metric strong{display:block;font-size:25px;margin:14px 0 5px}.dev-metric label{font-size:11px}.dev-metric small{font-size:10px;color:#99a2b1}.dev-config{border:1px solid var(--line);border-radius:7px;padding:16px;margin:18px 0}.dev-config summary{font-size:12px;cursor:pointer}.dev-config-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.dev-config .field{margin:13px 0}.dev-table-title{font-size:13px;margin:25px 0 12px}.dev-status{display:inline-block;background:#e9f4ed;color:#559878;padding:4px 8px;border-radius:4px;font-size:10px}.dev-status.running{background:#edf2ff;color:#708dc3}.mock-label{font-size:10px;padding:4px 8px;border-radius:4px;background:#fff3df;color:#b68c46}.dev-page a,.issue-dev a{color:#3576d1;text-decoration:none}.dev-page table{min-width:680px}.dev-page td{font-size:11px}.dev-page .table-wrap{border-radius:6px}.issue-details .field span{font-size:10px}@media(max-width:720px){.issue-modal{width:100%;height:95vh}.issue-modal-header{padding:16px}.issue-modal-body{grid-template-columns:1fr;padding:0 16px 20px;gap:15px}.issue-side{grid-row:2}.issue-title-input{font-size:20px}.issue-modal-footer{padding:12px 16px}.dev-metrics{grid-template-columns:repeat(2,1fr)}.dev-config-grid{grid-template-columns:1fr}.dev-page{padding:15px}}

.dashboard-banner{border-radius:8px;background:#ebf2ff;color:#4d6b99;padding:19px 23px;margin-bottom:20px;font-size:12px;line-height:1.9}.dashboard-banner strong{color:#315787;display:block;font-size:13px}.dashboard-counters{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.dashboard-counter{background:white;border:1px solid #dfe3e9;border-radius:8px;padding:17px;display:flex;align-items:center;gap:12px}.dashboard-counter .metric-icon{display:grid}.dashboard-counter b{font-size:14px}.dashboard-counter small{display:block;font-size:10px;color:#9ca6b5;margin-top:5px}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.dashboard-panel{background:white;border:1px solid #dfe3e9;border-radius:9px;padding:20px;min-width:0}.dashboard-panel h3{font-size:14px;margin:0 0 7px}.dashboard-panel p{font-size:11px;color:#8996a8;margin:0 0 20px;line-height:1.7}.donut-layout{display:flex;align-items:center;gap:30px;padding:20px 8px;flex-wrap:wrap}.donut{width:190px;height:190px;border-radius:50%;position:relative;display:grid;place-items:center;flex-shrink:0}.donut:before{content:'';position:absolute;inset:25px;background:white;border-radius:50%}.donut-label{position:relative;text-align:center;font-size:12px;color:#7d8796}.donut-label strong{display:block;font-size:28px;color:#38455b}.chart-legend{display:flex;flex-direction:column;gap:10px}.chart-legend button{font-size:11px;color:#798599;text-align:left;display:flex;gap:8px;align-items:center}.activity-feed{max-height:270px;overflow:auto}.feed-event{display:flex;gap:11px;margin:14px 0;font-size:11px;line-height:1.8}.feed-event button{color:#367bdb;padding:0;text-align:left}.feed-event small{display:block;color:#9ba5b3;font-size:10px}.bar-chart{height:220px;display:flex;align-items:flex-end;gap:25px;padding:15px 20px 25px;border-bottom:1px solid #e1e5ec;background:repeating-linear-gradient(to top,transparent 0,transparent 48px,#eef1f5 49px,#eef1f5 50px)}.chart-column{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;position:relative}.chart-column button{width:70%;min-height:2px;background:#899dbd;border-radius:4px 4px 0 0;color:white;font-size:12px;padding:3px}.chart-column label{position:absolute;bottom:-22px;font-size:10px;color:#8c96a5}.workload-row{display:grid;grid-template-columns:80px 1fr 40px;gap:12px;align-items:center;margin:20px 0;font-size:11px}.workload-track{height:18px;background:#edf0f5;border-radius:4px;overflow:hidden}.workload-track span{display:block;height:100%;background:#8fa9d1;border-radius:4px}.due-list{display:flex;flex-direction:column;gap:12px}.due-list button{display:flex;justify-content:space-between;gap:15px;border:1px solid var(--line);padding:11px;border-radius:6px;font-size:11px;text-align:left}.due-list small{color:#92a0b4}.dashboard-empty{font-size:11px;color:#a0a9b8;padding:35px 5px;line-height:1.9}.dashboard-footer{font-size:10px;color:#a1aab8;margin-top:16px}@media(max-width:900px){.dashboard-counters{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.donut-layout{justify-content:center}}@media(max-width:720px){.dashboard-counter{padding:12px;gap:8px}.dashboard-counter b{font-size:12px}.dashboard-counter .metric-icon{width:28px;height:28px;font-size:14px}.dashboard-panel{padding:16px}.tabs{flex-wrap:wrap}.tabs button{white-space:nowrap;min-width:80px}.dashboard-banner{padding:15px}}
body:has(.dashboard-grid) .summary,body:has(.dev-page) .summary{display:none}.issue-details .field:has(#taskDate){display:block}.issue-details .field:has(#taskDate) input{width:100%;margin-top:7px;border-color:#e4e7ee}.issue-details .field:has(#taskDate) small{display:block;margin-top:5px}.modal-backdrop:has(.issue-modal){background:#222d4255;backdrop-filter:none}body:has(#modal.open){overflow:hidden}
.review-modal{width:510px;max-height:94vh;overflow:auto}.modal-backdrop#reviewModal{z-index:15}.date-shortcuts,.date-custom{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:9px 0;font-size:10px;color:#9ba5b5}.date-shortcuts button{padding:6px 10px;border:1px solid #dce5f5;background:#f0f5ff;border-radius:5px;font-size:10px;color:#6989bb}.date-custom input{width:65px;padding:7px;border:1px solid var(--line);border-radius:5px}.date-explanation{font-size:10px;color:#98a3b5;line-height:1.9;margin:17px 0}.calendar-page{background:white;border:1px solid var(--line);border-radius:10px;padding:25px}.calendar-page h2{font-size:18px;margin:0 0 8px}.calendar-page>p{font-size:11px;color:#99a4b3;line-height:1.8}.calendar-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:25px 0}.calendar-box{border:1px solid var(--line);border-radius:8px;padding:20px}.calendar-box h3{font-size:13px;margin:0 0 17px}.weekday-options{display:flex;gap:10px;flex-wrap:wrap}.weekday-options label{padding:9px;border:1px solid var(--line);border-radius:6px;font-size:12px}.weekday-options input{accent-color:var(--purple)}.holiday-form{display:flex;gap:7px;flex-wrap:wrap}.holiday-form input{border:1px solid var(--line);border-radius:5px;padding:9px;font-size:11px;min-width:0;flex:1}.holiday-row{display:flex;gap:10px;padding:12px 0;border-bottom:1px solid var(--line);font-size:11px;align-items:center}.holiday-row button{margin-left:auto;color:#ab8191}.calendar-note{font-size:10px;color:#9da6b4;line-height:1.9}.calendar-preview{margin-top:20px;background:#f5f8ff;padding:14px;border-radius:6px;font-size:11px;color:#728bb2}@media(max-width:720px){.calendar-grid{grid-template-columns:1fr}.review-modal{padding:20px}.calendar-page{padding:17px}}
body:has(#reviewModal.open){overflow:hidden}.issue-details .field:has(#taskStartDate){grid-template-columns:115px 1fr}
.ai-avatar{background:#e7e4ff!important;color:#7869c4!important}.ai-page{background:white;border:1px solid var(--line);border-radius:10px;padding:24px}.ai-page h2{font-size:19px;margin:0 0 10px}.ai-page h3{font-size:14px;margin:20px 0 13px}.ai-page p{font-size:11px;line-height:1.9;color:#8c98aa}.ai-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.ai-box{padding:18px;border:1px solid var(--line);border-radius:8px;min-width:0}.agent-row{display:flex;gap:10px;margin:15px 0;align-items:center}.agent-row strong{font-size:12px}.agent-row small{display:block;font-size:10px;color:#94a0b1;margin-top:5px}.ai-page pre{white-space:pre-wrap;word-break:break-all;font-size:10px;line-height:1.9;background:#f5f6fa;border-radius:6px;padding:14px}.key-table{overflow:auto}.key-row{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding:12px 0;font-size:11px;line-height:1.9}.key-row small{color:#94a0b2;display:block}.key-row button{color:#b1808b;font-size:10px}.key-reveal{padding:16px;background:#edf4ff;border:1px solid #b8d0f4;border-radius:7px;margin:20px 0}.key-reveal code{display:block;word-break:break-all;padding:10px 0;font-size:12px}.server-badge{font-size:10px;padding:4px 8px;border-radius:5px;background:#edf5ef;color:#66947b}.file-badge{background:#fff4e3;color:#bc985b}.ai-page input[type=file]{font-size:11px;width:100%}@media(max-width:850px){.ai-grid{grid-template-columns:1fr}}
.card-assignee{display:flex;align-items:center;gap:5px;min-width:0;max-width:130px}.card-assignee .avatar{flex-shrink:0}.assignee-name{font-size:10px;color:#748196;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#transitionModal{z-index:16}.report-preview{border:1px solid var(--line);padding:16px;border-radius:7px;font-size:12px;line-height:1.9}.report-preview p{white-space:pre-wrap;font-size:11px;color:#8693a5}.report-card{border:1px solid var(--line);padding:16px;border-radius:8px;margin:12px 0}.report-card h3{font-size:13px;margin:0 0 8px}.report-card p{font-size:11px;white-space:pre-wrap;line-height:1.8;color:#8592a4}.report-card .outline{margin-right:6px}.issue-details textarea{width:100%;border:1px solid var(--line);border-radius:6px;padding:8px;font-size:11px;resize:vertical}.issue-details .field:has(textarea){display:block}.issue-details .field:has(textarea) textarea{margin-top:8px}#reportApproval{padding-top:12px;font-size:11px;color:#7f8da4;line-height:1.8}body:has(#transitionModal.open){overflow:hidden}
.task-hover-popup{position:fixed;z-index:30;width:320px;max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);overflow:hidden;background:#fff;border:1px solid #dce3ee;border-radius:10px;box-shadow:0 10px 35px #182c4926;padding:16px;pointer-events:auto}.task-hover-popup[hidden]{display:none}.hover-task-key{font-size:10px;color:#98a3b5;margin-bottom:7px}.task-hover-popup h4{font-size:13px;line-height:1.7;margin:0 0 10px;color:#324158;overflow-wrap:anywhere}.hover-task-meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;font-size:10px;color:#8592a5}.hover-task-meta span{padding:4px 7px;background:#f1f4f9;border-radius:4px}.hover-task-body{font-size:11px;line-height:1.9;color:#737f93;white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:8;-webkit-box-orient:vertical;overflow:hidden}.hover-task-note{margin-top:10px;padding-top:9px;border-top:1px solid #eef1f5;font-size:9px;color:#a0aabc}.hover-task-reason{font-size:10px;color:#a08c7d;margin-top:10px;white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}@media(hover:none){.task-hover-popup{display:none}}
.attachment-dropzone{border:1px dashed #c8d3e6;border-radius:8px;padding:17px;background:#f9fbff;font-size:11px;line-height:1.9;color:#8192aa}.attachment-dropzone.drag-over{background:#edf2ff;border-color:#718ddb}.attachment-dropzone small{font-size:10px;color:#a0a9b9}.attachment-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}.attachment-item{border:1px solid var(--line);border-radius:7px;overflow:hidden;min-width:0}.attachment-preview{height:125px;background:#f3f5f9;display:grid;place-items:center}.attachment-preview img{width:100%;height:100%;object-fit:contain}.attachment-info{padding:10px;display:flex;gap:7px;align-items:center;font-size:10px}.attachment-info a{color:#5b7fb4;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.attachment-info small{color:#9ca8b8;font-size:9px}.attachment-info button{color:#bd8690}@media(max-width:720px){.attachment-list{grid-template-columns:1fr}}
.gitlab-diff-modal{width:min(1150px,96vw);height:min(780px,92vh);padding:0;display:flex;flex-direction:column}#gitlabChangeModal{z-index:18}.diff-header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px;border-bottom:1px solid var(--line)}.diff-header h2{font-size:18px;margin:0 0 9px}.diff-header #gitlabChangeMeta{font-size:11px;color:#93a0b2;line-height:1.9}.diff-layout{display:grid;grid-template-columns:250px minmax(0,1fr);flex:1;min-height:0}.diff-layout aside{border-right:1px solid var(--line);overflow:auto;padding:15px}.diff-file-button{display:block;width:100%;text-align:left;padding:12px 9px;font-size:11px;word-break:break-all;border-radius:6px;color:#8493a7}.diff-file-button.active{background:#f0edfd;color:#7364b8}.diff-file-button small{display:block;margin-top:7px}.diff-content{overflow:auto;padding:20px;min-width:0}.commit-info{font-size:11px;color:#8896aa;padding:12px;background:#f8f9fc;border:1px solid var(--line);border-radius:7px;margin-bottom:20px;line-height:1.9}.diff-path{font-size:12px;margin:0;padding:12px;border:1px solid var(--line);background:#f7f9fc;border-radius:6px 6px 0 0}.diff-code{font:11px/1.9 Consolas,monospace;overflow:auto;border:1px solid var(--line);border-top:0;border-radius:0 0 6px 6px}.diff-line{display:flex;min-width:max-content;white-space:pre;padding:3px 12px;gap:14px}.diff-line.added{background:#eaf5ed;color:#537b5d}.diff-line.removed{background:#fbeeee;color:#a96e72}.diff-line.hunk{background:#edf2fb;color:#8598ba}.diff-line-number{width:24px;text-align:right;color:#a5afbc;user-select:none;flex-shrink:0}.diff-footer{padding:14px 22px;font-size:10px;color:#a1aaba;border-top:1px solid var(--line)}body:has(#gitlabChangeModal.open){overflow:hidden}@media(max-width:720px){.diff-layout{grid-template-columns:1fr;overflow:auto;display:block}.diff-layout aside{border-right:0;border-bottom:1px solid var(--line);max-height:155px}.diff-content{padding:13px}.diff-header{padding:16px}.diff-header h2{font-size:15px}}
.approval-card{border:1px solid var(--line);border-radius:8px;padding:19px;margin:15px 0}.approval-card h3{margin:0 0 9px;font-size:14px}.approval-meta{font-size:10px;color:#929eaf;margin:10px 0;line-height:1.9}.approval-diff{display:grid;grid-template-columns:1fr 1fr;gap:12px}.approval-value{white-space:pre-wrap;overflow-wrap:anywhere;background:#fafbfc;border:1px solid var(--line);border-radius:5px;padding:12px;font-size:11px;line-height:1.8}.approval-value.proposed{background:#f1f7f2}.approval-card textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:6px;margin:12px 0;font-size:11px}.approval-buttons{display:flex;gap:9px}.approval-heading{display:flex;justify-content:space-between;align-items:center;gap:15px}@media(max-width:720px){.approval-diff{grid-template-columns:1fr}}
.gantt-controls{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:15px}.gantt-controls input{padding:8px;border:1px solid var(--line);border-radius:6px;font-size:11px;color:#788ba5}.gantt-column-picker{background:white;border:1px solid var(--line);border-radius:8px;padding:12px;margin-bottom:15px}.gantt-column-picker summary{cursor:pointer;font-size:11px;color:#8895a7}.gantt-column-options{display:flex;flex-wrap:wrap;gap:12px;margin-top:14px;font-size:11px;color:#8a97aa}.gantt-column-options input{accent-color:var(--purple)}.gantt-table{overflow:auto;border:1px solid var(--line);border-radius:8px;background:white;max-height:65vh}.gantt-grid-row{display:grid;grid-template-columns:var(--left-width) var(--timeline-width);height:48px;min-width:calc(var(--left-width) + var(--timeline-width));border-bottom:1px solid var(--line);position:relative}.gantt-grid-header{position:sticky;top:0;z-index:4;height:43px;background:#f7f9fc}.gantt-left{position:sticky;left:0;z-index:2;display:grid;grid-template-columns:var(--left-columns);background:white;border-right:2px solid #dfe4ee;box-shadow:3px 0 5px #20283805;overflow:hidden}.gantt-grid-header .gantt-left{background:#f7f9fc}.gantt-cell{padding:15px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;color:#77879d;border-right:1px solid #edf0f5}.gantt-grid-header .gantt-cell{padding-top:13px;color:#8f9cae;font-size:10px}.gantt-timeline{position:relative;display:grid;grid-template-columns:repeat(var(--days),34px);height:100%;background:repeating-linear-gradient(to right,transparent 0,transparent 33px,#edf1f6 33px,#edf1f6 34px)}.gantt-day{font-size:9px;text-align:center;padding:8px 0;color:#8d9db2;line-height:1.5}.gantt-day.weekend{background:#edf0f5;color:#b1b8c4}.gantt-day.today{color:#7364bf;background:#eeeafa}.gantt-timeline-bar{position:absolute;top:12px;height:24px;border-radius:5px;display:flex;align-items:center;padding:0 8px;color:#64718b;font-size:10px;overflow:hidden;white-space:nowrap}.gantt-today-marker{position:absolute;top:0;bottom:0;width:1px;background:#c2b7ec;pointer-events:none}.gantt-grid-row:not(.gantt-grid-header):hover .gantt-left{background:#faf9ff}.gantt-unscheduled{position:absolute;top:16px;left:12px;font-size:10px;color:#aeb7c5}.gantt-help{font-size:10px;color:#98a6b8;margin:12px 0;line-height:1.9}
.person-filters{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-top:15px;font-size:10px;color:#98a3b5}.person-filters>span{margin-right:6px}.person-filters button{border:1px solid #e4e8f0;border-radius:6px;padding:7px 11px;color:#8996ab;font-size:11px}.person-filters button.active{background:#efebfd;border-color:#d4caef;color:#7865b0}.team-choice{display:flex;align-items:center;gap:9px;padding:12px;border:1px solid var(--line);border-radius:6px;margin:8px 0;font-size:12px;color:#8391a6}.team-choice input{accent-color:var(--purple)}#teamModal{z-index:18}
.org-section{margin:22px 0}.org-form{display:flex;gap:9px;flex-wrap:wrap;padding:16px;background:#f7f9fc;border-radius:8px;align-items:center}.org-form input,.org-form select,.org-table input,.org-table select{border:1px solid var(--line);border-radius:5px;padding:8px;font-size:11px;max-width:200px}.org-form input{flex:1;min-width:120px}.org-team{border:1px solid var(--line);border-radius:8px;padding:17px;margin:12px 0}.org-team h3{font-size:13px;margin:0 0 8px}.org-members{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0;font-size:11px;color:#8794a7}.org-members label{padding:7px;border:1px solid var(--line);border-radius:5px}.org-table{overflow:auto}.org-table table{min-width:720px}.org-save{display:flex;justify-content:flex-end;margin:20px 0}.org-team-info{font-size:11px;color:#9ba5b4;line-height:1.8}.org-warning{font-size:10px;color:#a99679;line-height:1.9}
/* 실제 회원 표는 열을 압축하지 않고 표 안의 가로 스크롤로 이름·관리 동작을 읽게 한다. */
.java-organization-members-table table{min-width:1120px}.java-organization-members-table th{white-space:nowrap}.java-organization-members-table [data-member-name]{width:160px;min-width:160px}.java-organization-members-table [data-member-password-reset]{white-space:nowrap}.java-organization-members-table [data-member-delete]{min-width:90px;white-space:nowrap}
/* 삭제 진입점은 표를 가로로 움직이기 전에도 보이며 다른 열은 기존 순서로 스크롤한다. */
.java-organization-members-table th:last-child,.java-organization-members-table td:last-child{position:sticky;right:0;background:#fff;z-index:1;box-shadow:-4px 0 7px #2028380a}.java-organization-members-table th:last-child{z-index:2}
.body-editor{min-height:155px;border:1px solid #e3e7ee;background:white;white-space:pre-wrap;overflow-wrap:anywhere;padding:13px}.body-editor:empty:before{content:attr(data-placeholder);color:#a0aabc;pointer-events:none}.body-editor p{margin:0 0 10px;min-height:20px}.body-editor img{display:block;max-width:100%;max-height:480px;object-fit:contain;border:1px solid #e1e5ed;border-radius:6px;margin:12px 0;background:#fafbfc}.body-editor:focus{outline:2px solid #dce8ff;border-color:#80a8e7}#taskMemo[hidden]{display:none}
.card-report-badge{display:inline-block;font-size:9px;background:#eaf5ed;color:#629078;border-radius:4px;padding:3px 6px;margin-bottom:8px}.card-report-badge.pending{background:#fff4e2;color:#ad966c}.subtask-parent{font-size:9px;color:#9ba8ba;margin:3px 0 10px}.subtask-row{display:flex;gap:10px;padding:10px;border:1px solid var(--line);border-radius:5px;margin:8px 0;font-size:11px;color:#8393a8}.subtask-row button{text-align:left;color:#5884b8}.kanban-context-menu{position:fixed;z-index:35;width:210px;background:white;border:1px solid #dce3ed;border-radius:8px;box-shadow:0 8px 30px #1f334125;padding:6px}.kanban-context-menu[hidden]{display:none}.kanban-context-menu button{display:block;width:100%;text-align:left;font-size:11px;padding:10px 12px;border-radius:5px}.kanban-context-menu button:hover{background:#f0edfc}.kanban-context-menu button:disabled{color:#bec5d0;cursor:default}.context-label{font-size:9px;color:#9da9b9;padding:8px 12px;border-top:1px solid var(--line)}
[hidden]{display:none!important}.mobile-admin{display:none}@media(max-width:900px){.mobile-admin{display:inline-flex}}
.mobile-review-nav{display:none}@media(max-width:900px){.mobile-review-nav{display:flex;gap:8px;margin-bottom:20px}.mobile-review-nav button.active{background:#efecfd;color:#6e5bd7}}
.gantt-column-order{display:flex;flex-wrap:wrap;gap:8px;padding:12px;border-top:1px solid #e8ebf0}.gantt-column-order>small{flex-basis:100%;color:#8991a1}.gantt-order-item{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#f6f7fb;border-radius:6px}.gantt-order-item button{border:1px solid #ddd;border-radius:4px;padding:3px 7px}.gantt-order-item button:disabled{opacity:.3;cursor:default}.gantt-draggable-column{cursor:grab}.gantt-draggable-column:active{cursor:grabbing}
.hierarchy-title{display:inline-flex;align-items:center;gap:8px}.child-count{font-size:9px;color:#7162df;background:#efecfd;border-radius:4px;padding:2px 5px;white-space:nowrap}.card-children{border-top:1px solid #e8ebf0;margin:8px 0;padding-top:8px}.child-heading{font-size:10px;color:#8991a1;margin-bottom:5px}.card-children button{display:flex;justify-content:space-between;gap:6px;width:100%;padding:6px 2px;text-align:left;font-size:10px}.card-children button:hover{background:#efecfd}.card-children button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-children button small{white-space:nowrap;color:#8991a1}
.card-parent-heading{background:#f2f0fc;border-left:3px solid #9a8be4;border-radius:4px;padding:8px;margin:0 0 9px}.card-parent-heading small{display:block;font-size:9px;color:#9184b7;margin-bottom:4px}.card-parent-heading strong{display:block;color:#655690;font-size:11px;font-weight:500;overflow-wrap:anywhere}.task-relation{display:inline-block;font-size:9px;padding:3px 6px;border-radius:4px;margin:0 4px 7px 0}.task-relation.child{background:#edf4fa;color:#6486a5}.task-relation.parent{background:#efecfd;color:#7861b2}.card-children{margin:12px 0 0;padding-top:10px}
.member-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.member-section-heading h3{margin:0}.new-member-form{padding:18px;background:#f8f7fd;border:1px solid #e3dff5;border-radius:8px;margin-bottom:20px}.new-member-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.new-member-form p{font-size:11px;color:#8991a1}@media(max-width:600px){.new-member-fields{grid-template-columns:1fr}}
.sidebar{overflow-y:auto}.sidebar-hide{position:absolute;right:12px;top:12px;font-size:22px;color:#8991a1}.sidebar-hamburger{display:none;font-size:23px;padding:6px;margin-right:10px}.sidebar-hidden .sidebar{display:none}.sidebar-hidden .main{margin-left:0}.sidebar-hidden .sidebar-hamburger{display:block}.sidebar-group{margin-top:12px}.sidebar-group>summary{display:flex;align-items:center;justify-content:space-between;cursor:pointer;list-style:none;padding:8px 12px;color:#8991a1;font-size:11px}.sidebar-group>summary::-webkit-details-marker{display:none}.sidebar-group>summary:after{content:'▸';margin-left:8px}.sidebar-group[open]>summary:after{content:'▾'}.sidebar-group>summary .section-label{margin:0;padding:0;flex:1;letter-spacing:1px}.sidebar-overlay{display:none}@media(max-width:720px){.sidebar-hamburger{display:block}.sidebar-mobile-open .sidebar{display:flex;z-index:50;width:236px;box-shadow:10px 0 40px #20283820}.sidebar-mobile-open .sidebar-overlay{display:block;position:fixed;inset:0;background:#20283855;z-index:49}}
.multi-assignee-picker{display:flex;flex-wrap:wrap;gap:8px;padding:10px;border:1px solid #e1e5ec;border-radius:6px;background:#fff}.multi-assignee-picker label{display:flex;align-items:center;gap:5px;font-size:11px}.multi-assignee-picker input{width:auto!important;margin:0}.multi-assignee-picker small{flex-basis:100%;font-size:9px;color:#8991a1}
.multi-assignee-picker .assignee-team-toggle{flex-basis:100%;padding-bottom:8px;border-bottom:1px solid #e8ebf0;color:#7162df}.assignee-selection-caption{padding-top:6px;border-top:1px solid #e8ebf0}.assignee-outside-selection{color:#8991a1}
.demo-panel{background:#f8f7fd;border:1px solid #e3dff5;border-radius:8px;padding:12px 16px;margin:18px 0}.demo-panel summary{cursor:pointer;color:#7162df;font-weight:600}.demo-panel p,.demo-panel small{font-size:11px;line-height:1.8;color:#8991a1}.demo-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.toolbar{position:sticky;top:0;z-index:12;background:var(--bg);padding:12px 0;margin-top:16px;margin-bottom:12px}.compact-dashboard{margin:0 0 18px}.compact-dashboard-heading{display:flex;align-items:center;justify-content:space-between;color:#8991a1;font-size:11px;padding:4px 0 10px}.compact-dashboard-heading button{color:#7162df;padding:5px 8px;border-radius:5px}.compact-dashboard .summary{margin-top:0;margin-bottom:0}
:root{--surface:#fff;--surface-muted:#f7f8fa;--panel-radius:10px}body,.main{background:var(--bg)}#view{background:transparent}.jira-board .column{background:var(--surface-muted);border:1px solid var(--line);border-radius:var(--panel-radius)}.card,.dashboard-panel,.dashboard-counter,.table-wrap,.gantt-table,.calendar-page,.ai-page,.development-page{background:var(--surface);border-color:var(--line);border-radius:var(--panel-radius)}
.child-all-done{font-size:10px;color:#478760;background:#edf7ef;border-radius:4px;padding:4px 6px;margin-top:8px}[data-gantt-collapse]{padding:4px 7px;color:#7162df;flex-shrink:0}
.gantt-row-controls{display:flex;align-items:center;justify-content:center;gap:4px;border-right:1px solid var(--line)}.gantt-row-controls button{border:1px solid var(--line);border-radius:4px;padding:4px 6px;color:#7162df}.gantt-row-controls button:disabled{opacity:.3}.gantt-controls select{padding:8px;border:1px solid var(--line);border-radius:6px;background:white}
.monthly-page{background:var(--surface);border:1px solid var(--line);border-radius:var(--panel-radius);padding:18px}.month-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.month-navigation{display:flex;align-items:center;gap:10px}.month-navigation h2{font-size:18px;margin:0 6px}.month-toolbar input{padding:7px;border:1px solid var(--line);border-radius:6px}.month-guide{font-size:11px;color:var(--muted);line-height:1.8}.month-scroll{overflow-x:auto}.month-weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-width:700px}.month-weekdays{background:var(--surface-muted);border:1px solid var(--line);border-bottom:0}.month-weekdays span{text-align:center;padding:10px;color:var(--muted);font-size:11px}.month-grid{border-left:1px solid var(--line);border-top:1px solid var(--line)}.month-day{min-height:130px;padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.month-day.nonbusiness{background:#fafbfc}.month-day.outside-month{background:#f4f5f7}.month-day.outside-month header{opacity:.5}.month-day.today{box-shadow:inset 0 0 0 2px var(--purple)}.month-day header{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-bottom:8px;font-size:11px}.month-day header small{font-size:9px;color:var(--purple)}.month-day header .month-holiday{color:#c47878}.month-task{display:block;width:100%;text-align:left;border-left:3px solid var(--task-color);padding:6px;background:#f2f3f9;border-radius:4px;margin-bottom:5px;overflow:hidden}.month-task span{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:10px}.month-task small{display:block;font-size:9px;color:var(--muted);margin-top:3px}.month-task:hover{background:#efecfd}.month-unscheduled{margin-top:15px;font-size:11px;color:var(--muted)}.month-unscheduled summary{cursor:pointer;margin-bottom:10px}.month-unscheduled button{margin:4px}
.report-feedback-panel{padding:12px;background:#fff6ed;border:1px solid #efd8c5;border-radius:6px;margin-top:12px;font-size:11px;line-height:1.8}.report-feedback-panel small{display:block;color:#8991a1}.report-feedback-panel p{white-space:pre-wrap}

.weekly-heading,.weekly-controls,.weekly-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.weekly-heading p,.weekly-note,.weekly-meta,.weekly-section>small{color:var(--muted)}.weekly-controls{flex-wrap:wrap;justify-content:flex-start;margin:20px 0}.weekly-controls input,.weekly-controls select,.weekly-editor select,.weekly-editor textarea{padding:9px;border:1px solid var(--line);border-radius:7px;background:var(--surface,#fff);max-width:100%}.weekly-controls label{display:flex;align-items:center;gap:6px}.weekly-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.weekly-stats>div,.weekly-section,.weekly-editor{background:var(--surface,#fff);border:1px solid var(--line);border-radius:var(--panel-radius,10px);padding:18px}.weekly-stats strong{display:block;font-size:25px;margin-top:8px}.weekly-stats small{color:var(--muted);font-size:12px}.weekly-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}.weekly-current{display:grid;gap:16px}.weekly-section-title h3{margin:0 0 8px}.weekly-section-title span{color:var(--purple)}.weekly-group h4{border-bottom:1px solid var(--line);padding-bottom:10px}.weekly-item{padding:12px;margin:10px 0;background:var(--surface-muted,#f6f7f9);border-radius:8px;overflow-wrap:anywhere}.weekly-task{text-align:left;color:var(--purple);font-weight:600;padding:0;line-height:1.6}.weekly-meta{font-size:11px;margin-top:6px}.weekly-item p,.weekly-item li{line-height:1.7;white-space:pre-wrap}.weekly-item ul{padding-left:18px;font-size:12px}.weekly-delete{color:var(--muted);font-size:11px}.weekly-note{line-height:1.7;font-size:12px}.weekly-editor{margin-top:20px}.weekly-editor summary{cursor:pointer;font-weight:600}.weekly-editor form{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin:16px 0}.weekly-editor label{display:grid;gap:7px;min-width:0}.weekly-text{flex:1 1 250px}.weekly-editor textarea{min-height:80px;width:100%}@media(max-width:1000px){.weekly-columns{grid-template-columns:1fr}.weekly-stats{grid-template-columns:repeat(2,1fr)}.weekly-heading{align-items:flex-start}.weekly-editor form>label{width:100%}}

.managed-badge{display:inline-block;padding:4px 7px;border-radius:5px;background:#fff1dc;color:#9b6424;font-size:11px;margin-bottom:7px}.managed-fields{border-top:1px solid var(--line);padding-top:14px;margin-top:10px}.managed-fields input[type=checkbox]{width:auto}.managed-panel{background:var(--surface,#fff);border:1px solid var(--line);border-radius:var(--panel-radius,10px);padding:20px;margin-top:22px}.managed-panel .weekly-stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:16px}.managed-panel td{white-space:pre-wrap;overflow-wrap:anywhere;vertical-align:top;min-width:130px}.managed-panel .weekly-heading p{color:var(--muted)}@media(max-width:800px){.managed-panel .weekly-stats{grid-template-columns:repeat(2,1fr)}}

.jira-board .card.managed-active{border-left:4px solid #d99a35;background:#fffaf0}.jira-board .card.managed-active:hover{background:#fff5df}.jira-board .card.managed-resolved{border-left:4px solid #7aa38c;background:#f6faf7}.managed-card-heading{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}.managed-card-heading .managed-badge{margin-bottom:0}.managed-card-kind{font-size:10px;color:#916a35}.managed-resolved .managed-badge{background:#e5f1e8;color:#4e7960}.managed-resolved .managed-card-kind{color:#4e7960}

.weekly-project-report{border:1px solid var(--line);border-radius:var(--panel-radius,10px);padding:22px;margin-bottom:24px;background:var(--surface,#fff)}.weekly-project-title{display:flex;align-items:center;justify-content:space-between;gap:12px;border-left:5px solid var(--purple);padding-left:16px;margin-bottom:20px}.weekly-project-title h2{font-size:23px;margin:6px 0}.weekly-project-title small{color:var(--muted)}.weekly-ai-empty{background:var(--surface-muted,#f6f7f9);padding:18px;border-radius:8px;color:var(--muted);margin-bottom:20px}.weekly-ai-editor{background:#f7f5ff;border:1px solid #ddd5f5;border-radius:10px;padding:18px;margin-bottom:20px}.weekly-ai-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:15px 0}.weekly-ai-fields label{display:grid;gap:8px;font-weight:600}.weekly-ai-fields textarea{width:100%;resize:vertical;padding:12px;font:inherit;line-height:1.7;border:1px solid var(--line);border-radius:7px;background:var(--surface,#fff)}.weekly-ai-fields label:last-child{grid-column:1/-1}.weekly-source>summary{cursor:pointer;margin:16px 0;color:var(--muted)}.weekly-ai-editor pre{white-space:pre-wrap}@media(max-width:800px){.weekly-ai-fields{grid-template-columns:1fr}.weekly-project-report{padding:14px}.weekly-project-title{flex-wrap:wrap}}

.month-grid{display:block}.month-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));position:relative;min-height:calc(44px + var(--period-rows)*42px);min-width:700px}.month-week .month-day{min-height:0;padding:8px 6px}.month-week .month-day header{max-height:32px;overflow:hidden}.month-events{position:absolute;top:42px;left:0;right:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:38px;row-gap:4px;padding:0 0 5px;pointer-events:none}.month-events .month-period{pointer-events:auto;margin:0 3px;min-width:0;width:auto;background:color-mix(in srgb,var(--task-color) 14%,white);border:1px solid color-mix(in srgb,var(--task-color) 35%,white);border-left:3px solid var(--task-color);padding:4px 7px}.month-events .month-period.continues-before{border-radius:0 5px 5px 0;border-left-width:1px;margin-left:0}.month-events .month-period.continues-after{border-radius:5px 0 0 5px;margin-right:0}.month-events .month-period.continues-before.continues-after{border-radius:0}.month-events .month-period:hover{filter:brightness(.96)}

/* Layer order: content/menu < mobile sidebar < editor < nested dialogs < toast. */
.modal-backdrop{z-index:100}
.modal-backdrop#reviewModal{z-index:110}
#transitionModal{z-index:120}
/* 보고 확인·상태 변경은 기존 transitionForm 제출 경계를 사용한다.
 * 긴 본문만 내부에서 스크롤하고 제목·최종 확인 버튼은 화면 안에 남긴다. */
#transitionForm{display:flex;flex-direction:column;min-height:0;max-width:100%;max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);overflow:hidden}
#transitionForm>.modal-header,#transitionForm>.modal-footer{flex-shrink:0}
#transitionForm>.modal-header{gap:12px}
#transitionForm>.modal-header h2{overflow-wrap:anywhere}
#transitionBody{min-height:0;overflow:auto;overscroll-behavior:contain;overflow-wrap:anywhere;scrollbar-gutter:stable}
#transitionBody:focus-visible{outline:2px solid var(--purple);outline-offset:-2px}
#transitionForm>.modal-footer{border-top:1px solid var(--line);padding-top:16px;margin-top:16px;flex-wrap:wrap}
#transitionForm>.modal-footer button{min-height:40px}
@media(max-width:720px){#transitionModal{padding:8px}#transitionForm{padding:20px;max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px)}#transitionForm>.modal-footer button{min-height:44px}}
#gitlabChangeModal,#teamModal{z-index:130}
.toast{z-index:200}

.issue-development-panel{border:1px solid var(--line);border-radius:8px;margin-top:14px;background:var(--surface)}.issue-development-panel summary{padding:14px 18px;font-size:13px;font-weight:600;cursor:pointer}.issue-development-panel .issue-dev{border:0;margin:0;padding:0 18px 16px;overflow-wrap:anywhere}.issue-development-item{padding:14px 0;border-bottom:1px solid var(--line)}.issue-development-item:last-child{border-bottom:0;padding-bottom:0}.issue-development-item a{font-size:12px;color:#3576d1;line-height:1.7}.issue-development-meta{display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--muted);margin:10px 0}.issue-development-item button{font-size:11px;max-width:100%}

.gantt-timeline{grid-template-columns:repeat(var(--days),var(--gantt-unit,34px));background:repeating-linear-gradient(to right,transparent 0,transparent calc(var(--gantt-unit,34px) - 1px),#edf1f6 calc(var(--gantt-unit,34px) - 1px),#edf1f6 var(--gantt-unit,34px))}.gantt-day{min-width:0;font-size:9px}.gantt-timeline-bar{cursor:grab;touch-action:none;user-select:none;padding:0 10px}.gantt-resize{position:absolute;top:0;bottom:0;width:8px;background:#ffffff66;cursor:ew-resize}.gantt-resize.start{left:0}.gantt-resize.end{right:0}

.gantt-range-navigation{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-top:10px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--panel-radius);background:var(--surface)}.gantt-range-navigation [role=status]{flex:1;text-align:center;font-size:11px;color:var(--muted);line-height:1.7}.gantt-range-navigation button{white-space:nowrap}.gantt-range-navigation button:disabled{opacity:.5;cursor:wait}.gantt-table[aria-busy=true]{cursor:progress}@media(max-width:720px){.gantt-range-navigation [role=status]{flex-basis:100%;order:1}.gantt-range-navigation button{min-height:44px}}

/* Mobile reading views share the desktop SPA and data. */
@media(max-width:720px){
 .content{padding:18px 12px}
 /* 390px 실제 창에서 한 줄 헤더의 회원·로그아웃이 문서 밖으로 넘었다.
  * 메뉴·브랜드와 조작 행을 나누고 검색만 남은 폭에 맞춰 줄인다. 본문 넘침을 숨기지 않는다. */
 .topbar{height:auto;min-height:60px;flex-wrap:wrap;justify-content:flex-start;padding:8px 12px;gap:8px}
 .topbar>.sidebar-hamburger{min-width:44px;min-height:44px;flex-shrink:0}.mobile-brand{flex-shrink:0}
 .top-actions{flex:1 0 100%;width:100%;max-width:100%;min-width:0;flex-wrap:wrap;gap:6px}
 .top-actions .search{flex:1 1 80px;min-width:0;min-height:44px;padding:0 10px;gap:6px}
 .top-actions .search input{flex:1 1 0;width:100%;min-width:0;min-height:44px}
 .top-actions #currentUser{min-width:0;max-width:40%;min-height:44px;text-overflow:ellipsis}
 .top-actions button{min-height:44px}
 #mobileMemberAdmin,.mobile-review-nav{display:none}.eyebrow{display:none}
 .toolbar{top:0;padding:8px 0;gap:8px}.tabs{display:flex;width:100%;max-width:100%;min-width:0;gap:4px;overflow-x:auto}.tabs button{flex:0 0 auto;min-height:44px;padding:8px 6px;font-size:12px;white-space:nowrap}.tabs button:not([data-view="kanban"]):not([data-view="list"]):not([data-view="weekly"]):not([data-view="monthlyReport"]){display:none}.tabs [data-view="kanban"]{order:0}.tabs [data-view="list"]{order:1}.tabs [data-view="weekly"]{order:2}.tabs [data-view="monthlyReport"]{order:3}
 .filters{justify-content:stretch}.filters select{flex:1;min-width:0;min-height:44px}.project-banner select{width:100%;min-height:44px}.heading{gap:8px}.heading h1{font-size:21px}.heading p{max-width:none}.compact-dashboard .summary{gap:8px}.filter-top,.filter-actions{flex-wrap:wrap;gap:8px}.filter-actions select{max-width:100%}.person-filters,.quick-filters{flex-wrap:wrap}.column-options{gap:6px}.column-option{min-height:40px}
 .board-wrap{scroll-snap-type:x proximity;overscroll-behavior-x:contain}.board.selectable-board.jira-board{grid-template-columns:repeat(var(--column-count),min(84vw,320px));min-width:max-content}.jira-board .column{scroll-snap-align:start}.jira-board .card{padding:14px;min-height:96px}.jira-board .card h3{font-size:14px}.jira-board .col-heading{font-size:14px;height:40px}.board-note{gap:8px;flex-wrap:wrap}
 .mobile-task-list{border:0;background:transparent;overflow:visible}.mobile-task-list table,.mobile-task-list tbody{display:block;min-width:0;width:100%}.mobile-task-list thead{display:none}.mobile-task-list tr{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface,#fff);padding:14px;margin-bottom:10px}.mobile-task-list td{padding:0;border:0;min-width:0;overflow-wrap:anywhere;font-size:12px}.mobile-task-list td:nth-child(2){grid-column:1/-1;grid-row:1;font-size:15px;font-weight:600;line-height:1.7}.mobile-task-list td:nth-child(2)::before{display:none}.mobile-task-list td::before{content:attr(data-label);display:block;color:var(--muted);font-size:10px;margin-bottom:4px}
 .weekly-heading{display:block}.weekly-heading h2{font-size:21px}.weekly-heading>div:last-child{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.weekly-heading button,.weekly-controls button{min-height:44px}.weekly-controls{gap:8px}.weekly-controls label{flex:1 1 100%;justify-content:space-between}.weekly-controls select{flex:1;min-width:0;min-height:44px}.weekly-controls input{min-width:0;max-width:100%;min-height:44px}.weekly-columns,.weekly-ai-fields{grid-template-columns:1fr}.weekly-project-report{padding:12px}.weekly-project-title{padding-left:10px;align-items:flex-start}.weekly-project-title h2{font-size:19px;overflow-wrap:anywhere}.weekly-project-title button{min-height:44px}.weekly-section{padding:12px}.weekly-item{padding:12px;font-size:13px}.weekly-task{font-size:14px;min-height:36px}.weekly-note{overflow-wrap:anywhere}.weekly-stats{gap:8px}.weekly-stats>div{padding:12px}.weekly-editor form{display:grid;grid-template-columns:1fr}.weekly-editor form>label{width:100%}.weekly-editor button{min-height:44px}
 .modal-backdrop{padding:8px}.issue-modal{width:100%;max-height:calc(100dvh - 16px);overflow:auto}.issue-content{grid-template-columns:1fr}.issue-main,.issue-side{min-width:0}.task-hover-popup{display:none!important}
}


@media(max-width:720px){
 .managed-panel{padding:12px}.managed-panel .table-wrap{overflow:visible;border:0}.managed-panel table,.managed-panel tbody{display:block;min-width:0;width:100%}.managed-panel thead{display:none}.managed-panel tr{display:grid;gap:12px;padding:14px;margin:12px 0;border:1px solid var(--line);border-radius:10px;background:var(--surface-muted,#f6f7f9)}.managed-panel td{display:block;border:0;padding:0;min-width:0;font-size:13px}.managed-panel td::before{content:attr(data-label);display:block;font-size:11px;color:var(--muted);margin-bottom:5px}.managed-panel button{min-height:44px}.tabs{overflow-x:auto}.weekly-project-title{min-width:0}.weekly-project-title>div{min-width:0}.weekly-controls label{flex-wrap:wrap}
}

/* HTML의 정적 style 속성에 있던 개별 선언을 전용 클래스로 옮긴다. */
.original-style-1{color:#ada4df}
.original-style-2{font-size:11px}
.original-style-3{margin-left:auto;color:#a0a7b3}
.original-style-4{margin-left:auto;font-size:9px}
.original-style-5{margin-left:auto;color:#999}
.original-style-6{font-size:11px;border:1px solid #e1e5ec;border-radius:6px;padding:7px}
.original-style-7{background:#dcebe7;color:#7c9d92}
.original-style-8{background:#f4e5dd;color:#b18c74}
.original-style-9{background:#e9ecf1;color:#8f97a5}
.original-style-10{color:#a092bc;font-weight:400}
.original-style-11{color:#a0a7b3;font-size:10px}
.original-style-12{margin-top:14px}
.original-style-13{margin:0 14px;color:#b1b7c1}
.original-style-14{display:flex;gap:8px;margin:12px 0}
.original-style-15{color:#ce7769}
.original-style-16{font-size:12px;color:#8c94a1}
.original-style-17{font-size:12px;color:#8995a6}
.original-style-18{font-size:11px;color:#96a1b2}
.original-style-19{font-size:10px;color:#a0aaba;line-height:1.8}
.original-style-20{font-size:11px;color:#8991a1}
.activity-item>.java-comment-body{flex:1;min-width:0}

/* 원본 미니 팝업의 관계 탐색은 목록 위치를 유지하고 본문만 바꾼다. 모바일은 기존 숨김 규칙을 따른다. */
.task-hover-relations{margin-top:10px;padding-top:8px;border-top:1px solid #eef1f5;max-height:150px;overflow:auto}.hover-relation-label{font-size:10px;color:#8592a5;margin:6px 0}.task-hover-relations button{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;width:100%;padding:7px 8px;margin:2px 0;border:0;border-radius:5px;text-align:left;background:#f5f7fb;color:#4b5a72;font-size:11px;line-height:1.6}.task-hover-relations button span{min-width:0;overflow-wrap:anywhere}.task-hover-relations button small{flex-shrink:0;font-size:9px;color:#8592a5}.task-hover-relations button[aria-current=true]{background:#eeeaff;color:#6554cf}.task-hover-relations button:focus-visible,.hover-task-note button:focus-visible{outline:2px solid #7162df;outline-offset:1px}.hover-task-note button{padding:5px 7px;border:0;border-radius:5px;font-size:10px;color:#6554cf;background:#f2efff}.card-parent-heading[role=button]{cursor:pointer}.card-parent-heading[role=button]:focus-visible{outline:2px solid #7162df;outline-offset:2px}

.task-hover-detail{min-height:0;overflow:auto}

/* 댓글 변경은 전후 카드를 나란히 비교하고 좁은 화면에서는 세로로 읽는다. */
.comment-history-comparison{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px;width:100%}
.comment-history-side{min-width:0;border:1px solid var(--line,#e2e5ed);border-radius:8px;padding:12px;background:var(--panel,#fff)}
.comment-history-side>b{display:block;margin-bottom:8px}.comment-history-side>small{display:block;margin-top:8px;color:#737b8d}
.comment-history-content{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;max-height:300px;overflow:auto}
.comment-history-content del{background:#ffe7e7;color:#902828;text-decoration:line-through}.comment-history-content ins{background:#dff5e7;color:#185c35;text-decoration:none}
@media(max-width:700px){.comment-history-comparison{grid-template-columns:1fr}}

/* 승인 검색 도구도 프로젝트 설정과 같은 입력 높이·색상·테두리를 사용한다. */
.approval-toolbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;align-items:end;padding:16px;background:#fff;border:1px solid var(--line,#e2e5ed);border-radius:10px;margin:16px 0}
.approval-toolbar .field{display:flex;flex-direction:column;gap:6px;min-width:0;margin:0;font-size:12px;color:#677085}
.approval-toolbar select,.approval-toolbar input{width:100%;min-height:38px;margin:0;border:1px solid var(--line,#e2e5ed);border-radius:6px;background:#fff;color:#30394b;padding:8px 10px;font:inherit;box-sizing:border-box}
.approval-toolbar input:focus,.approval-toolbar select:focus{outline:2px solid #b9b0ff;outline-offset:1px}.approval-date,.approval-count{color:#7a8395;font-size:12px}
@media(max-width:600px){.approval-toolbar{grid-template-columns:1fr 1fr}.approval-toolbar .field:has(input[type=search]){grid-column:1/-1}}

/* 공통 field의 바깥 여백을 제거하고 줄바꿈된 초기화 버튼도 입력창 하단에 맞춘다. */
.approval-toolbar>button{min-height:38px;align-self:end;margin:0;box-sizing:border-box}
@media(max-width:600px){.approval-toolbar input,.approval-toolbar select,.approval-toolbar>button{min-height:44px}}

.project-auto-refresh{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px;margin:0 0 12px;color:var(--muted);font-size:12px}.project-auto-refresh[hidden]{display:none}.project-auto-refresh label{display:flex;align-items:center;gap:8px}.project-auto-refresh select{background:#fff;border:1px solid var(--line);border-radius:6px;min-height:36px;padding:6px 10px;color:var(--ink)}@media(max-width:600px){.project-auto-refresh select{min-height:44px}}

.release-filters{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0}.release-filters input,.release-filters select{min-height:40px;padding:8px 12px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink)}.release-filters input{flex:1;min-width:180px}.release-note{padding:18px 0;border-top:1px solid var(--line)}.release-note h3{margin:0 0 10px;font-size:15px}.release-note p{line-height:1.8}.release-type{display:inline-block;padding:3px 9px;border-radius:6px;color:var(--purple);background:#efecfd;font-size:12px}@media(max-width:600px){.release-filters input,.release-filters select{min-height:44px;width:100%}}

/* 웹훅 안내는 기존 설정 폼과 같은 간격을 유지하며 긴 주소도 모바일 안에서 줄인다. */
.gitlab-webhook-guide{margin-top:20px;padding:16px;border:1px solid var(--line);border-radius:8px;line-height:1.8;overflow-wrap:anywhere}.gitlab-webhook-guide summary{cursor:pointer;font-weight:600}.gitlab-webhook-guide h3{margin:18px 0 8px}.gitlab-webhook-guide input,.gitlab-webhook-guide textarea{display:block;box-sizing:border-box;width:100%;min-width:0;margin:10px 0;padding:10px;border:1px solid var(--line);border-radius:6px;background:#f8f9fc;color:inherit;font:inherit}.gitlab-webhook-guide textarea{resize:vertical;line-height:1.7}.gitlab-webhook-guide li{margin:8px 0}.gitlab-webhook-guide button{margin:0 8px 8px 0}

/* 설정은 기본 접힘으로 목록을 먼저 읽고 필요한 폼만 펼친다. 폼 노드는 접어도 유지한다. */
.project-settings-fold{margin:10px 0;padding:0!important;overflow:hidden}.project-settings-fold>summary{padding:14px 18px;cursor:pointer;font-size:13px;font-weight:600;line-height:1.5;background:#fafbfe}.project-settings-fold[open]>summary{border-bottom:1px solid var(--line)}.project-settings-fold>form,.project-settings-fold>p,.project-settings-fold>.java-project-hierarchy-host,.project-settings-fold>.java-gitlab-connection-host,.project-settings-fold>.java-git-credentials-host{margin:16px 18px}.project-settings-fold>.java-gitlab-connection-host,.project-settings-fold>.java-git-credentials-host{min-width:0}.project-settings-fold>button,.project-settings-fold>div:not([class]){margin:10px 18px}.project-settings-fold>summary:focus-visible{outline:2px solid var(--purple,#7162df);outline-offset:-3px}

/* 역할 접힘 패널은 기존 폼과 같은 표면/테두리를 사용하고 긴 UUID도 모바일에서 넘치지 않는다. */
.java-role-settings-host{min-width:0}.java-role-settings-host .role-settings-content{padding:16px 18px}.java-role-settings-host .field{display:flex;flex-direction:column;gap:6px;margin:12px 0;color:var(--muted);font-size:12px}.java-role-settings-host .field:has(input[type=checkbox]){flex-direction:row;align-items:center}.java-role-settings-host select,.java-role-settings-host textarea{width:100%;min-width:0;max-width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:6px;background:var(--surface,#fff);color:var(--ink)}.java-role-settings-host textarea{resize:vertical;overflow-wrap:anywhere}.java-role-settings-host .org-team{background:var(--surface,#fff);overflow-wrap:anywhere}.java-role-settings-host .muted{color:var(--muted);line-height:1.7}.java-role-settings-host button{margin:6px 8px 6px 0}@media(max-width:600px){.java-role-settings-host button,.java-role-settings-host select{min-height:44px}}

/* 이력은 검색 → 주 버전 → 기능 묶음 → 원래 배포 기록 순서로 읽는다. 작은 기록에는 구분선을 두지 않는다. */
.release-history{max-width:1100px}.release-history>h2{margin-bottom:6px}.release-history>p{color:var(--muted);font-size:12px}.release-filters{margin:20px 0 10px}.release-major{margin:12px 0;background:#fff;border-radius:12px;padding:4px 16px 12px}.release-major>summary{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer;list-style:none;padding:8px 4px}.release-major>summary::-webkit-details-marker,.release-family>summary::-webkit-details-marker{display:none}.release-major-label{font-size:16px;font-weight:750;color:var(--ink)}.release-muted{font-size:12px;color:var(--muted)}.release-count{margin-left:auto;white-space:nowrap;font-size:11px;color:var(--muted);font-weight:400}.release-family{margin:2px 0;border:0;border-radius:8px}.release-family>summary{display:grid;grid-template-columns:12px 82px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:36px;padding:7px 10px;cursor:pointer;list-style:none;border-radius:7px}.release-family>summary:hover{background:#f7f6fc}.release-family[open]>summary{background:#f3f1fc}.release-chevron{width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);color:#8b88a1}.release-family[open] .release-chevron{transform:rotate(45deg)}.release-family-label{font-size:13px;font-weight:650;color:var(--purple)}.release-family-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--muted)}.release-family .release-note{display:grid;grid-template-columns:104px minmax(0,1fr);gap:12px;border:0;padding:10px 32px}.release-meta{display:flex;flex-direction:column;align-items:flex-start;gap:5px}.release-version{font-size:12px;font-weight:600;color:#77758a;font-variant-numeric:tabular-nums}.release-family .release-type{padding:1px 6px;font-size:10px;line-height:1.5;border-radius:4px;background:#f1eff8;color:#8274ba}.release-family .release-note h3{margin:0 0 3px;font-size:13px;font-weight:600;line-height:1.5}.release-family .release-note p{margin:0;color:var(--muted);font-size:12px;line-height:1.6;overflow-wrap:anywhere}.release-major>summary:focus-visible,.release-family>summary:focus-visible{outline:2px solid var(--purple);outline-offset:2px}@media(max-width:600px){.release-major{padding:4px 8px 8px}.release-family>summary{min-height:44px;grid-template-columns:10px 76px minmax(0,1fr) auto;gap:6px;padding:8px}.release-family .release-note{grid-template-columns:72px minmax(0,1fr);gap:8px;padding:8px 12px}.release-family-title{font-size:11px}.release-muted{font-size:11px}}

/* 실제 회원관리의 표시 범위만 정돈한다. 공통 calendar/프로젝트 폼과 저장·잠금 동작에는 적용하지 않는다. */
/* 회원관리에서 쓰지 않는 업무 보기·집계·조건은 이 메뉴에서만 감춘다. 메뉴 이탈 시 기존 표시가 복원된다. */
.main:has(.java-organization-page) .content>.toolbar,.main:has(.java-organization-page) .content>.compact-dashboard,.main:has(.java-organization-page) .content>.filter-panel{display:none}
.main:has(.java-organization-page) .content>.heading{margin-bottom:24px}
.java-organization-page{padding:28px;border-radius:12px}
.java-organization-page [hidden]{display:none!important}
.java-organization-page .org-page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}
.java-organization-page .org-page-heading h2{font-size:21px;letter-spacing:-.5px;line-height:1.4;margin:0 0 8px;color:var(--ink)}
.java-organization-page .org-page-heading p{font-size:13px;color:#64748b;line-height:1.7;margin:0}
.java-organization-page .org-page-tools{flex-shrink:0}
.java-organization-page .org-policy-note{background:#f8f9fc;border:1px solid var(--line);border-left:3px solid #c9c1f4;border-radius:8px;padding:13px 16px;font-size:12px;line-height:1.8;color:#64748b;margin:0 0 14px}
.java-organization-page .org-feedback{font-size:12px;line-height:1.7;color:#57677e;margin:12px 0 0;overflow-wrap:anywhere}
.java-organization-page button,.role-system-settings button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:9px 14px;border:1px solid #dce1eb;border-radius:8px;background:#fff;color:#475569;font-size:12px;font-weight:600;line-height:1.5;box-shadow:0 1px 2px #182c4906;transition:background-color .15s,border-color .15s}
.java-organization-page button:not(:disabled):hover,.role-system-settings button:not(:disabled):hover{background:#f7f6fc;border-color:#c8c0ef}
.java-organization-page button.primary{background:var(--purple);color:#fff;border-color:var(--purple);box-shadow:0 3px 8px #7162df20}
.java-organization-page button.primary:not(:disabled):hover{background:#6151cc;border-color:#6151cc}
.java-organization-page button:disabled,.role-system-settings button:disabled{background:#f3f5f8;color:#8290a3;border-color:#e3e7ee;box-shadow:none;cursor:not-allowed;opacity:1}
.java-organization-page button:focus-visible,.role-system-settings button:focus-visible{outline:3px solid #bcb4f3;outline-offset:3px}
.java-organization-page .org-section{margin:24px 0 0;padding:22px;border:1px solid var(--line);border-radius:10px;background:var(--surface,#fff);min-width:0}
.java-organization-page .org-section-heading{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin:0 0 18px}
.java-organization-page .org-section-heading h3{margin:0;font-size:16px;font-weight:700;line-height:1.6;color:var(--ink)}
.java-organization-page .org-section-description{font-size:12px;color:#64748b;line-height:1.7;margin:-6px 0 18px}
.java-organization-page .org-account-tools{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 8px}
.java-organization-page .org-account-tools>label{display:inline-flex;align-items:center;gap:8px;color:#475569;font-size:12px;line-height:1.6;min-height:40px}
.java-organization-page #memberAccountsStatus{margin:8px 0 16px;font-size:12px;color:#64748b;line-height:1.7}
.java-organization-page label.field{display:flex;flex-direction:column;gap:7px;min-width:0;margin:0;font-size:12px;font-weight:500;color:#475569;line-height:1.5}
.java-organization-page input:not([type=checkbox]),.java-organization-page select{width:100%;min-width:0;max-width:100%;min-height:40px;padding:9px 11px;border:1px solid #dce1eb;border-radius:7px;font-size:13px;line-height:1.5;background:#fff;color:#334155;box-shadow:0 1px 2px #182c4904}
.java-organization-page input:not([type=checkbox]):disabled,.java-organization-page select:disabled{background:#f7f8fb;border-color:#e6e9ef;color:#64748b;box-shadow:none}
.java-organization-page input:not([type=checkbox]):focus,.java-organization-page select:focus{outline:2px solid #c2b9fa;outline-offset:1px;border-color:#a79ae8}
.java-organization-page input[type=checkbox],.role-system-settings input[type=checkbox]{width:18px;height:18px;min-width:18px;min-height:18px;max-width:18px;flex:0 0 18px;padding:0;margin:0;accent-color:var(--purple);vertical-align:middle}
.java-organization-page .org-search-toolbar{display:grid;align-items:end;gap:12px;padding:16px;background:#f8f9fc;border:1px solid #edf0f5;border-radius:9px}
.java-organization-page .org-search-members{grid-template-columns:minmax(200px,2fr) repeat(2,minmax(120px,1fr)) auto}
.java-organization-page .org-search-teams{grid-template-columns:minmax(200px,2fr) minmax(150px,1fr) auto}
.java-organization-page .org-result-count{margin:12px 0;font-size:12px;line-height:1.6;color:#64748b}
.java-organization-page .java-organization-members-table{border:1px solid var(--line);border-radius:9px;margin-top:12px}
.java-organization-page .java-organization-members-table table{border-collapse:separate;border-spacing:0;width:100%;font-size:12px}
.java-organization-page .java-organization-members-table th{padding:13px 14px;background:#f8f9fc;color:#64748b;font-size:11px;font-weight:600;text-align:left;border-bottom:1px solid var(--line)}
.java-organization-page .java-organization-members-table td{padding:14px;vertical-align:middle;border-bottom:1px solid #edf0f5;background:#fff;color:#475569}
.java-organization-page .java-organization-members-table tbody tr:last-child td{border-bottom:0}
.java-organization-page .java-organization-members-table tbody tr:hover td{background:#fcfbff}
.java-organization-page .java-organization-members-table td>.field{display:block}
.java-organization-page .java-organization-members-table [data-member-email]{min-width:180px}
.java-organization-page .java-organization-members-table [data-member-login-id]{font-variant-numeric:tabular-nums}
.java-organization-page .org-account-state{display:block;color:#64748b;font-size:11px;line-height:1.6;margin-bottom:7px}
.java-organization-page .java-organization-members-table [data-member-delete]:not(:disabled){color:#b42318;border-color:#f0c4bf;background:#fffafa}
.java-organization-page .java-organization-members-table [data-member-delete]:not(:disabled):hover{background:#fff0ee;border-color:#deaca5}
.java-organization-page .new-member-form,.java-organization-page .org-team-create{padding:20px;background:#faf9ff;border:1px solid #e6e0fa;border-radius:9px;margin:16px 0}
.java-organization-page .new-member-form h3,.java-organization-page .org-team-create h3{font-size:14px;color:#443b73;margin:0 0 18px}
.java-organization-page .new-member-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.java-organization-page .new-member-form p{font-size:12px;color:#64748b;line-height:1.8;margin:16px 0}
.java-organization-page .org-form-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:16px}
.java-organization-page .org-empty{padding:22px 16px;text-align:center;border:1px dashed #dce1eb;border-radius:8px;background:#fafbfc;font-size:12px;line-height:1.7;color:#64748b}
.java-organization-page .org-team{padding:18px;border-radius:9px;background:#fff}
.java-organization-page .org-team-info,.java-organization-page .org-team-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;width:100%}
.java-organization-page .org-team-create{display:block;background:#f8f9fc;border-color:var(--line);margin-bottom:0}
.java-organization-page .org-team-create h3{color:var(--ink)}
.java-organization-page .org-members{gap:8px}
.java-organization-page .org-members label{display:inline-flex;gap:7px;align-items:center;min-height:36px;padding:7px 10px;background:#f8f9fc;color:#475569}
.java-organization-page .org-save{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px;margin:22px 0 0;padding-top:18px;border-top:1px solid var(--line)}
.java-organization-page .org-save p{margin:0 auto 0 0;font-size:12px;line-height:1.7;color:#64748b}
/* 위험 동작도 동의 전부터 버튼 형태를 유지한다. 활성화 조건은 기존 JS/native disabled가 결정한다. */
.java-organization-page .org-deletion-panel{display:block;margin-top:20px;padding:20px;border:1px solid #f0c4bf;border-left:4px solid #c75549;border-radius:9px;background:#fffafa}
.java-organization-page .org-deletion-panel>strong{display:block;font-size:15px;line-height:1.6;color:#8b2e25;margin-bottom:10px}
.java-organization-page .org-deletion-panel>p{display:block;width:100%;margin:10px 0;font-size:12px;line-height:1.8;color:#6e5552;overflow-wrap:anywhere}
.java-organization-page .org-deletion-panel .org-warning{font-weight:600;color:#a33327}
.java-organization-page .org-deletion-consent{display:flex;align-items:center;gap:10px;padding:13px 14px;border:1px solid #ead6d3;border-radius:7px;background:#fff;color:#475569;min-height:46px;line-height:1.7;font-size:12px;margin:16px 0}
.java-organization-page .org-deletion-actions{padding-top:14px;border-top:1px solid #f0dbd8}
.java-organization-page [data-member-delete-confirm]{min-height:44px;padding:10px 18px;border:1px solid #b42318;border-radius:8px;background:#b42318;color:#fff;font-size:13px;font-weight:700;box-shadow:0 2px 4px #b423181a}
.java-organization-page [data-member-delete-confirm]:not(:disabled):hover{background:#942116;border-color:#942116}
.java-organization-page [data-member-delete-confirm]:disabled{background:#f3eceb;border-color:#dbc7c4;color:#8c6964;box-shadow:none;cursor:not-allowed}
/* 시스템 권한만 회원 정보와 권한별 저장 행으로 정렬한다. 프로젝트 역할 패널은 종전 표시를 유지한다. */
.role-system-settings{margin-top:22px;border:1px solid var(--line);border-radius:12px;background:#fff}
.role-system-settings>summary{padding:18px 22px;font-size:15px;background:#fafaff}
.role-system-settings .role-settings-content{padding:22px}
.role-system-settings .role-system-intro,.role-system-settings .role-system-list-note,.role-system-settings .role-system-notice{font-size:12px;line-height:1.8;color:#64748b;margin:12px 0}
.role-system-settings .role-system-filterbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:18px 0 8px}
.role-system-settings .role-system-count{font-size:12px;line-height:1.6;color:#64748b;margin:0}
.role-system-settings .role-system-member{padding:20px;border:1px solid var(--line);border-radius:9px;margin:14px 0;background:#fff}
.role-system-settings .role-system-member-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:14px;margin-bottom:2px;border-bottom:1px solid #edf0f5}
.role-system-settings .role-system-member-name{font-size:14px;font-weight:700;color:var(--ink);line-height:1.6;margin:0 0 4px}
.role-system-settings .role-system-member-meta{font-size:11px;color:#64748b;line-height:1.6;margin:0}
.role-system-settings .role-system-member-status{flex-shrink:0;margin:0;padding:4px 9px;border-radius:6px;background:#f1f4f9;color:#51647d;font-size:11px;line-height:1.6}
.role-system-settings .role-system-member-note{font-size:12px;line-height:1.8;color:#64748b;margin:14px 0 0}
.role-system-settings .role-system-member-warning{font-size:12px;line-height:1.8;color:#9a602b;background:#fff8ee;padding:10px 12px;border-radius:7px}
.role-system-settings .role-system-permission{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid #f0f2f6}
.role-system-settings .role-system-permission:last-child{padding-bottom:0;border-bottom:0}
.role-system-settings .role-system-permission-label{display:flex;flex-direction:row;align-items:center;gap:10px;margin:0;min-width:0;font-size:13px;color:#475569;white-space:normal;line-height:1.6}
.role-system-settings .role-system-permission-label>span{flex:1;width:auto;min-width:0;white-space:normal}
.role-system-settings .role-system-permission-actions{flex-shrink:0}
.role-system-settings .role-system-permission-save{margin:0;min-width:158px}
.role-system-settings [data-role-stale] .role-system-member-status{background:#fff3e6;color:#8b6238;white-space:normal;max-width:50%;overflow-wrap:anywhere}
@media(max-width:1250px){
 .java-organization-page{padding:22px}.java-organization-page .org-page-heading{flex-direction:column;gap:14px}
 .java-organization-page .org-search-members{grid-template-columns:repeat(2,minmax(0,1fr))}
 .java-organization-page .org-search-teams{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
 .java-organization-page .org-search-teams>button{grid-column:1/-1;justify-self:start}
 .java-organization-page .new-member-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:720px){
 .java-organization-page{padding:16px}.java-organization-page .org-section{padding:16px;margin-top:18px}
 .java-organization-page .org-page-heading h2{font-size:19px}.java-organization-page .org-page-tools{width:100%}
 .java-organization-page button,.role-system-settings button,.java-organization-page input:not([type=checkbox]),.java-organization-page select{min-height:44px}
 .java-organization-page .org-account-tools>label,.java-organization-page .org-members label,.java-organization-page .org-team>label:has(input[type=checkbox]),.role-system-settings .role-system-permission-label{min-height:44px}
 .java-organization-page .org-team>label:has(input[type=checkbox]),.java-organization-page .org-table td>label:has(input[type=checkbox]){display:inline-flex;align-items:center;gap:8px;min-height:44px;min-width:44px}
 .java-organization-page .org-page-tools>button{width:100%}
 .java-organization-page .org-search-toolbar{padding:12px;gap:12px}
 .java-organization-page .org-search-toolbar .field:has(input[type=search]){grid-column:1/-1}
 .java-organization-page .org-search-teams,.java-organization-page .new-member-fields,.java-organization-page .org-team-fields,.java-organization-page .org-team-info{grid-template-columns:1fr}
 .java-organization-page .org-search-members>button{grid-column:1/-1}
 .java-organization-page .org-search-teams>button{justify-self:stretch}
 .java-organization-page .new-member-form,.java-organization-page .org-team-create,.java-organization-page .org-deletion-panel{padding:16px}
 .java-organization-page .org-deletion-actions>button{width:100%;min-width:0}
 .java-organization-page .org-save>p{width:100%}
 .role-system-settings .role-settings-content{padding:16px}.role-system-settings>summary{padding:16px}
 .role-system-settings .role-system-member{padding:16px}.role-system-settings .role-system-member-head{flex-wrap:wrap}
 .role-system-settings .role-system-permission{align-items:flex-start;flex-direction:column;gap:10px}
 .role-system-settings .role-system-permission-actions,.role-system-settings .role-system-permission-save{width:100%;min-width:0}
 .role-system-settings [data-role-stale] .role-system-member-status{max-width:100%}
}

/* 챗봇 등록 초안은 같은 본문 스크롤 안에서 편집한다. 좁은 독립 창에서도 라벨·버튼·긴 Markdown을 숨기지 않는다. */
.keyword-rag-task-create-host[hidden]{display:none!important}
.keyword-rag-task-create-host{min-width:0}
.keyword-rag-task-create{min-width:0;overflow-wrap:anywhere}
.keyword-rag-task-create h3,.keyword-rag-task-create h4{margin:0 0 12px}
.keyword-rag-task-create-fields{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;margin:16px 0}
.keyword-rag-task-create-fields>label{display:flex;flex-direction:column;gap:8px;min-width:0}
.keyword-rag-task-create-fields input,.keyword-rag-task-create-fields select,.keyword-rag-task-create-fields textarea{box-sizing:border-box;width:100%;max-width:100%;min-width:0;min-height:44px}
.keyword-rag-task-create-fields textarea{resize:vertical;min-height:110px}
.keyword-rag-task-create-fields textarea[data-task-create=content]{min-height:220px}
.keyword-rag-task-create-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.keyword-rag-task-create-actions button{min-height:44px;max-width:100%;white-space:normal}
.keyword-rag-task-create-confirm{min-width:0;padding:12px 0}
/* 작은 선택창도 후보 목록만 내부 스크롤하고 원래 챗봇의 대화·입력은 유지한다. */
.keyword-rag-task-picker-host,.keyword-rag-project-summary-host{min-width:0}
.keyword-rag-task-picker-results{display:flex;flex-direction:column;gap:8px;max-height:260px;overflow:auto;overscroll-behavior:contain}
.keyword-rag-task-picker-results{margin:12px 0;padding:0;border:0;min-width:0}
.keyword-rag-task-picker-search{display:flex;align-items:flex-end;gap:8px;min-width:0;margin:12px 0}
.keyword-rag-task-picker-search label{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.keyword-rag-task-picker-search input{box-sizing:border-box;min-width:0;width:100%;min-height:44px}
.keyword-rag-task-picker-option span{min-width:0}
.keyword-rag-task-picker-option strong,.keyword-rag-task-picker-option small{display:block;line-height:1.5}
.keyword-rag-task-picker-option{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:10px;border:1px solid var(--line);border-radius:6px;overflow-wrap:anywhere;cursor:pointer}
.keyword-rag-task-picker-option input{width:18px;min-width:18px;height:18px;min-height:18px;margin:2px 0;accent-color:var(--accent,#7562e8)}
.keyword-rag-task-picker-pagination{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:12px 0}
.keyword-rag-task-picker-pagination button{min-height:44px}
.keyword-rag-scope-descendants{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer}
.keyword-rag-scope-descendants input{width:18px;min-width:18px;height:18px;min-height:18px;accent-color:var(--accent,#7562e8)}
/* 요약 선택과 신규 등록은 같은 작업 카드·입력·안내·하단 동작을 쓴다. 부모 집중 모드가 대화 입력을 숨길 뿐 초안을 재생성하지 않는다. */
.keyword-rag-workflow{box-sizing:border-box;min-width:0;padding:20px;border:1px solid var(--line,#e3e7ee);border-radius:12px;background:var(--surface,#fff);font-size:13px;line-height:1.7}
.keyword-rag-workflow-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:8px;padding-bottom:14px;margin-bottom:16px;border-bottom:1px solid var(--line,#e3e7ee)}
.keyword-rag-workflow-header h3{font-size:16px;line-height:1.5;margin:0;color:var(--ink,#202838)}
.keyword-rag-workflow-description{flex-basis:100%;margin:0;font-size:12px;line-height:1.7;color:var(--muted,#657184)}
.keyword-rag-workflow-step{display:inline-flex;align-items:center;min-height:26px;padding:2px 9px;border-radius:20px;background:var(--surface-muted,#f5f5fa);color:var(--purple,#7162df);font-size:11px;white-space:nowrap}
.keyword-rag-workflow-fields{gap:14px;margin:16px 0}
.keyword-rag-workflow-fields>label,.keyword-rag-workflow label{font-size:12px;color:var(--ink,#202838)}
.keyword-rag-workflow :is(input:not([type=radio]):not([type=checkbox]),select,textarea){box-sizing:border-box;width:100%;min-width:0;max-width:100%;min-height:44px;border:1px solid var(--line,#e3e7ee);border-radius:8px;padding:10px 12px;background:var(--surface,#fff);font:inherit;font-size:13px;line-height:1.6;color:var(--ink,#202838)}
.keyword-rag-workflow :is(input,select,textarea):disabled{background:var(--surface-muted,#f5f5fa);color:var(--muted,#657184)}
.keyword-rag-workflow-guide,.keyword-rag-workflow-note{margin:12px 0;padding:12px;border:1px solid var(--line,#e3e7ee);border-radius:8px;background:var(--surface-muted,#f5f5fa);font-size:12px;color:var(--muted,#657184);overflow-wrap:anywhere}
.keyword-rag-workflow-guide summary{cursor:pointer;color:var(--ink,#202838);font-weight:500}
.keyword-rag-workflow-guide p{margin:8px 0 0}
.keyword-rag-workflow-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;position:sticky;bottom:0;z-index:1;padding:12px 0;margin-top:20px;border-top:1px solid var(--line,#e3e7ee);background:var(--surface,#fff)}
.keyword-rag-workflow-actions button{min-height:44px;padding:10px 16px;border-radius:8px;font-size:12px;line-height:1.5;white-space:normal}
.keyword-rag-workflow-cancel{margin-right:auto}
.keyword-rag-workflow-status{margin:14px 0 0;font-size:12px;line-height:1.7;color:var(--muted,#657184);overflow-wrap:anywhere}
.keyword-rag-workflow-status:empty{display:none}
.keyword-rag-workflow-status[role=alert]{padding:10px 12px;border:1px solid #d7b0b0;border-radius:8px;background:#fff7f7;color:#984040}
.keyword-rag-workflow .keyword-rag-task-picker-results{max-height:min(360px,40dvh)}
.keyword-rag-workflow .keyword-rag-task-picker-option{background:var(--surface,#fff);border-radius:8px;padding:12px}
.keyword-rag-workflow .keyword-rag-task-picker-option:has(input:checked){background:#f5f2ff;border-color:var(--purple,#7162df)}
.keyword-rag-workflow .keyword-rag-task-picker-option strong{font-size:13px}
.keyword-rag-workflow .keyword-rag-task-picker-option small{font-size:11px;color:var(--muted,#657184)}
.keyword-rag-workflow .keyword-rag-task-picker-pagination{justify-content:center;padding:0;border:0;margin:12px 0}
@media(max-width:720px){.keyword-rag-workflow{padding:14px}.keyword-rag-workflow-actions{gap:8px}.keyword-rag-workflow-actions button{flex:1 1 140px}.keyword-rag-workflow-cancel{margin-right:0}.keyword-rag-workflow .keyword-rag-task-picker-search{align-items:flex-end;flex-wrap:wrap}.keyword-rag-workflow .keyword-rag-task-picker-search label{flex:1 1 180px}.keyword-rag-workflow .keyword-rag-task-picker-search button{flex:1 1 80px}}
.issue-ai-summary-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:10px 20px;border-bottom:1px solid var(--line,#e3e7ee)}
.issue-ai-summary-actions button{min-height:44px;min-width:112px;white-space:nowrap;flex:0 0 auto}
.issue-ai-summary-actions small{flex:1 1 240px;line-height:1.5;color:var(--muted,#62718b)}

/* 첨부 미리보기는 최상위 읽기 전용 대화상자이며 원래 업무 편집창을 보존한다. */
.attachment-image-trigger{display:block;border:0;background:transparent;width:100%;height:100%;min-height:44px;cursor:zoom-in;padding:0;border-radius:8px}.attachment-image-trigger:focus-visible{outline:3px solid #7964dc;outline-offset:2px}
.attachment-image-dialog{box-sizing:border-box;width:min(1100px,calc(100vw - 32px));max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);border:1px solid #d9ddea;border-radius:16px;padding:18px;background:#fff;color:#22344e;box-shadow:0 18px 70px #15203955;overflow:auto}
.attachment-image-dialog::backdrop{background:#18243dcc}.attachment-image-dialog header{display:flex;align-items:center;justify-content:space-between;gap:16px}.attachment-image-dialog h2{font-size:18px;margin:0;min-width:0;overflow-wrap:anywhere}.attachment-image-dialog button{min-height:44px;padding:8px 14px;flex-shrink:0}.attachment-image-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px}.attachment-image-tools output{min-width:72px;text-align:center;font-size:13px}.attachment-image-dialog [role=status]{font-size:13px;line-height:1.5;margin:10px 0;color:#5b6b81}.attachment-image-stage{height:min(65vh,760px);overflow:auto;display:flex;align-items:flex-start;justify-content:flex-start;background:#f0f2f7;border-radius:10px;padding:8px;box-sizing:border-box}.attachment-image-stage img{display:block;max-width:100%;max-height:100%;object-fit:contain;margin:auto}.attachment-image-dialog.is-original .attachment-image-stage img{width:var(--preview-image-width);height:auto;max-width:none;max-height:none;flex-shrink:0;margin:0}
@media(max-width:600px){.attachment-image-dialog{padding:12px;width:calc(100vw - 16px);max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);border-radius:12px}.attachment-image-dialog header{align-items:flex-start;gap:8px}.attachment-image-dialog h2{font-size:16px}.attachment-image-dialog header button{padding:8px}.attachment-image-tools{gap:6px}.attachment-image-dialog button{padding:8px 10px}.attachment-image-stage{height:60vh}}

.attachment-image-download{display:inline-flex;align-items:center;min-height:44px;padding:0 10px;font-size:13px}

/* 파일명과 조작을 서로 다른 줄로 배치하여 좁은 첨부 카드에서도 이름이 사라지지 않게 한다. */
.attachment-info{flex-wrap:wrap;gap:8px;font-size:13px}.attachment-info>a:first-child{flex:1 1 100%;min-width:0;font-size:13px}.attachment-info small{flex:1 1 100%;font-size:12px;color:#647187}.attachment-info button{min-height:44px;flex:0 0 auto;color:#6554b6;padding:8px 10px}.attachment-info .attachment-image-download{flex:0 0 auto;overflow:visible;font-size:13px}

.attachment-image-dialog h2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* 간트의 완료 표시는 색만으로 구분하지 않는다. 취소선/텍스트와 전체 후손 완료 건수를 함께 제공한다. */
.gantt-grid-row.has-descendant-progress{height:80px}
.gantt-cell.gantt-title-cell{padding:6px 10px;display:flex;align-items:center}
.gantt-title-stack{display:flex;flex-direction:column;gap:4px;min-width:0;width:100%}
.gantt-title-main{display:flex;align-items:center;gap:6px;min-width:0}
.gantt-title-main>.hierarchy-title{min-width:0;overflow:hidden}
.gantt-title-main .hierarchy-task-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.gantt-title-main [data-gantt-collapse]{flex:0 0 44px;width:44px;height:44px}
.gantt-state-badge{flex:none;font-size:10px;font-weight:600;padding:2px 5px;border-radius:4px;color:#246548;background:#e4f2eb}
.gantt-row-completed .hierarchy-task-label{text-decoration:line-through;text-decoration-thickness:1px;color:#426553}
.gantt-row-completed .gantt-left{background:#f3faf6}
.gantt-row-completed .gantt-timeline-bar{color:#245b43;border:1px solid #92bca5}
.gantt-row-closed .hierarchy-task-label{text-decoration:line-through;text-decoration-style:dashed;color:#667085}
.gantt-row-closed .gantt-state-badge{color:#535d6c;background:#e9ecf1}
.gantt-row-closed .gantt-timeline-bar{color:#535d6c;border:1px dashed #9aa5b5}
.gantt-descendant-progress{display:flex;align-items:center;gap:6px;font-size:10px;line-height:16px;color:#53617b;min-width:0;overflow:hidden}
.gantt-progress-count{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gantt-progress-percent{flex:none;font-weight:600;color:#6451bd}
.gantt-progress-track{flex:0 0 44px;height:5px;border-radius:9px;background:#e7e4f3;overflow:hidden}
.gantt-progress-track>i{display:block;height:100%;background:#7560d4;border-radius:inherit}
.gantt-progress-unavailable{font-size:10px;color:#69758a;line-height:16px}
.has-descendant-progress .gantt-timeline-bar{top:28px}
