:root{--blue:#1976f3;--dark-blue:#0d5fd4;--text:#10203f;--muted:#73809a;--line:#e5ebf5;--bg:#f5f8fc;--urgent:#fa4444;--shadow:0 14px 34px rgba(28,61,108,.08);font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",sans-serif;color:var(--text);background:var(--bg)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;overscroll-behavior-y:none}body{background:#e9eef6}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}a{color:var(--blue);text-decoration:none}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0);overflow:hidden;white-space:nowrap}
.app-shell{max-width:520px;min-height:100dvh;margin:auto;background:var(--bg);padding-bottom:calc(76px + env(safe-area-inset-bottom));box-shadow:0 0 34px #142b4b15;position:relative}
.hero{height:270px;position:relative;background:#cfe6ff url('assets/header.png') center center/cover no-repeat;overflow:hidden}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#ffffff5e 0%,#ffffff04 65%,#0b63d811)}
.hero-bar{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;padding:18px 13px 0 20px}.brand{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:900;letter-spacing:-.6px;color:#123b91}.brand-symbol{width:36px;height:36px;background:var(--blue);color:white;border-radius:12px;display:grid;place-items:center;font-size:23px}.hero-actions{display:flex;align-items:center;gap:3px}.region-pill{background:#ffffffe8;color:var(--dark-blue);font-size:12px;padding:6px 12px;border-radius:40px;font-weight:900;border:1px solid white}.icon-button{width:43px;height:43px;border:0;background:transparent;color:#102b62;font-size:27px}.hero-copy{position:relative;z-index:1;margin:36px 112px 0 20px}.hero-copy h1{font-size:29px;line-height:1.22;font-weight:900;letter-spacing:-1.1px;margin:0;color:#071b4c;white-space:nowrap}.hero-copy p{margin:12px 0 0;font-size:12px;line-height:1.5;font-weight:600;color:#50617e;max-width:255px}
.search-wrap{height:66px;padding:0 10px}.search-card{height:72px;transform:translateY(-34px);border-radius:24px;background:white;box-shadow:0 12px 28px #19458a27;display:flex;align-items:center;padding:0 9px 0 16px;gap:7px}.search-symbol{font-size:30px;color:#243b68}.search-card input{width:0;min-width:0;flex:1.35;border:0;outline:0;background:none;color:var(--text);font-size:15px;font-weight:750}.search-card input#bus-q{flex:.82}.search-card input::placeholder{color:#8793a8;font-weight:500}.search-divider{height:30px;width:1px;background:#dde5f1;flex-shrink:0;margin:0 2px}.bus-symbol{font-size:18px;color:var(--blue)}.search-submit{background:var(--blue);color:white;border:0;width:64px;height:50px;border-radius:17px;font-weight:900;font-size:13px;flex-shrink:0}
.content{padding:0 20px 20px;min-height:45vh}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:3px 0 12px}.section-heading h2{margin:0;font-size:22px;font-weight:900;letter-spacing:-.6px}.subtle-link{font-size:12px;font-weight:800;border:0;background:none;color:var(--blue);padding:10px 0}
.panel{background:#fff;border:1px solid var(--line);border-radius:20px;padding:17px;margin:0 0 12px;box-shadow:var(--shadow)}.panel.tight{padding:12px 15px}.panel.empty{background:#fff;border:1px dashed #cbd8ea;text-align:center;padding:32px 16px}.panel.empty .empty-icon{font-size:31px;margin-bottom:6px}.panel.empty h3{margin:0 0 7px;font-size:16px}.panel.empty p{font-size:13px;color:var(--muted);line-height:1.6;margin:0}.muted{color:var(--muted)}.helper{font-size:12px;line-height:1.55;color:var(--muted);margin:7px 0}.heading-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.heading-row h3{margin:0;font-size:15px;line-height:1.3}.info-label{color:#8390a6;font-size:11px;font-weight:600}.small-tag{border-radius:40px;background:#ecf3ff;color:#145fd2;font-size:10px;font-weight:800;padding:5px 8px;white-space:nowrap}.town-tag{background:#f2ebff;color:#7953b8}.night-tag{background:#1a2946;color:#fff}
.card-button{width:100%;display:block;text-align:left;border:1px solid var(--line);background:white;border-radius:18px;padding:16px;margin-bottom:10px;color:inherit;box-shadow:var(--shadow)}.card-button:active{transform:scale(.997)}.stop-name{font-size:16px;font-weight:900;letter-spacing:-.3px}.stop-meta{font-size:12px;color:var(--muted);margin-top:6px}.card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;color:#476789;font-size:12px}
.arrival-card{padding:16px 16px 14px}.arrival-card .heading-row{align-items:flex-start}.bus-no{font-size:21px;font-weight:900;color:var(--blue);letter-spacing:-.6px}.arrival-list{border-top:1px solid var(--line);margin-top:12px;padding-top:12px;display:flex;flex-direction:column;gap:9px}.arrival-line{display:flex;align-items:center;justify-content:space-between;gap:6px}.arrival-time{font-weight:900;color:#15294d;font-size:17px;letter-spacing:-.5px}.arrival-time.fast{color:var(--urgent)}.arrival-sub{font-size:11px;color:#8491a6;margin-top:3px}.arrival-side{display:flex;align-items:center;gap:11px;text-align:right}.arrival-side .arrival-time{font-size:14px}.fave-button,.pin-button,.small-outline,.sub-button{border:1px solid #d7e5fb;border-radius:12px;background:#f7faff;color:var(--blue);padding:7px 11px;font-weight:800;font-size:12px}.fave-button{font-size:20px;line-height:1;padding:6px 9px}.fave-button.saved,.pin-button.saved{background:#fff7df;border-color:#fae9b1;color:#e3a000}.sub-button{border-radius:10px;background:#fff;padding:8px 12px}.primary-button{background:var(--blue);color:#fff;border:0;border-radius:14px;font-weight:850;font-size:13px;padding:12px 16px}.row-actions{display:flex;align-items:center;gap:7px;flex-shrink:0}.favor-wrap{display:flex;justify-content:space-between;gap:10px;align-items:center}.favor-wrap .head{min-width:0;flex:1}.favor-wrap .head h3{font-size:16px;margin:0 0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.favor-wrap .head p{font-size:12px;color:var(--muted);margin:0}
.page-heading{padding:calc(18px + env(safe-area-inset-top)) 14px 14px;display:flex;align-items:center;gap:12px;min-height:94px;background:white;border-bottom:1px solid var(--line);margin-bottom:20px}.page-heading h1{font-size:21px;margin:3px 0 0;letter-spacing:-.5px}.page-kicker{font-size:11px;color:var(--muted);margin:0}.back-button,.refresh-button{width:38px;height:38px;border:0;background:#f2f6fc;color:#1b427e;border-radius:12px;font-size:28px}.refresh-button{margin-left:auto;font-size:24px}.route-card{padding:15px 16px}.route-card .route-sub{font-size:12px;color:var(--muted);margin-top:6px;line-height:1.5}.route-stop-row{display:flex;align-items:center;gap:12px;border:0;background:white;color:var(--text);padding:12px 5px;width:100%;text-align:left;min-height:55px;border-bottom:1px solid #eef2f8}.route-stop-row .count{color:#8190a9;min-width:28px;font-size:12px;text-align:center}.route-stop-row .timeline-dot{height:13px;width:13px;border:3px solid #9ab9ed;background:#fff;border-radius:50%;position:relative}.route-stop-row.has-bus{background:#ecf4ff;border-radius:10px}.route-stop-row.has-bus .timeline-dot{background:var(--blue);border-color:var(--blue)}.route-stop-row.is-selected{outline:2px solid var(--blue);outline-offset:-2px;border-radius:10px}.route-stop-row .name{font-weight:730;font-size:14px;flex:1}.route-stop-row .vehicle{color:var(--blue);font-size:12px;font-weight:900;max-width:105px}.detail-note{padding:10px 12px;background:#eff6ff;border-radius:12px;font-size:12px;line-height:1.6;color:#345c93;margin-bottom:12px}
.pill-tabs{display:flex;gap:8px;margin:0 0 16px}.pill-tab{flex:1;border:1px solid #e2e9f5;background:white;border-radius:13px;color:#526985;padding:13px;font-weight:800}.pill-tab.selected{background:#e9f2ff;border-color:#93bef8;color:#115cc5}
.bottom-nav{height:calc(58px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#fff;box-shadow:0 -6px 25px #13294a14;display:flex;position:fixed;bottom:0;left:50%;transform:translateX(-50%);max-width:520px;width:100%;z-index:60}.nav-item{flex:1;border:0;background:none;color:#4c5870;font-size:27px;font-weight:800;display:grid;place-items:center;min-width:0}.nav-item.is-active{color:var(--blue)}.nav-item:focus-visible,.card-button:focus-visible{outline:3px solid #91bffa}
.dialog-backdrop{position:fixed;inset:0;z-index:110;background:#071b4c75;display:flex;align-items:flex-end;justify-content:center}.dialog{background:white;border-radius:25px 25px 0 0;padding:19px 20px calc(26px + env(safe-area-inset-bottom));width:min(520px,100%);max-height:80vh;overflow:auto}.dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.dialog-head h2{font-size:21px;margin:0}.close-button{background:#f2f6fc;border:0;border-radius:10px;padding:10px 14px}.settings-option{display:block;width:100%;border:1px solid #e4ebf5;border-radius:15px;margin-bottom:9px;padding:14px 16px;text-align:left;background:white;color:var(--text);font-weight:800}.settings-option.selected{background:#ecf4ff;border-color:var(--blue);color:var(--blue)}.toast{position:fixed;z-index:150;bottom:calc(83px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;background:#1c2e50;color:#fff;padding:12px 18px;border-radius:13px;box-shadow:var(--shadow);font-size:13px;max-width:calc(100% - 40px);text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}
.mini-map{height:300px;border-radius:16px;overflow:hidden;margin-bottom:14px;border:1px solid #d9e4f2;background:#deebf6}.leaflet-container{font:inherit}.install-help{background:#eff5ff;padding:14px;border-radius:13px;font-size:13px;line-height:1.8;color:#376293}.inline-search{display:flex;gap:9px;margin-bottom:15px}.inline-search input{min-width:0;flex:1;border:1px solid var(--line);border-radius:13px;padding:13px 14px;font-size:14px;outline:0}.inline-search button{border:0;border-radius:13px;padding:12px 17px;background:var(--blue);color:white;font-weight:800}
.loading-indicator{display:flex;align-items:center;gap:10px;font-size:13px;color:#58708c;padding:20px 0}.loading-indicator:before{content:"";width:17px;height:17px;border:3px solid #d7e7fc;border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:380px){.hero-copy{margin-right:72px}.hero-copy h1{font-size:26px}.brand{font-size:17px}.search-card{gap:5px;padding-left:12px}.search-submit{width:54px}.content{padding-left:13px;padding-right:13px}}
@media(min-width:700px){.app-shell{margin-top:20px;min-height:calc(100dvh - 20px);border-radius:24px 24px 0 0;overflow:hidden}.hero{border-radius:24px 24px 0 0}}


/* Android StopMapDialog 대응: 지도 위 정류소와 아래 목록을 동시에 표시 */
body.stop-picker-open{overflow:hidden}
.stop-picker-overlay{position:fixed;inset:0;z-index:180;width:100%;max-width:520px;margin:0 auto;background:#eef4ff;display:flex;flex-direction:column;overflow:hidden;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);box-shadow:0 10px 40px #10203f30}
.stop-picker-head{padding:17px 17px 12px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex:none}
.stop-picker-head h2{font-size:22px;line-height:1.3;letter-spacing:-.8px;margin:0;color:var(--text);font-weight:900}
.stop-picker-head p{margin:6px 0 0;font-size:12px;color:#667085;line-height:1.4}
.stop-picker-head .sub-button{flex:none;min-height:38px}
.stop-picker-map{position:relative;height:min(390px,47dvh);min-height:205px;flex:none;margin:0 12px 10px;border-radius:17px;overflow:hidden;background:#e0ebf9;border:1px solid #cbdcf0}
.stop-kakao-map{width:100%;height:100%}
.stop-map-message{position:absolute;left:12px;right:12px;bottom:12px;text-align:center;color:#415d82;background:#fffffff2;border:1px solid #d9e4f5;padding:12px;border-radius:11px;font-size:12px;z-index:5;box-shadow:0 4px 12px #183d7f1a}
.stop-picker-count{padding:3px 16px 9px;font-size:17px;font-weight:900;color:#10203f;flex:none}
.stop-picker-list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 12px 14px;-webkit-overflow-scrolling:touch}
.stop-picker-card{display:flex;align-items:center;gap:12px;width:100%;border:1px solid #dce7f5;border-radius:14px;padding:13px 12px;margin:0 0 8px;text-align:left;background:white;color:var(--text);box-shadow:0 3px 12px #10203f0b}
.stop-picker-card-number{font-size:12px;color:#7187a4;font-weight:800;min-width:22px;text-align:center}
.stop-picker-card-body{display:flex;flex:1;min-width:0;flex-direction:column;gap:5px}
.stop-picker-card-body strong{font-size:14px;font-weight:850;overflow-wrap:anywhere}
.stop-picker-card-body small{font-size:11px;color:#73809a}
.stop-picker-card>span:last-child{font-size:22px;color:#7a93b3}
.stop-map-marker{position:relative;display:flex;align-items:center;gap:3px;border-radius:20px;background:#fff;border:2px solid #1976f3;color:#0b438d;box-shadow:0 4px 12px #0a2c5680;max-width:150px;padding:3px 7px 3px 4px;white-space:nowrap;font-size:11px;font-weight:850;cursor:pointer}
.stop-map-marker:after{content:"";position:absolute;left:calc(50% - 4px);bottom:-7px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid #1976f3}
.stop-map-marker.is-town{border-color:#15976d;color:#096c4f}
.stop-map-marker.is-town:after{border-top-color:#15976d}
.stop-map-marker-index{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#1976f3;color:white;font-size:11px;font-weight:800;flex:none}
.stop-map-marker.is-town .stop-map-marker-index{background:#15976d}
.stop-map-marker-label{overflow:hidden;text-overflow:ellipsis}
.stop-map-marker:focus-visible,.stop-picker-card:focus-visible{outline:3px solid #f6a938;outline-offset:3px}
@media(max-height:640px){.stop-picker-map{height:39dvh;min-height:170px}.stop-picker-head{padding-top:11px}}

/* iPhone 홈 화면 바로가기 안내 - 실제 추가 동작은 Safari 공유 메뉴에서 진행 */
.install-offer{text-align:center;padding:4px 2px 2px}
.install-offer-icon{margin:4px auto 14px;display:grid;place-items:center;width:66px;height:66px;border-radius:21px;background:#1976f3;color:#fff;font-size:37px;box-shadow:0 8px 23px #1976f333}
.install-offer-lead{font-size:17px;font-weight:850;line-height:1.55;margin:7px auto 5px;max-width:300px}
.install-offer-actions{display:flex;gap:9px;margin-top:23px}
.install-offer-actions .primary-button{flex:1;padding:14px 12px}
.install-offer-actions .sub-button{padding:13px 17px}
.install-steps{padding:0 1px 3px}
.install-steps>.helper{margin-bottom:17px}
.install-step{display:flex;align-items:flex-start;gap:12px;padding:14px 0;border-bottom:1px solid #e7edf5;font-size:14px;line-height:1.55}
.install-step-number{background:#e9f2ff;color:#0d5fd4;border-radius:50%;width:29px;height:29px;flex:none;display:grid;place-items:center;font-size:13px;font-weight:900}
.install-note{margin:16px 0;color:#6f7e96;font-size:12px;line-height:1.7}
.install-confirm{width:100%;padding:14px}
.install-settings-button{margin:12px 0 5px}
