@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
:root{--ink:#172724;--muted:#72807b;--green:#128d69;--green-dark:#087656;--mint:#e7f4ed;--line:#e4eae6;--paper:#f7f9f6;--white:#fff}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans','Noto Sans KR',sans-serif}button,input,select{font:inherit}button{cursor:pointer}a{color:var(--green-dark)}.topbar{height:66px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(32px,calc((100vw - 1320px)/2));gap:20px}.brand{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:600;letter-spacing:-.05em}.brand b{font-weight:800}.brand-mark{display:grid;place-items:center;width:32px;height:32px;background:var(--green);color:#fff;border-radius:9px;font-size:22px;line-height:1}.top-meta{font-size:12px;font-weight:700;color:#64726c;display:flex;align-items:center;gap:9px}.live-dot{width:7px;height:7px;background:#31bf81;border-radius:50%;box-shadow:0 0 0 4px #e8f7ee}.top-divider{height:14px;width:1px;background:#d9e0dc;margin:0 5px}main{max-width:1320px;margin:auto;padding:0 32px}.hero{height:248px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between}.hero-copy{position:relative;z-index:1}.eyebrow,.card-kicker{font-size:10px;font-weight:800;letter-spacing:.16em;color:var(--green)}.hero h1{font-size:34px;line-height:1.36;letter-spacing:-.065em;margin:11px 0 11px;font-weight:800}.hero h1 em{font-style:normal;color:var(--green-dark)}.hero p{margin:0;color:#66756f;font-size:13px}.hero-decoration{position:absolute;right:55px;top:-117px;width:420px;height:420px;background:radial-gradient(circle,#e2f3e8 0 14%,transparent 15%);border-radius:50%}.ring{position:absolute;border:1px solid #cfe9d9;border-radius:50%}.ring-a{inset:42px}.ring-b{inset:100px}.hero-pin{position:absolute;top:177px;left:187px;width:48px;height:48px;border-radius:16px;background:var(--green);color:#fff;display:grid;place-items:center;box-shadow:0 20px 35px #0f98644d;font-size:28px}.control-panel{position:relative;z-index:500;display:flex;align-items:end;gap:15px;background:#fff;border:1px solid var(--line);border-radius:15px;padding:18px;box-shadow:0 8px 28px #2548340d}.control{position:relative;min-width:190px;flex:1}.control-station{flex:2}.control label{display:block;font-size:11px;color:#62726a;font-weight:800;margin:0 0 8px}.control select,.search-wrap{width:100%;height:43px;border:1px solid #dce5df;background:#fff;border-radius:8px;color:var(--ink)}.control select{padding:0 14px;appearance:auto}.search-wrap{display:flex;align-items:center;padding:0 11px;gap:8px}.search-wrap span{font-size:22px;color:#8b9b92;line-height:1}.search-wrap input{border:0;outline:0;min-width:0;flex:1;font-size:13px}.search-wrap button{border:0;background:none;color:#88978e;font-size:19px}.control select:focus,.search-wrap:focus-within{border-color:var(--green);box-shadow:0 0 0 3px #22a8791a;outline:0}.download-btn{height:43px;padding:0 19px;border:0;border-radius:8px;background:var(--green);color:#fff;font-size:12px;font-weight:800;white-space:nowrap}.download-btn:hover{background:var(--green-dark)}.station-options{position:absolute;top:74px;left:0;right:0;max-height:330px;overflow:auto;background:#fff;border:1px solid var(--line);box-shadow:0 18px 35px #143b281d;border-radius:10px;padding:5px;z-index:1000}.station-option{width:100%;border:0;background:#fff;padding:10px 12px;text-align:left;border-radius:7px;display:flex;justify-content:space-between;gap:15px;color:var(--ink);font-size:12px}.station-option:hover,.station-option:focus{background:#eaf7ef}.station-option small{color:#89978f;white-space:nowrap}.error{margin-top:20px;padding:13px 16px;background:#fff3ee;color:#a44c25;border-radius:9px;font-size:13px}.selection-heading{display:flex;justify-content:space-between;align-items:end;margin:36px 0 19px}.selection-heading h2{margin:6px 0 3px;font-size:23px;letter-spacing:-.06em}.selection-heading p{margin:0;color:var(--muted);font-size:12px}.date-badge{padding:7px 10px;color:#4e7561;background:#e5f2e9;border-radius:20px;font-size:11px;font-weight:800}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:19px 21px;min-height:115px;display:flex;flex-direction:column}.stat span{font-size:11px;font-weight:700;color:#69796f}.stat strong{font-size:27px;line-height:1.3;letter-spacing:-.06em;margin:7px 0 1px;color:#0b7654;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat small{font-size:10px;color:#98a49d}.main-grid{display:grid;grid-template-columns:1.38fr 1fr;gap:16px;margin-top:18px}.lower-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}.card{min-width:0;background:#fff;border:1px solid var(--line);border-radius:13px;overflow:hidden}.card-head{display:flex;justify-content:space-between;align-items:center;padding:21px 22px 17px;gap:10px}.card h3{font-size:16px;letter-spacing:-.045em;margin:4px 0 0}.legend,.rank-sub{font-size:10px;color:#7d8b82;white-space:nowrap}.legend{display:flex;align-items:center;gap:6px}.legend-origin,.legend-dest{width:8px;height:8px;display:inline-block;border-radius:50%;background:#153a36}.legend-dest{background:#19a570;margin-left:8px}.segmented{display:flex;background:#edf3ee;border-radius:7px;padding:3px}.segmented button{border:0;background:none;color:#75857b;padding:6px 10px;border-radius:5px;font-size:10px;font-weight:800}.segmented button.active{background:#fff;color:#157452;box-shadow:0 1px 4px #0001}#map{height:413px;background:#eaf0e8}.map-note{padding:11px 20px 13px;margin:0;font-size:10px;color:#849187}.bar-list{padding:0 22px;min-height:390px}.bar-row{margin-bottom:17px}.bar-label{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;font-weight:700;margin-bottom:6px}.bar-label b{font-size:11px;color:#46574c}.bar-label span{font-size:10px;font-weight:500;color:#91a097;margin-left:4px}.bar-track{height:8px;background:#edf3ef;border-radius:20px;overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,#19a978,#59c991);border-radius:20px}.bar-row:first-child .bar-fill{background:#0d825d}.card-foot{border-top:1px solid var(--line);padding:12px 22px;color:#849187;font-size:10px}.hours-card,.routes-card{min-height:300px}.hour-chart{display:flex;align-items:end;gap:5px;height:173px;margin:8px 24px 0;padding-bottom:19px;border-bottom:1px solid var(--line)}.hour-col{position:relative;flex:1;height:100%;display:flex;align-items:end}.hour-bar{width:100%;min-height:2px;background:#a9dfc4;border-radius:4px 4px 0 0;transition:height .2s}.hour-col.peak .hour-bar{background:var(--green)}.hour-col>span{position:absolute;bottom:-18px;left:50%;transform:translateX(-50%);font-size:9px;color:#9baa9e}.hour-col[title]{cursor:help}.muted{color:#9aa59e;font-size:10px;margin:27px 24px 21px}.route-rows{padding:0 21px 15px}.route-row{display:flex;align-items:center;gap:10px;border-top:1px solid #f0f3f0;padding:8px 0;font-size:11px}.route-row .rank{color:#a3b1a7;font-weight:800;width:18px}.route-row .rname{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.route-row .rregion{color:#97a49b;font-size:10px;white-space:nowrap}.route-row strong{color:#217859;font-size:11px;width:48px;text-align:right}footer{padding:28px 0 36px;color:#98a49a;font-size:10px;line-height:1.9}.leaflet-container{font-family:inherit}.leaflet-popup-content{font-size:12px;line-height:1.6}.leaflet-popup-content b{color:#0b7654}
@media(max-width:900px){.hero-decoration{right:-140px}.control-panel{flex-wrap:wrap}.control-station{flex-basis:100%}.main-grid,.lower-grid{grid-template-columns:1fr}.bar-list{min-height:auto}.district-card{min-height:400px}}@media(max-width:620px){.topbar{padding:0 18px}.top-meta{display:none}main{padding:0 16px}.hero{height:220px}.hero h1{font-size:26px}.hero p{font-size:11px;max-width:270px}.hero-decoration{right:-230px}.control-panel{gap:10px;padding:14px}.control{min-width:0;flex-basis:calc(50% - 5px)}.download-btn{flex:1}.stats{grid-template-columns:repeat(2,1fr);gap:9px}.stat{padding:15px;min-height:102px}.stat strong{font-size:22px}.selection-heading{margin-top:25px}.selection-heading h2{font-size:19px}.date-badge{font-size:9px}.card-head{padding:17px}.bar-list{padding:0 17px}#map{height:350px}}
.direction-control{width:100%;display:flex;align-items:center;gap:18px;padding:0 0 16px;border-bottom:1px solid var(--line);margin-bottom:1px}.direction-control>span{font-size:11px;color:#62726a;font-weight:800}.direction-switch{display:flex;background:#edf3ee;border-radius:9px;padding:4px;gap:3px}.direction-switch button{border:0;border-radius:7px;background:transparent;color:#708178;padding:9px 15px;font-size:12px;font-weight:800}.direction-switch button span{font-size:15px;margin-left:5px}.direction-switch button.active{background:var(--green);color:#fff;box-shadow:0 3px 8px #08765330}.direction-switch button:focus-visible{outline:2px solid var(--green);outline-offset:2px}
@media(max-width:620px){.direction-control{gap:8px;justify-content:space-between}.direction-switch button{font-size:11px;padding:8px 9px}}
#map path[data-station-id]{cursor:pointer}
#map path[data-search-station-id]{cursor:pointer}
.availability-card{margin-top:16px;padding-bottom:14px}
.availability-date{display:flex;align-items:center;gap:9px;color:#66756f;font-size:11px;font-weight:700;white-space:nowrap}
.weekday-panel{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:12px;padding:13px 17px;background:#fff;border:1px solid var(--line);border-radius:12px}
.seo-guide{margin-top:28px;padding:26px 30px;background:#fff;border:1px solid var(--line);border-radius:13px;color:#3d5448}.seo-guide h2{margin:0 0 12px;color:var(--ink);font-size:19px;letter-spacing:-.04em}.seo-guide h3{margin:0 0 7px;color:#215f45;font-size:14px}.seo-guide p{margin:0 0 12px;font-size:12px;line-height:1.8}.seo-guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:18px 0 5px}.seo-guide-grid>div{padding:16px;border-radius:9px;background:#f4f9f5}
.route-row[type=button]{width:100%;border-left:0;border-right:0;border-bottom:0;background:#fff;text-align:left;cursor:pointer;color:inherit}.route-row[type=button]:hover,.route-row[type=button]:focus-visible{background:#edf8f1;outline:0}.route-row[type=button]:focus-visible{box-shadow:inset 0 0 0 2px var(--green)}
.weekday-panel>div:first-child{display:flex;flex-direction:column;gap:3px;white-space:nowrap}.weekday-panel strong{font-size:12px;color:#275e46}.weekday-panel span{font-size:10px;color:#819087}.weekday-buttons{display:flex;gap:5px;flex-wrap:wrap}.weekday-buttons button{min-width:43px;height:36px;border:1px solid #dce5df;border-radius:8px;background:#fff;color:#557064;font-size:12px;font-weight:800}.weekday-buttons button small{display:inline-block;margin-left:3px;font-size:9px;color:#8a9b90}.weekday-buttons button.active{background:var(--green);border-color:var(--green);color:#fff}.weekday-buttons button.active small{color:#e5f9ed}.weekday-buttons button:disabled{opacity:.35;cursor:not-allowed}
.availability-date select{height:36px;border:1px solid var(--line);border-radius:7px;background:#fff;padding:0 9px;color:var(--ink)}
.availability-summary{margin:0 22px;color:#536d5c;font-size:12px;font-weight:700}
.availability-chart{height:210px;margin:13px 22px 0;padding:18px 0 24px;display:flex;align-items:flex-end;gap:6px;border-bottom:1px solid var(--line)}
.availability-col{position:relative;min-width:0;flex:1;height:100%;display:flex;align-items:flex-end;justify-content:center;border:0;background:none;padding:0;cursor:pointer}
.availability-col:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.availability-bar{width:100%;max-width:30px;min-height:3px;background:linear-gradient(180deg,#37b888,#a2dfbc);border-radius:5px 5px 0 0}
.availability-col.missing .availability-bar{min-height:0}
.availability-hour{position:absolute;bottom:-20px;left:50%;transform:translateX(-50%);font-size:9px;color:#8c9d91;white-space:nowrap}
.availability-empty{width:100%;align-self:center;text-align:center;color:#87958b;font-size:12px}
.availability-detail{margin:12px 22px 0;color:#0d825d;font-size:13px;font-weight:800;min-height:18px}
.availability-note{margin:12px 22px 4px;color:#849187;font-size:11px;line-height:1.6}
@media(max-width:620px){.availability-card .card-head{align-items:flex-start}.availability-date{margin-top:7px}.availability-chart{gap:3px;margin-left:17px;margin-right:17px}.availability-hour{font-size:8px}.availability-summary,.availability-note{margin-left:17px;margin-right:17px}}
@media(max-width:620px){.weekday-panel{display:block;padding:12px}.weekday-panel>div:first-child{margin-bottom:10px}.weekday-buttons{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:3px}.weekday-buttons button{min-width:0;width:100%;padding:0;font-size:11px}.weekday-buttons button small{display:none}}
@media(max-width:620px){.seo-guide{padding:20px}.seo-guide-grid{grid-template-columns:1fr;gap:9px}}
.legend-dest.search-result{background:#ffad47;box-shadow:0 0 0 1px #a54b10}
.map-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}
.map-actions>button{min-height:38px;border:1px solid #cde5d5;border-radius:7px;background:#edf8f1;color:#176b4d;font-size:11px;font-weight:800;padding:8px 10px;white-space:nowrap}
.map-actions>button:hover,.map-actions>button:focus-visible{background:#d9f0e1;outline:2px solid #84cca4;outline-offset:1px}
.map-actions>button:disabled{opacity:.5;cursor:wait}
.control-region{min-width:170px}
.search-wrap input:disabled{color:#91a29a;cursor:wait}
@media(max-width:900px),(hover:none) and (pointer:coarse){.search-wrap input{font-size:16px}}
@media(max-width:620px){.map-card .card-head{align-items:flex-start;flex-direction:column}.map-actions{justify-content:space-between;width:100%}.map-actions>button{min-height:44px}.control-region{min-width:0}}
.station-options-head{position:sticky;top:-5px;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;background:#f2f7f3;border-bottom:1px solid var(--line);color:#5b7164;font-size:11px;font-weight:700}
.station-options-head button{border:0;background:none;color:#a54b10;font-size:11px;font-weight:800;white-space:nowrap}
#map{width:100%;max-width:100%;overflow:hidden;touch-action:none;overscroll-behavior:contain}
html,body,.card,.station-options{touch-action:manipulation}
