/* jgbukgu 화면 — 공공 서비스라 정당 중립 색(회색 바탕 · 청록 강조). 정당 상징색은 사람·지역구에만(app.js partyColor). 바깥 자원 0. */
:root{
  --bg:#f4f6f8;--surface:#ffffff;--surface-2:#f8fafc;--ink:#0f172a;--ink-2:#334155;--muted:#64748b;--line:#e2e8f0;
  --accent:#0f766e;--accent-ink:#ffffff;--accent-soft:#ccfbf1;--chip:#f1f5f9;--shadow:0 1px 2px rgba(15,23,42,.06),0 6px 20px rgba(15,23,42,.06);
  --radius:16px;--radius-s:10px;--appbar:rgba(255,255,255,.86)
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0b1016;--surface:#121a23;--surface-2:#0f161e;--ink:#e6edf3;--ink-2:#c3ced9;--muted:#8b98a7;--line:#223040;
  --accent:#2dd4bf;--accent-ink:#04201c;--accent-soft:#0f3a35;--chip:#18222e;--shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);--appbar:rgba(11,16,22,.85)}}
:root[data-theme="dark"]{
  --bg:#0b1016;--surface:#121a23;--surface-2:#0f161e;--ink:#e6edf3;--ink-2:#c3ced9;--muted:#8b98a7;--line:#223040;
  --accent:#2dd4bf;--accent-ink:#04201c;--accent-soft:#0f3a35;--chip:#18222e;--shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);--appbar:rgba(11,16,22,.85)}
*{box-sizing:border-box}
[hidden]{display:none!important}   /* display 를 준 요소(.sheet 등)도 hidden 이면 숨는다 */
html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 system-ui,-apple-system,"Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--accent)}
.wrap{max-width:1120px;margin:0 auto;padding:0 16px}
.muted{color:var(--muted)}.small{font-size:13px}
.appbar svg,.kpi svg,.search svg,.meet svg,.icon-btn svg,.sheet svg{width:20px;height:20px;fill:currentColor;flex:none}   /* 아이콘만 — 전역 svg 규칙은 Leaflet 지도 층을 20px 로 줄였다(2026-10-18) */
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* 머리말 */
.appbar{position:sticky;top:0;z-index:20;background:var(--appbar);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.appbar-in{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:12px;padding-bottom:8px}
.brand{display:flex;align-items:center;gap:12px;min-width:0}
.logo{width:40px;height:40px;border-radius:12px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;font-weight:800;font-size:18px;flex:none}
.brand h1{margin:0;font-size:19px;letter-spacing:-.01em}.sub{margin:0;color:var(--muted);font-size:12px}
.icon-btn{border:1px solid var(--line);background:var(--surface);color:var(--ink-2);width:38px;height:38px;border-radius:12px;display:grid;place-items:center;cursor:pointer}
.tabs{display:flex;gap:4px;padding-bottom:10px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{display:flex;align-items:center;gap:6px;border:0;background:none;color:var(--muted);font:inherit;font-weight:600;padding:8px 14px;border-radius:999px;cursor:pointer;white-space:nowrap}
.tabs button svg{width:18px;height:18px}
.tabs button:hover{background:var(--chip);color:var(--ink)}
.tabs button[aria-selected="true"]{background:var(--ink);color:var(--surface)}

/* 요약 지표 */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:18px 0}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);display:flex;gap:12px;align-items:center;min-height:76px}
.kpi .ic{width:40px;height:40px;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;flex:none}
.kpi b{display:block;font-size:24px;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.kpi span{color:var(--muted);font-size:13px}

/* 뼈대(로딩) */
.sk{position:relative;overflow:hidden;background:var(--surface);min-height:76px}
.sk::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(148,163,184,.18),transparent);animation:sh 1.2s infinite}
.sk.tall{min-height:150px;margin-bottom:12px}
@keyframes sh{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@media (prefers-reduced-motion:reduce){.sk::after{animation:none}}

/* 카드 · 그리드 */
h2{font-size:17px;margin:22px 0 10px;letter-spacing:-.01em}h2 .muted{font-weight:500}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);text-align:left;font:inherit;color:inherit;width:100%}
button.card{cursor:pointer;transition:transform .12s ease,border-color .12s ease}
button.card:hover{border-color:var(--accent);transform:translateY(-1px)}
.person{display:flex;gap:12px;align-items:center}
.av{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-weight:800;color:#fff;flex:none;font-size:16px}
.person .nm{font-weight:700;font-size:16px}.person .meta{color:var(--muted);font-size:13px}
.badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;margin-left:6px;vertical-align:2px;background:var(--chip);color:var(--ink-2);border:1px solid var(--line)}
.hero{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;padding:18px;margin-bottom:6px;border-left:4px solid var(--accent)}
.hero .av{width:64px;height:64px;font-size:22px}
.hero h3{margin:0;font-size:20px}.hero .meta{color:var(--muted)}
.hero .stats{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.pill{display:inline-flex;align-items:center;gap:6px;background:var(--chip);border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:13px;color:var(--ink-2)}
.pill b{color:var(--ink)}
.note{background:var(--accent-soft);color:var(--ink);border-radius:var(--radius-s);padding:12px 14px;margin:6px 0 14px;font-size:14px}

/* 안건 */
.agbar{position:sticky;top:112px;z-index:10;background:var(--bg);display:flex;flex-wrap:wrap;gap:8px;padding:10px 0}
.search{flex:1 1 240px;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:0 12px;color:var(--muted)}
.search input{flex:1;border:0;background:none;color:var(--ink);font:inherit;padding:11px 0;min-width:0;outline:none}
.seg{display:inline-flex;background:var(--chip);border-radius:12px;padding:3px}
.seg button{border:0;background:none;color:var(--muted);font:inherit;font-size:14px;font-weight:600;padding:7px 12px;border-radius:9px;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}
.chips{display:flex;gap:6px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:thin}
.chips button{flex:none;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:999px;padding:6px 12px;font:inherit;font-size:14px;cursor:pointer}
.chips button[aria-pressed="true"]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.chips button span{opacity:.65;margin-left:5px;font-variant-numeric:tabular-nums}
.meet{margin:12px 0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);overflow:hidden}
.meet>summary{cursor:pointer;padding:14px 16px;list-style:none;display:flex;justify-content:space-between;gap:10px;align-items:center}
.meet>summary::-webkit-details-marker{display:none}
.meet>summary .d{display:flex;align-items:center;gap:10px;min-width:0}
.meet>summary .d svg{color:var(--accent)}
.meet>summary b{font-size:15px}.meet>summary .s{color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.meet>summary .n{background:var(--chip);border-radius:999px;padding:2px 10px;font-size:12px;color:var(--ink-2);white-space:nowrap}
.meet .items{padding:0 12px 12px;display:grid;gap:8px}
.item{display:grid;grid-template-columns:40px 1fr;gap:12px;align-items:start;text-align:left;width:100%;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);padding:12px;font:inherit;color:inherit;cursor:pointer;transition:border-color .12s}
.item:hover{border-color:var(--accent)}
.item .av{width:40px;height:40px;font-size:15px}
.item .t{font-weight:700;line-height:1.4}.item .p{color:var(--muted);font-size:13px;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.item .m{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;color:var(--muted)}
.tag{border-radius:6px;padding:1px 8px;font-size:12px;color:var(--ink-2);background:var(--chip);border:1px solid var(--line)}
.linkbtn{border:0;background:none;color:var(--accent);font:inherit;font-weight:600;cursor:pointer;padding:0}

/* 해결방안 */
.pol{margin-bottom:10px;padding:0;overflow:hidden}
.pol summary{cursor:pointer;font-weight:700;padding:16px;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:8px}
.pol summary::-webkit-details-marker{display:none}
.pol summary::after{content:"";width:9px;height:9px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .15s;flex:none}
.pol[open] summary::after{transform:rotate(-135deg)}
.pol .body{padding:0 16px 16px;border-top:1px solid var(--line)}
.draft{line-height:1.75}.draft h4{margin:16px 0 4px;font-size:15px}.draft p{margin:4px 0}.draft ul{margin:4px 0;padding-left:20px}

/* 입법 */
.bill{display:block;text-decoration:none;color:inherit;margin-bottom:8px}
.bill .t{font-weight:700}.bill .meta{color:var(--muted);font-size:13px;margin-top:2px}

/* 지도 */
.legend{display:flex;flex-wrap:wrap;gap:14px;margin:0 0 10px;font-size:14px}
.legend i{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:6px;vertical-align:-1px}
.mapbox{position:relative;width:100%;height:68vh;min-height:380px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.mapbox .leaflet-container{background:var(--bg);font:inherit}

/* 상세 — 데스크톱은 오른쪽 창, 폰은 아래 시트 */
.sheet-bg{position:fixed;inset:0;background:rgba(2,6,23,.45);z-index:40}
.sheet{position:fixed;z-index:41;background:var(--surface);color:var(--ink);box-shadow:0 10px 40px rgba(0,0,0,.25);display:flex;flex-direction:column;
  top:0;right:0;bottom:0;width:min(520px,100vw);border-left:1px solid var(--line);animation:slide .18s ease}
@keyframes slide{from{transform:translateX(24px);opacity:.4}to{transform:none;opacity:1}}
.sheet-head{display:flex;justify-content:flex-end;align-items:center;padding:12px 12px 0}
.grip{display:none}
.sheet-body{overflow:auto;padding:4px 20px 28px}
.sheet-body h3{margin:0 0 4px;font-size:20px;letter-spacing:-.01em}.sheet-body ul{padding-left:20px}
.sheet-body>b{display:block;margin-top:14px}   /* 갈래 제목만 블록 — 문장 속 굵은 이름은 줄을 바꾸지 않는다 */
@media (max-width:720px){
  .sheet{top:auto;left:0;right:0;bottom:0;width:100%;max-height:86vh;border-left:0;border-top:1px solid var(--line);border-radius:20px 20px 0 0;animation:up .2s ease}
  @keyframes up{from{transform:translateY(30px);opacity:.4}to{transform:none;opacity:1}}
  .sheet-head{justify-content:space-between}.grip{display:block;width:44px;height:5px;border-radius:9px;background:var(--line);margin:0 auto}
  /* 폰: 탭은 아래 막대 — 머리말의 backdrop-filter 는 fixed 의 기준을 머리말로 바꿔 막대가 위에 붙었다 → 폰에선 끈다 */
  .appbar{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--surface)}
  .tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--appbar);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    border-top:1px solid var(--line);justify-content:space-around;padding:6px 6px calc(6px + env(safe-area-inset-bottom));max-width:none;margin:0}
  .tabs button{flex-direction:column;gap:2px;font-size:11px;padding:6px 8px;border-radius:12px}
  .tabs button svg{width:22px;height:22px}
  .tabs button[aria-selected="true"]{background:none;color:var(--accent)}
  body{padding-bottom:76px}
  .agbar{top:64px}
  .hero{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(2,1fr)}
}
.foot{color:var(--muted);font-size:12px;padding-top:28px;padding-bottom:36px}
