*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
*{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
input,textarea{-webkit-user-select:text;user-select:text}
html{scrollbar-width:thin;scrollbar-color:var(--rule,#202530) var(--bg2,#141820);-webkit-tap-highlight-color:transparent;overscroll-behavior:none}
body{touch-action:manipulation}
button,a,[onclick]{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:var(--bg2,#141820)}
::-webkit-scrollbar-thumb{background:var(--rule,#202530);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--rule2,#2A3040)}
:root{
  --bg:#080A0F;--bg1:#0D1018;--bg2:#141820;--bg3:#1C2230;
  --rule:#202530;--rule2:#2A3040;
  --blue:#3B7FD4;--blue2:#5B9FF4;
  --red:#E8192C;--red2:#FF3344;
  --green:#1DB86A;--amber:#D4960A;
  --text:#C8D4E8;--text2:#A3B3C8;--text3:#7A8DA3;
  --sans:"Noto Sans KR",sans-serif;
  --serif:"Noto Serif KR",serif;
  --mono:"JetBrains Mono",monospace;
}
/* 라이트 모드 오버라이드 (body.light-mode 토글) */
body.light-mode{
  --bg:#FFFFFF;--bg1:#F9FAFB;--bg2:#F3F4F6;--bg3:#E5E7EB;
  --rule:#E5E7EB;--rule2:#D1D5DB;
  --text:#111827;--text2:#374151;--text3:#6B7280;
}
body.light-mode .kakao-popup,body.light-mode .inquiry-modal{box-shadow:0 8px 32px rgba(0,0,0,.12)}
/* 라이트 모드: 하드코딩 다크 배경 보정 (알림 패널 + AI 채팅) */
body.light-mode #notifPanel{background:#FFFFFF !important;border-left-color:#E5E7EB !important;color:#111827 !important}
body.light-mode #notifPanel *{color:inherit}
body.light-mode #aiChatBody{background:#F9FAFB !important;color:#111827 !important}
body.light-mode .aichat-bubble > div:not([style*="linear-gradient"]){background:#FFFFFF !important;color:#111827 !important;border-color:#E5E7EB !important}
body.light-mode #notifBackdrop{background:rgba(0,0,0,.35) !important}
html{font-size:19px}
body{font-family:var(--sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overflow-x:hidden;font-size:18px}

/* ── 패널 (탭 콘텐츠) ── */
.panel{display:none}
.panel:not(.on){overflow:hidden!important;pointer-events:none!important}
.panel:not(.on) *{pointer-events:none!important}
.panel.on{display:block;animation:panelIn .25s ease;pointer-events:auto}
#p-map{display:block!important;visibility:hidden;position:absolute!important;left:-9999px!important;top:0!important;width:100%!important;pointer-events:none;overflow:hidden!important;position:relative!important}
#p-map.on{visibility:visible;position:relative!important;left:0!important;top:auto!important;pointer-events:auto;animation:none!important;overflow:hidden!important}
@keyframes panelIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ── 카드 진입 ── */
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.anim{opacity:0}
.anim.vis{animation:fadeUp .35s ease forwards}
.anim.vis:nth-child(2){animation-delay:.08s}
.anim.vis:nth-child(3){animation-delay:.16s}
.anim.vis:nth-child(4){animation-delay:.24s}

/* ── MASTHEAD ── */
.mhd{background:var(--bg1);border-bottom:1px solid var(--rule)}
.mhd::after{content:'';display:block;height:1px;background:linear-gradient(90deg,transparent,rgba(59,127,212,.5),transparent)}
.mhd-row{max-width:1540px;margin:0 auto;display:flex;align-items:stretch;height:56px;padding:0 24px}

/* 로고 */
.brand{display:flex;align-items:center;padding-right:22px;border-right:1px solid var(--rule);flex-shrink:0}
.logo-img{
  height:50px;width:auto;display:block;
  filter:drop-shadow(0 0 8px rgba(6,182,212,.45)) drop-shadow(0 0 18px rgba(59,127,212,.25));
  animation:logoFloat 4s ease-in-out infinite;
  transition:filter .3s;
}
.logo-img:hover{filter:drop-shadow(0 0 14px rgba(6,182,212,.8)) drop-shadow(0 0 28px rgba(59,127,212,.5))}
@keyframes logoFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}

/* 라이트 모드 로고 보정 */
body.light-mode .logo-img{filter:brightness(.15) contrast(1.2) drop-shadow(0 0 4px rgba(0,0,0,.08))}
body.light-mode .logo-img:hover{filter:brightness(.1) contrast(1.3) drop-shadow(0 0 8px rgba(0,0,0,.15))}
body.light-mode .mhd{background:#FFFFFF;border-bottom-color:#E5E7EB}
body.light-mode .mhd::after{background:linear-gradient(90deg,transparent,rgba(59,127,212,.3),transparent)}

/* 헤더 실거래 전광판 */
.hdr-ticker{display:flex;align-items:center;overflow:hidden;padding:0 14px;border-right:1px solid var(--rule);max-width:340px;flex-shrink:1;min-width:0}
.hdr-ticker-track{overflow:hidden;white-space:nowrap;position:relative;flex:1}
.hdr-ticker-track::before,.hdr-ticker-track::after{content:'';position:absolute;top:0;bottom:0;width:20px;z-index:1;pointer-events:none}
.hdr-ticker-track::before{left:0;background:linear-gradient(90deg,var(--bg1),transparent)}
.hdr-ticker-track::after{right:0;background:linear-gradient(270deg,var(--bg1),transparent)}
body.light-mode .hdr-ticker-track::before{background:linear-gradient(90deg,#FFFFFF,transparent)}
body.light-mode .hdr-ticker-track::after{background:linear-gradient(270deg,#FFFFFF,transparent)}
.hdr-ticker-inner{display:inline-flex;animation:hdrTickScroll 30s linear infinite}
.hdr-ticker-inner:hover{animation-play-state:paused}
.hdr-ticker-inner .ht-item{display:inline-flex;align-items:center;gap:4px;padding:0 14px;font-size:.68rem;font-weight:600;color:var(--text2);white-space:nowrap}
.hdr-ticker-inner .ht-item .ht-name{color:var(--text3)}
.hdr-ticker-inner .ht-item .ht-price{font-family:var(--mono);font-weight:700;color:var(--text)}
.hdr-ticker-inner .ht-item .ht-dot{color:var(--rule2);font-size:.5rem}
@keyframes hdrTickScroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}

/* 헤더 뉴스 티커 (로고 옆) */
.hdr-news{flex:1;display:flex;align-items:center;overflow:hidden;padding:0 16px;gap:6px}
.hdr-news-track{flex:1}
.hdr-news-track::before{left:0;background:linear-gradient(90deg,var(--bg1),transparent)}
.hdr-news-track::after{right:0;background:linear-gradient(270deg,var(--bg1),transparent)}
.hdr-ctrl{background:transparent;border:none;color:var(--text3);font-size:.82rem;cursor:pointer;padding:4px 6px;border-radius:4px;transition:all .15s;flex-shrink:0}
.hdr-ctrl:hover{color:var(--text);background:rgba(255,255,255,.08)}
@keyframes bell-shake{0%,100%{transform:rotate(0)}15%{transform:rotate(14deg)}30%{transform:rotate(-12deg)}45%{transform:rotate(8deg)}60%{transform:rotate(-6deg)}75%{transform:rotate(3deg)}}
.bell-ring{animation:bell-shake .6s ease;display:inline-block}
@keyframes ai-infra-pulse{0%,100%{box-shadow:0 0 10px rgba(212,150,10,.08)}50%{box-shadow:0 0 24px rgba(212,150,10,.2)}}
.hdr-divider{width:1px;height:20px;background:var(--rule);flex-shrink:0}

/* 티커 (경제지표 — 하단 뉴스띠로 이동) */
.ticker{flex:1;display:flex;align-items:center;padding:0 22px;gap:12px;overflow:hidden}
.tick-stage{flex:1;overflow:hidden;position:relative;display:flex;align-items:center;transition:opacity .15s ease}
.tick{display:flex;align-items:baseline;gap:14px;width:100%;transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .25s}
.tick.out{transform:translateY(-100%);opacity:0}
.tick.in{transform:translateY(100%);opacity:0;transition:none}
.tick.show{transform:translateY(0);opacity:1}
.tk-r{font-family:var(--mono);font-size:.75rem;font-weight:600;color:var(--text);letter-spacing:1.2px;text-transform:uppercase;flex-shrink:0}
.tk-t{font-size:.82rem;color:var(--text2);flex-shrink:0}
.tk-v{font-family:var(--mono);font-size:1.1rem;font-weight:700;line-height:1;letter-spacing:-.5px;flex-shrink:0}
.tk-c{font-family:var(--mono);font-size:.8rem;font-weight:600;flex-shrink:0}
.tk-c.up{color:var(--red2)}.tk-c.dn{color:var(--blue2)}.tk-c.nt{color:var(--text3)}
.tk-prog{width:2px;height:32px;background:var(--rule2);flex-shrink:0;overflow:hidden}
.tk-pf{width:100%;height:0%;background:var(--blue)}
.tk-date{font-family:var(--mono);font-size:.7rem;color:var(--text2);white-space:nowrap;flex-shrink:0}
.tk-tabs{display:flex;gap:2px;flex-shrink:0;align-items:center}
.tk-tab{padding:4px 8px 6px;font-family:var(--sans);font-size:.68rem;font-weight:600;color:var(--text3);background:transparent;border:none;border-bottom:2px solid transparent;border-radius:0;cursor:pointer;transition:all .15s;line-height:1;display:flex;align-items:center;gap:3px;white-space:nowrap}
.tk-tab:hover{color:var(--text2)}
.tk-tab.on{color:#fff;border-bottom-color:var(--blue)}
.tk-ico{font-size:.72rem}
.tk-short{display:none}
.tk-full{display:inline}
.tk-hot{display:inline-block;padding:1px 4px;font-size:.58rem;font-weight:700;color:#fff;background:#e74c3c;border-radius:2px;margin-left:3px;vertical-align:middle}
.mhd-right{display:flex;align-items:center;gap:10px;border-left:1px solid var(--rule);padding-left:16px;flex-shrink:0;min-width:fit-content}
.live-w{display:flex;align-items:center;gap:5px;font-family:var(--mono);font-size:.7rem;font-weight:600;color:var(--blue2);letter-spacing:1px}
.live-d{width:6px;height:6px;border-radius:50%;background:var(--blue2);position:relative}
.live-d::after{content:'';position:absolute;inset:-3px;border-radius:50%;border:1px solid var(--blue2);opacity:.5;animation:liveping 1.6s ease-out infinite}
@keyframes liveping{0%{transform:scale(1);opacity:.5}100%{transform:scale(2.2);opacity:0}}
.btn-comm{padding:6px 14px;background:transparent;color:var(--text2);font-family:var(--sans);font-size:.8rem;font-weight:600;border:1px solid var(--rule2);cursor:pointer;text-decoration:none;display:flex;align-items:center;gap:4px;transition:all .15s}
.btn-comm:hover{border-color:var(--text2);color:var(--text)}

/* 뉴스 띠 */
.news{background:var(--bg2);border-bottom:1px solid var(--rule);height:36px;display:flex;align-items:center;overflow:hidden}
.news-lbl{font-family:var(--mono);font-size:.7rem;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:#fff;background:var(--blue);padding:0 14px;white-space:nowrap;height:100%;display:flex;align-items:center;flex-shrink:0}
.news-track{flex:1;overflow:hidden;position:relative}
.news-track::before,.news-track::after{content:'';position:absolute;top:0;bottom:0;width:28px;z-index:1;pointer-events:none}
.news-track::before{left:0;background:linear-gradient(90deg,var(--bg2),transparent)}
.news-track::after{right:0;background:linear-gradient(270deg,var(--bg2),transparent)}
.news-inner{display:inline-flex;gap:0;white-space:nowrap;animation:nscroll 25s linear infinite;will-change:transform}
/* hover pause handled by JS */
.ni{display:inline-flex;align-items:center;gap:7px;padding:0 22px;font-size:.85rem;color:var(--text2);border-right:1px solid var(--rule);cursor:pointer;transition:color .15s;text-decoration:none}
.ni:hover{color:#fff}
.nd{width:3px;height:3px;border-radius:50%;background:var(--blue);flex-shrink:0}
.ni.hot{color:var(--text)}.ni.hot .nd{background:var(--red2);animation:hblink .8s infinite}
.ni-hit{display:inline-block;padding:1px 5px;font-family:var(--mono);font-size:.6rem;font-weight:700;color:#fff;background:var(--red);border-radius:3px;margin-right:4px;letter-spacing:.5px;line-height:1.4}
.ni-meta{margin-left:6px;font-size:.68rem;color:var(--text2);opacity:.7;font-weight:500}
@keyframes hblink{0%,100%{opacity:1}50%{opacity:.2}}
@keyframes nscroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
.news-time{font-family:var(--mono);font-size:.68rem;color:var(--text3);white-space:nowrap;padding:0;flex-shrink:0;display:flex;align-items:center;gap:4px}
.ns-btn{background:none;border:none;color:var(--text3);font-size:.72rem;cursor:pointer;padding:3px 5px;border-radius:4px;opacity:.5;transition:all .2s}
.ns-btn:hover{opacity:1;background:rgba(255,255,255,.08)}
.ns-btn.active{opacity:1;color:var(--blue)}
.news-time::before{content:'';width:4px;height:4px;border-radius:50%;background:var(--green);flex-shrink:0}
.ticker-tab{font-family:var(--mono);font-size:.68rem;font-weight:700;letter-spacing:.5px;color:var(--text3);background:transparent;border:none;padding:0 12px;height:100%;cursor:pointer;white-space:nowrap;transition:all .15s;border-bottom:2px solid transparent}
.ticker-tab.active{color:#fff;background:var(--blue);border-bottom-color:var(--blue)}
.ticker-tab:hover:not(.active){color:var(--text);background:rgba(255,255,255,.06)}

/* 지도 */
#map-container{width:100%;position:relative!important;background:var(--bg);border:1px solid var(--rule);overflow:hidden!important}
#map-container svg{pointer-events:none}
#p-map.on #map-container svg{pointer-events:auto}
.kakao-ctrl{position:absolute;z-index:10;background:rgba(13,16,24,.85);backdrop-filter:blur(8px);border:1px solid #2A3040;border-radius:6px;display:flex;gap:0}
.kakao-ctrl button,.kakao-ctrl select{background:transparent;border:none;color:#5B9FF4;font-size:.7rem;font-weight:600;padding:6px 10px;cursor:pointer;white-space:nowrap;font-family:var(--sans)}
.kakao-ctrl button:hover{background:rgba(59,127,212,.15)}
.kakao-ctrl button.on{background:rgba(59,127,212,.25);color:#fff}
.kakao-popup{background:var(--bg1);color:var(--text);border:1px solid var(--rule2);border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.6);padding:12px 16px;font-family:var(--sans);font-size:.82rem;line-height:1.5;position:relative;min-width:180px}
/* 지도 가격 버블 (호갱노노 스타일 카드) */
.map-bubble{width:64px;height:40px;background:#fff;border-radius:12px;box-shadow:0 3px 10px rgba(0,0,0,.35);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;font-family:var(--sans);text-align:center;line-height:1.1;border:2px solid transparent;transition:transform .12s}
.map-bubble:hover{transform:scale(1.08)}
.map-bubble .mb-nm{font-size:11px;font-weight:800;color:#0f172a}
.map-bubble .mb-pr{font-size:11px;font-weight:700;margin-top:1px}
.map-bubble.lvl-0{border-color:#2563EB}.map-bubble.lvl-0 .mb-pr{color:#2563EB}
.map-bubble.lvl-1{border-color:#60A5FA}.map-bubble.lvl-1 .mb-pr{color:#2563EB}
.map-bubble.lvl-2{border-color:#FBBF24}.map-bubble.lvl-2 .mb-pr{color:#B45309}
.map-bubble.lvl-3{border-color:#F87171}.map-bubble.lvl-3 .mb-pr{color:#DC2626}
.map-bubble.lvl-4{border-color:#DC2626;background:#FEF2F2}.map-bubble.lvl-4 .mb-pr{color:#B91C1C}
/* 단지 핀 (말풍선) */
.apt-pin{position:relative;background:#fff;border:1.5px solid #cbd5e1;border-radius:10px;padding:4px 8px 5px;cursor:pointer;box-shadow:0 3px 10px rgba(0,0,0,.35);white-space:nowrap;font-family:var(--sans);transition:all .12s}
.apt-pin:hover{transform:translateY(-2px)}
.apt-pin .ap-nm{font-size:10px;font-weight:700;color:#0f172a;max-width:88px;overflow:hidden;text-overflow:ellipsis}
.apt-pin .ap-pr{font-size:11px;font-weight:800;color:#DC2626;margin-top:1px}
.apt-pin::after{content:'';position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;filter:drop-shadow(0 1px 1px rgba(0,0,0,.2))}
.apt-pin.on{background:#1D4ED8;border-color:#1D4ED8}
.apt-pin.on .ap-nm,.apt-pin.on .ap-pr{color:#fff}
.apt-pin.on::after{border-top-color:#1D4ED8}
/* 지도 핀 모드 배지 — 실거주 vs 투자자 */
.apt-pin .ap-school,.apt-pin .ap-gap,.apt-pin .ap-yield{display:none;font-size:9px;font-weight:700;margin-top:2px;padding:1px 4px;border-radius:4px;line-height:1.2}
.apt-pin .ap-school{color:#047857;background:rgba(16,185,129,.12);border:1px solid rgba(16,185,129,.35)}
.apt-pin .ap-gap{color:#1D4ED8;background:rgba(59,127,212,.12);border:1px solid rgba(59,127,212,.35)}
.apt-pin .ap-yield{color:#B45309;background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.35)}
body[data-user-mode="home"] .apt-pin .ap-school{display:block}
body[data-user-mode="investor"] .apt-pin .ap-gap,body[data-user-mode="investor"] .apt-pin .ap-yield{display:block}
.kakao-popup b{color:var(--blue2);font-size:.9rem}
.kakao-popup .pop-close{position:absolute;top:4px;right:8px;background:none;border:none;color:var(--text3);font-size:1rem;cursor:pointer}
.map-layer-ctrl{display:none}
.map-layer-btn{padding:7px 14px;font-family:var(--mono);font-size:.75rem;font-weight:600;color:var(--text2);background:rgba(13,16,24,.9);border:1px solid var(--rule2);cursor:pointer;transition:all .15s;backdrop-filter:blur(8px);white-space:nowrap}
.map-layer-btn:hover{border-color:var(--text2);color:var(--text)}
.map-layer-btn.on{color:var(--blue);border-color:var(--blue);background:rgba(59,127,212,.15)}
.map-fchip{background:#1C2230;border:1px solid #2A3040;color:#7A8DA3;border-radius:20px;padding:6px 14px;font-size:.75rem;font-family:var(--sans);cursor:pointer;white-space:nowrap;transition:all .15s;flex-shrink:0}
.map-fchip:hover{border-color:#3B7FD4;color:#b0c4de}
.map-fchip.on{background:#3B7FD4;border-color:#3B7FD4;color:#fff}
#mapFilterBar::-webkit-scrollbar{display:none}
.map-age-btn{padding:4px 8px;font-size:.62rem;font-weight:600;color:#5B9FF4;background:rgba(0,0,0,.7);border:1px solid rgba(91,159,244,.2);border-radius:4px;cursor:pointer;transition:all .12s;font-family:var(--sans)}
.map-age-btn.on{background:#3B7FD4;color:#fff;border-color:#3B7FD4}
.map-lyr-toggle{background:#1C2230;border:1px solid #2A3040;color:#7A8DA3;border-radius:20px;padding:6px 14px;font-size:.75rem;font-family:var(--sans);cursor:pointer;white-space:nowrap;transition:all .15s}
.map-lyr-toggle:hover{border-color:#3B7FD4;color:#b0c4de}
.map-lyr-toggle.on{border-color:#3B7FD4;color:#fff;background:rgba(59,127,212,.15)}
.sel-sm{padding:7px 10px;background:var(--bg);border:1px solid var(--rule);border-radius:6px;color:var(--text);font-size:.8rem;font-family:var(--sans)}
.dr-thumb{position:absolute;top:6px;width:20px;height:20px;background:#F59E0B;border:2px solid #D97706;border-radius:50%;cursor:grab;transform:translateX(-50%);z-index:2;box-shadow:0 2px 6px rgba(245,158,11,.4);transition:box-shadow .15s}
.dr-thumb:hover,.dr-thumb:active{box-shadow:0 2px 10px rgba(245,158,11,.6);transform:translateX(-50%) scale(1.12)}
.dr-thumb:active{cursor:grabbing}
.share-toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(20px);background:#1e293b;color:#fff;padding:12px 24px;border-radius:10px;font-size:.82rem;font-weight:600;z-index:9999;opacity:0;transition:all .3s;pointer-events:none;box-shadow:0 4px 20px rgba(0,0,0,.4);border:1px solid #2A3040}
.share-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ── 문의/제안 플로팅 버튼 + 모달 ── */
.inquiry-float{position:fixed;bottom:70px;right:24px;z-index:999999;padding:10px 16px;border-radius:24px;background:#1e293b;color:#fff;border:1px solid #334155;font-size:.78rem;font-weight:600;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.4);display:flex;align-items:center;gap:5px;transition:transform .2s,box-shadow .2s;font-family:var(--sans);white-space:nowrap}
.inquiry-float:hover{transform:scale(1.05);box-shadow:0 6px 24px rgba(0,0,0,.6)}
.inquiry-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:9999999;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.inquiry-overlay.show{display:flex}
.inquiry-modal{background:var(--bg1);border:1px solid var(--rule2);border-radius:16px;padding:24px 20px;width:92%;max-width:460px;box-shadow:0 16px 48px rgba(0,0,0,.6);animation:panelIn .25s ease}
.inquiry-modal h3{font-size:1.05rem;font-weight:800;color:var(--text);margin-bottom:12px}
.inq-tabs{display:flex;border:1px solid var(--rule);border-radius:8px;overflow:hidden;margin-bottom:16px}
.inq-tab{flex:1;padding:10px 0;font-size:.78rem;font-weight:600;text-align:center;border:none;cursor:pointer;background:transparent;color:var(--text3);transition:all .15s;font-family:var(--sans)}
.inq-tab.on{background:var(--blue);color:#fff}
.inq-input{width:100%;padding:10px 12px;background:var(--bg);border:1px solid var(--rule);border-radius:8px;color:var(--text);font-size:.82rem;font-family:var(--sans);outline:none;margin-bottom:8px;box-sizing:border-box}
.inq-textarea{width:100%;min-height:100px;padding:12px;background:var(--bg);border:1px solid var(--rule);border-radius:10px;color:var(--text);font-size:.84rem;font-family:var(--sans);resize:vertical;outline:none;margin-bottom:10px;box-sizing:border-box}
.inq-cats{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.inq-cat{padding:6px 12px;background:var(--bg2);border:1px solid var(--rule2);border-radius:20px;font-size:.72rem;color:var(--text2);cursor:pointer;transition:all .15s;font-family:var(--sans)}
.inq-cat:hover{border-color:var(--blue);color:var(--text)}
.inq-cat.on{background:var(--blue);border-color:var(--blue);color:#fff}
.inq-textarea:focus,.inq-input:focus{border-color:var(--blue)}
.inq-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:4px}
.inq-btn{padding:10px 20px;border:none;border-radius:8px;font-size:.84rem;font-weight:600;cursor:pointer;font-family:var(--sans);transition:opacity .15s}
.inq-btn-cancel{background:var(--bg2);color:var(--text2)}
.inq-btn-submit{background:var(--blue);color:#fff}
.inq-btn:disabled{opacity:.5;cursor:not-allowed}
.share-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 14px;background:rgba(59,127,212,.12);border:1px solid rgba(59,127,212,.3);color:#5B9FF4;border-radius:8px;font-size:.72rem;font-weight:600;cursor:pointer;font-family:var(--sans);transition:all .15s}
.share-btn:hover{background:rgba(59,127,212,.2);border-color:#3B7FD4}
.share-kakao{background:rgba(254,229,0,.12);border-color:rgba(254,229,0,.3);color:#3C1E1E}
.share-kakao:hover{background:rgba(254,229,0,.25)}
.dr-preset{padding:6px 14px;background:transparent;border:1px solid #F59E0B;color:#F59E0B;border-radius:8px;font-size:.80rem;font-weight:600;cursor:pointer;font-family:var(--sans);transition:all .15s}
.dr-preset:hover{background:rgba(245,158,11,.12)}
.dr-preset.on{background:#F59E0B;color:#000;border-color:#F59E0B;box-shadow:0 2px 8px rgba(245,158,11,.3)}
.apt-dual-range{position:relative;height:28px;margin:4px 6px}
.apt-dual-range .apt-dual-track{position:absolute;top:50%;left:0;right:0;height:6px;transform:translateY(-50%);background:var(--rule);border-radius:3px;pointer-events:none}
.apt-dual-range input[type=range]{position:absolute;top:0;left:0;width:100%;height:28px;-webkit-appearance:none;appearance:none;background:transparent;outline:none;pointer-events:none;margin:0}
.apt-dual-range input[type=range]::-webkit-slider-runnable-track{background:transparent;height:28px;border:none}
.apt-dual-range input[type=range]::-moz-range-track{background:transparent;height:28px;border:none}
.apt-dual-range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:var(--blue);cursor:pointer;border:2px solid var(--bg);pointer-events:auto;position:relative;z-index:2;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.apt-dual-range input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--blue);cursor:pointer;border:2px solid var(--bg);pointer-events:auto;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.apt-rate-up{background:rgba(255,51,68,.15)!important;color:#FF3344!important}
.apt-rate-down{background:rgba(59,127,212,.15)!important;color:#3B7FD4!important}
.apt-rate-flat{background:var(--bg3)!important;color:var(--text3)!important}
.tl-dong-hdr{padding:10px 12px;background:var(--bg2);border:1px solid var(--rule);border-radius:8px;margin-bottom:6px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-size:.8rem;font-weight:700;color:var(--text)}
.tl-dong-hdr:hover{background:var(--bg3)}
.tl-dong-body{display:none;padding:0 4px 8px}
.tl-dong-body.open{display:block}
.tl-card{background:var(--bg1);border:1px solid var(--rule);border-radius:10px;padding:14px 16px;margin-bottom:8px;transition:border-color .2s;font-size:.90rem}
.tl-card:hover{border-color:var(--blue)}
.tl-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;gap:6px}
.tl-card-nm{font-size:.96rem;font-weight:800;color:var(--text)}
.tl-card-floor{font-size:.62rem;padding:2px 6px;border-radius:4px;background:var(--bg3);color:var(--text2);font-weight:600}
.tl-badge-new{background:rgba(255,51,68,.15);color:#FF3344;font-size:.6rem;padding:2px 6px;border-radius:4px;font-weight:700}
.tl-badge-sus{font-size:.6rem;padding:2px 6px;border-radius:4px;font-weight:700;cursor:pointer}
.tl-badge-down{background:rgba(255,165,0,.15);color:#FFA500}
.tl-badge-up{background:rgba(239,68,68,.15);color:#EF4444}
.tl-badge-dup{background:rgba(139,92,246,.15);color:#8B5CF6}
.tl-kpi-row{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.tl-kpi{flex:1;min-width:90px;background:var(--bg2);border:1px solid var(--rule);border-radius:10px;padding:12px 10px;text-align:center}
.tl-kpi-val{font-size:1.1rem;font-weight:800;color:var(--text);font-family:var(--mono)}
.tl-kpi-label{font-size:.62rem;color:var(--text3);margin-top:2px}
.tl-card-meta{font-size:.80rem;color:var(--text3);line-height:1.6}
.tl-card-price-row{display:flex;align-items:baseline;gap:8px;margin:6px 0}
.tl-card-price{font-size:1.13rem;font-weight:800;color:#F59E0B}
.tl-card-diff{font-size:.72rem}
.tl-card-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding-top:8px;border-top:1px solid var(--rule)}
.tl-card-bottom-left{font-size:.7rem;color:var(--text3)}
.tl-card-goto{font-size:.68rem;color:var(--blue);cursor:pointer;font-weight:600;white-space:nowrap;padding:3px 8px;border:1px solid var(--blue);border-radius:6px;background:transparent;transition:background .2s}
.tl-card-goto:hover{background:rgba(59,127,212,.1)}
.tl-dong-avg{font-size:.72rem;color:var(--text2);font-weight:400;margin-left:auto;margin-right:8px}
.tl-gap-box{margin-top:8px;padding:10px;background:var(--bg);border-radius:8px;border:1px solid var(--rule);font-size:.74rem}
.tl-gap-row{display:flex;justify-content:space-between;padding:2px 0;color:var(--text3)}
.tl-gap-total{border-top:1px solid var(--rule);padding-top:6px;margin-top:4px;font-weight:700;color:var(--text);font-size:.82rem}
#s2AptDd .s2-apt-opt{padding:8px 12px;font-size:.8rem;color:var(--text2);cursor:pointer;border-bottom:1px solid #1a1f2e}
#s2AptDd .s2-apt-opt:hover,#s2AptDd .s2-apt-opt.focused{background:rgba(59,127,212,.12);color:var(--text)}
.map-legend{position:absolute;bottom:14px;left:14px;z-index:1000;background:rgba(13,16,24,.92);border:1px solid var(--rule2);padding:10px 14px;backdrop-filter:blur(8px);font-size:.72rem;color:var(--text2)}
.map-legend-title{font-weight:700;color:var(--text);margin-bottom:6px;font-size:.75rem}
.map-legend-item{display:flex;align-items:center;gap:7px;margin-bottom:3px}
.map-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.pop-tag{display:inline-block;padding:1px 6px;font-size:.65rem;font-weight:700;border-radius:3px;margin-right:4px}

/* NAV */
.nav{background:var(--bg1);border-bottom:1px solid var(--rule);position:sticky;top:0;z-index:100}
.nav-i{max-width:1800px;margin:0;display:flex;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;padding:0 24px}
.nav-i::-webkit-scrollbar{display:none}
.nt{padding:0 10px;height:44px;min-height:44px;display:flex;align-items:center;gap:4px;font-family:var(--sans);font-size:.85rem;font-weight:600;color:var(--text2);background:none;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:color .12s,border-color .12s}
.nt:hover{color:var(--text)}.nt.on{color:#fff;border-bottom-color:var(--blue)}
.pill{font-size:.65rem;font-weight:700;padding:1px 5px;letter-spacing:.4px;text-transform:uppercase}
.pfree{background:rgba(29,184,106,.1);color:var(--green);border:1px solid rgba(29,184,106,.2)}
.ppro{background:rgba(212,150,10,.1);color:var(--amber);border:1px solid rgba(212,150,10,.2)}

/* PAGE */
.page{max-width:1540px;margin:0 auto;padding:0 24px 60px}
@media(min-width:769px){
  .page{max-width:1800px}
  #type-apt{max-width:1800px!important}
}

/* 지역탭 */
.rtabs{display:flex;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--rule);margin-bottom:18px}
.rtabs::-webkit-scrollbar{display:none}
.rtab{padding:9px 16px;font-family:var(--mono);font-size:.8rem;font-weight:500;color:var(--text2);background:none;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:all .12s}
.rtab:hover{color:var(--text)}.rtab.on{color:var(--blue2);border-bottom-color:var(--blue);font-weight:600}

/* KPI */
.kpi-band{display:grid;grid-template-columns:repeat(4,1fr);background:var(--rule);gap:1px;margin-bottom:18px}
.kc{background:var(--bg1);padding:20px 22px;position:relative;overflow:hidden;transition:background .15s;cursor:default}
.kc:hover{background:var(--bg2)}
.kc-region{font-family:var(--mono);font-size:.72rem;font-weight:600;color:var(--text3);letter-spacing:1px;text-transform:uppercase;margin-bottom:6px}
.kc-num{font-family:var(--mono);font-size:3.4rem;font-weight:600;line-height:.9;letter-spacing:-2px;color:var(--text);margin-bottom:7px}
.kc-chg{font-family:var(--mono);font-size:.82rem;font-weight:600}
.kc-up{color:var(--red2)}.kc-dn{color:var(--blue2)}.kc-nt{color:var(--text3)}
.kc-bar{height:1px;background:var(--rule2);margin-top:10px}
.kc-bar-fill{height:100%;transition:width 1.1s cubic-bezier(.4,0,.2,1)}

/* 섹션 헤더 */
.sh{padding:26px 0 14px;border-bottom:1px solid var(--rule2);margin-bottom:18px;display:flex;align-items:baseline;gap:14px}
.sh-title{font-family:var(--serif);font-size:1.68rem;font-weight:900;color:var(--text)}
.sh-sub{font-family:var(--mono);font-size:.86rem;color:var(--text3)}
.sh-right{margin-left:auto;font-family:var(--mono);font-size:.72rem;color:var(--text3)}

/* 블록 */
.blk{background:var(--bg1);border:1px solid var(--rule);padding:20px;margin-bottom:16px;transition:border-color .2s}
.blk:hover{border-color:var(--rule2)}
.bt{font-family:var(--mono);font-size:.80rem;font-weight:600;color:var(--text3);letter-spacing:.9px;text-transform:uppercase;padding-bottom:12px;border-bottom:1px solid var(--rule);margin-bottom:14px;display:flex;align-items:center;gap:7px}
.bl{width:12px;height:2px;background:var(--blue);flex-shrink:0}

/* 그리드 */
.g2{display:grid;grid-template-columns:1fr 1fr;gap:16px}

/* 차트 */
.ch{position:relative}
.h380{height:380px}.h300{height:300px}.h260{height:260px}
.cn{font-family:var(--mono);font-size:.68rem;color:var(--text3);text-align:right;margin-top:6px}

/* 컨트롤 */
.ctrl{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-bottom:14px}
.cg{display:flex;flex-direction:column;gap:4px}
.cl{font-family:var(--mono);font-size:.68rem;font-weight:600;color:var(--text3);letter-spacing:.8px;text-transform:uppercase}
.seg{display:flex;border:1px solid var(--rule2)}
.sb{padding:6px 14px;font-family:var(--mono);font-size:.74rem;font-weight:500;color:var(--text2);background:transparent;border:none;border-right:1px solid var(--rule2);cursor:pointer;transition:all .12s;white-space:nowrap}
.sb:last-child{border-right:none}.sb:hover{background:var(--bg3);color:var(--text)}.sb.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.si-w{position:relative}
.si{width:210px;padding:7px 11px;background:var(--bg2);border:1px solid var(--rule2);font-family:var(--mono);font-size:.74rem;color:var(--text);outline:none;transition:border-color .15s}
.si:focus{border-color:var(--blue)}.si::placeholder{color:var(--text3)}
.sd{position:absolute;top:calc(100% + 2px);left:0;width:260px;background:var(--bg2);border:1px solid var(--rule2);max-height:230px;overflow-y:auto;z-index:300;box-shadow:0 8px 28px rgba(0,0,0,.5);display:none}
.sd.open{display:block}.sdi{padding:8px 12px;font-family:var(--mono);font-size:.73rem;color:var(--text3);cursor:pointer;border-bottom:1px solid var(--rule);transition:all .1s}.sdi:hover{background:var(--bg3);color:var(--text)}
.tr{display:flex;flex-wrap:wrap;gap:4px;min-height:20px;margin-bottom:10px}
.dtag{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;font-family:var(--mono);font-size:.68rem;font-weight:600;border:1px solid;cursor:pointer;transition:opacity .12s}.dtag:hover{opacity:.55}

/* 신호등 */
.stbl{width:100%;border-collapse:collapse}
.stbl tr{border-bottom:1px solid var(--rule)}.stbl tr:last-child{border-bottom:none}
.stbl td{padding:10px 0}
.sn{font-family:var(--sans);font-size:.76rem;font-weight:600;color:var(--text2);white-space:nowrap;min-width:70px}
.sb-td{padding:10px 12px;width:100%}
.st-track{height:3px;background:var(--rule2)}
.st-fill{height:100%;transition:width .9s ease}
.sg .st-fill{background:var(--green)}.sy .st-fill{background:var(--amber)}.sr .st-fill{background:var(--red2)}
.sv{font-family:var(--mono);font-size:1.4rem;font-weight:600;letter-spacing:-1px;text-align:right;width:68px}
.sg .sv{color:var(--green)}.sy .sv{color:var(--amber)}.sr .sv{color:var(--red2)}
.stag{font-family:var(--mono);font-size:.62rem;font-weight:600;letter-spacing:.5px;width:58px;text-align:right}
.sg .stag{color:var(--green)}.sy .stag{color:var(--amber)}.sr .stag{color:var(--red2)}

/* 사이클 */
.cyc{display:flex;border:1px solid var(--rule2);margin:12px 0 8px;overflow:hidden}
.cs{flex:1;text-align:center;padding:12px 4px 9px;font-family:var(--sans);font-size:.78rem;font-weight:500;color:var(--text3);border-right:1px solid var(--rule2);transition:all .2s}
.cs:last-child{border-right:none}
.css{display:block;font-family:var(--mono);font-size:.58rem;color:var(--text3);margin-top:2px}
.cs.active{background:var(--blue);color:#fff;font-weight:800}.cs.active .css{color:rgba(255,255,255,.6)}
.cn-note{font-family:var(--mono);font-size:.74rem;color:var(--text2);padding:11px 14px;border-left:2px solid var(--blue);background:rgba(59,127,212,.06);margin-top:14px;line-height:1.7}

/* 중요도 */
.ir{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--rule)}.ir:last-child{border-bottom:none}
.irn{font-family:var(--mono);font-size:1.4rem;font-weight:600;color:var(--rule2);width:38px;flex-shrink:0;line-height:1}
.ird{width:6px;height:6px;flex-shrink:0}
.irt{flex:1}.irname{font-size:.88rem;font-weight:700;color:var(--text);margin-bottom:2px}.irdesc{font-family:var(--mono);font-size:.68rem;color:var(--text3)}
.irv{font-family:var(--mono);font-size:.84rem;font-weight:600;flex-shrink:0;text-align:right}

/* 공급바 */
.spr{display:flex;align-items:center;gap:11px;padding:7px 0;border-bottom:1px solid var(--rule)}.spr:last-child{border-bottom:none}
.spy{font-family:var(--mono);font-size:1.25rem;font-weight:600;color:var(--text3);width:48px;flex-shrink:0;letter-spacing:-.5px}
.spt{flex:1;height:20px;background:var(--bg3);overflow:hidden}
.spf{height:100%;display:flex;align-items:center;padding:0 8px;transition:width 1.1s cubic-bezier(.4,0,.2,1)}
.spfc{background:var(--blue)}.spfe{background:var(--text3);opacity:.45}
.spv{font-family:var(--mono);font-size:.66rem;font-weight:600;color:#fff;white-space:nowrap}
.spa{font-family:var(--mono);font-size:.65rem;color:var(--red2);font-weight:700;width:20px;flex-shrink:0}

/* 압력 카드 */
.prs{display:grid;grid-template-columns:repeat(3,1fr);background:var(--rule);gap:1px;margin-bottom:16px}
.pc{background:var(--bg1);padding:18px 20px;position:relative}
.pc::before{content:'';position:absolute;top:0;left:0;right:0;height:2px}
.pc-crit::before{background:var(--red2)}.pc-high::before{background:var(--amber)}.pc-mid::before{background:var(--blue)}.pc-low::before{background:var(--green)}
.pc-l{font-family:var(--mono);font-size:.62rem;font-weight:600;letter-spacing:.9px;text-transform:uppercase;color:var(--text3);margin-bottom:6px}
.pc-n{font-family:var(--mono);font-size:2.8rem;font-weight:600;line-height:.9;letter-spacing:-.5px;margin-bottom:5px}
.pc-crit .pc-n{color:var(--red2)}.pc-high .pc-n{color:var(--amber)}.pc-mid .pc-n{color:var(--blue2)}.pc-low .pc-n{color:var(--green)}
.pc-s{font-family:var(--mono);font-size:.74rem;font-weight:600}
.pc-crit .pc-s{color:var(--red2)}.pc-high .pc-s{color:var(--amber)}.pc-mid .pc-s{color:var(--blue2)}.pc-low .pc-s{color:var(--green)}

/* 월별 테이블 */
.mt{width:100%;border-collapse:collapse}
.mt th{font-family:var(--mono);font-size:.62rem;font-weight:600;color:var(--text3);letter-spacing:.6px;text-transform:uppercase;padding:8px 11px;background:var(--bg2);border-bottom:1px solid var(--rule2);text-align:right}
.mt th:first-child{text-align:left}
.mt td{padding:8px 11px;border-bottom:1px solid var(--rule);font-family:var(--mono);font-size:.78rem;color:var(--text3);text-align:right}
.mt td:first-child{text-align:left;font-weight:600;color:var(--text2)}
.mt tr:hover td{background:var(--bg2)}.mt .hr td{color:var(--red2);font-weight:700}

/* 의견 */
.oi{padding:18px 16px;border:1px solid var(--rule);border-radius:10px;margin-bottom:10px;background:var(--bg1);transition:border-color .15s}.oi:hover{border-color:var(--rule2)}
.oh{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.oav{width:36px;height:36px;background:var(--bg3);border:1px solid var(--rule2);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:.95rem;flex-shrink:0}
.oname{font-size:.9rem;font-weight:800;color:var(--text)}.ometa{font-family:var(--mono);font-size:.65rem;color:var(--text3);margin-top:1px}
.ork{margin-left:auto;font-family:var(--mono);font-size:.58rem;font-weight:700;padding:2px 6px;background:rgba(212,150,10,.1);color:var(--amber);border:1px solid rgba(212,150,10,.2)}
.otitle{font-size:.9rem;font-weight:700;margin-bottom:5px;color:var(--text)}.obody{font-size:.84rem;color:var(--text2);line-height:1.72}
.of{display:flex;align-items:center;gap:9px;margin-top:10px;padding-top:10px;border-top:1px solid var(--rule)}
.lb{display:flex;align-items:center;gap:4px;padding:4px 10px;font-family:var(--mono);font-size:.7rem;background:transparent;border:1px solid var(--rule2);cursor:pointer;color:var(--text3);transition:all .12s}
.lb:hover{border-color:var(--text2);color:var(--text2)}.lb.liked{background:rgba(59,127,212,.1);border-color:var(--blue);color:var(--blue2)}
.odate{margin-left:auto;font-family:var(--mono);font-size:.62rem;color:var(--text3)}

/* 투표 */
.vi{padding:15px 0;border-bottom:1px solid var(--rule)}.vi:last-child{border-bottom:none}
.vq{font-size:.9rem;font-weight:700;color:var(--text);margin-bottom:10px}
.vbs{display:flex;border:1px solid var(--rule2);margin-bottom:8px}
.vb{flex:1;padding:8px;font-family:var(--mono);font-size:.78rem;font-weight:600;background:transparent;border:none;border-right:1px solid var(--rule2);color:var(--text3);cursor:pointer;transition:all .12s}
.vb:last-child{border-right:none}.vb:hover{background:var(--bg3);color:var(--text2)}
.vby{background:rgba(232,25,44,.1);color:var(--red2)}.vbn{background:rgba(91,159,244,.1);color:var(--blue2)}
.vtr{height:3px;background:var(--rule2);display:flex;margin-bottom:5px}
.vty{background:var(--red2);transition:width .5s}.vtn{background:var(--blue2);transition:width .5s}
.vst{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.7rem;font-weight:600}
.vsy{color:var(--red2)}.vsn{color:var(--blue2)}.vstot{color:var(--text3)}

/* 페이월 */
.pw-w{position:relative}
.pw-b{filter:blur(3px);pointer-events:none;user-select:none}
.pw-g{position:absolute;inset:0;background:linear-gradient(to bottom,transparent,rgba(8,10,15,.6) 25%,rgba(8,10,15,.97) 52%);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:24px}
.pw-box{background:var(--bg1);border:1px solid var(--rule2);border-top:2px solid var(--blue);padding:24px;text-align:center;width:100%;max-width:420px}
.pw-e{font-family:var(--mono);font-size:.62rem;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--blue2);margin-bottom:7px}
.pw-h{font-family:var(--serif);font-size:1.3rem;font-weight:900;color:var(--text);margin-bottom:7px}
.pw-d{font-size:.84rem;color:var(--text2);line-height:1.7;margin-bottom:16px}
.pw-cta{display:block;width:100%;padding:11px;background:var(--blue);color:#fff;font-family:var(--sans);font-size:.88rem;font-weight:800;border:none;cursor:pointer;transition:background .15s}.pw-cta:hover{background:var(--blue2)}
.pw-p{font-family:var(--mono);font-size:.65rem;color:var(--text3);margin-top:7px}
.pw-demo{width:100%;padding:8px;margin-top:7px;background:transparent;border:1px solid var(--rule2);font-family:var(--sans);font-size:.82rem;font-weight:600;color:var(--text3);cursor:pointer;transition:all .15s}.pw-demo:hover{border-color:var(--text2);color:var(--text2)}

/* AI */
.ai-i{padding:13px 16px;background:var(--bg2);border:1px solid var(--rule2);border-left:2px solid var(--blue);margin-bottom:12px}
.ai-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.ai-chip{padding:5px 12px;font-family:var(--mono);font-size:.72rem;background:transparent;border:1px solid var(--rule2);color:var(--text3);cursor:pointer;transition:all .12s;white-space:nowrap}.ai-chip:hover{border-color:var(--blue);color:var(--blue2)}
.chat-box{border:1px solid var(--rule);background:var(--bg1);display:flex;flex-direction:column;height:460px}
.chat-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;scroll-behavior:smooth}
.chat-msgs::-webkit-scrollbar{width:2px}.chat-msgs::-webkit-scrollbar-thumb{background:var(--rule2)}
.msg-a,.msg-u{display:flex;gap:9px;max-width:88%}.msg-u{align-self:flex-end;flex-direction:row-reverse}
.msg-av{width:28px;height:28px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:.8rem;background:var(--bg3);border:1px solid var(--rule2)}
.msg-a .msg-av{background:var(--blue);color:#fff}
.msg-bub{padding:9px 13px;font-size:.84rem;line-height:1.7}
.msg-a .msg-bub{background:var(--bg2);border:1px solid var(--rule);color:var(--text2)}
.msg-u .msg-bub{background:var(--blue);color:#fff}
.msg-t{font-family:var(--mono);font-size:.58rem;color:var(--text3);margin-top:2px}
.ci-row{border-top:1px solid var(--rule);padding:8px 10px;display:flex;gap:7px;align-items:flex-end;background:var(--bg2)}
.ci{flex:1;padding:8px 11px;background:var(--bg1);border:1px solid var(--rule2);font-family:var(--sans);font-size:.84rem;color:var(--text);outline:none;resize:none;min-height:40px;max-height:90px;line-height:1.5;transition:border-color .15s}.ci:focus{border-color:var(--blue)}
.cs-btn{width:40px;height:40px;background:var(--blue);border:none;color:#fff;cursor:pointer;font-size:.86rem;flex-shrink:0;transition:background .15s}.cs-btn:hover{background:var(--blue2)}
.typing{display:flex;gap:3px;align-items:center;padding:3px 0}
.typing span{width:4px;height:4px;border-radius:50%;background:var(--text3);animation:tb .8s infinite}
.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}
@keyframes tb{0%,100%{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}

/* 광고 배너 */
.ad-banner{position:relative;border:1px solid var(--rule2);border-radius:10px;overflow:hidden;margin:12px 0;background:linear-gradient(135deg,#0d1117 0%,#131a24 100%)}
.ad-banner .ad-label{position:absolute;top:6px;right:8px;font-family:var(--mono);font-size:.58rem;color:var(--text3);opacity:.6;letter-spacing:.5px}
.ad-slide-wrap{display:flex;align-items:center;padding:14px 18px;gap:14px;cursor:pointer;text-decoration:none;color:var(--text);transition:background .2s}
.ad-slide-wrap:hover{background:rgba(59,127,212,.08)}
.ad-slide-ico{font-size:1.6rem;flex-shrink:0}
.ad-slide-body{flex:1;min-width:0}
.ad-slide-title{font-family:var(--sans);font-size:.82rem;font-weight:700;color:var(--text);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ad-slide-desc{font-family:var(--sans);font-size:.68rem;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ad-slide-cta{flex-shrink:0;padding:5px 14px;background:var(--blue);color:#fff;font-family:var(--sans);font-size:.7rem;font-weight:600;border-radius:5px;white-space:nowrap}
.ad-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.ad-card{display:flex;align-items:center;padding:12px 14px;gap:12px;cursor:pointer;text-decoration:none;color:var(--text);border:1px solid var(--rule2);border-radius:8px;background:rgba(255,255,255,.02);transition:all .2s}
.ad-card:hover{border-color:var(--blue);background:rgba(59,127,212,.06)}
.ad-card-img{width:48px;height:48px;border-radius:6px;background:var(--rule2);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:1.4rem}
.ad-card-info{flex:1;min-width:0}
.ad-card-title{font-family:var(--sans);font-size:.78rem;font-weight:700;color:var(--text);margin-bottom:2px}
.ad-card-desc{font-family:var(--sans);font-size:.66rem;color:var(--text3)}
.ad-empty{text-align:center;padding:20px;color:var(--text3);font-family:var(--sans);font-size:.72rem;border:1px dashed var(--rule2);border-radius:8px;margin:12px 0}
@media(max-width:600px){.ad-slide-wrap{padding:10px 12px}.ad-card-grid{grid-template-columns:1fr}}

/* 커뮤니티 게시판 */
.comm-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.comm-sort-btn{padding:5px 12px;font-family:var(--sans);font-size:.72rem;font-weight:600;color:var(--text3);background:transparent;border:1px solid var(--rule2);border-radius:5px;cursor:pointer;transition:all .15s}
.comm-sort-btn.on{color:var(--blue);border-color:var(--blue);background:rgba(59,127,212,.1)}
.comm-write-btn{margin-left:auto;padding:6px 16px;font-family:var(--sans);font-size:.72rem;font-weight:700;color:#fff;background:var(--blue);border:none;border-radius:6px;cursor:pointer;transition:opacity .15s}
.comm-write-btn:hover{opacity:.85}
.comm-post{padding:14px;border:1px solid var(--rule2);border-radius:8px;margin-bottom:8px;cursor:pointer;transition:all .15s;background:rgba(255,255,255,.01)}
.comm-post:hover{border-color:var(--blue);background:rgba(59,127,212,.04)}
.comm-post-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.comm-post-av{width:28px;height:28px;border-radius:50%;background:var(--rule2);display:flex;align-items:center;justify-content:center;font-size:.8rem;flex-shrink:0}
.comm-post-author{font-family:var(--sans);font-size:.74rem;font-weight:700;color:var(--text)}
.comm-post-badge{font-size:.56rem;color:var(--blue);border:1px solid var(--blue);padding:1px 5px;border-radius:3px;margin-left:2px}
.comm-post-date{font-family:var(--mono);font-size:.62rem;color:var(--text3);margin-left:auto}
.comm-post-title{font-family:var(--sans);font-size:.82rem;font-weight:700;color:var(--text);margin-bottom:4px}
.comm-post-preview{font-family:var(--sans);font-size:.7rem;color:var(--text3);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.comm-post-foot{display:flex;align-items:center;gap:12px;margin-top:8px;font-family:var(--mono);font-size:.66rem;color:var(--text3)}
.comm-post-foot span{display:flex;align-items:center;gap:3px}
.comm-detail-body{font-family:var(--sans);font-size:.78rem;color:var(--text2);line-height:1.7;padding:16px 0;border-bottom:1px solid var(--rule)}
.comm-comments{padding-top:12px}
.comm-comment{padding:10px 0;border-bottom:1px solid var(--rule)}
.comm-comment:last-child{border-bottom:none}
.comm-comment-head{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.comm-comment-author{font-family:var(--sans);font-size:.7rem;font-weight:600;color:var(--text)}
.comm-comment-date{font-family:var(--mono);font-size:.6rem;color:var(--text3);margin-left:auto}
.comm-comment-body{font-family:var(--sans);font-size:.72rem;color:var(--text2);line-height:1.5}
.comm-comment-like{font-family:var(--mono);font-size:.62rem;color:var(--text3);cursor:pointer;margin-top:4px}
.comm-input-area{display:flex;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--rule)}
.comm-input{flex:1;padding:8px 12px;background:var(--card);border:1px solid var(--rule2);border-radius:6px;color:var(--text);font-family:var(--sans);font-size:.74rem;resize:none}
.comm-input:focus{outline:none;border-color:var(--blue)}
.comm-submit{padding:8px 16px;background:var(--blue);color:#fff;border:none;border-radius:6px;font-family:var(--sans);font-size:.72rem;font-weight:600;cursor:pointer;flex-shrink:0}
.comm-empty{text-align:center;padding:40px;color:var(--text3);font-family:var(--sans);font-size:.76rem}

/* 커뮤니티 투표 */
.cvr{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid var(--rule)}.cvr:last-child{border-bottom:none}
.cvl{font-family:var(--mono);font-size:.76rem;font-weight:600;color:var(--text3);width:84px;flex-shrink:0}
.cvt{flex:1;height:3px;background:var(--rule2)}.cvf{height:100%;background:var(--blue);transition:width .5s}
.cvp{font-family:var(--mono);font-size:1.1rem;font-weight:600;width:40px;text-align:right;flex-shrink:0}
.cvnames{font-family:var(--mono);font-size:.67rem;color:var(--text3);width:105px;flex-shrink:0}
.cvbtn{padding:3px 10px;font-family:var(--mono);font-size:.66rem;font-weight:600;background:transparent;border:1px solid var(--rule2);color:var(--text3);cursor:pointer;transition:all .12s;flex-shrink:0}.cvbtn:hover{border-color:var(--blue);color:var(--blue2)}.cvbtn.active{background:var(--blue);color:#fff;border-color:var(--blue)}
.ch-slot{display:flex;align-items:center;gap:11px;padding:13px 0;border-bottom:1px solid var(--rule)}.ch-slot:last-child{border-bottom:none}
.ch-name{font-size:.88rem;font-weight:700;color:var(--text);margin-bottom:2px}
.ch-badge{font-family:var(--mono);font-size:.58rem;font-weight:700;padding:1px 5px;border:1px solid;margin-left:5px}
.ch-desc{font-family:var(--mono);font-size:.68rem;color:var(--text3)}
.ch-btn{margin-left:auto;padding:6px 13px;font-family:var(--sans);font-size:.76rem;font-weight:700;text-decoration:none;display:flex;align-items:center;gap:4px;white-space:nowrap;flex-shrink:0;transition:all .15s}
.ch-p{background:var(--blue);color:#fff;border:none}.ch-p:hover{background:var(--blue2)}
.ch-s{background:transparent;color:var(--text3);border:1px solid var(--rule2)}.ch-s:hover{border-color:var(--text2);color:var(--text2)}

/* 홈 히어로 */
.hero{display:grid;grid-template-columns:1fr 280px;gap:0;border-bottom:1px solid var(--rule);min-height:380px}
.hero-l{padding:44px 36px 36px 0;border-right:1px solid var(--rule);display:flex;flex-direction:column;justify-content:center}
.hero-eye{font-family:var(--mono);font-size:.63rem;font-weight:600;letter-spacing:1.8px;text-transform:uppercase;color:var(--blue2);margin-bottom:16px;display:flex;align-items:center;gap:9px}
.hero-eye::before{content:'';width:16px;height:1px;background:var(--blue)}
.hero-hl{font-family:var(--serif);font-size:3.2rem;font-weight:900;color:var(--text);line-height:1.1;letter-spacing:.3px;margin-bottom:18px}
.hero-hl em{color:var(--blue2);font-style:normal}
.hero-deck{font-size:.93rem;color:var(--text);line-height:1.85;max-width:540px;margin-bottom:24px}.hero-deck strong{color:#fff;font-weight:700}
.hero-btns{display:flex;gap:9px;flex-wrap:wrap}
.hbp{padding:10px 20px;background:var(--blue);color:#fff;font-family:var(--sans);font-size:.88rem;font-weight:800;border:none;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:5px;transition:background .15s}.hbp:hover{background:var(--blue2)}
.hbs{padding:10px 20px;background:transparent;color:var(--text2);font-family:var(--sans);font-size:.88rem;font-weight:700;border:1px solid var(--rule2);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:5px;transition:all .15s}.hbs:hover{border-color:var(--text2);color:var(--text)}
.hero-r{background:var(--bg1);display:flex;flex-direction:column}
.hst{flex:1;padding:18px 20px;border-bottom:1px solid var(--rule);display:flex;flex-direction:column;justify-content:center;transition:background .15s}.hst:last-child{border-bottom:none}.hst:hover{background:var(--bg2)}
.hst-l{font-family:var(--mono);font-size:.61rem;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--text3);margin-bottom:4px}
.hst-n{font-family:var(--mono);font-size:2.4rem;font-weight:600;line-height:.9;letter-spacing:-.5px;color:var(--text)}
.hst-c{font-family:var(--mono);font-size:.74rem;font-weight:600;margin-left:8px}

/* 아파트 탭 UI */
.apt-search{display:flex;gap:8px;margin-bottom:20px}
.apt-search input{flex:1;padding:12px 16px;background:var(--bg2);border:1px solid var(--rule2);color:var(--text);font-family:var(--sans);font-size:.88rem;outline:none;transition:border-color .15s}
.apt-search input:focus{border-color:var(--blue)}
.apt-search input::placeholder{color:var(--text3)}
.apt-search button{padding:12px 24px;background:var(--blue);color:#fff;border:none;font-family:var(--sans);font-size:.88rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .15s}
.apt-search button:hover{background:#4A8FE4}
.apt-search{position:relative}
.apt-ac{display:none;position:absolute;top:100%;left:0;right:0;background:var(--bg2);border:1px solid var(--rule2);border-top:none;max-height:320px;overflow-y:auto;z-index:500}
.apt-ac-item{padding:10px 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-size:.84rem;color:var(--text);border-bottom:1px solid var(--rule)}
.apt-ac-item:hover,.apt-ac-item.focused{background:rgba(59,127,212,.12)}
.apt-ac-item .ac-nm{font-weight:600}
.apt-ac-item .ac-loc{font-size:.72rem;color:var(--text3)}
.apt-card{background:var(--bg1);border:1px solid var(--rule);padding:20px;margin-bottom:16px;transition:box-shadow .15s}
.apt-card:hover{box-shadow:0 0 0 1px var(--blue),0 4px 16px rgba(59,127,212,.12);border-color:rgba(255,255,255,.4)}
.apt-list-card{background:var(--bg1);border:1px solid var(--rule);border-radius:10px;padding:14px 16px;cursor:pointer;transition:border-color .15s}
.apt-list-card:hover{border-color:rgba(255,255,255,.4)}
.apt-cmp-btn{padding:3px 8px;background:rgba(59,127,212,.12);border:1px solid rgba(59,127,212,.3);color:var(--blue);border-radius:5px;font-size:.62rem;cursor:pointer;font-weight:600;white-space:nowrap;flex-shrink:0;transition:all .15s}
.apt-cmp-btn.on{background:rgba(245,158,11,.18);border-color:rgba(245,158,11,.5);color:#F59E0B}
#aptCmpBar{display:none;position:fixed;bottom:56px;left:0;right:0;z-index:999996;background:#141820;border-top:1px solid var(--rule);padding:10px 16px;box-shadow:0 -4px 16px rgba(0,0,0,.4)}
@media(min-width:769px){#aptCmpBar{bottom:0}}
#aptCmpTableBlk{display:none;margin-bottom:16px}
#aptCmpTableBlk table{width:100%;border-collapse:collapse;font-size:.76rem}
#aptCmpTableBlk th{padding:8px 6px;text-align:left;color:var(--text3);font-size:.68rem;border-bottom:1px solid var(--rule);white-space:nowrap}
#aptCmpTableBlk td{padding:8px 6px;border-bottom:1px solid rgba(255,255,255,.04);white-space:nowrap;font-family:var(--mono)}
#aptCmpTableBlk .cmp-best{color:#1DB86A;font-weight:700}
#aptCmpTableBlk .cmp-worst{color:#E8192C;font-weight:700}
.apt-card-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.apt-card-name{font-family:var(--sans);font-size:1.1rem;font-weight:800;color:var(--text)}
.apt-card-sub{font-family:var(--mono);font-size:.74rem;color:var(--text3)}
.apt-seg{display:flex;gap:0;border:1px solid var(--rule2);border-radius:5px;overflow:hidden}
.apt-seg button{padding:11px 20px;font-family:var(--sans);font-size:1.05rem;font-weight:600;background:transparent;color:var(--text3);border:none;cursor:pointer;transition:all .12s;border-right:1px solid var(--rule2)}
.apt-seg button:last-child{border-right:none}
.apt-seg button.on{background:var(--blue);color:#fff}
.apt-info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);margin-bottom:16px}
.apt-info-cell{background:var(--bg1);padding:14px 16px;text-align:center}
.apt-info-label{font-family:var(--mono);font-size:1rem;color:var(--text3);margin-bottom:4px}
.apt-info-val{font-family:var(--mono);font-size:1.55rem;font-weight:700;color:var(--text)}
#type-apt .bt{font-size:1.1rem}
#type-apt table td,#type-apt table th{font-size:1.05rem;padding:11px 8px}
#type-apt .blk{font-size:1rem}
.loan-calc{background:var(--bg1);border:1px solid var(--rule);padding:20px;margin-bottom:16px}
.loan-row{margin-bottom:16px}
.loan-label{display:flex;justify-content:space-between;font-family:var(--sans);font-size:.8rem;color:var(--text2);margin-bottom:6px}
.loan-label strong{color:var(--blue2);font-family:var(--mono)}
.loan-slider{width:100%;accent-color:var(--blue);cursor:pointer}
.loan-result{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);margin-top:12px}
.loan-res-cell{background:var(--bg2);padding:12px;text-align:center}
.loan-res-label{font-family:var(--mono);font-size:.66rem;color:var(--text3);margin-bottom:4px}
.loan-res-val{font-family:var(--mono);font-size:1.05rem;font-weight:700;color:var(--text)}
.ai-persona-section{background:var(--bg1);border:1px solid var(--rule);padding:20px}
.ai-persona-title{font-family:var(--sans);font-size:.88rem;font-weight:700;color:var(--blue2);margin-bottom:14px;display:flex;align-items:center;gap:6px}
.ai-persona-item{padding:12px 0;border-bottom:1px solid var(--rule)}
.ai-persona-item:last-child{border-bottom:none}
.ai-persona-name{font-family:var(--sans);font-size:.8rem;font-weight:700;color:var(--text);margin-bottom:4px}
.ai-persona-text{font-family:var(--sans);font-size:.82rem;color:var(--text2);line-height:1.5}

/* 부동산 유형 탭 */
.type-bar{background:var(--bg);border-bottom:1px solid var(--rule);padding:0 24px}
.type-bar-i{max-width:1540px;margin:0 auto;display:flex;gap:0;overflow-x:auto;scrollbar-width:none}
.type-bar-i::-webkit-scrollbar{display:none}
.type-btn{padding:10px 18px;font-family:var(--sans);font-size:.82rem;font-weight:700;color:var(--text3);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;transition:color .12s,border-color .12s}
.type-btn:hover{color:var(--text)}.type-btn.on{color:var(--blue2);border-bottom-color:var(--blue)}
.type-coming{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:320px;color:var(--text3);font-family:var(--sans);text-align:center;padding:60px 24px}
.type-coming-icon{font-size:3rem;margin-bottom:16px}
.type-coming h3{font-size:1.1rem;font-weight:800;color:var(--text2);margin:0 0 8px}
.type-coming p{font-size:.82rem;line-height:1.6;margin:0}

/* 푸터 */
.ft{border-top:1px solid var(--rule);padding:14px 24px;display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:.64rem;color:var(--text3);max-width:1540px;margin:0 auto}
.ft a{color:var(--text3);text-decoration:none}.ft a:hover{color:var(--blue2)}

/* 데이터 카테고리 탭 */
.dcat-seg{margin-bottom:12px;border:none}
.dcat-seg .sb{font-size:.78rem;padding:8px 16px}

/* 해독사 프로필 */
.inf-card{background:var(--bg1);border:1px solid var(--rule);padding:24px;margin-bottom:16px;transition:border-color .2s}
.inf-card:hover{border-color:var(--rule2)}
.inf-top{display:flex;gap:18px;align-items:flex-start;margin-bottom:16px}
.inf-photo{width:72px;height:72px;border-radius:50%;background:var(--bg3);display:flex;align-items:center;justify-content:center;font-size:2rem;flex-shrink:0;border:2px solid var(--rule2)}
.inf-info{flex:1}
.inf-name{font-size:1.1rem;font-weight:800;color:var(--text);margin-bottom:4px}
.inf-bio{font-family:var(--mono);font-size:.72rem;color:var(--text3);margin-bottom:8px}
.inf-cycle-tag{display:inline-block;font-family:var(--mono);font-size:.66rem;font-weight:600;color:var(--blue2);background:rgba(59,127,212,.1);border:1px solid rgba(59,127,212,.25);padding:2px 8px}
.inf-section{margin-top:14px;padding-top:14px;border-top:1px solid var(--rule)}
.inf-section-title{font-family:var(--mono);font-size:.65rem;font-weight:600;color:var(--text3);letter-spacing:.8px;text-transform:uppercase;margin-bottom:10px}
.inf-trade{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:.8rem}
.inf-trade-type{font-family:var(--mono);font-size:.65rem;font-weight:700;padding:2px 6px;flex-shrink:0}
.inf-trade-buy{color:var(--red2);background:rgba(232,25,44,.08);border:1px solid rgba(232,25,44,.2)}
.inf-trade-sell{color:var(--blue2);background:rgba(91,159,244,.08);border:1px solid rgba(91,159,244,.2)}
.inf-trade-item{color:var(--text2);flex:1}
.inf-trade-year{font-family:var(--mono);font-size:.68rem;color:var(--text3);flex-shrink:0}

/* 지역 호재 */
.bf-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.bf-card{background:var(--bg1);border:1px solid var(--rule);padding:22px;transition:border-color .2s}
.bf-card:hover{border-color:var(--rule2)}
.bf-name{font-family:var(--sans);font-size:1.05rem;font-weight:800;color:var(--text);margin-bottom:10px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.bf-badge{font-family:var(--mono);font-size:.6rem;font-weight:700;padding:2px 8px;letter-spacing:.5px;border:1px solid;flex-shrink:0}
.bf-badge.st-plan{color:var(--text3);border-color:var(--text3);background:rgba(58,72,88,.15)}
.bf-badge.st-feasi{color:var(--amber);border-color:var(--amber);background:rgba(212,150,10,.1)}
.bf-badge.st-start{color:var(--blue2);border-color:var(--blue2);background:rgba(91,159,244,.1)}
.bf-badge.st-build{color:#F97316;border-color:#F97316;background:rgba(249,115,22,.1)}
.bf-badge.st-done{color:var(--green);border-color:var(--green);background:rgba(29,184,106,.1)}
.bf-meta{display:flex;gap:16px;margin-bottom:10px;font-family:var(--mono);font-size:.68rem;color:var(--text3)}
.bf-meta strong{color:var(--text2)}
.bf-bar-wrap{height:4px;background:var(--rule2);margin-bottom:10px;overflow:hidden}
.bf-bar-fill{height:100%;transition:width 1s cubic-bezier(.4,0,.2,1)}
.bf-desc{font-size:.82rem;color:var(--text2);line-height:1.6;margin-bottom:10px}
.bf-news-btn{font-family:var(--mono);font-size:.66rem;color:var(--text3);background:transparent;border:1px solid var(--rule2);padding:4px 10px;cursor:pointer;transition:all .15s}
.bf-news-btn:hover{border-color:var(--text2);color:var(--text2)}

@media(max-width:960px){
  .kpi-band,.g2,.bf-grid{grid-template-columns:1fr}
  .prs{grid-template-columns:1fr}
  .hero{grid-template-columns:1fr}
  .hero-r{flex-direction:row;flex-wrap:wrap}.hst{flex:0 0 50%}
  .hero-l{padding:28px 0 20px}.hero-hl{font-size:2.4rem}
  .kc-num{font-size:2.8rem}.h380,.h300{height:240px}
  #ai-float-chat{width:calc(100vw - 48px)!important;right:24px!important;bottom:140px!important}
}
/* 신호등 배너 */
.sb-item{white-space:nowrap;letter-spacing:.3px}
.sb-sep{color:#333;font-size:11px;margin:0 2px}
.visitor-slide-wrap{height:18px;overflow:hidden;line-height:18px}
.visitor-slide-inner{display:flex;flex-direction:column;animation:slideUpV 6s infinite}
.visitor-line{height:18px;line-height:18px;white-space:nowrap;font-size:.72rem;color:#8899aa}
.visitor-line b{color:#ccc;font-weight:700}
@keyframes slideUpV{0%,40%{transform:translateY(0)}50%,90%{transform:translateY(-18px)}100%{transform:translateY(0)}}
/* ===== 모바일 핵심 반응형 (768px 이하) ===== */
@media(max-width:768px){
  #status-banner{font-size:12px!important;padding:5px 8px!important;min-height:auto!important;gap:4px!important}
  /* 헤더: 1줄 로고+뉴스+컨트롤 */
  .mhd-row{flex-wrap:wrap;height:auto;padding:8px 12px;gap:0}
  .brand{border-right:none;padding-right:6px}
  .brand .logo-img{height:22px}
  .hdr-ticker{display:none}
  .hdr-news{padding:0 8px;order:2}
  .hdr-news .ni{font-size:.68rem;padding:0 10px}
  .hdr-ctrl{font-size:.72rem;padding:3px 4px;min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center}
  .hdr-divider{height:16px}
  .ticker{order:4;width:100%;padding:6px 0 2px;border-top:1px solid var(--rule);margin-top:4px}
  .tk-tabs{margin-right:4px}
  .tk-tab{padding:2px 5px;font-size:.6rem;flex-direction:column;gap:1px}
  .tk-full{display:none}
  .tk-short{display:inline;font-size:.5rem}
  .tk-ico{font-size:.65rem}
  .tick-stage{font-size:.78rem}
  .tk-date{font-size:.58rem}
  #hdrDataStatus{display:none}
  .mhd-right{border-left:none;padding-left:0;margin-left:auto;gap:4px;order:3}
  .kakao-login-btn{padding:4px 10px;font-size:.7rem}
  .kakao-logout-btn{padding:4px 8px;font-size:.68rem}
  .kakao-nickname{font-size:.7rem}
  #keep-login-label{font-size:.52rem}

  /* 뉴스 티커: 속도버튼 숨기기, 높이 축소, 모바일 속도 느리게 */
  .news{height:30px}
  .news-lbl{font-size:.6rem;padding:0 8px}
  .ni{padding:0 14px;font-size:.75rem}
  .ns-btn{display:none}
  .news-time{font-size:.58rem;padding-right:8px}
  .news-inner{animation-duration:50s}

  /* 탭 내비게이션 */
  .tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;gap:0;padding:0 8px}
  .tabs button{padding:10px 10px;font-size:.72rem;white-space:nowrap;flex-shrink:0}

  /* 본문 영역 */
  .mx{padding:16px 12px}

  /* KPI 카드 */
  .kpi-band{grid-template-columns:1fr 1fr;gap:8px}
  .kc{padding:12px}
  .kc-num{font-size:2rem}

  /* 차트 높이 */
  .h380,.h300{height:200px}
  .h320{height:180px}

  /* 서브탭 */
  .dsub-nav{overflow-x:auto}
  .dsub-btn{padding:8px 12px;font-size:.7rem}

  /* 랜딩 페이지 */
  #landing{padding:0!important}
  #landing>div{padding:32px 16px!important}
  #landing div[style*='font-size:2.2rem']{font-size:1.5rem!important;line-height:1.4!important}
  #landing div[style*='grid-template-columns']{grid-template-columns:1fr!important;gap:12px!important}

  /* 마이페이지 */
  .myp-card{padding:12px}
  .myp-toggle-row{font-size:.78rem;padding:8px 0}

  /* AI 플로팅 */
  #ai-float-btn{bottom:115px!important;right:12px!important;padding:8px 14px!important;font-size:.75rem!important}
  #ai-float-chat{width:calc(100vw - 24px)!important;right:12px!important;bottom:175px!important;max-height:60vh!important}

  /* 문의/제안 버튼 */
  #inquiry-float-btn{right:12px!important;bottom:70px!important;font-size:.72rem!important;padding:8px 12px!important}
  #kakao-float-btn{right:12px!important;font-size:.72rem!important;padding:7px 12px!important}

  /* 모달 */
  .modal-box{width:95%;padding:20px 16px}

  /* 관리자 패널 */
  #admin-panel>div{margin:16px!important;padding:20px 16px!important}

  /* 하단 네비바 표시 + iOS safe area */
  .mob-nav{display:flex!important;padding-bottom:env(safe-area-inset-bottom,0)}
  .mob-nav .mn-btn{min-height:44px;min-width:44px}
  body{padding-bottom:calc(60px + env(safe-area-inset-bottom,0))}
  /* 탭 버튼 최소 터치 크기 */
  .tabs button{min-height:44px}

  /* 플로팅 버튼 네비바 위로 */
  #ai-float-btn{bottom:175px!important}
  #feedbackFloatBtn{bottom:220px!important;right:12px!important;font-size:.72rem!important;padding:8px 12px!important}
  #inquiry-float-btn{bottom:130px!important}
  #kakao-float-btn{bottom:85px!important}
  #ai-float-chat{bottom:275px!important}

  /* PWA 배너 네비바 위로 */
  #pwa-banner{bottom:56px!important}

  /* 기존 탭바 숨기기 (하단 네비로 대체) */
  .tabs{display:none!important}
}

/* ===== 작은 모바일 (480px 이하) ===== */
@media(max-width:480px){
  .mhd-row{padding:6px 8px}
  .brand .logo-img{height:18px}
  .hdr-news{padding:0 4px}
  .hdr-news .ni{font-size:.62rem;padding:0 8px}
  .mhd-row{height:48px;padding:0 8px}
  .hdr-ctrl{font-size:.65rem;padding:2px 3px;min-height:44px;min-width:44px}
  .hdr-ctrl.hdr-speed{display:none!important}
  .hdr-divider{display:none}
  #hdrDataStatus{display:none!important}
  .kakao-auth-area{margin-left:4px}
  .kpi-band{grid-template-columns:1fr}
  .kc-num{font-size:1.6rem}
  .tk-tabs{gap:1px}
  .tk-tab{padding:2px 4px;font-size:.55rem;flex-direction:column;gap:0}
  .tk-short{font-size:.45rem}
  .tabs button{padding:8px 8px;font-size:.66rem}
  .ni{padding:0 10px;font-size:.68rem}
  .news-lbl{font-size:.55rem;padding:0 6px}
  /* 플로팅 버튼 간격 (mob-nav 60px 위, 각 45px 간격) */
  #kakao-float-btn{bottom:70px!important;right:12px!important;font-size:.66rem!important;padding:6px 10px!important}
  .inquiry-float{bottom:108px!important;right:12px!important;font-size:.66rem!important;padding:6px 10px!important}
  #inquiry-float-btn{bottom:108px!important}
  #feedbackFloatBtn{bottom:146px!important}
  #ai-float-btn{bottom:184px!important;font-size:.68rem!important;padding:6px 12px!important}
  #ai-float-chat{bottom:230px!important;width:calc(100vw - 16px)!important;right:8px!important}
  /* 버튼바 가로 스크롤 */
  #tlpViewTabs{flex-wrap:nowrap!important;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  #tlpViewTabs::-webkit-scrollbar{display:none}
  /* 2열 그리드 → 1열 */
  #adSlotGrid{grid-template-columns:1fr!important}
  #homeKpiGrid{grid-template-columns:1fr!important}
  #dailySignalStats{grid-template-columns:1fr!important}
  .mydash-grid{grid-template-columns:1fr!important}
}
/* 카카오 로그인 */
.kakao-auth-area{display:flex;align-items:center;gap:8px;margin-left:10px}
.kakao-login-btn{padding:6px 14px;background:#FEE500;color:#000;font-family:var(--sans);font-size:.78rem;font-weight:600;border:none;border-radius:6px;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all .15s}
.kakao-login-btn:hover{opacity:.85}
.kakao-user-info{display:none;align-items:center;gap:8px}
.kakao-nickname{font-family:var(--sans);font-size:.78rem;color:#ccc;margin-right:4px;white-space:nowrap}
.kakao-logout-btn{padding:6px 14px;font-family:var(--sans);font-size:.78rem;font-weight:600;border:1px solid var(--rule2);cursor:pointer;display:flex;align-items:center;gap:4px;transition:all .15s;background:transparent;color:var(--text2)}
.kakao-logout-btn:hover{border-color:var(--text2);color:var(--text)}
/* 데이터 내부 서브탭 */
.dsub-nav{display:flex;gap:0;border:1px solid var(--rule2);border-radius:6px;margin-bottom:18px;overflow-x:auto}
.dsub-btn{padding:10px 18px;font-family:var(--mono);font-size:.76rem;font-weight:500;color:var(--text2);background:transparent;border:none;border-right:1px solid var(--rule2);cursor:pointer;white-space:nowrap;transition:all .12s}
.dsub-btn:last-child{border-right:none}
.dsub-btn:hover{background:var(--bg3);color:var(--text)}
.dsub-btn.on{background:var(--blue);color:#fff;font-weight:600}
.dsub-panel{display:none}
.dsub-panel.on{display:block}

/* 약관/개인정보/설정 모달 */
.modal-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.7);z-index:9999;justify-content:center;align-items:center;overscroll-behavior:contain}
.modal-overlay.on{display:flex}
.modal-box{background:var(--bg1);border:1px solid var(--rule2);border-radius:10px;max-width:640px;width:90%;max-height:80vh;overflow-y:auto;padding:28px 32px;position:relative;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.modal-close{position:absolute;top:12px;right:16px;background:transparent;border:none;color:var(--text2);font-size:1.4rem;cursor:pointer;padding:4px 8px}
.modal-close:hover{color:var(--text)}
.modal-title{font-family:var(--serif);font-size:1.3rem;color:var(--text);margin-bottom:16px;font-weight:700}
.modal-body{font-family:var(--sans);font-size:.82rem;color:var(--text2);line-height:1.7}
.modal-body h3{color:var(--text);font-size:.92rem;margin:16px 0 8px}
.modal-body p{margin:0 0 10px}
.profile-field{display:flex;align-items:center;gap:12px;margin:12px 0}
.profile-field label{font-size:.82rem;color:var(--text2);min-width:80px}
.profile-field input{flex:1;padding:8px 12px;background:var(--bg3);border:1px solid var(--rule2);border-radius:6px;color:var(--text);font-size:.82rem;font-family:var(--sans)}
.profile-save-btn{padding:8px 24px;background:var(--blue);color:#fff;border:none;border-radius:6px;font-size:.82rem;font-weight:600;cursor:pointer;margin-top:12px}
.profile-save-btn:hover{opacity:.85}
/* 마이페이지 */
.myp-section{margin-bottom:24px}
.myp-title{font-size:.85rem;font-weight:700;color:var(--text);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.myp-card{background:var(--bg1);border:1px solid var(--rule);border-radius:12px;padding:16px}
.myp-toggle-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--rule);font-size:.82rem}
.myp-toggle-row:last-child{border:none}
.myp-toggle{position:relative;width:44px;height:24px;flex-shrink:0}
.myp-toggle input{opacity:0;width:0;height:0}
.myp-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--rule2);border-radius:24px;transition:.3s}
.myp-slider:before{content:'';position:absolute;height:18px;width:18px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.3s}
.myp-toggle input:checked+.myp-slider{background:var(--blue)}
.myp-toggle input:checked+.myp-slider:before{transform:translateX(20px)}
.myp-region-tag{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--bg);border:1px solid var(--rule);border-radius:20px;font-size:.78rem;margin:0 6px 6px 0}
.myp-region-tag button{background:none;border:none;color:var(--text3);cursor:pointer;font-size:.9rem;padding:0;line-height:1}
.myp-region-tag button:hover{color:var(--red2)}

/* 아파트탭 */
#aptListTbl th{background:var(--bg2);padding:6px 10px;font-size:.7rem;color:var(--text3);font-weight:500;white-space:nowrap}
#aptListTbl td{padding:6px 10px;border-bottom:1px solid var(--rule);font-size:.75rem;cursor:pointer;transition:background .1s}
#aptListTbl tr:hover td{background:var(--bg2)}
#aptListTbl tr.selected td{background:rgba(59,127,212,.15);color:var(--blue2)}
.apt-kpi{background:var(--bg2);border-radius:8px;padding:10px 12px;text-align:center}
.apt-kpi-v{font-family:var(--mono);font-size:1.05rem;font-weight:700;color:var(--text);margin-bottom:2px}
.apt-kpi-l{font-size:.65rem;color:var(--text3)}
.persona-card{display:flex;gap:10px;padding:10px 12px;background:var(--bg2);border-radius:8px;border-left:3px solid var(--rule2)}
.persona-av{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0}
.persona-name{font-size:.72rem;font-weight:700;margin-bottom:3px}
.persona-txt{font-size:.78rem;color:var(--text2);line-height:1.55}

  #p-home{font-size:18px;line-height:1.75}
  #p-home .h-sec-title{font-family:'Noto Serif KR',serif;font-size:24px;font-weight:800;color:#fff;margin-bottom:16px}
  #p-home .h-gold{color:#F59E0B}
  @media(max-width:768px){
    .home-3col{grid-template-columns:1fr!important}
    .home-stat-grid{grid-template-columns:repeat(2,1fr)!important}
  }

    .mydash-grid{display:grid;gap:10px;grid-template-columns:repeat(2,1fr)}
    @media(min-width:768px){.mydash-grid{grid-template-columns:repeat(3,1fr)}}
    @media(min-width:1200px){.mydash-grid{grid-template-columns:repeat(4,1fr)}}
    .wd-card{background:var(--bg2);border:1px solid var(--rule);border-radius:12px;padding:14px;min-height:120px;display:flex;flex-direction:column;justify-content:space-between;transition:border-color .2s,transform .1s;position:relative;overflow:hidden}
    .wd-card:hover{border-color:var(--blue);transform:translateY(-1px)}
    .wd-card .wd-title{font-size:.65rem;color:var(--text3);display:flex;align-items:center;gap:4px;margin-bottom:6px}
    .wd-card .wd-stars{font-size:.55rem;letter-spacing:-1px}
    .wd-card .wd-val{font-size:1.3rem;font-weight:800;font-family:var(--mono);color:var(--text);line-height:1.2}
    .wd-card .wd-sub{font-size:.6rem;color:#888;margin-top:4px;font-family:var(--mono)}
    .wd-card .wd-trend{display:inline-flex;align-items:center;gap:2px;font-size:.62rem;font-weight:600;font-family:var(--mono);padding:2px 6px;border-radius:4px}
    .wd-card .wd-trend.up{color:#FF3344;background:#FF334415}
    .wd-card .wd-trend.down{color:#3B7FD4;background:#3B7FD415}
    .wd-card .wd-trend.flat{color:#888;background:#88888815}
    .wd-card.wd-locked{opacity:.55;cursor:default}
    .wd-card.wd-locked .wd-lock-badge{position:absolute;top:8px;right:8px;font-size:.55rem;background:#F59E0B22;color:#F59E0B;padding:1px 6px;border-radius:4px;font-weight:600}
    .wd-card .wd-spark{height:40px;margin-top:6px}
    /* Edit panel */
    .mydash-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);z-index:9999;display:none;justify-content:flex-end}
    .mydash-overlay.open{display:flex}
    .mydash-edit-panel{width:340px;max-width:90vw;background:var(--bg);border-left:1px solid var(--rule);height:100vh;max-height:100vh;overflow-y:auto;padding:20px 16px 80px;animation:slideInRight .25s ease;-webkit-overflow-scrolling:touch}
    @keyframes slideInRight{from{transform:translateX(100%)}to{transform:translateX(0)}}
    .mydash-edit-panel h3{font-size:.95rem;font-weight:800;color:var(--text);margin-bottom:12px}
    .mydash-cat-title{font-size:.78rem;font-weight:700;color:var(--text2);margin:14px 0 6px;display:flex;align-items:center;gap:6px}
    .mydash-witem{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--bg2);border:1px solid var(--rule);border-radius:8px;margin-bottom:4px;cursor:pointer;transition:all .15s}
    .mydash-witem:hover{border-color:var(--blue)}
    .mydash-witem.checked{border-color:var(--blue);background:rgba(59,127,212,.08)}
    .mydash-witem.locked{opacity:.5;cursor:default}
    .mydash-witem input[type=checkbox]{accent-color:var(--blue);width:16px;height:16px;flex-shrink:0}
    .mydash-witem .wi-label{font-size:.75rem;font-weight:600;color:var(--text);flex:1}
    .mydash-witem .wi-stars{font-size:.55rem;letter-spacing:-1px}
    .mydash-witem .wi-region{padding:2px 8px;font-size:.62rem;background:var(--bg1);border:1px solid var(--rule);border-radius:4px;color:var(--text3)}
    .mydash-witem .wi-arrows{display:flex;flex-direction:column;gap:1px;font-size:.6rem;color:var(--text3)}
    .mydash-witem .wi-arrows span{cursor:pointer;padding:0 4px;border-radius:3px}
    .mydash-witem .wi-arrows span:hover{background:var(--rule);color:var(--text)}

        .econ-dash-row{display:grid;gap:10px;margin-bottom:12px}
        .econ-kpi6-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
        @media(min-width:600px){.econ-kpi6-grid{grid-template-columns:repeat(6,1fr)}}
        .sig6-card{min-height:100px;background:rgba(255,255,255,.04);border:1px solid var(--rule);border-left:4px solid #555;border-radius:8px;padding:12px;display:flex;flex-direction:column;justify-content:center;box-sizing:border-box;transition:border-color .3s}
        .sig6-name{font-size:.72rem;color:var(--text3);margin-bottom:4px;line-height:1.3;overflow:hidden;text-overflow:ellipsis}
        .sig6-val{font-size:1.5rem;font-weight:700;color:#fff;line-height:1.2}
        .sig6-label{font-size:.68rem;margin-top:4px;color:var(--text3)}
        @media(min-width:600px){#signalCardsGrid{grid-template-columns:repeat(6,1fr)!important}}
        .kpi6{background:var(--bg2);border:1px solid var(--rule);border-radius:10px;padding:12px 10px;text-align:center;height:110px;display:flex;flex-direction:column;justify-content:center;gap:4px;box-sizing:border-box}
        .kpi6 .kpi6-label{font-size:.62rem;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
        .kpi6 .kpi6-val{font-size:1.15rem;font-weight:800;font-family:var(--mono);line-height:1.3}
        .kpi6 .kpi6-sub{font-size:.55rem;color:#666;font-family:var(--mono)}
        .econ-dash-sparks{grid-template-columns:repeat(4,1fr)}
        @media(max-width:600px){.econ-dash-sparks{grid-template-columns:repeat(2,1fr)}}
        .spark-card{background:var(--bg2);border:1px solid var(--rule);border-radius:10px;padding:8px 10px}
        .spark-card .sp-title{font-size:.58rem;color:var(--text3);margin-bottom:3px;display:flex;align-items:center;justify-content:space-between}
        .spark-card .sp-val{font-size:.75rem;font-weight:800;font-family:var(--mono)}
        .signal-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:4px}
        .signal-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:var(--bg2);border:1px solid var(--rule);border-radius:16px;font-size:.65rem;color:var(--text2)}
        .signal-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
        .signal-dot.green{background:#10B981;box-shadow:0 0 4px #10B98188}
        .signal-dot.yellow{background:#F59E0B;box-shadow:0 0 4px #F59E0B88}
        .signal-dot.red{background:#FF3344;box-shadow:0 0 4px #FF334488}
        /* 접이식 차트 섹션 */
        .ecs-wrap{margin-bottom:4px;border:1px solid var(--rule);border-radius:10px;overflow:hidden}
        .ecs-hdr{display:flex;align-items:center;gap:8px;padding:10px 14px;cursor:pointer;background:var(--bg2);transition:background .15s;user-select:none}
        .ecs-hdr:hover{background:var(--bg1)}
        .ecs-info{display:flex;align-items:center;gap:6px;flex:1;min-width:0}
        .ecs-title{font-size:.78rem;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
        .ecs-val{font-size:.82rem;font-weight:800;font-family:var(--mono);white-space:nowrap}
        .ecs-spark-wrap{width:100px;height:36px;flex-shrink:0}
        .ecs-spark-wrap svg{width:100%;height:100%}
        .ecs-arrow{font-size:.65rem;color:var(--text3);flex-shrink:0;transition:transform .2s}
        .ecs-arrow.open{transform:rotate(180deg)}
        .ecs-body{padding:12px 14px 14px;border-top:1px solid var(--rule)}
        @media(max-width:500px){.ecs-hdr{padding:8px 10px;gap:6px}.ecs-title{font-size:.7rem}.ecs-val{font-size:.72rem}.ecs-spark-wrap{width:70px;height:28px}}
        @media(max-width:500px){#fxCardGrid{grid-template-columns:repeat(2,1fr)!important}}

        .emg-grp{margin-bottom:12px}
        .emg-grp-hdr{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-bottom:6px;border-bottom:2px solid var(--rule);margin-bottom:8px}
        .emg-grp-title{font-size:.78rem;font-weight:700;color:var(--text)}
        .emg-grp-cnt{font-size:.6rem;color:var(--text3);font-family:var(--mono)}
        .emg-sort-btns{display:flex;gap:4px;margin-left:auto}
        .emg-sort-btn{padding:3px 8px;border:1px solid var(--rule);border-radius:12px;background:transparent;color:var(--text3);font-size:.58rem;cursor:pointer;font-family:var(--sans);transition:all .15s;white-space:nowrap}
        .emg-sort-btn:hover{border-color:var(--blue);color:var(--text)}
        .emg-sort-btn.on{background:var(--blue);color:#fff;border-color:var(--blue)}
        .emg-grp-grid{display:grid;gap:6px;grid-template-columns:repeat(4,1fr)}
        @media(max-width:600px){.emg-grp-grid{grid-template-columns:repeat(2,1fr)}}
        .emg-card{background:var(--bg2);border:1px solid var(--rule);border-radius:8px;padding:8px 10px;height:80px;display:flex;flex-direction:column;justify-content:space-between;transition:border-color .15s,filter .15s;cursor:pointer;box-sizing:border-box}
        .emg-card:hover{filter:brightness(1.15)}
        .emg-card .emg-name{font-size:.68rem;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
        .emg-card .emg-val{font-size:1.2rem;font-weight:800;font-family:var(--mono);line-height:1.2}
        .emg-card .emg-chg{font-size:.6rem;font-family:var(--mono)}
        .emg-card .emg-date{font-size:.55rem;color:#555;font-family:var(--mono)}
        .emg-card-empty{background:var(--bg2);border:1px dashed var(--rule);border-radius:8px;height:80px;display:flex;align-items:center;justify-content:center;font-size:.7rem;color:#555}
        .emg-grp-toggle{display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none;padding-bottom:6px;border-bottom:2px solid var(--rule);margin-bottom:8px}
        .emg-grp-toggle:hover .emg-grp-title{color:var(--blue)}

          #pirRegionTabs::-webkit-scrollbar{height:3px}
          #pirRegionTabs::-webkit-scrollbar-thumb{background:#444;border-radius:3px}
          .pir-tab{display:inline-flex;flex-direction:column;align-items:center;padding:6px 10px;margin-right:4px;border-radius:10px;cursor:pointer;border:1px solid var(--rule);background:var(--bg2);transition:all .2s;text-align:center;min-width:52px;gap:2px}
          .pir-tab .pir-region{font-size:.6rem;color:var(--text3);font-weight:500;line-height:1}
          .pir-tab .pir-num{font-size:1rem;font-weight:800;font-family:var(--mono);line-height:1.2}
          .pir-tab .pir-unit{font-size:.5rem;font-weight:400;line-height:1}
          .pir-tab.on{background:#8B5CF6;border-color:#8B5CF6}
          .pir-tab.on .pir-region,.pir-tab.on .pir-unit{color:rgba(255,255,255,.8)}
          .pir-tab.on .pir-num{color:#fff}
          .pir-tab.pir-high .pir-num{color:#FF3344}
          .pir-tab.pir-mid .pir-num{color:#F59E0B}
          .pir-tab.pir-low .pir-num{color:#10B981}
          .pir-tab.pir-high .pir-unit{color:#FF6B6B}
          .pir-tab.pir-mid .pir-unit{color:#F59E0B}
          .pir-tab.pir-low .pir-unit{color:#10B981}

        #ecosCategoryRows{display:grid;gap:10px;grid-template-columns:1fr}
        @media(min-width:900px){#ecosCategoryRows{grid-template-columns:1fr 1fr}}
        #ecosCategoryRows .ecosGrp-upcoming{display:none!important}

      .gbl-kpi-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:16px}
      @media(min-width:600px){.gbl-kpi-grid{grid-template-columns:repeat(4,1fr)}}
      .gbl-kpi{background:var(--bg2);border:1px solid var(--rule);border-radius:10px;padding:14px 12px;text-align:center}
      .gbl-kpi .gbl-label{font-size:.62rem;color:var(--text3);margin-bottom:4px}
      .gbl-kpi .gbl-val{font-size:1.15rem;font-weight:800;font-family:var(--mono);line-height:1.3}
      .gbl-kpi .gbl-chg{font-size:.6rem;font-family:var(--mono);margin-top:2px}
      .gbl-spark{height:50px;margin-top:4px}
      .gbl-spark svg{width:100%;height:100%}

    .analyst-card{background:var(--bg2);border:1px solid var(--rule);border-radius:14px;padding:18px;transition:border-color .2s,box-shadow .2s}
    .analyst-card:hover{border-color:var(--blue);box-shadow:0 4px 20px rgba(59,130,246,.12)}
    .analyst-av{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;flex-shrink:0;border:2px solid var(--rule2)}
    .analyst-badge{font-size:.55rem;padding:2px 8px;border-radius:10px;font-weight:700;white-space:nowrap}
    .analyst-preview{font-size:.72rem;color:var(--text3);line-height:1.5;background:var(--bg);border-radius:8px;padding:10px 12px;margin-top:10px;border-left:3px solid var(--blue)}
    .prereg-form{background:linear-gradient(135deg,#0f172a,#1e293b);border:1px solid #334155;border-radius:14px;padding:20px;margin-bottom:20px}
    .prereg-form input,.prereg-form textarea{width:100%;padding:10px 12px;background:#1e293b;border:1px solid #334155;border-radius:8px;color:#e2e8f0;font-size:.82rem;margin-bottom:8px;box-sizing:border-box}
    .prereg-form input::placeholder,.prereg-form textarea::placeholder{color:#64748b}
    .prereg-form input:focus,.prereg-form textarea:focus{outline:none;border-color:var(--blue)}

    .comm-sub-nav{display:flex;gap:0;border:1px solid var(--rule2);border-radius:8px;margin-bottom:14px;overflow:hidden}
    .comm-sub-nav .sb{flex:1;padding:10px 0;border:none;font-size:.78rem;cursor:pointer;font-weight:700;transition:all .15s}
    .comm-sub-nav .sb.on{background:var(--blue);color:#fff}
    .comm-sub-nav .sb:not(.on){background:var(--bg2);color:var(--text3)}
    .comm-post{background:var(--bg2);border:1px solid var(--rule);border-radius:10px;padding:14px;margin-bottom:8px;cursor:pointer;transition:border-color .15s}
    .comm-post:hover{border-color:var(--blue)}
    .comm-post-head{display:flex;align-items:center;gap:6px;margin-bottom:6px}
    .comm-post-av{width:28px;height:28px;border-radius:50%;background:var(--bg1);display:flex;align-items:center;justify-content:center;font-size:.85rem;flex-shrink:0}
    .comm-post-author{font-size:.72rem;font-weight:700;color:var(--text)}
    .comm-post-badge{font-size:.55rem;background:#F59E0B22;color:#F59E0B;padding:1px 6px;border-radius:4px;font-weight:600}
    .comm-post-date{font-size:.6rem;color:#666;margin-left:auto;font-family:var(--mono)}
    .comm-post-title{font-size:.85rem;font-weight:700;color:var(--text);margin-bottom:4px;line-height:1.3}
    .comm-post-preview{font-size:.72rem;color:var(--text3);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
    .comm-post-foot{display:flex;gap:14px;margin-top:8px;font-size:.65rem;color:#666;font-family:var(--mono)}
    .comm-empty{text-align:center;padding:40px 20px;color:var(--text3);font-size:.82rem}

    .auc-kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}
    .auc-kpi{background:var(--bg2);border:1px solid var(--rule);border-radius:10px;padding:12px;text-align:center}
    .auc-kpi .auc-kpi-label{font-size:.62rem;color:var(--text3);margin-bottom:4px}
    .auc-kpi .auc-kpi-val{font-size:1.2rem;font-weight:800;font-family:var(--mono)}
    .auc-filter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
    .auc-filter select{padding:6px 10px;background:var(--bg2);color:var(--text);border:1px solid var(--rule);border-radius:6px;font-size:.78rem}
    .auc-card{background:var(--bg2);border:1px solid var(--rule);border-radius:10px;padding:14px;margin-bottom:8px;cursor:pointer;transition:all .15s}
    .auc-card:hover{border-color:var(--blue);transform:translateY(-1px)}
    .auc-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
    .auc-case{font-size:.68rem;color:var(--text3);font-family:var(--mono)}
    .auc-badge{font-size:.55rem;padding:2px 6px;border-radius:6px;font-weight:600}
    .auc-card-addr{font-size:.82rem;font-weight:700;color:var(--text);margin-bottom:6px}
    .auc-card-info{display:grid;grid-template-columns:1fr 1fr;gap:4px;font-size:.72rem}
    .auc-card-info dt{color:var(--text3)}
    .auc-card-info dd{color:var(--text);font-weight:600;font-family:var(--mono);text-align:right;margin:0}
    .auc-rate{font-weight:800}
    .auc-rate.high{color:#FF3344}
    .auc-rate.mid{color:#F59E0B}
    .auc-rate.low{color:#10B981}

@keyframes aiBtnPulse{0%,100%{box-shadow:0 4px 20px rgba(59,127,212,.5)}50%{box-shadow:0 4px 30px rgba(59,127,212,.8)}}
@keyframes tabSpin{to{transform:rotate(360deg)}}

/* ====== Print ====== */
@page{margin:10mm}
@media print{
  .no-print,#ai-float-btn,#ai-float-chat,#inquiry-float-btn,#kakao-float-btn,#feedbackFloatBtn,
  .inquiry-float,.mob-nav,header,footer,.ft,#viewModeBar,#notifPanel,#notifBackdrop,
  #betaGate,#landing,#pwa-banner,#onboardingOverlay{display:none!important}
  a[href]::after{content:none!important}
  body{background:#fff!important;color:#111!important;padding:0!important}
  .panel,.sec,.blk,.myp-card{border-color:#ddd!important;box-shadow:none!important}
}

/* ============================================================
   홈탭 내 시장 지표 위젯 강제 숨김 — 대시보드 탭으로 이동됨
   (JS가 DOM을 이동하면 #dashboardContent 안으로 들어가 이 셀렉터에
   매칭되지 않아 다시 보이게 됨 — 현재 부모 경로와 무관하게 ID만으로
   매칭하므로 이동 전 홈탭에서 계속 보이는 것만 완전 차단)
   ============================================================ */
#p-home #homeWeeklySurgeSection,
#p-home #homeThermometer,
#p-home #homeKpiSection {
  display: none !important;
}

/* 홈탭 추가 섹션 숨김 (시장 지표 · 관심지역 · 즐겨찾기 · AI 요약) */
#p-home #homeLocalPriceSection,
#p-home #homeRegionSection,
#p-home #homeFavPriceWidget,
#p-home #homeAptFavWidget,
#p-home #homeIndicatorsSection,
#p-home #homeDailySignalSection,
#p-home #homeRecentTradesSection,
#p-home [id*="Region"],
#p-home #homeSusWidget {
  display: none !important;
}

/* 내관심 탭 카드 */
.wish-card{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--bg1);border:1px solid var(--rule);border-radius:10px;margin-bottom:8px;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.wish-card:hover{border-color:var(--blue);box-shadow:0 2px 8px rgba(59,127,212,.12)}
.wish-icon{font-size:1.2rem;flex:0 0 32px;text-align:center}
.wish-info{flex:1;min-width:0}
.wish-name{font-size:.8rem;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wish-sub{font-size:.65rem;color:var(--text3);margin-top:2px}
.wish-price{font-size:.68rem;color:var(--blue);font-weight:600;margin-top:2px}
.wish-memo{font-size:.62rem;color:var(--text3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wish-del{flex:0 0 44px;height:44px;background:transparent;border:1px solid var(--rule);border-radius:6px;color:var(--text3);font-size:.9rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .15s,border-color .15s}
.wish-del:hover{color:#EF4444;border-color:#EF4444}
