/* 서울 지도. 샘플(proto/map-sample)의 style.css + complex-list.css 에서 가져왔다. */
:root{font-family:'Malgun Gothic','Apple SD Gothic Neo',sans-serif;color:#294c50;background:#ebf5ee;font-synthesis:none}
*{box-sizing:border-box}
body{margin:0}
button,a{-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit;cursor:pointer;border:0}
a{color:inherit;text-decoration:none}
#map{position:fixed;inset:0}
header{position:absolute;top:24px;left:30px;right:30px;display:flex;align-items:center;gap:24px;pointer-events:none}
header>*{pointer-events:auto}
.brand{display:flex;align-items:center;gap:12px}
.brand>b{background:#25b59f;color:white;border-radius:16px;font-size:31px;padding:7px 12px;box-shadow:0 5px 0 #1b9182}
.brand span{font-size:25px;font-weight:900;letter-spacing:-1px}
.brand small{display:block;font-size:10px;letter-spacing:1px;margin-top:3px;color:#648986}
.sample{font-size:9px;letter-spacing:2px;border:1px solid #85b5aa;border-radius:20px;padding:8px 12px;background:#f7fcf0aa}
.board-link{margin-left:auto;background:#fffdf4ed;padding:13px 18px;border-radius:16px;font-size:12px;box-shadow:0 4px 12px #24635312}
nav{position:absolute;top:103px;left:30px;background:#fffdf4ed;border-radius:16px;padding:6px;display:flex;gap:4px;align-items:center;box-shadow:0 7px 25px #34695810}
nav button{background:none;padding:10px 17px;font-size:12px;border-radius:11px;font-weight:700}
nav .active{background:#d9f0df;color:#208b77}
nav i{color:#adbfad;font-style:normal}
aside{position:absolute;left:30px;top:180px;width:290px;background:#fffdf2f2;padding:26px;border-radius:27px;border:1px solid white;box-shadow:0 14px 40px #315f5a15}
.eyebrow{font-size:9px;font-weight:800;letter-spacing:1.8px;color:#3fa797}
h1{font-size:29px;letter-spacing:-1.8px;margin:17px 0 13px}
aside p{font-size:12px;line-height:1.9;color:#698784}
.primary{width:100%;margin-top:17px;padding:16px;border-radius:14px;background:#29b99d;color:white;font-size:12px;font-weight:800;box-shadow:0 4px 0 #199b83;text-align:left}
.primary span{float:right;font-size:16px}
.divider{height:1px;background:#deeadc;margin:26px 0 20px}
.place{display:flex;align-items:center;gap:10px}
.place strong{font-size:12px}
.place small{display:block;font-size:10px;color:#83968d;margin-top:5px}
.place>b{margin-left:auto;color:#d3dfcd;font-size:28px}
.dot{background:#ffbd75;width:11px;height:11px;border-radius:50%;box-shadow:0 0 0 5px #ffecd1}
.chips{display:flex;gap:4px;margin-top:22px}
.chips span{font-size:9px;background:#edf3e5;padding:7px;border-radius:8px}
.note{font-size:9px!important;margin-bottom:0!important}
.map-actions{position:absolute;right:28px;top:180px;display:grid;gap:6px}
.map-actions button{background:#fffdf4ef;border:1px solid white;width:46px;height:46px;border-radius:15px;font-size:18px;box-shadow:0 4px 13px #30585112}
.map-actions button:last-child{font-size:11px}
.map-actions button[aria-pressed=true]{background:#d2eee1}
footer{position:absolute;bottom:36px;left:50%;transform:translateX(-50%);background:#fffdf2ed;border:1px solid white;border-radius:18px;padding:13px 22px;min-width:400px;text-align:center;box-shadow:0 7px 25px #315f5a12}
footer div{display:flex;justify-content:center;align-items:center;gap:10px}
footer b{font-size:12px}
footer span{font-size:10px;color:#73948b}
footer small{display:block;margin-top:8px;font-size:9px;color:#8ba198}
.live-dot{background:#29b99d;width:7px;height:7px;border-radius:50%}
.district-label{font:700 12px 'Malgun Gothic',sans-serif;color:#487565;text-shadow:0 2px 2px #fff,0 0 8px white;pointer-events:none}
.destination{border:3px solid white;border-radius:18px;background:#28b69b;color:white;padding:12px 17px;box-shadow:0 6px 0 #17958255,0 10px 30px #245b4a22;font-size:13px;font-weight:bold;cursor:pointer}
.destination small{display:block;font-size:9px;margin-top:4px;color:#d9fff1}
.place-label{font-size:11px;color:#358e8d;background:#f9fff6d9;border:1px solid white;padding:7px 11px;border-radius:14px;pointer-events:none}
.maplibregl-ctrl-attrib{font-size:10px!important;background:#fffdf4dd!important}
#status{position:absolute;left:50%;top:110px;transform:translateX(-50%);font-size:12px;background:#fffdf4;padding:13px 22px;border-radius:18px;box-shadow:0 3px 20px #2c6a541c}
#status:empty{display:none}
.metrics{position:absolute;left:30px;bottom:35px;font-size:10px;max-width:280px;background:#fffdf2ed;padding:10px 13px;border-radius:13px}
.metrics p{line-height:1.7;color:#6b8880}
.metrics summary{cursor:pointer}
#selection{position:absolute;right:90px;bottom:120px;width:280px;padding:25px;background:#fffbed;border:2px solid white;border-radius:24px;box-shadow:0 14px 35px #294b5520}
#selection h2{font-size:20px}
#selection p,#selection a{font-size:11px;line-height:1.8}
#selection a{color:#159b84}
#close-selection{float:right;background:none;font-size:22px}
[hidden]{display:none!important}
@media(max-width:760px){
header{top:16px;left:16px;right:16px;gap:10px}
.brand span{font-size:19px}
.brand small{font-size:8px}
.brand>b{font-size:24px;border-radius:12px}
.sample{display:none}
.board-link{font-size:10px;padding:10px}
.map-actions{right:14px;top:160px}
nav{top:85px;left:16px}
nav button{padding:9px 13px}
aside{left:16px;top:auto;bottom:115px;width:240px;padding:17px;border-radius:22px}
h1{font-size:22px;margin:9px 0}
aside p{font-size:11px}
.divider,.place,.chips,.note{display:none}
.primary{margin-top:6px;padding:12px}
.eyebrow{font-size:8px}
footer{bottom:30px;min-width:0;width:calc(100% - 32px);padding:12px;left:16px;transform:none}
footer #detail{font-size:9px}
footer small{font-size:8px}
.metrics{bottom:auto;top:132px;left:16px;padding:7px 10px;max-width:250px}
.metrics[open]{z-index:4}
#selection{right:16px;bottom:115px;width:calc(100% - 32px);z-index:3}
#status{top:180px;max-width:80%;width:max-content}
body.detail aside{display:none}
.maplibregl-ctrl-attrib{font-size:8px!important}
}
h1{word-break:keep-all}
body.detail aside h1{font-size:25px}
nav button:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid #edab51;outline-offset:3px}
@media(max-width:760px){
.district-label{font-size:10px}
aside p{word-break:keep-all}
.brand small{letter-spacing:0}
}
.complex-card{top:167px;width:300px;padding:23px;max-height:calc(100vh - 215px);overflow:auto;scrollbar-width:thin}
.complex-title{display:flex;align-items:center;justify-content:space-between}
.complex-title h1{font-size:29px!important;line-height:1.2;margin:15px 0 9px}
.tier{background:#ffe4a0;border:1px solid #f4d680;border-radius:13px;padding:9px;font-size:18px;color:#9a7637;font-weight:900}
.complex-address{font-size:10px!important;margin:4px 0 12px}
.complex-facts{display:flex;gap:6px;font-size:9px;color:#6c897c}
.complex-facts span{background:#eef2e3;padding:6px;border-radius:7px}
.complex-card .primary{margin-top:14px}
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 9px;margin-top:26px}
.stat-grid small{display:block;color:#81958b;font-size:9px}
.stat-grid b{display:block;font-size:18px;margin-top:6px;letter-spacing:-.8px}
.snapshot-note{font-size:9px!important;line-height:1.6!important;padding-bottom:14px;border-bottom:1px solid #dce9da}
.dong-picker{font-size:11px;display:flex;align-items:center;justify-content:space-between;margin-top:13px}
.dong-picker select{font:inherit;background:#fffdf4;border:1px solid #b8d6c5;border-radius:9px;padding:8px 12px;color:#315950}
.detail-switches{display:flex;gap:6px;margin-top:14px}
.detail-switches button{border-radius:9px;background:#eef2e6;font-size:10px;padding:9px}
.detail-switches button[aria-pressed=true]{background:#cbe9d7;color:#26765f}
#dong-info{font-size:10px;line-height:1.7;margin-top:14px;color:#628176}
.representation{font-size:9px!important;line-height:1.6!important}
.source-links{display:flex;gap:15px;font-size:9px;color:#269984}
.dong-label{border:1px solid #80bda4;background:#fffbeeef;border-radius:8px;padding:5px 8px;font-size:10px;font-weight:800;color:#3c796c;box-shadow:0 2px 0 #59998630;white-space:nowrap}
.dong-label.selected{background:#ffdc8e;border:2px solid #e5ab4f;color:#715828;z-index:5}
.metrics{max-width:300px}
body.detail .complex-card{display:block}
@media(max-width:760px){
.complex-card,body.detail .complex-card{top:auto;bottom:118px;left:12px;max-height:215px;width:240px;padding:15px;z-index:2;box-shadow:0 8px 20px #315f5a20}
.complex-title h1{font-size:18px!important;margin:7px 0}
.complex-title h1 br{display:none}
.tier{font-size:12px;padding:6px}
.complex-card .eyebrow{font-size:7px}
.complex-facts,.representation,.source-links{display:none}
.complex-card .primary{padding:10px;margin-top:6px;font-size:10px}
.stat-grid{gap:9px;margin-top:15px}
.stat-grid b{font-size:15px}
.snapshot-note{font-size:8px!important}
.complex-card .complex-address{font-size:9px!important}
.complex-card .dong-picker{margin-top:5px}
.complex-card .detail-switches{margin-top:8px}
.dong-label{font-size:9px;padding:4px 6px}
}
.info-toggle{display:none}
@media(max-width:760px){
.info-toggle{display:block;position:absolute;left:12px;bottom:342px;z-index:4;background:#2caa91;color:white;border:2px solid white;padding:10px 15px;border-radius:13px;font-size:11px;box-shadow:0 4px 14px #2e775a22}
body.info-collapsed .complex-card,body.info-collapsed.detail .complex-card{display:none}
body.info-collapsed .info-toggle{bottom:115px}
}

/* 단지 목록 */
#complex-list-toggle{background:#2aac95;color:white;margin-left:6px}
#complex-list{position:absolute;top:160px;left:345px;width:320px;max-height:calc(100vh - 190px);overflow:auto;padding:18px;background:#fffdf4fa;border:1px solid white;border-radius:23px;box-shadow:0 16px 50px #244d4933;z-index:6}
.list-heading{display:flex;justify-content:space-between;align-items:center;padding:4px 2px 16px}
.list-heading b{font-size:15px}
.list-heading small{display:block;font-size:10px;color:#769385;margin-top:6px}
.list-heading button{font-size:25px;background:none}
.complex-option{display:flex;width:100%;align-items:center;gap:12px;text-align:left;padding:13px 10px;border:1px solid #e0e9db;border-radius:15px;background:#f7f7e9;margin:5px 0}
.complex-option[aria-current=true]{background:#d9eee0;border-color:#39b29a}
.complex-option strong{font-size:12px;display:block}
.complex-option small,.complex-option em{display:block;font-size:10px;font-style:normal;color:#6b8b7e;margin-top:5px}
.complex-option>b{margin-left:auto;color:#319f8b}
.complex-icon{font-size:31px;color:#3c9b93;background:#e9efe0;width:45px;text-align:center;border-radius:10px}
.complex-option:nth-of-type(2) .complex-icon{color:#c3a475}
.complex-option:nth-of-type(3) .complex-icon{color:#d99283}
.complex-option:nth-of-type(4) .complex-icon{color:#7198b2}
@media(max-width:760px){
nav{right:12px;left:12px;gap:0}
nav button{padding:9px 10px}
#complex-list-toggle{padding:9px 10px;font-size:10px;margin-left:auto}
#complex-list{top:130px;left:12px;right:12px;width:auto;max-height:calc(100vh - 240px)}
.complex-option{padding:12px}
.complex-title h1{word-break:keep-all}
}

/* 단지 핀 (서울·동네 줌) */
.complex-pin{display:grid;justify-items:center;gap:3px;background:#fffdf4f2;border:2px solid white;border-radius:14px;padding:7px 11px;box-shadow:0 4px 0 #2bb3a044,0 8px 20px #245b4a22;color:#24565b}
.complex-pin b{font-size:12px;white-space:nowrap}
.complex-pin small{font-size:9px;color:#2a9c88;font-weight:700}
.complex-pin::after{content:'';position:absolute;bottom:-8px;left:50%;margin-left:-6px;border:6px solid transparent;border-top-color:#fffdf4;border-bottom:0}
@media(max-width:760px){.complex-pin{padding:5px 8px}.complex-pin b{font-size:10px}}

/* 성능 측정(?bench=1) */
.bench{position:absolute;right:16px;top:90px;z-index:9;width:min(420px,calc(100% - 32px));max-height:70vh;overflow:auto;background:#fffdf4f5;border:1px solid white;border-radius:16px;padding:12px 14px;box-shadow:0 10px 30px #244d4933;font-size:11px}
.bench pre{white-space:pre-wrap;font:10px/1.6 ui-monospace,Consolas,monospace;margin:8px 0}
.bench button{background:#29b99d;color:white;border-radius:10px;padding:8px 12px;font-size:11px}
