*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:'Pretendard Variable',Pretendard,'Apple SD Gothic Neo','Noto Sans KR',sans-serif;
  word-break:keep-all;-webkit-font-smoothing:antialiased;line-height:1.5;min-height:100vh}
button{font-family:inherit}

.topbar{position:sticky;top:0;z-index:600;display:flex;align-items:stretch;gap:18px;min-height:56px;padding:0 20px;
  background:#fff;border-bottom:1px solid var(--line);overflow-x:auto;overflow-y:hidden}
.brand{display:flex;align-items:center;gap:8px;flex:none}
.brand .dots{display:flex;gap:3px;flex:none}
.brand .dots i{width:7px;height:7px;border-radius:50%}
.brand .dots i:nth-child(1){background:var(--accent)}
.brand .dots i:nth-child(2){background:#5bbfa5}
.brand .dots i:nth-child(3){background:#e8c552}
.brand b{font-size:16.5px;font-weight:800;color:var(--navy);letter-spacing:.02em;white-space:nowrap}
.brand small{font-size:10.5px;font-weight:600;color:var(--mut);white-space:nowrap}
.topnav{display:flex;align-items:stretch;gap:2px;flex:1;min-width:0}
.nitem{display:flex;align-items:center;gap:6px;padding:0 13px;border:none;background:none;cursor:pointer;
  font-size:13.5px;font-weight:600;color:var(--sub);white-space:nowrap;position:relative}
.nitem::after{content:'';position:absolute;left:10px;right:10px;bottom:0;height:3px;border-radius:3px 3px 0 0;background:transparent}
.nitem:hover{color:var(--navy);background:rgba(12,44,85,.03)}
.nitem.on{color:var(--navy);font-weight:800}
.nitem.on::after{background:var(--navy)}
.nitem .cnt{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:999px;background:#e9edf3;color:#5b6472;font-variant-numeric:tabular-nums}
.nitem.pipe .num{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--pc,#0c2c55);color:var(--pc,#0c2c55);
  font-size:10px;font-weight:800;display:grid;place-items:center;background:#fff;flex:none;font-variant-numeric:tabular-nums}
.nitem.pipe.on .num{background:var(--pc);border-color:var(--pc);color:#fff}
.nitem.pipe.on::after{background:var(--pc)}
.nav-div{width:1px;height:22px;background:var(--line);align-self:center;margin:0 6px;flex:none}
.nav-sp{flex:1;min-width:14px}
.toptools{display:flex;align-items:center;gap:7px;flex:none;align-self:center;padding-left:16px;border-left:1px solid var(--line)}
.nitem.tool{height:32px;border:1px solid var(--line);border-radius:8px;padding:0 12px;font-size:12.5px;background:#fff;color:var(--sub)}
.nitem.tool::after{display:none}
.nitem.tool:hover{border-color:var(--navy);color:var(--navy);background:#fff}
.nitem.tool.on{background:var(--navy);border-color:var(--navy);color:#fff;font-weight:700}
.nitem.tool.fill{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
.nitem.tool.fill:hover{filter:brightness(1.08);border-color:var(--accent);color:#fff}
.nitem.tool.fill.on{background:var(--navy);border-color:var(--navy)}
.userbox{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;color:var(--sub);white-space:nowrap}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center;font-size:12.5px;font-weight:800;flex:none}
.user-meta{display:grid;gap:1px;line-height:1.15}
.user-meta span{font-size:12.5px;color:var(--ink);font-weight:800}
.role-badge{font-size:10.5px;color:var(--accent);font-weight:800}
.logout-btn{height:30px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--sub);padding:0 9px;font-size:11.5px;font-weight:800;cursor:pointer}
.logout-btn:hover{border-color:var(--navy);color:var(--navy)}
.auth-source-badge{display:inline-flex;align-items:center;min-height:22px;border-radius:999px;padding:0 9px;font-size:11px;font-weight:950;white-space:nowrap}
.auth-source-badge.local{background:var(--line2);color:var(--sub)}
.auth-source-badge.ourdots{background:var(--teal-soft);color:var(--teal)}
@media(max-width:1180px){.brand small,.userbox span{display:none}}
@media(max-width:940px){.nitem{padding:0 9px}.nitem.tool{padding:0 10px}}

.main{min-width:0;display:flex;flex-direction:column}
.content{padding:22px 26px 70px;max-width:1480px;width:100%;margin:0 auto}
.panel{display:none}
.panel.on{display:block}
.empty-card{min-height:calc(100vh - 126px);display:grid;place-items:center;gap:6px;padding:26px;border:1.5px dashed var(--line);
  border-radius:12px;color:var(--mut);font-size:12.5px;text-align:center;background:#fff}
.empty-card strong{display:block;color:var(--navy);font-size:18px;font-weight:800}
.empty-card span{display:block}
.upload-nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;margin-left:6px;padding:0 5px;border-radius:999px;background:#fff;color:var(--accent);font-size:10px;font-weight:950}
.upload-shell{display:grid;gap:14px}
.upload-head{align-items:center}
.upload-stepper{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.upload-step{display:flex;align-items:center;gap:8px;min-height:42px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--sub);padding:0 12px;font-size:13px;font-weight:850}
.upload-step b{display:grid;place-items:center;width:22px;height:22px;border-radius:999px;background:var(--line2);color:var(--sub);font-size:12px}
.upload-step.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.upload-step.active b{background:var(--accent);color:#fff}
.upload-step.done{border-color:var(--green);color:var(--green);background:var(--green-soft)}
.upload-step.done b{background:var(--green);color:#fff}
.upload-dropzone{display:grid;place-items:center;gap:6px;min-height:138px;border:1.5px dashed var(--line);border-radius:8px;background:#fff;color:var(--sub);cursor:pointer}
.upload-dropzone strong{color:var(--navy);font-size:17px;font-weight:900}
.upload-dropzone.over{border-color:var(--accent);background:var(--accent-soft)}
.upload-status{display:flex;gap:8px;flex-wrap:wrap;min-height:0}
.upload-status span{display:inline-flex;min-height:24px;align-items:center;border-radius:999px;background:var(--line2);color:var(--sub);padding:0 9px;font-size:11px;font-weight:850}
.upload-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:14px;align-items:start}
.upload-list-pane,.review-pane{min-width:0;display:grid;gap:10px}
.upload-list-head,.review-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:36px}
.upload-list-head b,.review-head b{color:var(--navy);font-size:14px}
.review-filters{display:flex;gap:8px}
.review-filters select{height:34px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:inherit;font-size:12.5px;padding:0 9px}
.upload-list{display:grid;gap:8px}
.upload-file-card{display:grid;gap:4px;width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;text-align:left;padding:11px;cursor:pointer}
.upload-file-card:hover,.upload-file-card.selected{border-color:var(--navy)}
.upload-file-name{color:var(--ink);font-size:13px;font-weight:850;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.upload-file-meta,.upload-file-error{color:var(--sub);font-size:11.5px}
.upload-file-error{color:var(--red)}
.upload-empty{border:1px dashed var(--line);border-radius:8px;background:#fff;color:var(--sub);padding:22px;text-align:center;font-size:13px}
.review-groups{display:grid;gap:14px}
.review-file-group{display:grid;gap:8px}
.review-file-group h2{font-size:14px;color:var(--navy);font-weight:900}
.review-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.review-card{--review-color:var(--navy);display:grid;gap:9px;border:1px solid var(--line);border-top:4px solid var(--review-color);border-radius:8px;background:#fff;padding:12px;box-shadow:0 8px 20px rgba(12,44,85,.05)}
.review-card.problem{--review-color:var(--cP)}
.review-card.mission{--review-color:var(--cM)}
.review-card.innovation{--review-color:var(--cI)}
.review-card.impact{--review-color:var(--cIM)}
.review-card.reviewed{opacity:.78}
.review-card-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.review-db-badge,.review-status,.review-confidence{display:inline-flex;align-items:center;min-height:22px;border-radius:999px;padding:0 8px;font-size:11px;font-weight:950}
.review-db-badge{background:color-mix(in srgb,var(--review-color) 14%,#fff);color:var(--review-color)}
.review-status.pending{background:var(--line2);color:var(--sub)}
.review-status.approved{background:var(--green-soft);color:var(--green)}
.review-status.rejected{background:var(--red-soft);color:var(--red)}
.review-confidence{margin-left:auto}
.review-confidence.high{background:var(--teal-soft);color:var(--teal)}
.review-confidence.mid{background:var(--gold-soft);color:var(--gold)}
.review-confidence.low{background:var(--red-soft);color:var(--red)}
.review-card h3{font-size:14px;color:var(--ink);font-weight:900;line-height:1.35}
.review-card p{color:var(--sub);font-size:12.5px;line-height:1.55}
.review-card details{border-top:1px solid var(--line2);padding-top:7px;color:var(--sub);font-size:12px}
.review-card summary{cursor:pointer;font-weight:850;color:var(--navy)}
.review-warning{border-radius:8px;background:var(--gold-soft);color:var(--gold);font-size:11.5px;font-weight:800;padding:7px 8px}
.review-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.ghost-btn.danger{border-color:var(--red-soft);color:var(--red)}
.review-edit-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.review-edit-fields label:has(textarea){grid-column:1/-1}
.modal-form select[multiple]{min-height:112px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:inherit;font-size:13px;padding:8px;min-width:100%}
@media(max-width:940px){
  .upload-layout{grid-template-columns:1fr}
  .review-head{align-items:stretch;flex-direction:column}
  .review-filters{display:grid;grid-template-columns:1fr 1fr}
  .review-edit-fields{grid-template-columns:1fr}
}

.dashboard-shell{display:grid;gap:16px}
.dashboard-head{margin-bottom:0}
.dashboard-top{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.9fr) minmax(320px,.9fr);gap:14px;align-items:stretch}
.dashboard-kpis{display:grid;grid-template-columns:repeat(5,minmax(132px,1fr));gap:10px}
.kpi-card{height:126px;border:1px solid var(--line);border-top:4px solid var(--metric-color,var(--navy));border-radius:8px;background:#fff;
  padding:11px;display:grid;grid-template-rows:auto 1fr auto;gap:8px;text-align:left;cursor:pointer;color:var(--sub)}
.kpi-card:hover{border-color:var(--metric-color,var(--navy));box-shadow:0 8px 18px rgba(12,44,85,.08)}
.kpi-label{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:950;color:var(--navy)}
.kpi-dot{width:9px;height:9px;border-radius:50%;background:var(--metric-color,var(--navy));flex:none}
.kpi-value{align-self:end;display:flex;align-items:flex-end;gap:8px;min-width:0}
.kpi-value b{font-size:32px;line-height:1;color:var(--ink);font-weight:950;font-variant-numeric:tabular-nums}
.kpi-delta{min-height:22px;border-radius:999px;padding:0 8px;display:inline-flex;align-items:center;font-size:11px;font-weight:950;background:var(--line2);color:var(--mut);font-variant-numeric:tabular-nums}
.kpi-delta.up{background:var(--green-soft);color:var(--green)}
.kpi-delta.down{background:var(--red-soft);color:var(--red)}
.kpi-spark{height:22px;width:100%;display:block}
.dashboard-card{border:1px solid var(--line);border-radius:8px;background:#fff;min-height:126px;padding:12px;display:grid;gap:10px;align-content:start}
.dashboard-card-head{display:flex;align-items:center;gap:10px}
.dashboard-card-head h2,.dashboard-map-head h2{font-size:15px;color:var(--navy);font-weight:950}
.dashboard-funnel{display:grid;gap:9px}
.funnel-row{display:grid;grid-template-columns:76px minmax(0,1fr) 58px 76px;gap:8px;align-items:center;color:var(--sub);font-size:12px;font-weight:850}
.funnel-row b{color:var(--ink);font-size:13px;font-weight:950}
.funnel-count{justify-self:end;color:var(--sub);font-weight:950;font-variant-numeric:tabular-nums}
.funnel-track{height:18px;border-radius:999px;background:var(--line2);overflow:hidden}
.funnel-bar{height:100%;border-radius:inherit;background:var(--stage-color,var(--navy));min-width:4px}
.funnel-rate{justify-self:end;display:inline-flex;align-items:center;min-height:22px;border-radius:999px;padding:0 8px;background:#eef2f8;color:var(--navy);font-size:11px;font-weight:950;font-variant-numeric:tabular-nums}
.dashboard-feed{display:grid;gap:7px;max-height:294px;overflow:auto;padding-right:2px}
.feed-item{width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--sub);padding:8px 9px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;text-align:left;cursor:pointer}
.feed-item:hover{border-color:var(--kind-color,var(--navy));background:var(--bg)}
.feed-dot{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--kind-color,var(--navy));color:#fff;font-size:10px;font-weight:950;flex:none}
.feed-main{display:grid;gap:2px;min-width:0}
.feed-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:12.5px;font-weight:900}
.feed-meta{display:flex;gap:5px;align-items:center;color:var(--mut);font-size:11px;font-weight:850}
.feed-event{justify-self:end;align-self:start;min-height:22px;border-radius:999px;background:color-mix(in srgb,var(--kind-color,var(--navy)) 10%,#fff);
  color:var(--kind-color,var(--navy));padding:0 8px;display:inline-flex;align-items:center;font-size:11px;font-weight:950;white-space:nowrap}
.dashboard-empty{min-height:86px;border:1px dashed var(--line);border-radius:8px;background:var(--bg);display:grid;place-items:center;text-align:center;color:var(--mut);font-size:12px;font-weight:850;padding:14px}
.dashboard-stepping-section{border:1px solid var(--line);border-radius:8px;background:#fff;padding:12px;display:grid;gap:10px}
.stepping-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.stepping-column{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:10px;display:grid;gap:8px;align-content:start}
.stepping-column.mission{border-top:4px solid var(--cM)}
.stepping-column.dormant{border-top:4px solid var(--stG);background:#f8f9fb}
.stepping-head{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--sub);font-size:12px;font-weight:900}
.stepping-head b{color:var(--navy);font-size:14px;font-weight:950}
.stepping-head span{color:var(--mut);font-variant-numeric:tabular-nums}
.stepping-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.stepping-card{min-height:104px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--sub);padding:10px;display:grid;gap:7px;text-align:left;cursor:pointer}
.stepping-card:hover{border-color:var(--navy);box-shadow:0 8px 18px rgba(12,44,85,.07)}
.stepping-card.mission:hover{border-color:var(--cM)}
.stepping-card.dormant:hover{border-color:var(--stG)}
.stepping-card-top{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0}
.stepping-card-top b{color:var(--mut);font-size:11px;font-weight:950;white-space:nowrap}
.stepping-card strong{color:var(--ink);font-size:13.5px;line-height:1.35;font-weight:950}
.stepping-meta{color:var(--sub);font-size:11.5px;font-weight:800}
.dashboard-map-section{border:1px solid var(--line);border-radius:8px;background:#fff;padding:12px;display:grid;gap:10px}
.dashboard-map-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.dashboard-map-head>div:first-child{display:grid;gap:2px}
.dashboard-map-head span{color:var(--mut);font-size:12px;font-weight:850}
.map-seg{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:3px;gap:2px}
.map-seg button{height:30px;border:none;border-radius:6px;background:transparent;color:var(--sub);font-size:12px;font-weight:900;padding:0 10px;cursor:pointer}
.map-seg button:hover{color:var(--navy);background:#fff}
.map-seg button.on{background:var(--navy);color:#fff}
.dashboard-map-layer-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.map-layer-chip{height:30px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--sub);display:inline-flex;align-items:center;gap:7px;padding:0 10px;font-size:12px;font-weight:900;cursor:pointer}
.map-layer-chip:hover{border-color:var(--kind-color,var(--navy));color:var(--kind-color,var(--navy))}
.map-layer-chip[aria-pressed="true"]{background:color-mix(in srgb,var(--kind-color,var(--navy)) 10%,#fff);border-color:var(--kind-color,var(--navy));color:var(--kind-color,var(--navy))}
.map-layer-swatch{width:10px;height:10px;border-radius:50%;background:var(--kind-color,var(--navy));flex:none}
.map-layer-swatch.mission{border-radius:2px}
.map-layer-swatch.impact{clip-path:polygon(50% 0,61% 34%,98% 34%,68% 55%,79% 91%,50% 69%,21% 91%,32% 55%,2% 34%,39% 34%)}
.map-layer-count{font-variant-numeric:tabular-nums;color:var(--mut)}
.dashboard-map-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:10px;min-height:620px}
.dashboard-map{height:620px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--soft)}
.dashboard-map-list{height:620px;border:1px solid var(--line);border-radius:8px;background:var(--bg);display:grid;grid-template-rows:42px minmax(0,1fr);min-width:0}
.dashboard-map-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 11px;border-bottom:1px solid var(--line);color:var(--navy);font-size:12.5px;font-weight:950}
.dashboard-map-list-head span{color:var(--mut);font-size:11.5px;font-weight:900}
.dashboard-map-list-body{overflow:auto;display:grid;align-content:start;gap:6px;padding:8px}
.map-list-item{width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--sub);padding:8px;display:grid;gap:4px;text-align:left;cursor:pointer}
.map-list-item:hover,.map-list-item.hl{border-color:var(--kind-color,var(--navy));background:color-mix(in srgb,var(--kind-color,var(--navy)) 8%,#fff)}
.map-list-title{display:flex;align-items:center;gap:7px;min-width:0;color:var(--ink);font-size:12.5px;font-weight:900}
.map-list-title span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.map-list-dot{width:8px;height:8px;border-radius:50%;background:var(--kind-color,var(--navy));flex:none}
.map-list-meta{display:flex;gap:6px;align-items:center;color:var(--mut);font-size:11px;font-weight:850}
.dashboard-marker{background:transparent;border:none}
.dashboard-marker .marker-core{width:20px;height:20px;display:grid;place-items:center;filter:drop-shadow(0 3px 5px rgba(12,44,85,.22))}
.dashboard-marker .mk-problem{width:17px;height:17px;border-radius:50%;background:var(--cP);border:2px solid #fff}
.dashboard-marker .mk-mission{width:17px;height:17px;border-radius:4px;background:var(--cM);border:2px solid #fff}
.dashboard-marker .mk-innovation{width:17px;height:17px;border-radius:50%;background:var(--marker-color,var(--cI));border:2px solid #fff}
.dashboard-marker .mk-innovation.dormant{background:var(--stG);border-style:dashed}
.dashboard-marker .mk-impact{width:22px;height:22px;color:#d4a017;font-size:20px;line-height:20px;text-shadow:0 1px 0 #fff,0 0 3px #fff}
.dashboard-marker.hl .marker-core{transform:scale(1.22)}
.jireh-popup .leaflet-popup-content-wrapper{border-radius:8px;border:1px solid var(--line);box-shadow:var(--shadow-pop)}
.jireh-popup .leaflet-popup-content{margin:12px;width:250px!important}
.map-popup{display:grid;gap:8px;color:var(--sub)}
.map-popup-badge{display:inline-flex;width:max-content;min-height:22px;align-items:center;border-radius:999px;background:color-mix(in srgb,var(--kind-color,var(--navy)) 12%,#fff);
  color:var(--kind-color,var(--navy));padding:0 8px;font-size:11px;font-weight:950}
.map-popup h3{font-size:14px;line-height:1.35;color:var(--ink);font-weight:950}
.map-popup dl{display:grid;grid-template-columns:64px minmax(0,1fr);gap:4px 8px;font-size:12px}
.map-popup dt{color:var(--mut);font-weight:900}
.map-popup dd{color:var(--sub);font-weight:750}
.map-popup button{height:30px;border:1px solid var(--kind-color,var(--navy));border-radius:8px;background:#fff;color:var(--kind-color,var(--navy));font-size:12px;font-weight:950;cursor:pointer}
.metric-modal{display:grid;gap:12px}
.metric-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.metric-checks{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.metric-checks label{display:inline-flex!important;align-items:center;gap:5px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--sub);min-height:30px;padding:0 9px;font-size:12px!important;font-weight:900!important;cursor:pointer}
.metric-checks input{width:14px!important;min-width:14px;height:14px;accent-color:var(--metric-color,var(--navy))}
.metric-chart-wrap{height:310px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:10px}
.metric-chart-wrap canvas{width:100%!important;height:100%!important}

.problem-shell{display:grid;gap:14px}
.problem-head{margin-bottom:0}
.problem-toolbar{display:flex;align-items:end;gap:14px;flex-wrap:wrap;padding-bottom:2px}
.filter-block{display:grid;gap:6px}
.filter-block>span,.problem-search{color:var(--sub);font-size:12px;font-weight:900}
.chip-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.chip-filter{height:32px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--sub);padding:0 11px;font-size:12px;font-weight:850;cursor:pointer}
.chip-filter:hover{border-color:var(--navy);color:var(--navy)}
.chip-filter.on{background:var(--navy);border-color:var(--navy);color:#fff}
.problem-search{display:grid;gap:6px;margin-left:auto;min-width:min(320px,100%)}
.problem-search input{height:36px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:inherit;font-size:13px;padding:0 11px}
.problem-search input:focus{outline:2px solid rgba(238,122,46,.18);border-color:var(--accent)}
.problem-dist{height:9px;border-radius:999px;background:var(--line2);overflow:hidden;display:flex}
.problem-dist i{display:block;min-width:3px;height:100%}
.kanban-board{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:12px;align-items:start}
.kanban-col{min-height:calc(100vh - 250px);border-top:4px solid var(--kc);background:#fff;border-radius:8px;border-left:1px solid var(--line);border-right:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden}
.kanban-head{height:46px;display:flex;align-items:center;gap:8px;padding:0 12px;border-bottom:1px solid var(--line2);background:linear-gradient(180deg,var(--kc-soft),#fff);color:var(--navy);font-size:13px;font-weight:950}
.kanban-head .dot{width:9px;height:9px;border-radius:50%;background:var(--kc);flex:none}
.kanban-head .count{margin-left:auto;min-width:26px;height:22px;border-radius:999px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;color:var(--sub);font-size:11px;font-weight:900}
.kanban-list{display:grid;gap:8px;padding:10px}
.problem-card{border:1px solid var(--line);border-radius:8px;background:#fff;padding:10px;display:grid;gap:8px;text-align:left;cursor:pointer;box-shadow:0 1px 0 rgba(12,44,85,.03)}
.problem-card:hover{border-color:var(--navy);box-shadow:0 8px 18px rgba(12,44,85,.08)}
.problem-card.selected{border-color:var(--accent);background:var(--accent-soft)}
.problem-card-top{display:flex;align-items:center;gap:8px;color:var(--mut);font-size:11px;font-weight:900}
.problem-card-top input{width:16px;height:16px;flex:none;accent-color:var(--accent)}
.source-mark{width:24px;height:24px;border-radius:7px;background:var(--soft);color:var(--navy);display:grid;place-items:center;font-size:10px;font-weight:950;flex:none}
.problem-card h3{font-size:14px;line-height:1.35;color:var(--ink);font-weight:900}
.problem-meta{display:flex;gap:5px;flex-wrap:wrap;align-items:center;color:var(--mut);font-size:11.5px;font-weight:750}
.pill{display:inline-flex;align-items:center;min-height:22px;border-radius:999px;padding:0 8px;font-size:11px;font-weight:850;background:var(--soft);color:var(--sub)}
.pill.topic{background:var(--accent-soft);color:var(--accent)}
.pill.region{background:var(--teal-soft);color:var(--teal)}
.pill.i{background:var(--teal-soft);color:var(--cI)}
.pill.gray{background:var(--line2);color:var(--mut)}
.empathy-btn{margin-left:auto;height:26px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--accent);padding:0 9px;font-size:12px;font-weight:950;cursor:pointer}
.empathy-btn:hover{border-color:var(--accent);background:var(--accent-soft)}
.kanban-empty{min-height:120px;display:grid;place-items:center;text-align:center;color:var(--mut);font-size:12px;font-weight:800;border:1px dashed var(--line);border-radius:8px;background:var(--bg);padding:14px}
.bulkbar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:700;display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:var(--shadow-pop)}
.bulkbar[hidden]{display:none}
.bulkbar b{color:var(--navy);font-size:13px;font-weight:950;white-space:nowrap}
.detail-grid{display:grid;gap:14px}
.detail-kv{display:grid;grid-template-columns:110px minmax(0,1fr);gap:8px 12px;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}
.detail-kv dt{color:var(--mut);font-size:12px;font-weight:900}
.detail-kv dd{color:var(--sub);font-size:13px;font-weight:700;min-width:0}
.detail-body{white-space:pre-wrap;color:var(--ink);font-size:14px;font-weight:650;line-height:1.65}
.relation-row{display:flex;gap:6px;flex-wrap:wrap}
.relation-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:5px 9px;color:var(--navy);font-size:12px;font-weight:850;background:#fff}
.locmap{height:260px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--soft)}
.modal-form textarea{min-height:92px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:inherit;font-size:13px;padding:9px 10px;resize:vertical;width:100%}
.modal-form textarea:focus{outline:2px solid rgba(238,122,46,.18);border-color:var(--accent)}
.form-help{color:var(--mut);font-size:11.5px;font-weight:700;margin-top:-5px}
.form-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.location-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.geo-results{display:grid;gap:6px;margin-top:6px}
.geo-results button{border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--sub);font:inherit;font-size:12px;font-weight:750;text-align:left;padding:8px;cursor:pointer}
.geo-results button:hover{border-color:var(--navy);color:var(--navy)}
.radius-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.radius-row input{width:180px;accent-color:var(--accent)}
.loc-status{color:var(--mut);font-size:11.5px;font-weight:800}

.mission-shell{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:16px;align-items:start;min-height:calc(100vh - 126px)}
.mission-list-pane{display:grid;gap:10px;position:sticky;top:78px;max-height:calc(100vh - 104px);min-height:0}
.mission-list-head{height:42px;display:flex;align-items:center;gap:10px}
.mission-list-head b{color:var(--navy);font-size:14px;font-weight:950}
.mission-list-head .primary-btn{margin-left:auto}
.mission-toolbar{display:grid;grid-template-columns:120px minmax(0,1fr);gap:8px}
.mission-toolbar label{display:grid;gap:5px;color:var(--sub);font-size:12px;font-weight:850}
.mission-toolbar input,.mission-toolbar select{height:34px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:inherit;font-size:12.5px;padding:0 9px;min-width:0}
.mission-list{display:grid;gap:8px;overflow:auto;padding-right:4px}
.mission-item{display:grid;gap:7px;width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;padding:11px;text-align:left;color:var(--sub);cursor:pointer}
.mission-item:hover{border-color:var(--navy);box-shadow:0 8px 18px rgba(12,44,85,.07)}
.mission-item.selected{border-color:var(--cM);background:#eef2f8}
.mission-code{color:var(--mut);font-size:11px;font-weight:900}
.mission-item strong{color:var(--ink);font-size:14px;line-height:1.35;font-weight:950}
.mission-item-meta,.mission-detail-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--mut);font-size:11.5px;font-weight:800}
.mission-status{display:inline-flex;align-items:center;min-height:22px;border-radius:999px;padding:0 8px;font-size:11px;font-weight:950}
.mission-status.active{background:#eef2f8;color:var(--cM)}
.mission-status.paused{background:var(--soft);color:var(--sub)}
.mission-status.achieved{background:var(--green-soft);color:var(--green)}
.mission-status.archived{background:var(--line2);color:var(--mut)}
.relation-chip.compact{min-height:22px;padding:0 8px;font-size:11px}
.mission-detail-pane{display:grid;gap:14px;min-width:0}
.mission-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.mission-detail-head h2{color:var(--navy);font-size:24px;line-height:1.25;font-weight:950;margin-top:2px}
.mission-keyword-row,.keyword-chip-row{display:flex;gap:6px;flex-wrap:wrap}
.keyword-chip{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--navy);min-height:26px;padding:0 9px;font-size:12px;font-weight:900}
button.keyword-chip{cursor:pointer}
.mission-section-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.mission-section{border-top:3px solid #eef2f8;background:#fff;border-left:1px solid var(--line);border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:8px;padding:12px;min-height:116px}
.mission-section h3,.mission-relations h3{font-size:13px;color:var(--navy);font-weight:950;margin-bottom:6px}
.mission-section p{white-space:pre-wrap;color:var(--sub);font-size:13px;font-weight:650;line-height:1.65}
.mission-relations{display:grid;gap:12px}
.mission-empty{min-height:180px;display:grid;place-items:center;text-align:center;color:var(--mut);font-size:12.5px;font-weight:850;border:1px dashed var(--line);border-radius:8px;background:#fff;padding:18px}
button.relation-chip{cursor:pointer}
button.relation-chip:hover{border-color:var(--navy);background:#eef2f8}
.mission-form-fields{display:grid;gap:12px}
.required-badge{display:inline-flex;align-items:center;justify-content:center;min-height:18px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:10px;font-weight:950;padding:0 6px;margin-left:3px}
.keyword-editor{display:grid;gap:7px}
.keyword-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.radio-card-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.radio-card{min-height:52px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--sub);display:flex!important;align-items:center;gap:9px;padding:12px;font-size:13px!important;font-weight:950!important;cursor:pointer}
.radio-card input{width:16px!important;min-width:16px;height:16px;accent-color:var(--accent)}
.radio-card.selected{border-color:var(--accent);background:var(--accent-soft);color:var(--navy)}

.innovation-shell{display:grid;gap:14px}
.innovation-rail-section{display:grid;gap:8px}
.innovation-rail-head{display:flex;align-items:center;gap:10px;color:var(--sub);font-size:12px;font-weight:850}
.innovation-rail-head b{color:var(--navy);font-size:14px;font-weight:950}
.innovation-rail-head span{color:var(--mut)}
.innovation-rail{display:flex;gap:9px;overflow-x:auto;padding:2px 2px 8px;scroll-snap-type:x proximity}
.innovation-rail-card{min-width:210px;max-width:260px;border:1.5px solid var(--navy);border-radius:8px;background:#fff;color:var(--sub);padding:10px 11px;text-align:left;cursor:pointer;scroll-snap-align:start}
.innovation-rail-card:hover{box-shadow:0 8px 18px rgba(12,44,85,.07)}
.innovation-rail-card.selected{background:#eef2f8;border-color:var(--cM)}
.innovation-rail-card small{display:flex;align-items:center;gap:6px;color:var(--mut);font-size:11px;font-weight:950;margin-bottom:5px}
.innovation-rail-card strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:13px;font-weight:950}
.mission-tag{display:inline-flex;align-items:center;border:1px solid var(--cM);border-radius:999px;color:var(--cM);background:#fff;min-height:19px;padding:0 7px;font-size:10px;font-weight:950}
.innovation-workspace{display:grid;grid-template-columns:minmax(320px,410px) minmax(0,1fr);gap:16px;align-items:start;min-height:calc(100vh - 202px)}
.innovation-list-pane{display:grid;gap:10px;position:sticky;top:78px;max-height:calc(100vh - 104px);min-height:0}
.innovation-list-head{height:42px;display:flex;align-items:center;gap:10px}
.innovation-list-head b{color:var(--navy);font-size:14px;font-weight:950}
.innovation-list-head .primary-btn{margin-left:auto}
.innovation-toolbar{display:grid;grid-template-columns:120px minmax(0,1fr);gap:8px}
.innovation-toolbar label{display:grid;gap:5px;color:var(--sub);font-size:12px;font-weight:850}
.innovation-toolbar input,.innovation-toolbar select{height:34px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:inherit;font-size:12.5px;padding:0 9px;min-width:0}
.innovation-list{display:grid;gap:8px;overflow:auto;padding-right:4px}
.innovation-item{display:grid;gap:8px;width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;padding:11px;text-align:left;color:var(--sub);cursor:pointer}
.innovation-item:hover{border-color:var(--navy);box-shadow:0 8px 18px rgba(12,44,85,.07)}
.innovation-item.selected{border-color:var(--cI);background:var(--teal-soft)}
.innovation-code{color:var(--mut);font-size:11px;font-weight:900}
.innovation-title-row{display:flex;align-items:flex-start;gap:7px;min-width:0}
.innovation-title-row strong{color:var(--ink);font-size:14px;line-height:1.35;font-weight:950;min-width:0}
.status-dot{width:10px;height:10px;border-radius:50%;flex:none;margin-top:5px;background:var(--status-color,#15808d)}
.innovation-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--mut);font-size:11.5px;font-weight:800}
.innovation-progress{height:7px;border-radius:999px;background:var(--line2);overflow:hidden}
.innovation-progress i{display:block;height:100%;width:var(--progress,0%);border-radius:inherit;background:var(--status-color,#15808d)}
.innovation-detail-pane{display:grid;gap:14px;min-width:0}
.innovation-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.innovation-detail-head h2{color:var(--navy);font-size:24px;line-height:1.25;font-weight:950;margin-top:2px}
.innovation-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.innovation-kv-card{border-top:3px solid var(--cI);background:#fff;border-left:1px solid var(--line);border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:8px;padding:12px;display:grid;gap:8px}
.innovation-kv-card h3,.innovation-timeline h3,.innovation-update-form h3{font-size:13px;color:var(--navy);font-weight:950}
.innovation-kv-list{display:grid;grid-template-columns:90px minmax(0,1fr);gap:7px 10px;color:var(--sub);font-size:12.5px;font-weight:750}
.innovation-kv-list dt{color:var(--mut);font-weight:900}
.innovation-kv-list dd{min-width:0}
.innovation-banner{border:1px solid #d9dde4;border-left:4px solid #9aa5b1;border-radius:8px;background:#f7f8fa;color:var(--sub);padding:10px 12px;font-size:12.5px;font-weight:850}
.innovation-timeline{display:grid;gap:8px}
.timeline-list{display:grid;gap:8px}
.timeline-item{display:grid;gap:5px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:10px}
.timeline-top{display:flex;align-items:center;gap:7px;color:var(--mut);font-size:11.5px;font-weight:850}
.timeline-body{white-space:pre-wrap;color:var(--ink);font-size:13px;font-weight:650;line-height:1.55}
.innovation-update-form{display:grid;gap:9px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:12px}
.innovation-update-form .form-grid-2{align-items:end}
.progress-live{color:var(--cI);font-size:12px;font-weight:950}
.mission-check-list{display:grid;gap:6px;max-height:180px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--bg)}
.mission-check-list label{display:flex!important;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:8px;color:var(--sub);font-size:12px;font-weight:850;cursor:pointer}
.mission-check-list input{width:16px!important;min-width:16px;height:16px;accent-color:var(--cI)}
.innovation-empty{min-height:180px;display:grid;place-items:center;text-align:center;color:var(--mut);font-size:12.5px;font-weight:850;border:1px dashed var(--line);border-radius:8px;background:#fff;padding:18px}

.impact-shell{display:grid;grid-template-columns:minmax(320px,410px) minmax(0,1fr);gap:16px;align-items:start;min-height:calc(100vh - 126px)}
.impact-list-pane{display:grid;gap:10px;position:sticky;top:78px;max-height:calc(100vh - 104px);min-height:0}
.impact-list-head{height:42px;display:flex;align-items:center;gap:10px}
.impact-list-head b{color:var(--navy);font-size:14px;font-weight:950}
.impact-list-head .primary-btn{margin-left:auto}
.impact-toolbar{display:grid;gap:9px}
.impact-toolbar label{display:grid;gap:5px;color:var(--sub);font-size:12px;font-weight:850}
.impact-toolbar input,.impact-toolbar select{height:34px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:inherit;font-size:12.5px;padding:0 9px;min-width:0}
.impact-list{display:grid;gap:8px;overflow:auto;padding-right:4px}
.impact-item{display:grid;gap:7px;width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;padding:11px;text-align:left;color:var(--sub);cursor:pointer}
.impact-item:hover{border-color:var(--navy);box-shadow:0 8px 18px rgba(12,44,85,.07)}
.impact-item.selected{border-color:var(--cIM);background:#fff8e4}
.impact-code{color:var(--mut);font-size:11px;font-weight:900}
.impact-item strong{color:var(--ink);font-size:14px;line-height:1.35;font-weight:950}
.impact-project{color:var(--sub);font-size:12px;font-weight:850}
.impact-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--mut);font-size:11.5px;font-weight:800}
.verification-status{display:inline-flex;align-items:center;min-height:22px;border-radius:999px;padding:0 8px;font-size:11px;font-weight:950}
.verification-status.reported{background:#f5efe2;color:#9a6a08}
.verification-status.review{background:#eef2f8;color:var(--cM)}
.verification-status.verified{background:var(--green-soft);color:var(--green)}
.impact-detail-pane{display:grid;gap:14px;min-width:0}
.impact-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.impact-detail-head h2{color:var(--navy);font-size:24px;line-height:1.25;font-weight:950;margin-top:2px}
.impact-kv-card{border-top:3px solid var(--cIM);background:#fff;border-left:1px solid var(--line);border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:8px;padding:12px;display:grid;gap:8px}
.impact-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.impact-card-head h3,.impact-kv-card h3,.impact-lineage h3{font-size:13px;color:var(--navy);font-weight:950}
.impact-kv-list{display:grid;grid-template-columns:90px minmax(0,1fr);gap:7px 10px;color:var(--sub);font-size:12.5px;font-weight:750}
.impact-kv-list dt{color:var(--mut);font-weight:900}
.impact-kv-list dd{min-width:0}
.impact-lineage{border:1px solid var(--line);border-radius:8px;background:#fff;padding:12px;display:grid;gap:9px}
.lineage-chain{display:flex;align-items:stretch;gap:8px;overflow-x:auto;padding-bottom:2px}
.lineage-group{display:flex;gap:6px;align-items:stretch;flex:none}
.lineage-arrow{display:grid;place-items:center;color:var(--mut);font-size:18px;font-weight:900;flex:none}
.lineage-node{width:170px;min-height:70px;border:1px solid var(--line);border-top:4px solid var(--node-color);border-radius:8px;background:#fff;color:var(--sub);display:grid;align-content:start;gap:5px;padding:8px;text-align:left;cursor:pointer}
.lineage-node.problem{--node-color:var(--cP)}
.lineage-node.mission{--node-color:var(--cM)}
.lineage-node.innovation{--node-color:var(--cI)}
.lineage-node.impact{--node-color:var(--cIM)}
.lineage-node:hover{border-color:var(--navy);box-shadow:0 8px 18px rgba(12,44,85,.07)}
.lineage-node small{display:flex;align-items:center;gap:5px;color:var(--mut);font-size:10.5px;font-weight:950}
.lineage-node span{color:var(--ink);font-size:12px;font-weight:900;line-height:1.35}
.lineage-node.current{background:#fff8dc;border-color:var(--cIM);box-shadow:inset 0 0 0 1px rgba(184,134,11,.2)}
.lineage-node.empty{cursor:default;color:var(--mut);background:var(--bg)}
.lineage-node.empty:hover{border-color:var(--line);box-shadow:none}
.current-tag{display:inline-flex;align-items:center;border-radius:999px;background:var(--cIM);color:#fff;font-size:9.5px;font-weight:950;padding:1px 6px}
.impact-metric-table .data-table{min-width:640px}
.impact-form .impact-metric-editor{display:grid;gap:8px;border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:10px}
.impact-metric-head{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--navy);font-size:13px;font-weight:950}
.impact-metric-rows{display:grid;gap:8px}
.impact-metric-row{display:grid;grid-template-columns:minmax(130px,1.2fr) minmax(110px,.8fr) minmax(95px,.8fr) minmax(95px,.8fr) minmax(80px,.6fr) minmax(120px,.8fr) auto;gap:7px;align-items:end;border:1px solid var(--line);border-radius:8px;background:#fff;padding:8px}
.impact-empty{min-height:180px;display:grid;place-items:center;text-align:center;color:var(--mut);font-size:12.5px;font-weight:850;border:1px dashed var(--line);border-radius:8px;background:#fff;padding:18px}
.impact-empty.compact{min-height:74px;background:var(--bg)}

.lineage-tool-shell{display:grid;gap:12px;min-height:calc(100vh - 126px)}
.lineage-picker{display:grid;gap:5px;color:var(--sub);font-size:12px;font-weight:850;min-width:min(420px,100%)}
.lineage-picker input{height:36px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:inherit;font-size:13px;padding:0 10px;min-width:0}
.lineage-picker input:focus{outline:2px solid rgba(238,122,46,.18);border-color:var(--accent)}
.lineage-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.lineage-toolbar span{color:var(--sub);font-size:12.5px;font-weight:850}
.lineage-graph{min-height:620px}
.lineage-stage-grid{position:relative;display:grid;grid-template-columns:repeat(4,minmax(210px,1fr));gap:16px;align-items:start;min-height:620px}
.lineage-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;overflow:visible}
.lineage-svg path{fill:none;stroke:var(--edge-color,var(--navy));stroke-width:2;stroke-linecap:round;opacity:.42;transition:opacity .15s,stroke-width .15s}
.lineage-svg path.hot{stroke:var(--edge-hot-color,var(--edge-color));stroke-width:3.5;opacity:1}
.lineage-col{position:relative;z-index:2;border:1px solid var(--line);border-top:4px solid var(--lineage-color);border-radius:8px;background:rgba(255,255,255,.96);min-height:580px;display:grid;grid-template-rows:46px minmax(0,1fr);overflow:hidden}
.lineage-col-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 12px;border-bottom:1px solid var(--line2);background:color-mix(in srgb,var(--lineage-color) 10%,#fff)}
.lineage-col-head b{color:var(--navy);font-size:13px;font-weight:950}
.lineage-col-head span{display:inline-flex;align-items:center;min-height:22px;border-radius:999px;background:#fff;border:1px solid var(--line);color:var(--sub);font-size:11px;font-weight:950;padding:0 8px}
.lineage-col-body{display:grid;align-content:start;gap:10px;padding:12px}
.lg-node{width:100%;min-height:96px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--sub);padding:10px;text-align:left;display:grid;gap:7px;cursor:pointer;transition:opacity .15s,border-color .15s,box-shadow .15s,transform .15s}
.lg-node:hover,.lg-node.hot{border-color:var(--lineage-color,var(--navy));box-shadow:0 8px 18px rgba(12,44,85,.08)}
.lg-node.hot{transform:translateY(-1px)}
.lg-node-top{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0}
.lg-node-top b{color:var(--mut);font-size:11px;font-weight:950;white-space:nowrap}
.lg-node strong{color:var(--ink);font-size:13.5px;line-height:1.35;font-weight:950}
.lg-node-meta{color:var(--mut);font-size:11.5px;font-weight:850}
.lineage-empty{min-height:96px;border:1px dashed var(--line);border-radius:8px;background:var(--bg);display:grid;place-items:center;text-align:center;color:var(--mut);font-size:12px;font-weight:850;padding:12px}
.lineage-stage-grid.dim .lg-node{opacity:.28}
.lineage-stage-grid.dim .lg-node.hot{opacity:1}
.lineage-stage-grid.dim .lineage-svg path{opacity:.08}
.lineage-stage-grid.dim .lineage-svg path.hot{opacity:1}

.toast-wrap{position:fixed;right:18px;bottom:18px;z-index:800;display:grid;gap:8px;max-width:min(360px,calc(100vw - 36px))}
.toast{background:#fff;border:1px solid var(--line);border-left:4px solid var(--navy);border-radius:8px;box-shadow:var(--shadow-pop);
  padding:11px 13px;font-size:13px;font-weight:700;color:var(--sub)}
.toast.error{border-left-color:var(--red);color:var(--red)}
.toast.success{border-left-color:var(--green);color:var(--green)}

.modal-backdrop{position:fixed;inset:0;z-index:760;background:rgba(12,44,85,.22);display:grid;place-items:center;padding:18px}
.modal-backdrop[hidden]{display:none}
.modal{width:min(520px,100%);background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-pop);overflow:hidden}
.modal--wide{width:min(720px,100%)}
.modal-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line2)}
.modal-head h2{font-size:16px;color:var(--navy);font-weight:800}
.modal-close{margin-left:auto;width:30px;height:30px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--sub);cursor:pointer;font-size:18px;line-height:1}
.modal-close:hover{border-color:var(--navy);color:var(--navy)}
.modal-body{padding:16px;color:var(--sub);font-size:13px}

.primary-btn,.ghost-btn,.small-btn{border-radius:8px;font-family:inherit;font-weight:800;cursor:pointer;white-space:nowrap}
.primary-btn{height:36px;border:1px solid var(--accent);background:var(--accent);color:#fff;padding:0 14px}
.primary-btn:hover{filter:brightness(1.06)}
.primary-btn:disabled,.ghost-btn:disabled,.small-btn:disabled{opacity:.45;cursor:not-allowed}
.primary-btn.wide{width:100%;height:42px}
.ghost-btn{height:36px;border:1px solid var(--line);background:#fff;color:var(--sub);padding:0 14px}
.ghost-btn:hover{border-color:var(--navy);color:var(--navy)}
.small-btn{height:30px;border:1px solid var(--line);background:#fff;color:var(--sub);padding:0 9px;font-size:11.5px;margin-right:6px}
.small-btn:hover{border-color:var(--navy);color:var(--navy)}
.small-btn.danger{border-color:var(--red-soft);color:var(--red)}
.small-btn.danger:hover{border-color:var(--red)}
.link-button{border:none;background:none;color:var(--navy);font:inherit;font-size:12px;font-weight:900;cursor:pointer;padding:0}
.link-button:hover{text-decoration:underline}

.settings-layout{display:grid;grid-template-columns:180px minmax(0,1fr);gap:22px;align-items:start}
.settings-nav{display:grid;gap:6px;position:sticky;top:78px}
.settings-tab{height:38px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--sub);font-size:13px;font-weight:800;text-align:left;padding:0 12px;cursor:pointer}
.settings-tab:hover{border-color:var(--navy);color:var(--navy)}
.settings-tab.on{background:var(--navy);border-color:var(--navy);color:#fff}
.settings-content{min-width:0}
.settings-section{display:none}
.settings-section.on{display:block}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}
.section-head h1{font-size:22px;line-height:1.2;color:var(--navy);font-weight:900}
.filters{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.filters label,.modal-form label{display:grid;gap:5px;color:var(--sub);font-size:12px;font-weight:800}
.filters input,.filters select,.modal-form input,.modal-form select,.data-table select{height:36px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:inherit;font-size:13px;padding:0 10px;min-width:130px}
.filters input{min-width:240px}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff}
.data-table{width:100%;border-collapse:collapse;min-width:760px}
.data-table th,.data-table td{padding:11px 12px;border-bottom:1px solid var(--line2);font-size:13px;text-align:left;vertical-align:middle}
.data-table th{background:var(--soft);color:var(--navy);font-size:12px;font-weight:900}
.data-table td{color:var(--sub);font-weight:650}
.data-table tr:last-child td{border-bottom:none}
.empty-cell{text-align:center!important;color:var(--mut)!important;padding:28px 12px!important}
.pager{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:12px;color:var(--sub);font-size:12px;font-weight:800}
.modal-form{display:grid;gap:12px}
.modal-form input,.modal-form select{width:100%}
.modal-actions{display:flex;justify-content:flex-end;margin-top:4px}

.crawl-subnav{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.integrity-summary{border:1px solid var(--line);border-left:4px solid var(--navy);border-radius:8px;background:#fff;color:var(--sub);padding:11px 12px;margin-bottom:12px;font-size:13px;font-weight:850}
.crawl-view{display:none}
.crawl-view.on{display:block}
.crawl-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.crawl-stat-card{border:1px solid var(--line);border-radius:8px;background:#fff;padding:14px 15px;display:grid;gap:4px}
.crawl-stat-card span{font-size:12px;font-weight:900;color:var(--mut)}
.crawl-stat-card b{font-size:25px;line-height:1.1;color:var(--navy);font-weight:950;font-variant-numeric:tabular-nums}
.crawl-stat-card small{font-size:11.5px;color:var(--sub);font-weight:750}
.crawl-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr);gap:14px}
.crawler-block{border:1px solid var(--line);border-radius:8px;background:#fff;padding:14px}
.crawler-block-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.crawler-block-head h2{font-size:15px;color:var(--navy);font-weight:950}
.crawl-source-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.crawl-source-card{border:1px solid var(--line);border-radius:8px;background:#fff;padding:12px;display:grid;gap:10px}
.crawl-source-card.is-running{border-color:#caa34a;background:#fffdf7}
.crawl-source-top{display:flex;gap:10px;justify-content:space-between;align-items:start}
.crawl-source-top b{display:block;color:var(--ink);font-size:13.5px;font-weight:950;line-height:1.35}
.crawl-source-top span,.crawl-source-meta,.crawl-source-status,.crawl-source-counts{color:var(--sub);font-size:12px;font-weight:750}
.crawl-provider{border:1px solid var(--line);border-radius:999px;padding:2px 8px;background:var(--soft);color:var(--navy)!important;font-size:10.5px!important;font-weight:950!important;white-space:nowrap}
.crawl-source-meta,.crawl-source-counts{display:flex;gap:8px;flex-wrap:wrap}
.crawl-source-status{display:flex;align-items:center;gap:7px}
.crawl-status-dot{width:10px;height:10px;border-radius:50%;background:var(--mut);flex:none}
.crawl-status-dot.success{background:var(--green)}
.crawl-status-dot.partial{background:var(--gold)}
.crawl-status-dot.failed{background:var(--red)}
.crawl-status-dot.running{background:var(--accent)}
.crawl-status-dot.idle{background:var(--faint)}
.crawl-spinner{width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:crawlSpin .75s linear infinite}
@keyframes crawlSpin{to{transform:rotate(360deg)}}
.crawl-source-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.crawl-source-actions .small-btn{margin-right:0}
.crawl-toggle{display:inline-flex;align-items:center;gap:5px;color:var(--sub);font-size:12px;font-weight:900}
.crawl-toggle input{accent-color:var(--navy)}
.crawl-chart-wrap{height:280px}
.crawl-mini-bar{display:grid;grid-template-columns:46px minmax(0,1fr) 28px;align-items:center;gap:8px;font-size:12px;color:var(--sub);font-weight:800;margin-bottom:6px}
.crawl-mini-bar b{display:block;height:10px;max-width:100%;border-radius:999px;background:var(--teal)}
.crawl-table{min-width:980px}
.clickable-row{cursor:pointer}
.clickable-row:hover td{background:var(--soft)}
.crawl-badge{display:inline-flex;align-items:center;min-height:22px;border-radius:999px;padding:0 8px;font-size:11px;font-weight:950}
.crawl-badge.success,.crawl-badge.registered{background:var(--green-soft);color:var(--green)}
.crawl-badge.partial,.crawl-badge.duplicate{background:var(--gold-soft);color:var(--gold)}
.crawl-badge.failed,.crawl-badge.error{background:var(--red-soft);color:var(--red)}
.crawl-badge.running{background:var(--accent-soft);color:#b65a14}
.crawl-badge.pending,.crawl-badge.filtered,.crawl-badge.idle{background:var(--line2);color:var(--sub)}
.crawl-item-detail-row td{background:#fcfdfe!important}
.crawl-item-detail{display:grid;gap:10px}
.crawl-item-detail p{white-space:pre-wrap;color:var(--ink);font-weight:650}
.crawl-item-detail dl{display:grid;grid-template-columns:80px minmax(0,1fr);gap:6px 10px;margin:0}
.crawl-item-detail dt{color:var(--mut);font-size:12px;font-weight:900}
.crawl-item-detail dd{color:var(--sub);font-size:12.5px;font-weight:750;word-break:break-word}
.crawl-filter-note{display:flex;align-items:center;gap:8px;width:max-content;max-width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;padding:7px 10px;margin:-4px 0 10px;color:var(--navy);font-size:12px;font-weight:900}
.crawl-custom-help{border:1px solid var(--gold-soft);border-radius:8px;background:var(--gold-soft);color:var(--gold);font-size:12px;font-weight:900;padding:8px 10px}
.check-line{display:flex!important;align-items:center;gap:8px}
.check-line input{width:auto!important;height:auto!important;min-width:0!important;accent-color:var(--navy)}
.crawl-modal-actions{justify-content:space-between}

.login-page{min-height:100vh;background:linear-gradient(135deg,#fbfcfd 0%,#eef4f5 48%,#fdf1e6 100%)}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:28px}
.login-panel{width:min(420px,100%);border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:var(--shadow-pop);padding:28px}
.login-brand{margin-bottom:22px}
.sso-note{border:1px solid var(--teal-soft);border-radius:8px;background:var(--teal-soft);color:var(--teal);font-size:12.5px;font-weight:850;padding:9px 11px;margin:-8px 0 16px}
.auth-toggle{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:var(--line2);border-radius:8px;padding:3px;margin-bottom:16px}
.auth-toggle button{height:34px;border:0;border-radius:6px;background:transparent;color:var(--sub);font-size:13px;font-weight:900;cursor:pointer}
.auth-toggle button.on{background:#fff;color:var(--navy);box-shadow:0 1px 3px rgba(12,44,85,.14)}
.login-form{display:grid;gap:14px}
.login-form h1{font-size:24px;color:var(--navy);font-weight:900;line-height:1.2}
.login-form label{display:grid;gap:6px;color:var(--sub);font-size:12.5px;font-weight:800}
.login-form input{height:42px;border:1px solid var(--line);border-radius:8px;padding:0 12px;font:inherit;color:var(--ink)}
.login-form input:focus,.filters input:focus,.filters select:focus,.modal-form input:focus,.modal-form select:focus{outline:2px solid rgba(238,122,46,.18);border-color:var(--accent)}
.form-error{border-left:4px solid var(--red);background:var(--red-soft);color:var(--red);font-size:12.5px;font-weight:800;padding:10px 12px;border-radius:8px}

@media(max-width:1180px){
  .dashboard-top{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-kpis{grid-column:1/-1}
}

@media(max-width:780px){
  .content{padding:16px 14px 56px}
  .dashboard-top{grid-template-columns:1fr}
  .dashboard-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stepping-grid{grid-template-columns:1fr}
  .stepping-list{grid-template-columns:1fr}
  .crawl-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .crawl-dashboard-grid{grid-template-columns:1fr}
  .crawl-chart-wrap{height:240px}
  .kpi-card{height:118px}
  .kpi-value b{font-size:26px}
  .dashboard-map-head{display:grid;align-items:stretch}
  .map-seg{width:100%;justify-content:stretch}
  .map-seg button{flex:1}
  .dashboard-map-grid{grid-template-columns:1fr;min-height:0}
  .dashboard-map{height:460px}
  .dashboard-map-list{height:300px}
  .metric-toolbar{align-items:stretch}
  .metric-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  .metric-checks label{justify-content:flex-start}
  .kanban-board{display:flex;overflow-x:auto;padding-bottom:6px;scroll-snap-type:x mandatory}
  .kanban-col{min-width:280px;scroll-snap-align:start}
  .problem-toolbar{display:grid;align-items:stretch}
  .problem-search{margin-left:0}
  .form-grid-2{grid-template-columns:1fr}
  .mission-shell{grid-template-columns:1fr;min-height:0}
  .mission-list-pane{position:static;max-height:none}
  .mission-toolbar{grid-template-columns:1fr}
  .mission-section-grid{grid-template-columns:1fr}
  .mission-detail-head h2{font-size:20px}
  .innovation-workspace{grid-template-columns:1fr;min-height:0}
  .innovation-list-pane{position:static;max-height:none}
  .innovation-toolbar{grid-template-columns:1fr}
  .innovation-card-grid{grid-template-columns:1fr}
  .innovation-detail-head h2{font-size:20px}
  .innovation-rail-card{min-width:190px}
  .impact-shell{grid-template-columns:1fr;min-height:0}
  .impact-list-pane{position:static;max-height:none}
  .impact-detail-head h2{font-size:20px}
  .impact-metric-row{grid-template-columns:1fr}
  .lineage-stage-grid{grid-template-columns:1fr;min-height:0}
  .lineage-col{min-height:0}
  .lineage-svg{display:none}
  .radio-card-row{grid-template-columns:1fr}
  .bulkbar{width:calc(100vw - 24px);justify-content:center;flex-wrap:wrap}
  .settings-layout{grid-template-columns:1fr;gap:14px}
  .settings-nav{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}
  .settings-tab{text-align:center}
  .section-head{align-items:stretch;flex-direction:column}
  .filters{display:grid;grid-template-columns:1fr}
  .filters input,.filters select{min-width:0;width:100%}
}
