*{box-sizing:border-box;padding:0;margin:0}body,html{max-width:100vw;overflow:hidden;font-family:Pretendard,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;background:#f8f9fa;color:#333;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}.app{height:100vh;display:flex;flex-direction:column}.header{min-height:72px;background:#fff;border-bottom:1px solid #e9ecef;display:flex;align-items:center;justify-content:space-between;padding:14px 24px;gap:24px}.header,.header-left{flex-shrink:0}.brand-logo{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.logo-img{height:34px;width:auto;display:block}.search-box{position:relative;width:260px}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:#adb5bd}.search-input{width:100%;height:40px;padding:0 16px 0 40px;border:1px solid #e9ecef;border-radius:8px;font-size:14px;font-family:inherit;background:#f8f9fa;transition:all .2s}.search-input:focus{outline:none;border-color:#3182f6;background:#fff;box-shadow:0 0 0 3px rgba(49,130,246,.1)}.search-input::placeholder{color:#adb5bd}.header-right{flex-shrink:0;display:flex;align-items:center;gap:12px}.report-btn{padding:7px 14px;background:#3182f6;color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.report-btn:hover{background:#1b64da}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal{background:#fff;border-radius:16px;padding:24px;width:100%;max-width:440px;box-shadow:0 20px 60px rgba(0,0,0,.2)}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.modal-header h2{font-size:18px;font-weight:700;color:#1e293b}.modal-close{background:none;border:none;font-size:16px;color:#9ca3af;cursor:pointer;padding:4px;line-height:1}.modal-close:hover{color:#374151}.modal-desc{font-size:13px;color:#868e96;margin-bottom:14px;line-height:1.5}.modal-input,.modal-textarea{width:100%;border:1px solid #dee2e6;border-radius:10px;padding:12px;font-size:14px;font-family:inherit;color:#212529;margin-bottom:10px;resize:vertical}.modal-input:focus,.modal-textarea:focus{outline:none;border-color:#3182f6}.modal-error{font-size:13px;color:#dc2626;margin-bottom:10px}.modal-submit{width:100%;padding:12px;background:#3182f6;color:#fff;border:none;border-radius:10px;font-size:15px;font-weight:700;cursor:pointer;transition:background .15s}.modal-submit:hover:not(:disabled){background:#1b64da}.modal-submit:disabled{background:#adb5bd;cursor:not-allowed}.modal-done{text-align:center}.modal-done p{font-size:15px;color:#212529;margin:16px 0 20px}.header-stat{font-size:13px;color:#868e96;font-weight:500}.main-container{flex:1 1;display:flex;overflow:hidden}.sidebar{width:380px;border-right:1px solid #e9ecef}.filters,.sidebar{background:#fff;display:flex;flex-direction:column;flex-shrink:0}.filters{padding:14px 16px;border-bottom:1px solid #e9ecef;gap:12px}.filter-group{display:flex;align-items:center;gap:10px}.filter-label{font-size:12px;font-weight:600;color:#868e96;min-width:42px;flex-shrink:0}.filter-buttons{display:flex;gap:6px;flex-wrap:wrap}.filter-btn{padding:6px 12px;font-size:13px;font-weight:500;font-family:inherit;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:20px;cursor:pointer;transition:all .15s}.filter-btn:hover{border-color:#adb5bd;background:#f8f9fa}.filter-btn.active{background:#495057;border-color:#495057;color:#fff;font-weight:700}.filter-btn-초등학교{border-color:#4ade80;color:#16a34a}.filter-btn-초등학교:hover{background:#f0fdf4;border-color:#22c55e}.filter-btn-초등학교.active{background:#22c55e;border-color:#22c55e;color:#fff;font-weight:700}.filter-btn-중학교{border-color:#fbbf24;color:#b45309}.filter-btn-중학교:hover{background:#fefce8;border-color:#eab308}.filter-btn-중학교.active{background:#eab308;border-color:#eab308;color:#fff;font-weight:700}.filter-btn-고등학교{border-color:#f87171;color:#dc2626}.filter-btn-고등학교:hover{background:#fff1f2;border-color:#ef4444}.filter-btn-고등학교.active{background:#ef4444;border-color:#ef4444;color:#fff;font-weight:700}.filter-btn-국제학교{border-color:#a78bfa;color:#7c3aed}.filter-btn-국제학교:hover{background:#f5f3ff;border-color:#8b5cf6}.filter-btn-국제학교.active{background:#8b5cf6;border-color:#8b5cf6;color:#fff;font-weight:700}.filter-btn-인증학교{border-color:#4ade80;color:#16a34a}.filter-btn-인증학교:hover{background:#f0fdf4;border-color:#22c55e}.filter-btn-인증학교.active{background:#16a34a;border-color:#16a34a;color:#fff;font-weight:700}.filter-btn-후보학교{border-color:#60a5fa;color:#2563eb}.filter-btn-후보학교:hover{background:#eff6ff;border-color:#3b82f6}.filter-btn-후보학교.active{background:#2563eb;border-color:#2563eb;color:#fff;font-weight:700}.filter-btn-관심학교{border-color:#fbbf24;color:#b45309}.filter-btn-관심학교:hover{background:#fefce8;border-color:#f59e0b}.filter-btn-관심학교.active{background:#f59e0b;border-color:#f59e0b;color:#fff;font-weight:700}.sidebar-footer{padding:10px 16px;border-top:1px solid #e9ecef;background:#f8f9fa;font-size:11px;line-height:1.5;color:#868e96}.sidebar-footer p{margin:0}.sidebar-footer-note{margin-top:2px!important;color:#adb5bd}.error-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:12px;text-align:center;padding:24px}.error-page h1{font-size:24px;font-weight:700;color:#212529}.error-page p{font-size:14px;color:#868e96}.error-page a,.error-page button{margin-top:8px;padding:10px 20px;background:#3182f6;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none}.school-list{flex:1 1;overflow-y:auto;padding:0}.school-list::-webkit-scrollbar{width:6px}.school-list::-webkit-scrollbar-track{background:transparent}.school-list::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.school-list::-webkit-scrollbar-thumb:hover{background:#adb5bd}.region-group{border-bottom:1px solid #f1f3f5}.region-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#f8f9fa;position:-webkit-sticky;position:sticky;top:0;z-index:1}.region-name{font-size:12px;font-weight:600;color:#868e96;text-transform:uppercase;letter-spacing:.3px}.region-count{font-size:11px;font-weight:600;color:#adb5bd;background:#e9ecef;padding:2px 6px;border-radius:4px}.school-card{padding:14px 16px;border-bottom:1px solid #f1f3f5;cursor:pointer;transition:background .15s}.school-card:hover{background:#f8f9fa}.school-card.active{background:#f0f7ff;border-left:3px solid #3182f6}.school-card-main{margin-bottom:8px}.school-name{font-size:15px;font-weight:600;color:#212529;margin-bottom:4px;letter-spacing:-.3px}.school-address{font-size:12px;color:#868e96;line-height:1.4;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.school-card-bottom{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:2px}.school-card-tags{display:flex;gap:6px;flex-wrap:wrap}.homepage-btn{flex-shrink:0;display:inline-flex;align-items:center;gap:3px;padding:3px 8px;background:#3b82f6;color:#fff;border-radius:4px;font-size:11px;font-weight:500;text-decoration:none;white-space:nowrap;transition:background .15s}.homepage-btn:hover{background:#2563eb}.tag{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;color:#fff;border:1.5px solid transparent}.tag-level{background:#6b7280;border-color:#6b7280}.tag-초등학교{background:#22c55e;border-color:#22c55e}.tag-중학교{background:#eab308;border-color:#eab308}.tag-고등학교{background:#ef4444;border-color:#ef4444}.tag-국제학교{background:#8b5cf6;border-color:#8b5cf6}.tag-stage{background:#6b7280;border-color:#6b7280}.tag-인증학교{background:#16a34a;border-color:#16a34a}.tag-후보학교{background:#2563eb;border-color:#2563eb}.tag-관심학교{background:#f59e0b;border-color:#f59e0b}.no-results{padding:60px 20px;text-align:center;color:#adb5bd;font-size:14px}.map-area{flex:1 1;position:relative;background:#e9ecef}.map-container{width:100%;height:100%}.map-error,.map-loading{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#f8f9fa;color:#868e96;font-size:14px}.map-error{color:#e03131}.map-legend{position:absolute;bottom:24px;right:24px;background:#fff;padding:14px 16px;border-radius:10px;box-shadow:0 2px 12px rgba(0,0,0,.1);z-index:10;font-size:12px}.legend-title{font-weight:600;color:#495057;margin-bottom:10px;font-size:12px}.legend-item{display:flex;align-items:center;gap:8px;margin-bottom:6px;color:#495057}.legend-item:last-child{margin-bottom:0}.legend-marker{width:12px;height:12px;border-radius:50%}.legend-star{color:#fab005;font-size:14px}@media (max-width:768px){.header{padding:0 16px;gap:12px}.search-box{width:150px}.header-stat{display:none}.main-container{flex-direction:column}.sidebar{width:100%;height:50%;border-right:none;border-bottom:1px solid #e9ecef;order:2}.map-area{height:50%;order:1}.filters{padding:10px 12px;gap:8px}.filter-group{gap:8px}.filter-label{min-width:36px;font-size:11px}.filter-btn{padding:5px 10px;font-size:12px}.map-legend{bottom:12px;right:12px;padding:10px 12px}}