@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
:root{font-family:'DM Sans','Noto Sans KR',sans-serif;color:#17243b;background:#f5f7fb;font-synthesis:none;text-rendering:optimizeLegibility;--navy:#10233f;--muted:#758197;--line:#e7ebf1;--blue:#2779df;--violet:#7d54c7;--red:#ed5b4b}
.legend-industrial{background:#d99b26;box-shadow:0 0 0 3px #faedcf}
.rankings{margin-top:17px;padding:22px;background:#fff;border:1px solid #e9edf3;border-radius:18px;box-shadow:0 10px 34px #1837630a}.rankings-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:15px}.rankings-heading>p{margin:0;color:var(--muted);font-size:11px}.ranking-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.ranking-card{min-width:0;padding:14px 12px 10px;border:1px solid var(--line);border-radius:13px;background:#fbfcfe}.ranking-card-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.ranking-card-heading h3{margin:0;color:var(--navy);font-size:13px}.ranking-card-heading>span{padding:4px 7px;border-radius:20px;background:#edf2fa;color:#72819a;font-size:9px;font-weight:700;letter-spacing:.06em}.ranking-list{display:grid;gap:2px}.rank-row{display:grid;grid-template-columns:23px minmax(0,1fr) 32px;align-items:center;gap:6px;width:100%;min-height:39px;padding:4px 2px;border:0;border-radius:7px;background:transparent;text-align:left;cursor:pointer}.rank-row:hover,.rank-row:focus-visible{background:#edf3fb;outline:none}.rank-number{color:#8793a5;font-size:10px;font-weight:700;text-align:center}.rank-main{display:grid;min-width:0;gap:4px}.rank-name{overflow:hidden;color:#33415a;font-size:10px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.rank-track{display:flex;overflow:hidden;width:100%;height:7px;border-radius:8px;background:#edf0f5}.rank-segment{display:block;height:100%;min-width:0}.rank-segment.elementary{background:#3688e8}.rank-segment.middle{background:#8a64d0}.rank-total{color:#233550;font-size:11px;font-weight:700;text-align:right}.ranking-loading{margin:10px 0;color:var(--muted);font-size:11px}.ranking-legend{display:flex;align-items:center;gap:15px;margin-top:13px;color:#68758a;font-size:10px}.ranking-legend>span{display:inline-flex;align-items:center;gap:6px}.ranking-legend i{display:inline-block;width:8px;height:8px;border-radius:50%}.ranking-legend-note{margin-left:auto;color:#8a95a6}
@media(max-width:850px){.ranking-grid{grid-template-columns:1fr}.ranking-card{padding:12px 14px 9px}.rank-row{grid-template-columns:28px minmax(0,1fr) 45px;min-height:42px}.rank-name{font-size:11px}.rank-total{font-size:12px}}
@media(max-width:640px){.rankings{padding:18px 13px 14px}.rankings-heading{display:block}.rankings-heading>p{margin-top:6px}.ranking-legend{flex-wrap:wrap;gap:10px}.ranking-legend-note{width:100%;margin:2px 0 0}}
.candidate-list{display:grid;gap:7px;margin-top:12px;padding:12px;border:1px solid #e8edf5;border-radius:12px;background:#f8fafe}.candidate-list[hidden]{display:none}.candidate-prompt{margin:0 0 2px;color:#46546b;font-size:12px;font-weight:700}.candidate-option{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:10px 12px;border:1px solid #e3e9f2;border-radius:9px;background:white;color:#1d2c44;text-align:left;font:inherit;cursor:pointer}.candidate-option:hover,.candidate-option:focus-visible{border-color:#7c9bd4;background:#f4f8ff;outline:none}.candidate-name{font-size:12px;font-weight:700}.candidate-meta{color:#8490a3;font-size:10px;white-space:nowrap}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 85% -10%,#e4edff 0,transparent 32rem),#f5f7fb}.page{width:min(1120px,calc(100% - 36px));margin:0 auto;padding:34px 0 30px}.topbar{display:flex;align-items:center;gap:14px;margin-bottom:27px}.brand-mark{display:grid;place-items:center;width:45px;height:45px;border-radius:14px;background:var(--navy);color:white;font-size:28px;box-shadow:0 8px 20px #10233f25}.eyebrow{margin:0 0 4px;color:#8490a3;font-size:10px;font-weight:700;letter-spacing:.16em}h1{font-size:22px;letter-spacing:-.04em;margin:0;color:var(--navy)}.search-panel,.map-card,.results{background:#fff;border:1px solid #e9edf3;border-radius:18px;box-shadow:0 10px 34px #1837630a}.search-panel{padding:20px 22px 15px;margin-bottom:17px}.search-panel label{display:block;margin-bottom:9px;font-weight:700;font-size:13px}.search-row{display:flex;gap:9px}.search-row input{min-width:0;flex:1;height:48px;padding:0 15px;border:1px solid #dce2eb;border-radius:11px;background:#fafbfd;font:inherit;font-size:14px;outline:none;transition:.15s}.search-row input:focus{border-color:#7799d7;box-shadow:0 0 0 3px #dce8ff}.search-row button{height:48px;padding:0 22px;border:0;border-radius:11px;background:var(--navy);color:#fff;font:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:.15s}.search-row button:hover{background:#1d3a64;transform:translateY(-1px)}.status{margin:10px 1px 0;color:var(--muted);font-size:12px}.status.error{color:#cb4035}.map-card{overflow:hidden}.map-heading{height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid var(--line);font-size:12px;font-weight:700}.live-dot{display:inline-block;width:7px;height:7px;margin-right:8px;border-radius:50%;background:#21b483;box-shadow:0 0 0 4px #e2f7ef}.map-hint{color:#8b95a6;font-size:11px;font-weight:400}#map{height:510px;background:#f3f7fc}.legend{display:flex;flex-wrap:wrap;gap:17px;padding:14px 19px;color:#5f6b7e;font-size:11px}.legend span{display:inline-flex;align-items:center;gap:7px}.legend i{display:inline-block;width:10px;height:10px;border-radius:50%}.legend-site{background:var(--red);box-shadow:0 0 0 3px #ffded9}.legend-elementary{background:var(--blue)}.legend-middle{background:var(--violet)}.legend-ring{width:13px!important;height:13px!important;background:transparent;border:1.5px solid #95a7c3}.results{margin-top:17px;padding:21px 22px 16px}.results-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:15px}h2{font-size:18px;margin:0;color:var(--navy);letter-spacing:-.035em}.results-heading>p{margin:0;color:var(--muted);font-size:11px}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px}table{width:100%;border-collapse:collapse;text-align:center;font-size:13px}thead{background:#f7f9fc;color:#778398;font-size:11px}th,td{padding:13px 15px;border-bottom:1px solid var(--line)}thead th:first-child,tbody th{text-align:left}tbody tr:last-child th,tbody tr:last-child td{border-bottom:0}tbody td{font-size:15px;font-weight:700;color:#233550}.school-chip{display:inline-flex;align-items:center;gap:7px;font-size:12px}.school-chip:before{content:'';width:8px;height:8px;border-radius:50%}.school-chip.elementary:before{background:var(--blue)}.school-chip.middle:before{background:var(--violet)}.method-note{margin:12px 1px 0;color:#8a95a6;font-size:10px}footer{padding:18px 3px 0;color:#9aa4b2;font-size:10px}.leaflet-container{font:12px 'DM Sans','Noto Sans KR',sans-serif}.leaflet-control-attribution{font-size:9px!important}.site-marker{width:24px;height:24px;border-radius:50%;background:#ed5b4b;border:3px solid white;box-shadow:0 2px 10px #74201450,0 0 0 5px #ed5b4b35}.school-marker{width:9px;height:9px;border-radius:50%;border:1.5px solid #fff;box-shadow:0 1px 3px #17243b66}.school-marker.elementary{background:#2779df}.school-marker.middle{background:#7d54c7}.site-popup{font-family:'Noto Sans KR',sans-serif}.site-popup strong{font-size:13px}.school-popup{font-family:'Noto Sans KR',sans-serif;line-height:1.6}.leaflet-interactive{transition:fill-opacity .2s}
@media(max-width:640px){.page{width:calc(100% - 22px);padding-top:20px}.topbar{margin-bottom:17px}.search-panel{padding:16px 14px 13px}.search-row{gap:7px}.search-row button{padding:0 13px;font-size:12px}.search-row input{font-size:12px;padding:0 10px}.map-heading{padding:0 13px}.map-hint{display:none}#map{height:420px}.legend{gap:11px;padding:12px 13px;font-size:10px}.results{padding:18px 13px 14px}.results-heading{display:block}.results-heading>p{margin-top:6px}th,td{padding:11px 8px;font-size:11px}tbody td{font-size:13px}.school-chip{font-size:11px}}
