:root{--green:#1f527e;--green-dark:#0d2e50;--green-soft:#eef2f5;--ink:#151a1f;--muted:#68756f;--line:#dce1e6;--bg:#f1f3f5;--up:#d9445a;--down:#2e6bd9;--shadow:0 10px 28px rgba(27,40,53,.07)}
#state[hidden],#analysis[hidden],#comparisonHead[hidden],#comparisonGrid[hidden]{display:none!important}
#analysis.refreshing{opacity:.62;pointer-events:none;transition:opacity .15s ease}
*{box-sizing:border-box}html,body{min-height:100%;background:#e5e9ed;color:var(--ink);font-family:var(--font-sans,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR",sans-serif)}button,a{font:inherit}.market-analysis-app{width:min(100%,1120px);min-height:100vh;margin:0 auto;background:var(--bg)}.analysis-top{padding:12px 24px 13px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.96)}.analysis-nav{display:flex;align-items:center;justify-content:space-between;gap:16px}.analysis-back{color:var(--green-dark);font-size:12px;font-weight:800;text-decoration:none}.brand{color:#071722;font-size:18px;font-weight:950;letter-spacing:-.5px;text-decoration:none}.brand span{color:var(--green)}.analysis-titlebar{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-top:10px}.analysis-heading{display:flex;min-width:0;align-items:baseline;gap:14px}.analysis-top h1{flex:none;margin:0;font-size:27px;line-height:1.1;letter-spacing:-1px}.intro{margin:0;color:#48596b;font-size:12px;line-height:1.45;white-space:nowrap}.period-tabs{display:flex;flex:none;gap:6px;overflow-x:auto;scrollbar-width:none}.period-tabs::-webkit-scrollbar{display:none}.period-tabs button{flex:0 0 auto;padding:7px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;color:#56635d;font-size:11px;font-weight:800;cursor:pointer}.period-tabs button.active{border-color:var(--green);background:var(--green);color:#fff}.market-analysis-app main{padding:14px 22px 42px}.state{display:grid;min-height:55vh;place-items:center;color:var(--muted);font-size:13px;font-weight:700}.state.error{color:#9b382f}.breadcrumb{display:flex;align-items:center;gap:6px;min-height:28px;margin:0 2px 8px;overflow-x:auto}.breadcrumb button{padding:3px;border:0;background:none;color:var(--muted);font-size:13px;font-weight:750;white-space:nowrap;cursor:pointer}.breadcrumb button:last-child{color:var(--green-dark);font-weight:900}.breadcrumb i{color:#a3ada8;font-style:normal}.analysis-summary{display:grid;grid-template-columns:minmax(240px,.75fr) minmax(0,1.25fr);gap:24px;align-items:end;padding:23px;border-radius:20px;background:linear-gradient(140deg,#144577,#0d2f51);box-shadow:0 13px 30px rgba(11,45,80,.16);color:#fff}.analysis-summary p{margin:0}.analysis-summary>div>p:first-child{font-size:11px;opacity:.76}.analysis-summary h2{margin:5px 0 8px;font-size:25px;letter-spacing:-.8px}.condition-sentence{max-width:460px;font-size:12px;line-height:1.55;opacity:.82}.summary-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.summary-kpis article{min-width:0;padding:12px 11px;border:1px solid #d6e2ee;border-radius:13px;background:#eef4fa;color:#0d2e50}.summary-kpis span{display:block;font-size:10px;opacity:.75}.summary-kpis strong{display:block;margin-top:5px;overflow:hidden;font-size:18px;letter-spacing:-.5px;text-overflow:ellipsis;white-space:nowrap}.analysis-panel{margin-top:16px;padding:18px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow)}.panel-heading,.comparison-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px}.panel-heading p,.comparison-head p{margin:0 0 2px;color:var(--green);font-size:10px;font-weight:900}.panel-heading h2,.comparison-head h2{margin:0;font-size:18px;letter-spacing:-.35px}.panel-heading>span{color:var(--muted);font-size:10px}.panel-heading>button{padding:7px 10px;border:1px solid #cbd9e7;border-radius:9px;background:#fff;color:var(--green-dark);font-size:11px;font-weight:800;cursor:pointer}.filter-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:16px}.filter-groups fieldset{min-width:0;margin:0;padding:0;border:0}.filter-groups legend{margin-bottom:8px;color:#2d3843;font-size:12px;font-weight:850}.filter-options{display:flex;flex-wrap:wrap;gap:6px}.filter-options button{padding:8px 10px;border:1px solid #dce1e6;border-radius:9px;background:#f7f8fa;color:#57645e;font-size:11px;font-weight:750;cursor:pointer}.filter-options button.active{border-color:var(--green);background:var(--green-soft);color:var(--green-dark);box-shadow:inset 0 0 0 1px rgba(16,63,110,.08)}.comparison-head{margin:24px 2px 10px}.metric-tabs{display:flex;padding:3px;border-radius:11px;background:#e8ecef}.metric-tabs button{padding:7px 11px;border:0;border-radius:8px;background:transparent;color:#64716b;font-size:11px;font-weight:850;cursor:pointer}.metric-tabs button.active{background:#fff;color:var(--green-dark);box-shadow:0 2px 8px rgba(22,35,48,.08)}.comparison-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(320px,.8fr);gap:16px}.comparison-grid>.analysis-panel{height:100%;margin-top:0}.region-map{display:grid;min-height:420px;margin-top:14px;place-items:center;overflow:hidden;border-radius:15px;background:#f3f5f7}.region-map svg{display:block;width:100%;height:420px}.region-map path{stroke:#fff;stroke-width:1.15;vector-effect:non-scaling-stroke;transition:opacity .14s,stroke .14s}.region-map path[data-map-name]{cursor:pointer}.region-map path[data-map-name]:hover,.region-map path[data-map-name]:focus{opacity:.72;outline:none;stroke:var(--green-dark);stroke-width:2}.map-loading,.empty{display:grid;min-height:180px;place-items:center;padding:20px;color:var(--muted);font-size:12px;text-align:center}.map-help{margin:8px 2px 0;color:var(--muted);font-size:10px}.region-ranking{margin-top:12px}.ranking-head,.ranking-row{display:grid;grid-template-columns:minmax(92px,1fr) 72px 106px;gap:8px;align-items:center}.ranking-head{padding:0 8px 7px;color:#829089;font-size:9px;text-align:right}.ranking-head span:first-child{text-align:left}.ranking-row{width:100%;padding:11px 8px;border:0;border-top:1px solid #eef2f6;background:#fff;color:var(--ink);text-align:right;cursor:pointer}.ranking-row:hover,.ranking-row:focus-visible{background:#f6f8fa;outline:none}.ranking-row b{overflow:hidden;font-size:12px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.ranking-row span{font-size:11px}.ranking-row small{font-size:10px;font-weight:800}.up-text{color:var(--up)}.down-text{color:var(--down)}.methodology{padding:0;overflow:hidden}.methodology summary{padding:16px 18px;color:var(--green-dark);font-size:12px;font-weight:850;cursor:pointer}.methodology p{margin:0;padding:15px 18px;border-top:1px solid var(--line);color:var(--muted);font-size:11px;line-height:1.65}
@media(min-width:700px){body[data-nav="stats"]{padding-top:60px}.market-analysis-app{width:min(100%,1120px);max-width:1120px}.analysis-top{margin-left:24px;margin-right:24px;padding-left:16px;padding-right:16px}.market-analysis-app main{padding-left:24px;padding-right:24px}}
@media(max-width:900px){.analysis-titlebar{align-items:stretch;flex-direction:column;gap:9px}.period-tabs{width:100%}}
@media(max-width:800px){.analysis-summary{grid-template-columns:1fr}.summary-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-groups{grid-template-columns:1fr}.comparison-grid{grid-template-columns:1fr}.region-map{min-height:330px}.region-map svg{height:330px}}
@media(max-width:520px){.analysis-top{padding:10px 16px 11px}.analysis-nav{align-items:center}.brand{font-size:17px}.analysis-titlebar{align-items:stretch;flex-direction:column;gap:9px;margin-top:9px}.analysis-heading{display:block}.analysis-top h1{font-size:24px}.intro{margin-top:3px;overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.period-tabs{gap:5px}.period-tabs button{padding:7px 10px}.market-analysis-app main{padding:11px 12px calc(84px + env(safe-area-inset-bottom))}.analysis-summary{gap:17px;padding:18px}.analysis-summary h2{font-size:22px}.summary-kpis{gap:6px}.summary-kpis article{padding:10px}.summary-kpis strong{font-size:16px}.analysis-panel{margin-top:12px;padding:15px}.filter-options button{padding:8px 9px}.comparison-head{align-items:flex-start;flex-direction:column;margin-top:20px}.metric-tabs{width:100%}.metric-tabs button{flex:1}.region-map{min-height:280px}.region-map svg{height:280px}.ranking-head,.ranking-row{grid-template-columns:minmax(86px,1fr) 62px 92px;gap:5px}.ranking-row{padding-left:3px;padding-right:3px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* 교차분석 조건은 분포를 읽고 선택할 수 있도록 건수·비율 카드로 표시한다. */
.filter-groups{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start}.filter-groups fieldset{padding:14px;border:1px solid #dce1e6;border-radius:14px;background:#f8f9fa}.filter-groups legend{width:auto;margin:0 0 10px;padding:0 2px;color:var(--green-dark);font-size:13px}.filter-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.filter-options .filter-card{display:grid;min-width:0;gap:7px;padding:11px 12px;border:1px solid #dce1e6;border-radius:12px;background:#fff;color:#3d4c5b;text-align:left;cursor:pointer}.filter-options .filter-card:hover,.filter-options .filter-card:focus-visible{border-color:#8fa4b9;outline:none;background:#fbfcfd}.filter-options .filter-card.active{border-color:var(--green);background:var(--green-soft);color:var(--green-dark);box-shadow:inset 0 0 0 1px rgba(16,63,110,.08)}.filter-card-label{overflow:hidden;font-size:12px;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.filter-card-meta{display:flex;align-items:baseline;justify-content:space-between;gap:6px;white-space:nowrap}.filter-card-meta b{font-size:12px;font-weight:850}.filter-card-meta em{color:var(--green-dark);font-size:11px;font-style:normal;font-weight:800}.filter-card-bar{display:block;height:5px;overflow:hidden;border-radius:999px;background:#e2e6ea}.filter-card-bar span{display:block;height:100%;border-radius:inherit;background:#93abc4}.filter-card.active .filter-card-bar span{background:var(--green)}.filter-basis{margin:14px 1px 0;color:var(--muted);font-size:10px;line-height:1.5}
@media(max-width:800px){.filter-groups{grid-template-columns:1fr}.filter-options{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:520px){.filter-options{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-options .filter-card{padding:10px}}

/* 가격 순위는 표본 기준과 정렬 방향을 드러내고, 증감의 두 기간 중위값을 함께 표시한다. */
.comparison-basis-note{margin:-3px 2px 10px;color:var(--muted);font-size:10px;line-height:1.5}.ranking-head,.ranking-row{grid-template-columns:minmax(76px,1fr) 68px 118px}.ranking-row b{display:flex;min-width:0;align-items:center;gap:7px;overflow:visible;white-space:normal}.ranking-row b i{display:grid;flex:0 0 21px;width:21px;height:21px;place-items:center;border-radius:50%;background:#eef0f3;color:var(--green-dark);font-size:9px;font-style:normal;font-weight:900}.ranking-row b span{min-width:0;overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.ranking-row>small{display:grid;gap:2px;justify-items:end;line-height:1.25}.ranking-row>small strong{font-size:10px}.ranking-row>small em{color:#7b8882;font-size:8px;font-style:normal;font-weight:650;white-space:nowrap}
@media(max-width:520px){.ranking-head,.ranking-row{grid-template-columns:minmax(84px,1fr) 74px 128px}.ranking-row{padding-top:12px;padding-bottom:12px}.ranking-row>small em{font-size:8.5px}}

/* 복수 선택은 제목 옆 배지, 카드별 체크 표시와 OR/AND 안내로 선택 상태를 분명히 한다. */
.filter-title-row{display:flex;align-items:center;gap:8px}.multi-select-badge{display:inline-flex;min-height:21px;padding:0 8px;align-items:center;border:1px solid #c1cdd9;border-radius:999px;background:#eef2f6;color:var(--green-dark);font-size:9px;font-weight:850;white-space:nowrap}.filter-card.active .filter-card-label:before{content:"✓";display:inline-grid;width:16px;height:16px;margin-right:5px;place-items:center;border-radius:50%;background:var(--green);color:#fff;font-size:10px;vertical-align:1px}.filter-basis strong{color:var(--green-dark);font-weight:850}
@media(max-width:520px){.filter-title-row{display:block}.multi-select-badge{margin-top:5px;font-size:10px}}

/* 동 단계는 더 내려가는 통계가 아니라 별도 실거래 사례 창으로 이어진다. */
.region-map path[data-map-level="dong"]{stroke-width:1.35}.map-help{word-break:keep-all}

/* 거래량 순위에서만 계층 이동과 실거래 지도 열기를 분리한다. */
.ranking-head.ranking-head-count{grid-template-columns:minmax(110px,1fr) 92px 40px}
.ranking-item{display:grid;grid-template-columns:minmax(0,1fr) 40px;align-items:stretch;border-top:1px solid #eef2f6}
.ranking-item .ranking-row-count{grid-template-columns:minmax(110px,1fr) 92px;border-top:0}
.ranking-head-count span:nth-child(2),.ranking-row-count>small{transform:translateX(-36px)}
.ranking-row-count[data-level="dong"] b span{transform:translateX(10px)}
.comparison-grid .panel-heading p{margin-bottom:4px}
.ranking-row-count b span{font-size:13px}
.ranking-row-count>small strong{font-size:12px}
.ranking-map-action{display:flex;width:34px;height:34px;min-width:34px;align-self:center;align-items:center;justify-content:center;margin:0 auto;padding:0;border:1px solid #d9dee4;border-radius:9px;background:#f7f8fa;color:var(--green-dark);cursor:pointer}
.ranking-map-action svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}
.ranking-map-action:hover,.ranking-map-action:focus-visible{border-color:#91a5b9;background:var(--green-soft);outline:none}
.ranking-map-placeholder{display:block}
@media(max-width:520px){.ranking-head.ranking-head-count{grid-template-columns:minmax(96px,1fr) 92px 44px;gap:5px}.ranking-item{grid-template-columns:minmax(0,1fr) 44px}.ranking-item .ranking-row-count{grid-template-columns:minmax(96px,1fr) 92px;gap:5px}.ranking-map-action{width:40px;height:40px;min-width:40px}}

/* 평당가 증감은 이전→현재 가격을 한 줄로 보이게 오른쪽 열을 약 5글자 넓힌다. */
@media(min-width:521px){.region-ranking[data-metric="change"] .ranking-head,.region-ranking[data-metric="change"] .ranking-row{grid-template-columns:minmax(46px,1fr) 76px 158px;align-items:end}.region-ranking[data-metric="change"] .ranking-head span:nth-child(2){white-space:nowrap}}

/* 연면적 추가(2026-10-27): 2×2 배치 — 위 거래금액대·건물연식, 아래 대지규모·연면적. 묶음 안 카드는 3열. */
.filter-groups{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"price age" "size floor"}
.filter-groups .filter-group-price{grid-area:price}.filter-groups .filter-group-age{grid-area:age}
.filter-groups .filter-group-size{grid-area:size}.filter-groups .filter-group-floor{grid-area:floor}
.filter-groups .filter-options{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:800px){.filter-groups{grid-template-columns:1fr;grid-template-areas:"price" "size" "floor" "age"}}
@media(max-width:520px){.filter-groups .filter-options{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 요약 카드 높이 확대 + 중위 평당가(대지) 아래 연면적 기준 보조 한 줄(2026-10-27) */
.summary-kpis article{display:flex;flex-direction:column;justify-content:center;min-height:88px;padding:15px 13px}
.summary-kpis .kpi-sub{display:block;margin-top:5px;overflow:hidden;font-size:11px;font-weight:600;opacity:.82;text-overflow:ellipsis;white-space:nowrap}
.summary-metrics{min-width:0}
.summary-samples{margin:7px 2px 0!important;color:rgba(255,255,255,.76);font-size:10px;line-height:1.4;text-align:right}

.ranking-head span em{display:block;font-style:normal;font-weight:500;opacity:.8}
.summary-kpis .kpi-sub[hidden]{display:none}

/* 분석 조건 공유: 전체 조건 초기화 옆에서 현재 URL 조건을 바로 복사·공유한다. */
.filter-heading-actions{display:flex;flex:none;align-items:center;gap:7px}
.filter-heading-actions #resetFilters{padding:7px 10px;border:1px solid #cbd9e7;border-radius:9px;background:#fff;color:var(--green-dark);font-size:11px;font-weight:800;cursor:pointer;white-space:nowrap}
.filter-share-button{position:relative;display:grid;width:32px;height:32px;flex:none;padding:0;place-items:center;border:1px solid #cbd9e7;border-radius:9px;background:#fff;color:var(--green-dark);cursor:pointer;transition:color .16s ease,background .16s ease,border-color .16s ease,transform .16s ease}
.filter-share-button:hover{border-color:#91a5b9;background:var(--green-soft)}
.filter-share-button:active{transform:scale(.94)}
.filter-share-button:focus-visible{outline:2px solid rgba(16,63,110,.28);outline-offset:2px}
.filter-share-button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.filter-share-check-icon{display:none}
.filter-share-button.shared{border-color:var(--green);color:#fff;background:var(--green)}
.filter-share-button.shared .filter-share-link-icon{display:none}
.filter-share-button.shared .filter-share-check-icon{display:block}
.filter-share-button.shared::after{content:attr(data-feedback);position:absolute;z-index:10;top:calc(100% + 6px);right:0;width:max-content;padding:5px 8px;border-radius:7px;color:#fff;background:#161b21;box-shadow:0 4px 12px rgba(22,27,33,.18);font-size:10px;font-weight:750;white-space:nowrap}

/* 좁은 화면에서는 긴 조건 묶음을 접고 현재 적용 조건만 한 줄로 남긴다. */
.filter-toggle{display:none}
@media(max-width:800px){
  .summary-samples{text-align:left}
  .filter-toggle{display:flex;width:100%;min-height:46px;margin-top:12px;padding:0 11px;align-items:center;justify-content:space-between;gap:12px;border:1px solid #d8dee4;border-radius:12px;background:#f7f8fa;color:var(--ink);cursor:pointer}
  .filter-toggle-copy{display:flex;min-width:0;align-items:center;gap:8px;text-align:left}.filter-toggle-copy b{flex:none;color:var(--green-dark);font-size:11px}.filter-toggle-copy em{min-width:0;overflow:hidden;color:#485a6c;font-size:11px;font-style:normal;font-weight:750;text-overflow:ellipsis;white-space:nowrap}
  .filter-toggle-action{display:flex;flex:none;align-items:center;gap:3px;color:var(--green-dark);font-size:10px;font-weight:850}.filter-toggle-action svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transform:rotate(180deg);transition:transform .15s ease}
  .filter-panel.mobile-collapsed .filter-body{display:none}.filter-panel.mobile-collapsed .filter-toggle-action svg{transform:rotate(0)}
}

/* 지도와 지역 순위를 같은 높이로 읽고, 긴 순위는 카드 안에서만 스크롤한다. */
.region-ranking{max-height:420px;overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#c8d0d8 transparent;scrollbar-gutter:stable;scrollbar-width:thin}
.region-ranking::-webkit-scrollbar{width:7px}.region-ranking::-webkit-scrollbar-thumb{border-radius:999px;background:#c8d0d8}
.ranking-head{position:sticky;z-index:2;top:0;background:#fff}
@media(min-width:801px){
  .comparison-grid{align-items:stretch}
  .comparison-grid>.analysis-panel{height:450px}
  .map-panel,.ranking-panel{display:flex;min-height:0;flex-direction:column}
  .region-map{min-height:320px;flex:0 0 320px}
  .region-map svg{height:320px}
  .ranking-panel .region-ranking{min-height:0;max-height:none;flex:1}
}

/* 시장분석 상단 카드와 교차분석 상단 카드의 색·대비를 동일하게 유지한다. */
.summary-kpis article {
  border-color: rgba(255,255,255,.15);
  background: rgba(255,255,255,.11);
  color: #fff;
}
.summary-kpis span { opacity: .78; }
.summary-kpis strong,
.summary-kpis .kpi-sub { color: #fff; }
.summary-kpis .kpi-sub { opacity: 1; }
