:root {
  --bg:#f4f6f1;
  --surface:#ffffff;
  --ink:#132119;
  --muted:#737d76;
  --line:#dce4dc;
  --green:#0da95f;
  --green-dark:#04783f;
  --green-soft:#e7f7ed;
  --blue-soft:#e9f4fb;
  --amber-soft:#fff1d7;
  --shadow:0 18px 50px rgba(38,54,41,.06);
}
*{box-sizing:border-box}
body{
  margin:0;
  background:
    radial-gradient(circle at 8% 0%,rgba(16,169,96,.06),transparent 24rem),
    var(--bg);
  color:var(--ink);
  font-family:Inter,Pretendard,"Noto Sans KR",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
button,input,select{font:inherit}
.page-shell{max-width:1220px;margin:0 auto;padding:0 22px 60px}
.hero{padding:42px 0 28px}
.eyebrow{color:var(--green-dark);font-size:10px;font-weight:900;letter-spacing:.15em}
.hero h1{margin:11px 0 12px;font-size:clamp(42px,7vw,72px);line-height:.98;letter-spacing:-.065em}
.hero p{margin:0;color:var(--muted);font-size:14px;line-height:1.7}
.search-panel{margin-top:26px;display:grid;grid-template-columns:.7fr 1.65fr auto;gap:8px;padding:9px;background:rgba(255,255,255,.96);border-radius:19px;box-shadow:var(--shadow);max-width:900px}
.search-panel label{min-height:62px;padding:10px 13px;border-radius:12px;background:#f5f7f4;display:flex;flex-direction:column;justify-content:center}
.search-panel label span{font-size:9px;color:var(--muted);font-weight:800}
.search-panel input{border:0;outline:0;background:transparent;padding:3px 0 0;color:var(--ink);font-weight:800;font-size:15px}
.search-panel button{min-width:160px;border:0;border-radius:12px;background:#132019;color:#fff;font-weight:850;padding:0 17px;display:flex;justify-content:space-between;align-items:center;cursor:pointer}
.search-panel button:disabled{opacity:.5;cursor:wait}
.source-note{margin-top:13px;font-size:10px;color:var(--muted);display:flex;gap:8px;align-items:center}
.source-note i{width:6px;height:6px;border-radius:50%;background:#19c875}
.card{background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:22px;box-shadow:0 12px 38px rgba(38,54,41,.04)}
.top-grid{display:grid;grid-template-columns:1.7fr .85fr;gap:16px;margin-top:12px}
.card-head,.section-head{padding:17px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:14px}
.card-head h2,.section-head h2{margin:3px 0 0;font-size:18px;letter-spacing:-.04em}
.status-pill{padding:6px 9px;border-radius:999px;background:#eef3ef;color:var(--muted);font-size:10px;font-weight:800}
.status-pill.ok{background:var(--green-soft);color:var(--green-dark)}
.status-pill.warn{background:#fff1df;color:#976111}
#map{height:420px;background:#eef2ed}
.map-placeholder{height:100%;display:grid;place-content:center;color:var(--muted)}
.snapshot{overflow:hidden}
.summary-empty{min-height:420px;display:grid;place-content:center;text-align:center;padding:20px;color:var(--muted);gap:6px}
.summary-empty strong{color:var(--ink)}
#summaryContent{padding:18px}
.metric-block{padding:13px 0;border-bottom:1px solid var(--line)}
.metric-block span,.metric-block small{display:block;color:var(--muted);font-size:10px}
.metric-block strong{display:block;margin:4px 0;font-size:33px;letter-spacing:-.04em}
.metric-block:first-child strong{color:var(--green-dark)}
.mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.mini-grid>div{padding:13px;border-radius:13px;background:#f5f7f4}
.mini-grid span,.mini-grid strong{display:block}
.mini-grid span{font-size:9px;color:var(--muted)}
.mini-grid strong{margin-top:4px}
.summary-note{margin:14px 0 0;font-size:10px;line-height:1.7;color:var(--muted)}
.recommend-card,.intent-card,.related-card,.footnote{margin-top:16px}
.section-caption{color:var(--muted);font-size:10px}
.recommend-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;padding:17px 18px 10px}
.recommend-empty{grid-column:1/-1;padding:30px;text-align:center;color:var(--muted)}
.recommend-item{padding:15px;border:1px solid var(--line);border-radius:16px;background:#fbfcfa}
.recommend-top{display:flex;justify-content:space-between;gap:8px;align-items:center}
.rank{font-size:11px;color:var(--muted);font-weight:800}
.score-circle{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--green-soft);color:var(--green-dark);font-weight:900}
.recommend-item h3{margin:12px 0 5px;font-size:15px;letter-spacing:-.03em;word-break:break-all}
.recommend-meta{font-size:10px;color:var(--muted);line-height:1.6}
.recommend-label{display:inline-flex;margin-top:10px;padding:6px 8px;border-radius:999px;background:#edf3ee;font-size:9px;font-weight:900}
.recommend-label.best{background:#dff5e8;color:#06793f}
.score-note{padding:0 18px 16px;margin:0;color:var(--muted);font-size:9px}

.intent-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:17px 18px}
.intent-item{
  appearance:none;
  width:100%;
  border:1px solid transparent;
  padding:14px;
  border-radius:15px;
  background:#f6f8f5;
  color:var(--ink);
  text-align:left;
  cursor:pointer;
  transition:.16s ease;
}
.intent-item:hover{transform:translateY(-1px);border-color:#c8d7ca;background:#f9fbf8}
.intent-item.active{border-color:#80c99e;background:var(--green-soft);box-shadow:0 0 0 3px rgba(13,169,95,.07)}
.intent-item strong,.intent-item span{display:block}
.intent-item strong{font-size:14px}
.intent-item span{margin-top:4px;font-size:10px;color:var(--muted)}
.intent-item.active strong{color:var(--green-dark)}
.intent-all{background:#eef5ef}

.active-filter-bar{
  display:flex;align-items:center;gap:8px;
  padding:11px 18px;
  border-bottom:1px solid var(--line);
  background:#fbfcfa;
  font-size:10px;
  color:var(--muted)
}
.active-filter-bar strong{
  padding:5px 8px;border-radius:999px;
  background:var(--green-soft);color:var(--green-dark)
}
.clear-intent{
  margin-left:auto;border:0;background:transparent;
  color:var(--green-dark);font-size:10px;font-weight:800;cursor:pointer
}

.filters{padding:14px 18px;display:flex;gap:8px;flex-wrap:wrap;border-bottom:1px solid var(--line)}
.filters select{min-height:38px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:0 11px;color:var(--ink);font-size:11px;outline:none}
.result-actions{display:flex;align-items:center;gap:10px}
.excel-button{border:1px solid #b8c9b9;background:#f2f8f1;color:#176b39;border-radius:10px;padding:8px 12px;font-size:11px;font-weight:800;cursor:pointer}
.table-message{margin:16px;min-height:110px;border:1px dashed #cbd6cb;border-radius:15px;display:grid;place-content:center;text-align:center;color:var(--muted)}
.table-message strong{color:var(--ink)}
.table-message span{margin-top:5px;font-size:10px}
.table-wrap{overflow-x:auto;padding:0 16px 14px}
table{width:100%;min-width:1040px;border-collapse:collapse}
th,td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;font-size:11px}
th{color:var(--muted);font-weight:800;background:#fbfcfb}
th:nth-child(5),td:nth-child(5){text-align:left}
.badge,.kind-badge,.intent-badge,.score-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;font-size:9px;font-weight:850;padding:5px 8px}
.badge.best{background:#dff5e8;color:#06793f}
.badge.good{background:#e8f1fb;color:#0c5d9d}
.badge.normal{background:#f0f2ef;color:#5b645d}
.badge.watch{background:#fff1df;color:#946217}
.kind-badge{background:#f0f2ef;color:#59645b}
.kind-badge.exact{background:#dff4e5;color:#086b34}
.kind-badge.local{background:#e4f1fb;color:#0d5ea3}
.kind-badge.core{background:#fff1d8;color:#7a5512}
.intent-badge{background:#f4f0fb;color:#6e4aa6}
.score-badge{background:#f3f7f2;color:#1e6e42;min-width:38px}
.keyword-chip{display:inline-flex;padding:6px 8px;border-radius:8px;background:#f4f6f2;font-weight:800}
.footnote{padding:17px 19px}
.footnote strong{font-size:11px}
.footnote p{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.7}
.hidden{display:none!important}

@media(max-width:900px){
  .search-panel{grid-template-columns:1fr 1.5fr}
  .search-panel button{grid-column:1/-1;min-height:52px}
  .top-grid{grid-template-columns:1fr}
  .recommend-grid{grid-template-columns:1fr 1fr}
  .intent-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){
  .page-shell{padding:0 14px 45px}
  .hero{padding-top:30px}
  .hero h1{font-size:42px}
  .search-panel{grid-template-columns:1fr}
  .search-panel button{grid-column:auto;min-height:50px}
  #map{height:330px}
  .recommend-grid,.intent-grid{grid-template-columns:1fr}
  .section-head{align-items:flex-start}
  .result-actions{flex-direction:column;align-items:flex-end}
}


/* v0.3.2: 검색의도 영역을 화면 기준점으로 사용 */
.intent-card{
  scroll-margin-top:14px;
}
.intent-card.intent-focus{
  box-shadow:0 14px 44px rgba(13,169,95,.10);
}
@media(min-width:901px){
  .intent-card.intent-focus .section-head{
    position:sticky;
    top:0;
    z-index:20;
    background:rgba(255,255,255,.98);
    backdrop-filter:blur(8px);
  }
}


/* v0.3.3: 공략 키워드 월 조회수 강조 + 테이블 헤더 소팅 */
.recommend-top{
  align-items:flex-start;
}
.volume-box{
  text-align:right;
}
.volume-box strong{
  display:block;
  font-size:24px;
  line-height:1;
  letter-spacing:-.04em;
  color:var(--green-dark);
}
.volume-box span{
  display:block;
  margin-top:4px;
  font-size:9px;
  color:var(--muted);
  font-weight:800;
}
.score-mini{
  display:inline-flex;
  margin-top:8px;
  padding:5px 7px;
  border-radius:999px;
  background:#f1f5f1;
  color:#55705d;
  font-size:9px;
  font-weight:850;
}
.sort-head{
  border:0;
  padding:0;
  background:transparent;
  color:inherit;
  font:inherit;
  font-weight:800;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:4px;
}
.sort-head.left{
  width:100%;
  justify-content:flex-start;
}
.sort-head span{
  color:#9aa49c;
  font-size:10px;
}
.sort-head.active{
  color:var(--green-dark);
}
.sort-head.active span{
  color:var(--green-dark);
}


/* v0.3.4: 전국 행정구역 지도 */
.admin-map-bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 16px;
  border-top:1px solid var(--line);
  background:#fbfcfa;
}
.admin-map-bar strong,
.admin-map-bar span{display:block}
.admin-map-bar strong{font-size:11px}
.admin-map-bar span{margin-top:3px;color:var(--muted);font-size:9px}
.boundary-clear{
  border:1px solid var(--line);
  background:#fff;
  border-radius:9px;
  padding:7px 10px;
  color:var(--green-dark);
  font-size:9px;
  font-weight:800;
  cursor:pointer;
}
.admin-area-chips{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  padding:0 16px 14px;
  background:#fbfcfa;
}
.admin-chip{
  border:1px solid #cbd8cc;
  background:#fff;
  color:#324438;
  border-radius:999px;
  padding:7px 10px;
  font-size:10px;
  font-weight:800;
  cursor:pointer;
}
.admin-chip:hover{
  border-color:#75bd91;
  background:var(--green-soft);
  color:var(--green-dark);
}
.admin-chip small{
  margin-left:4px;
  color:var(--muted);
  font-size:8px;
}

/* v0.3.5.1: 검색 지역 경계 강조 */
.admin-map-bar{border-top:1px solid #f0d2d2;}
.admin-map-bar strong{color:#8f1d1d;}
.admin-map-bar span{color:#7b5a5a;}


/* v0.3.6 빈틈 공략 추천 */
.recommend-grid{
  align-items:stretch;
}
.gap-recommend{
  display:flex;
  flex-direction:column;
  gap:10px;
}
.gap-tags{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
}
.gap-type,
.gap-score{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  padding:6px 9px;
  font-size:9px;
  font-weight:900;
}
.gap-core{
  background:#e7f7ec;
  color:#08713f;
}
.gap-niche{
  background:#fff2dc;
  color:#8a5500;
}
.gap-expand{
  background:#eef3ff;
  color:#34548d;
}
.gap-content{
  background:#f1f3f1;
  color:#566158;
}
.gap-score{
  background:#102b20;
  color:#fff;
}
.gap-reason{
  margin:0;
  min-height:44px;
  font-size:10px;
  line-height:1.55;
  color:#39483e;
}
.gap-competition{
  padding-top:8px;
  border-top:1px solid var(--line);
  font-size:9px;
  color:var(--muted);
}
.gap-action{
  margin-top:auto;
  padding:10px;
  border-radius:10px;
  background:#f5f8f5;
  font-size:9px;
  line-height:1.5;
  color:#334239;
}
.gap-action b{
  color:var(--green-dark);
  margin-right:4px;
}

/* v0.3.6 유입 후보 페이지네이션 */
.pagination{
  display:flex;
  align-items:center;
  justify-content:center;
  flex-wrap:wrap;
  gap:6px;
  padding:18px 14px 4px;
}
.page-btn{
  min-width:34px;
  height:34px;
  padding:0 10px;
  border:1px solid var(--line);
  border-radius:9px;
  background:#fff;
  color:#35463b;
  font-size:10px;
  font-weight:850;
  cursor:pointer;
}
.page-btn:hover:not(:disabled){
  border-color:#7eb18e;
  background:#f2f8f3;
}
.page-btn.active{
  border-color:#0b6a3c;
  background:#0b6a3c;
  color:#fff;
}
.page-btn:disabled{
  opacity:.35;
  cursor:default;
}
.page-ellipsis{
  padding:0 3px;
  color:var(--muted);
  font-size:11px;
}

@media (max-width: 760px){
  .gap-reason{min-height:auto}
  .page-btn{
    min-width:32px;
    height:32px;
    padding:0 8px;
  }
}

/* v0.3.6.1: 빈틈 공략 추천 최대 10개 */
.recommend-grid{
  grid-template-columns:repeat(5,minmax(0,1fr));
}
@media (max-width:1100px){
  .recommend-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
}
@media (max-width:760px){
  .recommend-grid{grid-template-columns:1fr;}
}
