/* 기업지원 통합 대시보드(nji-dashboard) 레이아웃 CSS.
   관리자 build/mngr/css/custom.css 의 .nji-dashboard 블록(라인 1158~1379)을 그대로 추출.
   전부 .nji-dashboard 하위로 스코프되어 있어 프론트 전역 스타일(헤더/푸터/색상)에 영향 없음.
   프론트(/kr/204)와 관리자(/mngr) 대시보드가 동일 레이아웃을 공유한다. */


.nji-dashboard {
    --dash-line: rgba(255, 255, 255, .12);
    --dash-accent-soft: color-mix(in srgb, var(--dash-accent) 32%, transparent);
    --dash-accent-pale: color-mix(in srgb, var(--dash-accent) 58%, white);
    --dash-shadow: 0 0.9375rem 2.25rem rgba(1, 12, 38, .12);
    margin: -2.75rem -2.75rem -1.5rem;
    padding: 1.25rem 1.75rem 1.375rem;
    height: calc(100vh - 4.375rem);
    min-height: 32.5rem;
    overflow: hidden;
    color: #fff;
    --dash-bg: var(--brand-primary-900);
    --dash-bg-deep: color-mix(in srgb, var(--brand-primary-900) 88%, #000);
    --dash-panel: color-mix(in srgb, var(--brand-primary-300) 24%, transparent);
    --dash-panel-strong: color-mix(in srgb, var(--brand-primary) 38%, transparent);
    --dash-border: color-mix(in srgb, var(--brand-primary-200) 25%, transparent);
    --dash-muted: var(--brand-primary-200);
    --dash-accent: var(--brand-secondary);
    font-family: var(--font-base);
    background: linear-gradient(180deg, #003089 23.56%, #0C9EAD 100%);
}
.nji-dashboard *, .nji-dashboard *::before, .nji-dashboard *::after { box-sizing: border-box; }
.nji-dashboard a { color: inherit; text-decoration: none; }
.nji-dashboard button { color: inherit; }
.nji-dashboard__heading { display:none; justify-content:space-between; align-items:flex-end;
    margin-bottom: 1.375rem;
    padding: 0 0.125rem; }
.nji-dashboard__heading h2 { color:#fff; font-weight:800;
    margin: 0.1875rem 0 0.3125rem;
    letter-spacing: -0.075rem;
    font-size: var(--fz-hd-md); }
.nji-dashboard__heading p { margin:0; color:var(--dash-muted); font-size: var(--fz-body-sm); }
.nji-dashboard__eyebrow { color:var(--dash-accent); font-weight:800; letter-spacing:0.09375rem; font-size: var(--fz-body-xsm); }
.nji-dashboard__date { color:var(--dash-muted); font-size: var(--fz-body-xsm); }
.nji-dashboard__grid { display:grid; align-items:stretch; height:100%; min-height:0;
    grid-template-columns: minmax(16.875rem, .98fr) minmax(28.75rem, 1.78fr) minmax(16.875rem, .98fr);
    grid-template-rows: minmax(0, 1fr);
    gap: var(--space-5); }
.nji-dashboard__column { display:flex; flex-direction:column; min-width:0; min-height:0; overflow:hidden; gap: var(--space-4); }
.nji-dashboard__center { display:flex; flex-direction:column; min-width:0; min-height:0; gap: var(--space-4); }
.nji-dash-card, .nji-map-panel {
    border: 1px solid var(--dash-border);
    background: linear-gradient(145deg, var(--dash-panel-strong), var(--dash-panel));
    box-shadow: var(--dash-shadow), inset 0 0.0625rem 0 rgba(255, 255, 255, .04);
    backdrop-filter: blur(0.75rem);
    -webkit-backdrop-filter: blur(0.75rem);
    border-radius: var(--radius-lg);
}
.nji-dash-card {
    padding: var(--space-5);
    display:flex; flex-direction:column; min-height:0; overflow:hidden; }
.nji-dash-card--grow { flex:1 1 0; min-height:0; }
.nji-dash-card__head { display:flex; align-items:center; justify-content:space-between; gap:0.625rem;
    margin-bottom: 1rem; flex:0 0 auto; }
/* 섹션 내용이 섹션 높이를 넘으면 그 섹션만 스크롤 (컬럼 전체 스크롤 X) */
.nji-dash-card--grow > .nji-compact-list { flex:1; min-height:0; overflow-y:auto; }
/* 그로우 카드에서 목록(스크롤 영역)을 제외한 나머지(막대/서브헤더/힌트 등)는 눌리지 않고 항상 표시 */
.nji-dash-card--grow > *:not(.nji-compact-list):not(.nji-news-list) { flex:0 0 auto; }
/* 오른쪽 컬럼은 고정 높이(100vh-70px)를 카드 3개가 나눠 쓴다.
   '기업지원 주요소식'이 자연 높이로 공간을 다 먹으면 --grow 카드(일자리 등록 현황)의
   목록이 flex:1 + min-height:0 때문에 높이 0 으로 눌려, 서브헤더 아래가 잘려 보인다.
   -> 주요소식은 자체 스크롤로 높이를 제한하고, 마감임박 목록에는 최소 높이를 보장한다. */
/* 오른쪽 컬럼(주요소식/기업탐방/일자리)은 컬럼 고정 높이를 나눠 쓴다.
   컬럼 전체는 스크롤하지 않고, '일자리 등록 현황' 카드 하나가 통째로 스크롤 영역이 된다.
   - 주요소식  : 목록이 남는 높이를 흡수하며 자체 스크롤(최대 200px)
   - 기업탐방  : 스크롤할 목록이 없으므로 줄이지 않는다(flex-shrink:0)
   - 일자리    : 카드 전체가 스크롤(헤더/타일/서브헤더/목록이 함께 스크롤) */
.nji-dashboard__column--right > .nji-dash-card:not(.nji-dash-card--grow) { flex:0 1 auto; }
.nji-dashboard__column--right > .nji-dash-card > .nji-news-list {
    flex:1 1 auto; min-height:0; max-height:12.5rem; overflow-y:auto; overflow-x:hidden; }
.nji-dashboard__column--right > .nji-dash-card:has(.nji-report-grid) { flex:0 0 auto; }

/* ★ 일자리 등록 현황: 카드 자체가 스크롤 컨테이너.
   내부 요소는 전부 자연 높이(flex:0 0 auto)로 두어야 카드가 넘치고 스크롤이 생긴다. */
.nji-dashboard__column--right > .nji-dash-card--grow {
    flex:1 1 0; min-height:18.125rem; overflow-y:auto; overflow-x:hidden; }
.nji-dashboard__column--right > .nji-dash-card--grow > * { flex:0 0 auto; }
.nji-dashboard__column--right > .nji-dash-card--grow > .nji-compact-list {
    flex:0 0 auto; min-height:0; max-height:none; overflow:visible; }
.nji-dashboard__column--right > .nji-dash-card--grow::-webkit-scrollbar { width:0.375rem; }
.nji-dashboard__column--right > .nji-dash-card--grow::-webkit-scrollbar-track { background:transparent; }
.nji-dashboard__column--right > .nji-dash-card--grow::-webkit-scrollbar-thumb { background:rgba(255,255,255,.25); border-radius:0.1875rem; }

/* 창 높이가 아주 낮으면 카드 3개가 물리적으로 컬럼에 들어가지 않는다.
   이때만 컬럼 스크롤로 물러나 내용을 잘라먹지 않는다. */
@media (max-height: 56.25em) {
    .nji-dashboard__column--right { overflow-y:auto; overflow-x:hidden; }
    .nji-dashboard__column--right > .nji-dash-card:not(.nji-dash-card--grow) { flex:0 0 auto; }
    .nji-dashboard__column--right > .nji-dash-card--grow { flex:0 0 auto; min-height:0; overflow:hidden; }
    .nji-dashboard__column--right > .nji-dash-card > .nji-news-list { flex:0 0 auto; max-height:12.5rem; }
    .nji-dashboard__column--right::-webkit-scrollbar { width:0.375rem; }
    .nji-dashboard__column--right::-webkit-scrollbar-track { background:transparent; }
    .nji-dashboard__column--right::-webkit-scrollbar-thumb { background:rgba(255,255,255,.25); border-radius:0.1875rem; }
}
/* 단지별 공장 분포: 카드는 컬럼 전체 높이를 채우고(오른쪽 컬럼과 하단 정렬),
   막대 영역만 높이 제한 + 입주기업 목록이 남는 공간을 채워 스크롤 */
#njiFactoryHbar { max-height:9.375rem; overflow-y:auto; padding-right:0.625rem; }
/* 세로 스크롤만 (overflow-y:auto 로 인해 자동 생기던 가로 스크롤 제거) */
#njiFactoryHbar, #njiComplexCompanies, .nji-news-list, .nji-dash-card--grow > .nji-compact-list { overflow-x:hidden; }
.nji-dash-card__head h3 {
    margin:0;
    color:#fff;
    font-weight:800;
    letter-spacing: -0.040625rem;
    font-size: var(--fz-hd-sm);
}
.nji-dash-card__head > span {color:var(--dash-muted);font-size: var(--fz-body-sm);}
.nji-dash-card__head button, .nji-dash-card__subhead button { padding:0; border-radius:50%; display:inline-grid; place-items:center;
    width: 1.8125rem;
    height: 1.8125rem;
    color: #fff;
    border: 1px solid rgba(255, 255, 255, .10);
    background: rgba(2, 15, 43, .58);
    transition: background .2s ease, transform .2s ease;
}
.nji-stat-grid { display:grid; grid-template-columns:repeat(4, 1fr);
    gap: 0.5rem;
    margin-bottom: 0.9375rem; }
.nji-stat-grid div { text-align:center; background:color-mix(in srgb, var(--brand-primary-200) 22%, transparent);
    padding: 0.875rem 0.25rem;
    border-radius: 0.5rem; }
.nji-stat-grid strong { display:block; font-size: var(--fz-body-lg); }
.nji-stat-grid span { display:block; margin-top:0.25rem; color:#d6dff1; font-size: var(--fz-body-xsm); }
.nji-stat-grid--triple { grid-template-columns:repeat(3,1fr); }
.nji-stat-grid--double { grid-template-columns:repeat(2,1fr); }
.nji-stat-grid--triple div { padding:0.9375rem 0.25rem; }
.nji-stat-grid--triple strong {color: var(--dash-accent);font-size: var(--fz-hd-sm);}
.nji-stat-grid--triple span {
    font-size: var(--fz-body-xsm); }
.nji-hbar { display:flex; flex-direction:column; margin-top:0.125rem;
    gap: 0.6875rem; }
.nji-hbar__row {display:grid;grid-template-columns: 11.25rem 1fr 2.75rem;align-items:center;gap:0.5rem;width:100%;padding:0.125rem 0;border:0;background:none;cursor:pointer;text-align:left;}
.nji-hbar__label {color:#dce5f5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.nji-hbar__track { border-radius:0.4375rem; overflow:hidden;
    height: 0.875rem;
    background: rgba(255, 255, 255, .10); }
.nji-hbar__fill { display:block; height:100%; border-radius:0.4375rem; transition:width .35s ease, background .2s ease;
    background: color-mix(in srgb, var(--dash-accent) 48%, rgba(255, 255, 255, .20)); }
.nji-hbar__value {font-weight:700;text-align:right;color:#fff;font-size: var(--fz-body-sm);white-space:nowrap;}
.nji-hbar__row:hover .nji-hbar__fill {
    background: color-mix(in srgb, var(--dash-accent) 72%, white); }
.nji-hbar__row.is-active .nji-hbar__label { color:#fff; font-weight:700; }
.nji-hbar__row.is-active .nji-hbar__fill { background:var(--dash-accent); }
.nji-hbar__hint {margin:0.5rem 0 0.375rem;color:var(--dash-muted);font-size: var(--fz-body-sm);}
.nji-count-badge { border-radius:0.625rem; background:var(--dash-accent); color:#fff; font-style:normal; font-weight:700;
    padding: 0.25rem 0.5625rem;
    box-shadow: 0 0.25rem 0.75rem color-mix(in srgb, var(--dash-accent) 28%, transparent);
    font-size: var(--fz-body-xsm); }
#njiComplexCompanies { flex:1; min-height:0; overflow-y:auto; padding-right:0.25rem; }
#njiComplexCompanies::-webkit-scrollbar, #njiFactoryHbar::-webkit-scrollbar,
.nji-dash-card--grow > .nji-compact-list::-webkit-scrollbar, .nji-news-list::-webkit-scrollbar { width:0.375rem; }
#njiComplexCompanies::-webkit-scrollbar-track, #njiFactoryHbar::-webkit-scrollbar-track,
.nji-dash-card--grow > .nji-compact-list::-webkit-scrollbar-track, .nji-news-list::-webkit-scrollbar-track { background:transparent; }
#njiComplexCompanies::-webkit-scrollbar-thumb, #njiFactoryHbar::-webkit-scrollbar-thumb,
.nji-dash-card--grow > .nji-compact-list::-webkit-scrollbar-thumb, .nji-news-list::-webkit-scrollbar-thumb { background:rgba(255,255,255,.25); border-radius:0.1875rem; }
.nji-dash-card__subhead {display:flex;align-items:center;justify-content:space-between;color:#dce5f5;font-weight:700;font-size: var(--fz-body-md);}
.nji-dash-card__subhead em { font-style:normal; }
.nji-dash-card__subhead--line { margin-top:0.875rem; padding-top:0.75rem; border-top:1px solid rgba(255,255,255,.1); }
.nji-tag-list { display:flex; flex-wrap:wrap; gap:0.3125rem; margin-top:0.5rem; }
.nji-tag-list span {
    padding: 0.375rem 0.5625rem;
    color: #e2e8f5;
    border: 1px solid rgba(255, 255, 255, .07);
    border-radius: 0.375rem;
    background: rgba(224, 231, 244, .14);
    font-size: var(--fz-body-xsm); }
.nji-tag-list .nji-tag-empty { background:none; padding:0.3125rem 0; color:var(--dash-muted); }
.nji-bar-chart { height:7.5rem; display:flex; border-bottom:1px solid rgba(255,255,255,.12); }
.nji-bar-chart__scale { width:1.75rem; display:flex; flex-direction:column; justify-content:space-between; padding-bottom:1.5rem; color:var(--dash-muted); font-size: var(--fz-body-xsm); }
.nji-bar-chart__bars { flex:1; display:grid; grid-template-columns:repeat(5,1fr); gap:0.5rem; align-items:end; }
.nji-bar-chart__bars div { height:100%; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; gap:0.375rem; font-size: var(--fz-body-xsm); }
.nji-bar-chart__bars i { display:block; width:1.25rem; max-height:5.3125rem;
    border-radius: 0.3125rem 0.3125rem 0 0;
    box-shadow: inset 0 0.0625rem 0 rgba(255, 255, 255, .18); }
.nji-factory-summary { display:flex; align-items:center; gap:0.8125rem; }
.nji-donut { width:6.125rem; height:6.125rem; flex:0 0 6.125rem; padding:0.6875rem; border-radius:50%;
    background: conic-gradient(
            var(--dash-accent) 0 77%,
            color-mix(in srgb, var(--dash-accent) 42%, #6688d6) 77% 95%,
            #c5cad5 95%
    ); }
.nji-donut > div { width:100%; height:100%; border-radius:50%; display:grid; place-content:center; text-align:center;
    background: #35496e; }
.nji-donut strong {
    font-size: var(--fz-body-rg); }
.nji-donut span { color:var(--dash-muted); font-size: var(--fz-body-xsm); }
.nji-factory-summary ul { list-style:none; margin:0; padding:0; flex:1; }
.nji-factory-summary li { display:grid; grid-template-columns:0.5rem 1fr auto auto; gap:0.3125rem; align-items:center; margin:0.4375rem 0; font-size: var(--fz-body-xsm); }
.nji-factory-summary li i { width:0.5rem; height:0.5rem; border-radius:50%; background:#c5cad5; }
.nji-factory-summary li i.is-orange {
    background: var(--dash-accent); }
.nji-factory-summary li i.is-blue {
    background: color-mix(in srgb, var(--dash-accent) 55%, #6688d6); }
.nji-factory-summary li small { color:var(--dash-muted); }
.nji-compact-list { display:flex; flex-direction:column; gap:0.4375rem; margin-top:0.625rem; }
.nji-compact-list a {
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:0.5rem;
    border:1px solid rgba(255,255,255,.11);
    padding: 0.75rem;
    border-color: rgba(255, 255, 255, .13);
    border-radius: 0.5rem;
    background: rgba(11, 32, 73, .12);
    transition: border-color .2s ease, background .2s ease, transform .2s ease;
}
.nji-compact-list a:hover {
    border-color: color-mix(in srgb, var(--dash-accent) 48%, rgba(255, 255, 255, .15));
    background: rgba(255, 255, 255, .08);
    transform: translateY(-0.0625rem); }
.nji-compact-list span { min-width:0; }
.nji-compact-list strong, .nji-compact-list small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.nji-compact-list strong {
}
.nji-compact-list small {color:var(--dash-muted);margin-top:0.1875rem;font-size: var(--fz-body-sm);}
.nji-compact-list em { flex:0 0 auto; padding:0.25rem 0.375rem; border-radius:0.25rem; background:rgba(1,13,37,.55); font-style:normal; font-size: var(--fz-body-xsm); }
.nji-compact-list em.is-orange {
    background: var(--dash-accent); }
.nji-map-panel { flex:1;
    display:flex; flex-direction:column;
    position: relative;
    padding: 1.125rem 1.375rem 0;
    min-height: 0;
    background:
            radial-gradient(circle at 52% 48%, rgba(95, 119, 169, .26), transparent 47%),
            linear-gradient(160deg, rgba(14, 40, 91, .18), rgba(7, 25, 62, .08));
    overflow: hidden; }
.nji-map-panel__head { display:flex; align-items:flex-start; justify-content:space-between; position:relative; z-index:2; }
.nji-map-panel__head span { color:var(--dash-muted); font-weight:700; }
.nji-map-panel__head h3 { margin:0.125rem 0 0; color:#fff; font-weight:900; letter-spacing:-0.0625rem; font-size: var(--fz-hd-md); }
.nji-map-panel__head h3 em { color:var(--dash-accent); font-style:normal; }
.nji-map-panel__weather { display:flex; flex-direction:column; align-items:flex-end; gap:0.5rem; min-width:9.0625rem; color:#fff; }
.nji-map-panel__weather small { color:#b9c6e1; font-weight:500; line-height:1; font-size: var(--fz-body-xsm); }
.nji-map-panel__weather strong { display:flex; align-items:center; gap:0.375rem; font-weight:900; line-height:1; white-space:nowrap; font-size: var(--fz-body-lg); }
.nji-map-panel__weather i {
    font-size: var(--fz-hd-md); }
.nji-map-panel__filters { display:flex; position:relative; z-index:2;
    gap: 1.25rem;
    margin-top: 1.0625rem; }
.nji-map-panel__filters button { padding:0 0 0.3125rem; border:0; background:none; color:var(--dash-muted);
    padding-bottom: 0.4375rem;
    font-size: var(--fz-body-sm); }
.nji-map-panel__filters button.is-active { color:var(--dash-accent); border-bottom:0.125rem solid var(--dash-accent); font-weight:800;
    border-bottom-color: var(--dash-accent); }
.nji-map-placeholder { position:relative; margin-top:-0.25rem; overflow:hidden;
    flex: 1;
    height: auto;
    min-height: 11.25rem; }
.nji-map-placeholder__guide { position:absolute; inset:50% auto auto 50%; z-index:1; transform:translate(-50%,-50%); text-align:center; color:#dce5f5; }
.nji-map-placeholder__guide i { display:block; color:rgba(255,255,255,.32); font-size: var(--fz-display-md); }
.nji-map-placeholder__guide strong, .nji-map-placeholder__guide span, .nji-map-placeholder__guide code { display:block; }
.nji-map-placeholder__guide strong {
    font-size: var(--fz-body-lg); }
.nji-map-placeholder__guide span { margin:0.1875rem 0 0.5rem; color:var(--dash-muted); font-size: var(--fz-body-xsm); }
.nji-map-placeholder__guide code {
    color: var(--dash-accent-pale); }
.nji-map-placeholder__marker { position:absolute; z-index:2; left:58%; top:45%; transform:translate(-50%, -88%); display:flex; flex-direction:column; align-items:center; font-weight:700; pointer-events:none; font-size: var(--fz-body-xsm); }
.nji-map-placeholder__marker.is-hidden { display:none; }
.nji-map-placeholder__marker i { font-size:2.8125rem;
    color: var(--dash-accent);
    filter: drop-shadow(0 0.3125rem 0.4375rem rgba(0, 0, 0, .34)); }
.nji-map-popup { position:absolute; z-index:3; left:0; max-height:calc(100% - 5.625rem); overflow-y:auto; cursor:move; touch-action:none; user-select:none;
    top: 5.125rem;
    width: 18.75rem;
    padding: 1.25rem;
    border: 1px solid rgba(255, 255, 255, .13);
    border-radius: 0.875rem;
    background: rgba(3, 23, 61, .96);
    box-shadow: 0 1.125rem 2.5rem rgba(0, 0, 0, .30); }
.nji-map-popup.is-dragging { cursor:grabbing; box-shadow:0 1rem 2.125rem rgba(0,0,0,.38); }
.nji-map-popup.is-hidden { display:none; }
.nji-map-popup button { position:absolute; right:0.5625rem; top:0.5rem; padding:0; border:0; background:none; cursor:pointer; }
.nji-map-popup small { color:var(--dash-muted); font-size: var(--fz-body-xsm); }
.nji-map-popup h4 { color:#fff; margin:0.4375rem 0 0.75rem; font-size: var(--fz-body-lg); }
.nji-map-popup p { margin:0.4375rem 0; font-size: var(--fz-body-xsm); }
.nji-map-popup p i { color:#fff; }
.nji-map-popup div { display:flex; gap:0.4375rem; margin-top:0.8125rem; }
.nji-map-popup a { flex:1; border-radius:0.3125rem; text-align:center;
    padding: 0.6875rem 0.375rem;
    background: color-mix(in srgb, var(--dash-accent) 56%, #173b7d);
    font-size: var(--fz-body-xsm); }
.nji-map-popup #njiMapPopupContent { display:block; margin-top:0.5rem; }
.nji-map-complex { padding:0.5625rem 0; border-top:1px solid rgba(255,255,255,.12); }
.nji-map-complex:first-child { border-top:0; }
.nji-map-complex strong { display:block; margin-bottom:0.3125rem; color:#fff; font-size: var(--fz-body-sm); }
.nji-map-complex p { margin:0.1875rem 0; color:#dce5f5; }
.nji-map-svg { position:absolute; inset:0; width:100%; height:100%; z-index:1; overflow:visible; }
.nji-map-region {
    stroke-width:1.15;
    vector-effect:non-scaling-stroke;
    cursor:pointer;
    transition:fill .18s ease, filter .18s ease, opacity .18s ease;
    fill: rgba(173, 185, 209, .76);
    stroke: rgba(53, 75, 118, .72);
}
.nji-map-region:hover, .nji-map-region:focus {
    outline:none;
    filter:drop-shadow(0 0.1875rem 0.3125rem rgba(1, 11, 33, .28));
    fill: rgba(211, 219, 234, .96);
}
.nji-map-region.is-active {
    stroke-width:1.8;
    fill: color-mix(in srgb, var(--dash-accent) 60%, #aebbd2);
    stroke: color-mix(in srgb, var(--dash-accent) 72%, white);
    filter: drop-shadow(0 0.3125rem 0.5625rem color-mix(in srgb, var(--dash-accent) 32%, transparent));
}
.nji-map-complex-marker { cursor:pointer; outline:none; }
.nji-map-complex-marker circle {
    fill:var(--dash-accent);
    stroke:#fff;
    stroke-width:2;
    vector-effect:non-scaling-stroke;
    filter:drop-shadow(0 0.1875rem 0.25rem rgba(0,0,0,.38));
    transition:r .15s ease, fill .15s ease;
}
.nji-map-complex-marker.is-agriculture circle { fill:#54a447; }
.nji-map-complex-marker:hover circle,
.nji-map-complex-marker:focus circle,
.nji-map-complex-marker.is-active circle { r:8; fill:var(--dash-accent); }
.nji-map-complex-marker.is-agriculture:hover circle,
.nji-map-complex-marker.is-agriculture:focus circle,
.nji-map-complex-marker.is-agriculture.is-active circle { fill:#8bd27f; }
.nji-map-label {
    fill:#dce4f3;
    text-anchor:middle;
    dominant-baseline:middle;
    pointer-events:none;
    paint-order:stroke;
    stroke:rgba(17, 39, 82, .82);
    stroke-width:0.1875rem;
    stroke-linejoin:round;
    font-size: 0.8125rem;
    font-weight: 600;

}
.nji-news-list { display:flex; flex-direction:column; flex:1; min-height:0; overflow-y:auto; }
.nji-news-list a { display:flex; justify-content:space-between; gap:0.5rem; border-bottom:1px solid rgba(255,255,255,.06);
    padding: 0.5rem 0;
    border-bottom-color: rgba(255, 255, 255, .08);
    font-size: var(--fz-body-xsm); }
.nji-news-list a span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.nji-news-list time { flex:0 0 auto; color:var(--dash-muted); font-size: var(--fz-body-xsm); }
.nji-news-list__empty { padding:1.875rem 0.625rem; color:var(--dash-muted); text-align:center; font-size: var(--fz-body-sm); }
.nji-report-grid { display:grid; grid-template-columns:1fr 1fr; gap:0.5rem; }
.nji-report-grid__image { position:relative; display:grid; place-items:center; overflow:hidden; background:linear-gradient(135deg,#e9edf3,#8b9aae);
    height: 6.75rem;
    border: 1px solid rgba(255, 255, 255, .10);
    border-radius: 0.625rem; }
.nji-report-grid__image.is-second { background:linear-gradient(135deg,#d7e5db,#7aaa91); }
/* 기업홍보관 썸네일(제품소개 이미지/로고)이 있을 때: 그라데이션 대신 흰 바탕에 원본비율로 맞춘다 */
.nji-report-grid__image.has-thumb { background:#fff; }
.nji-report-grid__image.has-thumb i { display:none; }
.nji-report-grid__image img { width:100%; height:100%; padding:0.625rem; object-fit:contain; }
.nji-report-grid__image i { color:rgba(20,41,71,.42); font-size:2.625rem; }
.nji-report-grid__image em { position:absolute; top:0.5rem; left:0.5rem; padding:0.1875rem 0.375rem; border-radius:0.625rem; background:rgba(255,255,255,.7); color:#4d586b; font-style:normal; font-size: var(--fz-body-xsm); }
.nji-report-grid strong, .nji-report-grid small { display:block; }
.nji-report-grid strong {margin-top:0.5rem;line-height:1.35;}
.nji-report-grid small {margin-top:0.25rem;color:var(--dash-muted);line-height:1.4;font-size: var(--fz-body-sm);}
.nji-report-grid__empty { grid-column:1 / -1; padding:2.125rem 0.75rem; border:1px solid rgba(255,255,255,.1); border-radius:0.5rem; color:var(--dash-muted); text-align:center; font-size: var(--fz-body-sm); }
.nji-job-summary { display:grid; grid-template-columns:1fr 1fr; gap:0.4375rem; }
.nji-job-summary div { text-align:center; background:rgba(210,218,235,.2);
    padding: 1rem 0.5625rem;
    border-radius: 0.5rem; }
.nji-job-summary span, .nji-job-summary strong { display:block; }
.nji-job-summary span {color:#e1e7f2;font-size: var(--fz-body-sm);}
.nji-job-summary strong {margin-top:0.25rem;color:#fff;font-size: var(--fz-body-xl);}
.nji-job-summary div:last-child strong { color:var(--dash-accent); }
@media (max-width: 74.9375em) {
    /* 좁은 화면: 한 화면 고정 해제 → 페이지 스크롤 허용 */
    .nji-dashboard {
        height: auto;
        min-height: calc(100vh - 4.375rem);
        overflow: visible;
        padding: 1.75rem;
    }
    .nji-dashboard__grid {
        height: auto;
        grid-template-rows: auto;
        grid-template-columns: 17.5rem minmax(28.75rem, 1fr);
        gap: 1.125rem; }
    .nji-dashboard__column, .nji-dashboard__center { overflow: visible; }
    .nji-dashboard__column--right { grid-column:1 / -1; display:grid; grid-template-columns:repeat(3,1fr);
        gap: 1.125rem; }
    .nji-map-panel { min-height: 32.5rem; }
}
@media (max-width: 61.9375em) {
    .nji-dashboard {
        margin: -2.75rem -1.25rem -1.5rem;
        padding: 1.375rem; }
    .nji-dashboard__grid {
        grid-template-columns: 1fr; }
    .nji-dashboard__column--left, .nji-dashboard__column--right { display:grid; grid-template-columns:repeat(2,1fr);
        gap: 0.875rem; }
    .nji-dashboard__column--left .nji-dash-card--grow, .nji-dashboard__column--right .nji-dash-card--grow { grid-column:1 / -1; }

    .nji-map-panel {
        min-height: 37.5rem;
    }
}
@media (max-width: 40em) {
    .nji-dashboard {
        margin-right: -1rem;
        margin-left: -1rem;
        padding: 1.125rem 0.875rem; }
    .nji-dashboard__heading { align-items:flex-start; }
    .nji-dashboard__heading p, .nji-dashboard__date { display:none; }
    .nji-dashboard__column--left, .nji-dashboard__column--right { grid-template-columns:1fr; }
    .nji-dashboard__column--left .nji-dash-card--grow, .nji-dashboard__column--right .nji-dash-card--grow { grid-column:auto; }
    .nji-stat-grid { grid-template-columns:repeat(2,1fr); }
    .nji-map-panel {
        padding: 1.25rem 1rem 0;
        min-height: 33.75rem; }
    .nji-map-panel__head h3 {
        font-size: var(--fz-hd-md); }
    .nji-map-panel__weather { display:none; }
    .nji-map-popup {
        width: min(13.75rem, calc(100% - 1.25rem)); }

    .nji-dashboard__heading h2 {
        font-size: var(--fz-hd-md);
    }

    .nji-dash-card,
    .nji-map-panel {
        border-radius: 0.875rem;
    }
}

.nji-dashboard__eyebrow,
.nji-dashboard__heading h2 em {
    color: var(--dash-accent);
}

.nji-dashboard__column,
.nji-dashboard__center {
    gap: 1.125rem;
}

.nji-dash-card__head > span,
.nji-dashboard__date {
    color: var(--dash-muted);
}

.nji-dash-card__head button:hover,
.nji-dash-card__subhead button:hover {
    background: var(--dash-accent);
    transform: translateX(0.125rem);
}

.nji-stat-grid div,
.nji-job-summary div {
    border: 1px solid rgba(255, 255, 255, .06);
    background: rgba(214, 222, 239, .21);
}

.nji-stat-grid--triple strong,
.nji-job-summary div:last-child strong {
    color: var(--dash-accent-pale);
}

.nji-hbar__row.is-active .nji-hbar__fill,
.nji-count-badge {
    background: var(--dash-accent);
}

.nji-map-panel::after {
    content: '';
    position: absolute;
    inset: auto -10% -32% 10%;
    height: 55%;
    pointer-events: none;
    background: radial-gradient(ellipse, rgba(255, 255, 255, .08), transparent 68%);
}

.nji-map-panel__head h3 em,
.nji-map-panel__filters button.is-active {
    color: var(--dash-accent);
}

.nji-map-complex-marker circle,
.nji-map-complex-marker.is-agriculture circle {
    fill: var(--dash-accent);
}

.nji-map-complex-marker:hover circle,
.nji-map-complex-marker:focus circle,
.nji-map-complex-marker.is-active circle,
.nji-map-complex-marker.is-agriculture:hover circle,
.nji-map-complex-marker.is-agriculture:focus circle,
.nji-map-complex-marker.is-agriculture.is-active circle {
    fill: var(--dash-accent-pale);
}

.nji-map-panel-center {
    background:transparent;
    border:0;
    box-shadow: none;
}

/* Keep the compact dashboard's interactive targets usable on touch screens. */
@media (max-width: 63.9375em) {
    .nji-hbar__row,
    .nji-map-panel__filters button { min-height: 2.75rem; }
    .nji-dash-card__head button,
    .nji-dash-card__subhead button,
    .nji-map-popup button { min-width: 2.75rem; min-height: 2.75rem; }
}

/* Once the dashboard becomes a document, lists share its vertical scroll. */
@media (max-width: 74.9375em) {
    #njiFactoryHbar,
    #njiComplexCompanies,
    .nji-dash-card--grow > .nji-compact-list,
    .nji-dashboard__column--right > .nji-dash-card > .nji-news-list,
    .nji-news-list { max-height: none; height: auto; overflow: visible; }
}

/* 산업단지 지도: 읍·면·동은 옅은 배경(클릭·이름 없음), 단지 경계를 구획으로 표시하고 클릭 시 입지 정보 팝업 */
.nji-map-svg.is-complex-mode .nji-map-region { fill:rgba(173, 185, 209, .24); stroke:rgba(173, 185, 209, .38); pointer-events:none; filter:none; }
.nji-map-svg.is-complex-mode .nji-map-svg__labels { display:none; }
.nji-map-complex-area { fill:rgba(255, 122, 37, .55); stroke:#ffb078; stroke-width:1.4; vector-effect:non-scaling-stroke; cursor:pointer; transition:fill .15s ease; }
.nji-map-complex-area.is-agriculture { fill:rgba(84, 164, 71, .6); stroke:#8bd27f; }
.nji-map-complex-area:hover, .nji-map-complex-area.is-active { fill:rgba(255, 176, 120, .9); stroke:#fff; stroke-width:2; }
.nji-map-complex-area.is-agriculture:hover, .nji-map-complex-area.is-agriculture.is-active { fill:rgba(139, 210, 127, .95); stroke:#fff; }
.nji-map-svg.is-complex-mode .nji-map-complex-marker circle { fill:#ff7a25; stroke:#fff; stroke-width:2; vector-effect:non-scaling-stroke; }
.nji-map-svg.is-complex-mode .nji-map-complex-marker.is-agriculture circle { fill:#54a447; }
.nji-map-svg.is-complex-mode .nji-map-complex-marker:hover circle,
.nji-map-svg.is-complex-mode .nji-map-complex-marker:focus circle,
.nji-map-svg.is-complex-mode .nji-map-complex-marker.is-active circle { fill:#ffb078; }
.nji-map-svg.is-complex-mode .nji-map-complex-marker.is-agriculture:hover circle,
.nji-map-svg.is-complex-mode .nji-map-complex-marker.is-agriculture:focus circle,
.nji-map-svg.is-complex-mode .nji-map-complex-marker.is-agriculture.is-active circle { fill:#8bd27f; }
.nji-map-complex-label { fill:#fff; font-weight:700; dominant-baseline:middle; pointer-events:none; paint-order:stroke; stroke:rgba(17, 39, 82, .9); stroke-width:0.1875rem; stroke-linejoin:round; }
.nji-map-complex-leader { stroke:rgba(255, 255, 255, .55); stroke-width:1; vector-effect:non-scaling-stroke; pointer-events:none; }
.nji-map-siting { margin-top:0.625rem; padding-top:0.25rem; border-top:1px solid rgba(255,255,255,.12); }
.nji-map-siting__list { margin:0.25rem 0 0.5rem; padding-left:1rem; color:#dce5f5; font-size: var(--fz-body-xsm); line-height:1.55; list-style:disc; }
.nji-map-siting__empty { color:var(--dash-muted); }
.nji-map-popup .nji-map-siting__link { display:block; margin-top:0.75rem; color:#fff; }

/* 개별입지 지도: 읍·면·동은 옅은 배경(클릭 없음, 이름은 위치 참고용으로 흐리게), 공장마다 작은 점 */
.nji-map-svg.is-individual-mode .nji-map-region { fill:rgba(151, 169, 204, .22); stroke:rgba(151, 169, 204, .35); pointer-events:none; filter:none; }
.nji-map-svg.is-individual-mode .nji-map-svg__labels { opacity:.45; }
.nji-map-individual-marker { fill:#38bdf8; fill-opacity:.85; stroke:#fff; stroke-width:0.8; vector-effect:non-scaling-stroke; cursor:pointer; outline:none; transition:r .15s ease, fill .15s ease; }
.nji-map-individual-marker:hover,
.nji-map-individual-marker:focus,
.nji-map-individual-marker.is-active { r:6; fill:#ffb078; fill-opacity:1; stroke-width:1.6; }
/* 같은 위치에 여러 공장이 겹치면 숫자를 단 원 하나로 표시, 클릭 시 팝업에 공장 목록 */
.nji-map-individual-group { cursor:pointer; outline:none; }
.nji-map-individual-group circle { fill:#0ea5e9; stroke:#fff; stroke-width:1.2; vector-effect:non-scaling-stroke; filter:drop-shadow(0 0.125rem 0.1875rem rgba(0,0,0,.35)); transition:fill .15s ease; }
.nji-map-individual-group text { fill:#fff; font-size:0.5625rem; font-weight:700; text-anchor:middle; dominant-baseline:central; pointer-events:none; }
.nji-map-individual-group:hover circle,
.nji-map-individual-group:focus circle,
.nji-map-individual-group.is-active circle { fill:#ffb078; stroke-width:1.6; }
.nji-map-individual-group:hover text,
.nji-map-individual-group:focus text,
.nji-map-individual-group.is-active text { fill:#031941; }
.nji-map-individual-list { margin:0.5rem 0 0; padding:0; list-style:none; }
.nji-map-individual-list li + li { margin-top:0.3125rem; }
/* 회사명 한 줄, 생산품은 그 아래 줄(긴 생산품도 줄바꿈) */
.nji-map-popup .nji-map-individual-link { position:static; display:grid; grid-template-columns:0.5rem minmax(0, 1fr); align-items:center; column-gap:0.5rem; row-gap:0.125rem; width:100%; padding:0.5rem 0.625rem; border-radius:0.3125rem; background:rgba(255,255,255,.07); color:#fff; text-align:left; }
.nji-map-popup .nji-map-individual-link:hover, .nji-map-popup .nji-map-individual-link:focus-visible { background:rgba(255,122,37,.28); outline:none; }
.nji-map-individual-link::before { content:""; width:0.5rem; height:0.5rem; border-radius:50%; background:#38bdf8; }
.nji-map-individual-link strong { grid-column:2; font-size: var(--fz-body-xsm); overflow-wrap:anywhere; }
.nji-map-individual-link small { grid-column:2; overflow-wrap:anywhere; }
.nji-map-individual-link small:empty { display:none; }
.nji-map-popup .nji-map-individual-back { position:static; display:block; width:100%; margin-top:0.4375rem; padding:0.5625rem 0.3125rem; border-radius:0.3125rem; background:rgba(255,255,255,.07); color:#dce5f5; font-size: var(--fz-body-xsm); }
.nji-map-popup .nji-map-individual-back:hover, .nji-map-popup .nji-map-individual-back:focus-visible { background:rgba(255,255,255,.14); color:#fff; outline:none; }
.nji-map-individual-summary { position:absolute; z-index:2; left:0.75rem; bottom:0.75rem; margin:0; padding:0.375rem 0.625rem; border-radius:0.3125rem; background:rgba(3,25,65,.85); color:#dce5f5; font-size: var(--fz-body-xsm); pointer-events:none; }
.nji-map-individual-summary.is-hidden { display:none; }
/* 지도 확대·축소 버튼(우측 하단) 및 확대 중 드래그 이동 */
.nji-map-zoom { position:absolute; z-index:4; right:0.75rem; bottom:0.75rem; display:flex; flex-direction:column; gap:0.25rem; }
.nji-map-zoom button { display:flex; align-items:center; justify-content:center; width:2rem; height:2rem; padding:0; border:1px solid rgba(255,255,255,.22); border-radius:0.3125rem; background:rgba(3,25,65,.85); color:#dce5f5; font-size:1.125rem; line-height:1; cursor:pointer; transition:background .15s ease, color .15s ease; }
.nji-map-zoom button:hover:not(:disabled), .nji-map-zoom button:focus-visible { background:rgba(23,58,122,.95); color:#fff; }
.nji-map-zoom button:focus-visible { outline:2px solid #ffb078; outline-offset:1px; }
.nji-map-zoom button:disabled { opacity:.4; cursor:default; }
.nji-map-svg.is-zoomed { cursor:grab; touch-action:none; }
.nji-map-svg.is-panning, .nji-map-svg.is-panning * { cursor:grabbing; }
/* 확대해도 이름표·마커는 화면상 크기를 유지 */
.nji-map-svg .nji-map-label,
.nji-map-svg .nji-map-complex-marker circle,
.nji-map-svg .nji-map-individual-marker,
.nji-map-svg .nji-map-individual-group__body { transform-box:fill-box; transform-origin:center; transform:scale(calc(1 / var(--map-zoom, 1))); }
.nji-map-svg .nji-map-complex-label { transform-box:fill-box; transform-origin:left center; transform:scale(calc(1 / var(--map-zoom, 1))); }
