html,body,#root{width:100%;height:100%;margin:0;padding:0;overflow:hidden}body{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Apple SD Gothic Neo,sans-serif}:root{--bg:#f6f5f0;--ink:#2b2f33;--ink-soft:#6c7079;--line:#dcd7cb;--accent:#d1495b;--accent-soft:#ef8f6f;--chip:#fff;--chip-active:#2b4b5a;--card:#fff;--card-shadow:0 1px 2px #1e28320a, 0 8px 24px #1e283214;--tooltip-shadow:0 2px 4px #1e283214, 0 12px 28px #1e28322e, 0 0 0 1px #1e28320d}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Apple SD Gothic Neo,sans-serif;font-size:14px;overflow:hidden}.app{height:var(--app-h,100vh);grid-template-rows:auto 1fr auto;width:100vw;display:grid;overflow:hidden}.filter-bar{-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);z-index:10;background:#ffffffc7;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;display:flex}.filter-bar .title{letter-spacing:-.01em;color:var(--ink);white-space:nowrap;font-size:16px;font-weight:700}.filter-bar .title .title-sub{color:var(--ink-soft);letter-spacing:0;margin-left:8px;font-size:11.5px;font-weight:500}.filter-bar .levels{gap:6px;display:flex}.chip{border:1px solid var(--line);background:var(--chip);color:var(--ink-soft);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:13px;transition:background .15s,color .15s,border-color .15s}.chip:hover{border-color:var(--chip-active)}.chip.active{background:var(--chip-active);color:#fff;border-color:var(--chip-active)}.filter-bar .search{flex:0 300px;min-width:220px;margin-left:auto;position:relative}.filter-bar .search input{border:1px solid var(--line);background:#fff;border-radius:10px;outline:none;width:100%;padding:8px 32px 8px 12px;font-size:13px;transition:border-color .15s}.filter-bar .search input:focus{border-color:var(--chip-active)}.filter-bar .search .clear{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;width:22px;height:22px;font-size:18px;line-height:1;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.suggest{border:1px solid var(--line);z-index:20;max-height:280px;box-shadow:var(--card-shadow);background:#fff;border-radius:10px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto}.suggest li{cursor:pointer;border-radius:6px;padding:7px 10px;font-size:13px}.suggest li:hover{background:#f0efe8}.globe-wrap{background:radial-gradient(40% 8% at 50% 88%,#1e2d3c2e 0%,#1e2d3c0d 45%,#0000 75%),radial-gradient(circle,#fff 0%,#f4f1ea 70%,#f6f5f0 100%);min-height:0;position:relative;overflow:hidden}.globe-wrap canvas{display:block;width:100%!important;height:100%!important}.points-overlay{pointer-events:none;z-index:5;position:absolute;inset:0}.points-overlay g{pointer-events:auto}.points-overlay{touch-action:none}.dest-label{fill:#2b2f33;dominant-baseline:middle;-webkit-user-select:none;user-select:none;font-size:12px;font-weight:600}.dest-label-stroke{stroke:#ffffffeb;stroke-width:3px;stroke-linejoin:round;paint-order:stroke}.school-label{fill:#2b2f33;dominant-baseline:middle;-webkit-user-select:none;user-select:none;font-size:11px;font-weight:600}.school-label-stroke{stroke:#ffffffeb;stroke-width:3px;stroke-linejoin:round;paint-order:stroke}.legend{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--card-shadow);pointer-events:none;background:#ffffffe6;border-radius:10px;min-width:180px;padding:8px 12px 10px;position:absolute;bottom:14px;left:14px}.legend-label{color:var(--ink-soft);margin-bottom:4px;font-size:11px}.legend-bar{background:linear-gradient(90deg,#4cc9c0 0%,#8ad1a8 25%,#f2d388 50%,#ef8f6f 75%,#d1495b 100%);border-radius:999px;width:100%;height:8px}.legend-ticks{color:var(--ink-soft);justify-content:space-between;margin-top:3px;font-size:10px;display:flex}.point-label{white-space:nowrap;color:#2b2f33;-webkit-user-select:none;user-select:none;background:#ffffffeb;border:1px solid #1e283214;border-radius:6px;padding:2px 6px;font-size:11px;font-weight:600;transform:translate(10px);box-shadow:0 2px 6px #1e28321f}.school-label{color:#2b4b5a}.tooltip-card{min-width:240px;max-width:320px;box-shadow:var(--tooltip-shadow);color:var(--ink);pointer-events:none;-webkit-user-select:none;user-select:none;background:#fffffff7;border-radius:12px;padding:10px 12px;font-size:12px;transform:translate(-50%,14px)}.tooltip-header{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.tooltip-school{font-size:13px;font-weight:700}.tooltip-meta{color:var(--ink-soft);white-space:nowrap;font-size:11px}.tooltip-trips{border-collapse:collapse;width:100%}.tooltip-trips th,.tooltip-trips td{text-align:right;padding:2px 6px;font-size:11.5px}.tooltip-trips th{color:var(--ink-soft);border-bottom:1px solid var(--line);padding-bottom:4px;font-size:10.5px;font-weight:500}.tooltip-trips th.grade,.tooltip-trips td.grade{color:var(--ink-soft);text-align:left;white-space:nowrap;width:42px}.tooltip-trips th.dest,.tooltip-trips td.dest{text-align:left;white-space:nowrap}.tooltip-trips td.cost{font-variant-numeric:tabular-nums;color:var(--accent);font-weight:600}.tooltip-trips th.cost,.tooltip-trips th.part{font-variant-numeric:tabular-nums}.tooltip-trips td.part{font-variant-numeric:tabular-nums;color:var(--ink-soft)}.tooltip-trips th.part,.tooltip-trips td.part{width:44px}.panels{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);touch-action:pan-y;background:#ffffffd9;flex-direction:column;display:flex;position:relative;overflow:hidden}.panels-handle{cursor:ns-resize;touch-action:none;-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;height:16px;display:flex}.panels-handle-grip{background:var(--line);border-radius:2px;width:36px;height:4px;transition:background .12s}.panels-handle:hover .panels-handle-grip,.panels-handle:active .panels-handle-grip{background:var(--ink-soft)}.panels-body{min-height:0;padding:0 14px calc(14px + env(safe-area-inset-bottom));flex:auto;grid-template-columns:1fr 1fr;gap:10px;display:grid;overflow:hidden}.distribution,.ranking{background:var(--card);box-shadow:var(--card-shadow);border-radius:12px;flex-direction:column;min-height:0;padding:10px 12px;display:flex;overflow:hidden}.distribution{align-self:stretch;width:100%;height:auto}.panels-left{flex-direction:column;gap:10px;min-width:0;min-height:0;display:flex}.info-card{background:var(--card);box-shadow:var(--card-shadow);color:var(--ink-soft);border-radius:12px;margin-top:auto;padding:12px 14px;font-size:10.4px;line-height:1.55}.info-card .info-line{margin:3px 0}.info-card a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:2px}.info-card a:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.info-star{color:var(--accent);font-weight:700}.mod-star{color:var(--accent);margin-left:2px;font-size:.85em;font-weight:700}.info-wrap{align-items:center;display:flex;position:relative}.info-btn{border:1px solid var(--line);width:26px;height:26px;color:var(--ink-soft);cursor:pointer;background:#fff;border-radius:999px;justify-content:center;align-items:center;font-family:serif;font-size:14px;font-style:italic;font-weight:700;line-height:1;display:inline-flex}.info-btn:hover{border-color:var(--ink-soft);color:var(--ink)}.info-backdrop{-webkit-backdrop-filter:blur(2px);z-index:100;background:#141c2473;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.info-modal{color:var(--ink);background:#fff;border-radius:14px;width:min(420px,100vw - 40px);max-height:calc(100vh - 40px);padding:18px 20px 16px;font-size:12px;line-height:1.6;position:relative;overflow:auto;box-shadow:0 4px 12px #141c2433,0 24px 48px #141c2447}.info-modal .info-line{margin:6px 0}.info-modal a{color:var(--ink);text-underline-offset:2px;text-decoration:underline}.info-close{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;width:28px;height:28px;font-size:22px;line-height:1;position:absolute;top:6px;right:10px}.info-close:hover{color:var(--ink)}@media (width>=761px){.info-wrap{display:none}}@media (width<=760px){.info-card{display:none}.distribution{padding:4px 8px 2px}}.ranking-scroll{flex:auto;min-height:0;overflow:hidden auto}.ranking-fixed{border-collapse:collapse;flex-shrink:0;width:100%}.dist-title,.ranking-title{margin-bottom:6px;font-size:13px;font-weight:700}.ranking-title .count{color:var(--ink-soft);margin-left:4px;font-size:11.5px;font-weight:500}.dist-svg{width:100%;height:auto;display:block}.empty{text-align:center;color:var(--ink-soft);padding:20px 0;font-size:12px}.ranking table{border-collapse:collapse;width:100%;font-size:12px}.ranking th{text-align:left;color:var(--ink-soft);border-bottom:1px solid var(--line);background:var(--card);z-index:1;padding:4px 6px;font-size:11px;font-weight:500;position:sticky;top:0}.ranking td{vertical-align:middle;border-bottom:1px dashed #ebe7db;padding:5px 6px}.ranking tr{cursor:pointer;transition:background .12s}.ranking tr:hover,.ranking tr.active{background:#f6f2e5}.ranking td.rank{width:42px;color:var(--ink-soft);text-align:center;font-size:11px;font-weight:700;line-height:1.2}.ranking td.rank .rank-label{color:inherit;letter-spacing:.02em;font-size:10px;font-weight:500}.ranking td.rank .rank-sub{color:inherit;font-size:11px;font-weight:700}.ranking tr.top td.rank{color:var(--accent)}.ranking td.school .name{font-weight:600}.ranking td.school .sub{color:var(--ink-soft);font-size:10.5px}.ranking td.school .sub .type-badge{margin-right:4px;font-weight:700}.ranking td.school .sub .type-사립{color:#d1495b}.ranking td.school .sub .type-공립{color:#1e88e5}.ranking td.school .sub .type-국립{color:#1a237e}.ranking td.cost{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;font-weight:600}.ranking td.part{font-variant-numeric:tabular-nums;text-align:right;color:var(--ink-soft);white-space:nowrap;width:46px}.ranking td.absent,.ranking th:last-child{font-variant-numeric:tabular-nums;text-align:right;color:var(--ink-soft);white-space:nowrap;width:48px;font-size:10.5px}.ranking tr.low td.rank{color:#4cc9c0}.ranking tr.median td.rank{color:var(--ink-soft)}@media (width<=760px){.filter-bar{gap:4px;padding:6px 8px}.filter-bar .title{width:100%;font-size:14px}.filter-bar .levels{flex-shrink:0;gap:3px}.filter-bar .search{flex:1 1 0;min-width:0;margin-left:0}.panels-body{padding:0 8px calc(8px + env(safe-area-inset-bottom));grid-template-rows:auto 1fr;grid-template-columns:1fr}.legend{min-width:150px;padding:6px 10px 8px;bottom:10px;left:10px}.tooltip-card{width:max-content;min-width:220px;max-width:calc(100vw - 24px);transform:translate(-50%,12px)}.chip{padding:5px 10px;font-size:12px}}
