:root{font-family:Pretendard,"Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,-apple-system,sans-serif;color:#182c47;background:#f4f7fb;font-synthesis:none}*{box-sizing:border-box}html,body{margin:0;min-height:100%}button,input,select{font:inherit}a{color:inherit}.app-shell{max-width:1460px;padding:0 38px;margin:0 auto}.topbar{height:91px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:13px}.brand-icon{height:41px;width:41px;display:grid;place-items:center;background:#1764c9;color:white;border-radius:12px;font-size:29px;line-height:1}.brand-name{font-size:17px;font-weight:850;letter-spacing:1.25px;color:#16467e}.brand-lite{color:#6c8db4;font-weight:600}.brand-caption{font-size:11px;font-weight:600;margin-top:3px;color:#7e8da1;letter-spacing:.2px}.source-link{font-size:12px;text-decoration:none;color:#55728d;font-weight:700;display:flex;gap:8px;align-items:center}.source-link span{font-size:17px}.hero{position:relative;overflow:hidden;background:linear-gradient(115deg,#0a3d7d 0%,#155ab3 65%,#1e79cf 100%);color:#fff;border-radius:19px;min-height:265px;padding:39px 54px 34px;box-shadow:0 16px 32px -25px #0c4082;display:flex;justify-content:space-between}.hero-text{position:relative;z-index:2}.eyebrow{font-size:12px;font-weight:700;color:#bbdcff;letter-spacing:.4px;display:flex;align-items:center;gap:8px}.live-dot{background:#70efc0;box-shadow:0 0 0 4px #ffffff18;width:6px;height:6px;border-radius:50%}.hero h1{font-size:30px;line-height:1.34;margin:12px 0 10px;letter-spacing:-1.4px;font-weight:800}.hero h1 em{font-style:normal;color:#b9e0ff}.hero p{font-size:12px;line-height:1.9;color:#d6e9ff;margin:0}.hero-pills{display:flex;flex-wrap:wrap;gap:7px;margin-top:18px}.hero-pills span{font-size:11px;color:#e2efff;border:1px solid #ffffff38;background:#ffffff13;border-radius:999px;padding:6px 12px}.hero-art{position:absolute;right:76px;bottom:0;height:100%;width:420px;opacity:.95}.tower{position:absolute;bottom:-17px;background:linear-gradient(145deg,#4089d7,#1b61ad);border:1px solid #8cc6ff55;display:grid;grid-template-columns:repeat(2,1fr);gap:11px 14px;align-content:start;padding:23px 20px 0;box-shadow:17px 0 28px #0c38633e}.tower i{display:block;height:24px;border-radius:2px;background:#91c4f45b;box-shadow:inset -4px 0 5px #0c63a534}.tower-one{height:160px;width:104px;left:18px}.tower-two{height:215px;width:136px;left:135px}.tower-three{height:190px;width:122px;left:278px}.building-label{position:absolute;right:-12px;top:52px;background:#ffffffea;color:#19549c;border-radius:9px;padding:12px 15px;font-size:10px;font-weight:900;box-shadow:0 10px 28px #0c408848;letter-spacing:.4px}.building-label span{color:#32b988;font-size:8px;margin-right:4px}.panel{background:#fff;border:1px solid #e8eef5;border-radius:14px;box-shadow:0 9px 28px -26px #315175}.search-panel{padding:28px 32px 25px;margin-top:22px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px}.overline{color:#1972d0;font-weight:850;font-size:9px;letter-spacing:2.1px;margin-bottom:7px}.section-header h2,.results-heading h2{margin:0;font-size:19px;letter-spacing:-.6px;color:#192f4c}.tip{font-size:12px;color:#8da0b2}.form-grid{display:grid;gap:17px}.primary-grid{grid-template-columns:1.35fr .8fr 1fr 1fr}.secondary-grid{grid-template-columns:1.6fr .8fr .9fr 1fr;margin-top:19px}.field{min-width:0;display:flex;flex-direction:column;gap:8px}.field>span{font-size:12px;font-weight:750;color:#3d536d}.field small{font-size:10px;font-weight:450;color:#9aa9b9}.help{font-size:10px;text-decoration:none;color:#3278c8;margin-left:5px}.field input,.field select{height:44px;min-width:0;padding:0 13px;border:1px solid #dfe7ef;border-radius:8px;background:#fbfcfe;color:#26405d;font-size:13px;outline:none;transition:border .15s,box-shadow .15s}.field input:focus,.field select:focus{border-color:#4e9de6;box-shadow:0 0 0 3px #e5f1ff}.field input::placeholder{color:#9cabbc}.form-actions{display:flex;justify-content:space-between;align-items:center;gap:15px;border-top:1px solid #f0f3f7;padding-top:21px;margin-top:25px}.search-hint{color:#8d9cad;font-size:11px;line-height:1.5}.action-buttons{display:flex;gap:9px}.button{border:0;border-radius:8px;padding:12px 18px;font-size:12px;font-weight:800;white-space:nowrap;cursor:pointer;transition:background .15s,transform .15s}.button:active:not(:disabled){transform:translateY(1px)}.button:disabled{opacity:.45;cursor:not-allowed}.button.primary{background:#116ac9;color:white;box-shadow:0 5px 14px #116ac922}.button.primary:hover:not(:disabled){background:#0855a5}.button.secondary{background:#eff4fa;color:#4b6580}.button.secondary:hover:not(:disabled){background:#e3ebf5}.button-icon{font-size:17px;font-weight:600;vertical-align:-1px;margin-right:5px}.button.small{padding:11px 14px}.notification{margin-top:16px;border-radius:10px;padding:13px 16px;font-size:12px;line-height:1.7;background:#eaf4ff;border:1px solid #cae5ff;color:#1a5e9f}.notification.warning{background:#fff7e8;border-color:#ffe0a4;color:#8b5c13}.notification.error{background:#fff0ef;border-color:#ffc4c1;color:#a6332c}.dashboard{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:20px 0}.stat{background:#fff;border:1px solid #e8eef5;border-radius:12px;padding:20px 22px;min-height:124px}.stat.emphasis{background:#f3f8ff;border-color:#dbeaff}.stat-label{font-size:12px;font-weight:700;color:#718399}.stat-number{margin-top:12px;font-size:27px;font-weight:850;letter-spacing:-1px;color:#223f5e}.stat-number small{font-size:13px;font-weight:600;margin-left:3px;color:#56708c}.stat-foot{font-size:10px;color:#9baabb;margin-top:5px}.stat.emphasis .stat-number{color:#0d66c0}.info-tip{cursor:help;color:#8ca6bf}.results-panel{padding:26px 0 0;margin-bottom:20px;overflow:hidden}.results-heading{padding:0 30px 20px;display:flex;justify-content:space-between;align-items:center;gap:12px}.results-subtitle{margin:9px 0 0;font-size:11px;color:#899aab}.table-scroll{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:960px}thead{background:#f7f9fc}th{padding:16px 15px;text-align:left;color:#6c8199;font-size:11px;font-weight:750;white-space:nowrap;border-top:1px solid #eff2f6;border-bottom:1px solid #eff2f6}td{padding:16px 15px;font-size:12px;color:#344c65;border-bottom:1px solid #f1f3f7;white-space:nowrap}th:first-child,td:first-child{padding-left:30px}th:last-child,td:last-child{padding-right:30px}.numeric{text-align:right;font-variant-numeric:tabular-nums}tr:hover td{background:#fafcfe}.apt-title{font-size:12px;color:#223c59;font-weight:800}.apt-dong{font-size:11px;color:#96a4b5;margin-top:4px}.type-tag{display:inline-block;padding:5px 9px;font-size:10px;font-weight:750;border-radius:5px;background:#e8f1ff;color:#1969bc}.type-tag.wolse{background:#edf5e8;color:#508735}.empty-row td{height:231px;text-align:center;color:#72879d}.empty-row:hover td{background:white}.empty-icon{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;color:#7b9dc1;background:#f0f5fa;font-size:27px;margin:0 auto 12px}.empty-row strong{font-size:13px;color:#5c7289}.empty-row p{font-size:11px;color:#9eafc0;margin-top:8px}.result-footer{display:flex;justify-content:space-between;align-items:center;min-height:64px;padding:11px 30px;color:#8193a6;font-size:11px}.pagination{display:flex;align-items:center;gap:14px}.page-button{background:#fff;border:1px solid #e3eaf1;border-radius:7px;color:#51677e;padding:8px 11px;font-size:11px;cursor:pointer}.page-button:disabled{opacity:.35;cursor:not-allowed}#page-number{min-width:56px;text-align:center;color:#33516d;font-weight:700}.progress-area{margin:0 30px 19px}.progress-caption{display:flex;justify-content:space-between;color:#54728f;font-size:11px;margin-bottom:8px}.progress-track{height:5px;border-radius:5px;background:#e8f1fa;overflow:hidden}.progress-fill{height:100%;background:#2783da;transition:width .2s}.footer{font-size:11px;color:#91a1b2;line-height:1.9;margin:23px 3px 36px}.footer a{color:#668caf;text-decoration:none}.footer b{color:#6b7e93}
@media(max-width:1100px){.app-shell{padding:0 20px}.hero-art{right:5px;opacity:.48}.primary-grid,.secondary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.search-hint{max-width:300px}}@media(max-width:720px){.app-shell{padding:0 12px}.topbar{height:72px}.brand-name{font-size:13px}.brand-caption{font-size:9px}.source-link{font-size:10px}.brand-icon{height:37px;width:37px}.hero{padding:29px 24px;min-height:250px;border-radius:13px}.hero h1{font-size:27px}.hero-art{right:-220px;opacity:.22}.hero p{font-size:11px}.desktop-break{display:none}.hero-pills span{font-size:9px}.search-panel{padding:22px 17px;margin-top:13px}.section-header h2,.results-heading h2{font-size:17px}.tip{font-size:10px}.form-grid{gap:13px}.primary-grid,.secondary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field input,.field select{font-size:12px}.form-actions{flex-direction:column;align-items:stretch}.search-hint{max-width:none}.action-buttons{justify-content:flex-end}.dashboard{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:13px 0}.stat{padding:17px 14px;min-height:110px}.stat-number{font-size:22px}.stat-label{font-size:10px}.stat-foot{font-size:9px}.results-heading{padding:21px 15px 17px;align-items:start;flex-direction:column}.result-footer{padding:12px 15px;gap:12px;flex-direction:column;align-items:stretch}.pagination{justify-content:flex-end}.progress-area{margin:0 15px 16px}}@media(max-width:400px){.primary-grid,.secondary-grid{grid-template-columns:1fr}.hero{min-height:255px}.hero-pills{gap:4px}.hero h1{font-size:24px}.action-buttons .button{flex:1}}

/* v2: 이름으로 지역 선택 및 빠른 조회 기간 설정 */
.primary-grid{grid-template-columns:1fr 1.2fr .95fr 1.65fr}
.criteria-summary{min-height:44px;display:flex;align-items:center;padding:9px 13px;border:1px solid #cfe1f5;background:#f4f9ff;border-radius:8px;color:#155a9d;font-size:12px;line-height:1.55;font-weight:750;word-break:keep-all}
.manual-code-area{margin-top:14px;padding:13px 15px;background:#f7faff;border:1px solid #e0ebfa;border-radius:9px}
.manual-code-area .field{max-width:340px}
.manual-code-area p{font-size:11px;color:#7a8da1;margin:7px 0 0}
.custom-period-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:620px;margin-top:14px}
[hidden]{display:none !important}
@media(max-width:1100px){.primary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:400px){.primary-grid,.custom-period-grid{grid-template-columns:1fr}}

/* v3: base-address, markers, route comparison */
.map-panel{padding:26px 29px 23px;margin-bottom:20px}
.map-topbar{display:flex;align-items:start;justify-content:space-between;gap:16px}
.map-topbar h2{margin:0;font-size:19px;color:#192f4c;letter-spacing:-.4px}
.map-topbar p{font-size:12px;line-height:1.6;color:#7c90a5;margin:8px 0 0}
.map-info-badge{padding:8px 11px;background:#eaf3ff;color:#1766b1;border-radius:7px;font-size:10px;font-weight:800;white-space:nowrap}
.map-search-bar{display:grid;grid-template-columns:minmax(240px,1fr) auto auto;gap:9px;align-items:end;margin:23px 0 12px}
.map-search-bar .field input{background:#fff}
.map-search-bar .button{height:44px}
.map-feedback{font-size:11px;color:#47708e;background:#f3f8fe;border:1px solid #e0eaf6;border-radius:8px;padding:11px 12px;margin-bottom:17px;line-height:1.5}
.map-feedback.error{color:#9f3a30;background:#fff3f0;border-color:#f5d6d1}
.map-content{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(295px,1fr);gap:17px}
.map-stage{min-width:0}
.map-canvas{height:447px;background:#eaf1f7;border:1px solid #dbe6f2;border-radius:11px;overflow:hidden;position:relative}
.map-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:20px;gap:11px;background:radial-gradient(circle at 20% 30%,#eaf3fd 0,#eaf3fd88 15%,transparent 15.5%),linear-gradient(150deg,#eef6fc,#d8e8f6)}
.map-placeholder-icon{font-size:38px;color:#4e8fcc;background:white;border-radius:99px;width:69px;height:69px;display:grid;place-items:center;box-shadow:0 12px 30px #3876a822}
.map-placeholder strong{color:#47708d;font-size:14px}
.map-placeholder p{color:#8198ad;font-size:11px;margin:0}
.map-legend{display:flex;flex-wrap:wrap;gap:14px;color:#8c9eb2;font-size:10px;margin-top:11px;line-height:1.5}
.legend-dot{width:10px;height:10px;display:inline-block;border-radius:50%;margin-right:4px;vertical-align:-1px}.legend-dot.base{background:#1763c3}.legend-dot.home{background:#ed8d35}
.map-sidebar{background:#f9fbfe;border:1px solid #eaf0f7;border-radius:11px;padding:14px;min-width:0;display:flex;flex-direction:column;gap:12px;max-height:480px}
.sidebar-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#244967;font-size:13px}.sidebar-heading span{color:#90a0b1;font-size:11px}
.map-apt-list{flex:1;overflow-y:auto;min-height:65px;max-height:360px;display:flex;flex-direction:column;gap:6px}
.list-empty{font-size:12px;line-height:1.9;color:#9aabba;background:#fff;border:1px dashed #dce7f0;border-radius:9px;padding:30px 12px;text-align:center}
.map-apt-item{display:flex;align-items:center;gap:9px;border:1px solid #e4edf6;background:white;border-radius:8px;text-align:left;cursor:pointer;padding:12px 11px;width:100%;color:#243f5a}
.map-apt-item.active{border-color:#4387cd;background:#edf6ff;box-shadow:0 0 0 1px #a6cbf6}
.map-apt-item:hover{border-color:#91bbec}.apt-rank{min-width:22px;height:22px;display:grid;place-items:center;border-radius:6px;background:#f1f6fc;color:#6f91b4;font-size:11px;font-weight:800}
.apt-result-main{min-width:0;flex:1}.apt-result-name{display:block;font-size:12px;font-weight:800;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.apt-result-sub{color:#8b9eaf;font-size:10px;margin-top:4px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.apt-result-distance{color:#1169ba;font-size:12px;font-weight:800;white-space:nowrap}
.route-detail{background:white;border:1px solid #dceafb;border-radius:9px;padding:13px;flex-shrink:0}.route-title{display:flex;justify-content:space-between;align-items:center;gap:7px}.route-title strong{font-size:13px;max-width:76%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.route-title span{color:#6b8299;font-size:10px}.route-address{color:#7990a5;font-size:11px;line-height:1.5;margin:7px 0 12px}
.distance-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.distance-grid>div{border:1px solid #e8eef7;background:#f7fafe;border-radius:7px;padding:10px 7px;min-width:0}.distance-grid span{display:block;color:#8c9eb0;font-size:10px;white-space:nowrap}.distance-grid strong{display:block;font-size:15px;color:#165b9a;margin:8px 0 3px}.distance-grid small{font-size:9px;color:#8b9aaa;display:block;line-height:1.5;word-break:keep-all}
.route-switch{display:flex;gap:7px;margin:11px 0}.route-switch button{flex:1;padding:9px 7px}.route-switch button.active{background:#d7e9ff;color:#185999}.external-map-link{font-size:11px;color:#2471bd;text-decoration:none}
.map-footnote{margin:17px 0 0;font-size:11px;line-height:1.7;color:#94a3b3}
@media(max-width:900px){.map-content{grid-template-columns:1fr}.map-sidebar{max-height:none}.map-apt-list{max-height:215px}.map-canvas{height:370px}}
@media(max-width:620px){.map-panel{padding:19px 14px}.map-topbar{flex-direction:column;gap:7px}.map-search-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.map-search-bar .field{grid-column:span 2}.map-canvas{height:285px}.map-info-badge{display:none}.distance-grid strong{font-size:13px}}

/* v4: 10km radius boundary legend */
.legend-dot.radius{background:rgba(78,157,230,.16);border:2px solid #2779cf;width:12px;height:12px;vertical-align:-3px}
