*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{color:#222;background:#f5f5f5;font-family:Vazirmatn,Tahoma,sans-serif}button,input{font:inherit}.page{gap:12px;width:min(1200px,100%);height:100vh;margin:0 auto;padding:12px;display:grid;overflow:hidden}.searchForm{background:#fff;border:1px solid #ddd;flex-direction:column;width:100%;max-width:340px;min-height:0;padding:12px;display:flex;overflow:hidden;box-shadow:0 1px 4px #00000014}.sheetHandle,.sheetToggle{display:none}.sheetChrome{flex:none}.sheetBody,.sheetBodyInner,.suggestPanel,.suggestPanelInner,.mainPanel,.mainPanelInner{display:contents}.searchHeader{flex:none;margin-bottom:10px}.searchHeader strong{font-size:15px;font-weight:700;display:block}.searchHeader span{color:#777;margin-top:4px;font-size:12px;line-height:1.6;display:block}.searchInputs{flex:none;display:grid}.searchInput{border-bottom:1px solid #e5e5e5;align-items:center;gap:8px;padding:0 8px;display:flex}.searchInput:last-child{border-bottom:none}.searchInput>b{border:2px solid;border-radius:50%;flex:none;width:10px;height:10px}.searchInput input{background:0 0;border:0;outline:0;width:100%;padding:10px 0;font-size:13px}.autofill{z-index:20;background:#fff;border:1px solid #ddd;flex:none;max-height:140px;margin-top:8px;padding:4px;display:none;position:relative;overflow:auto}.autofill.active{display:block}.autofill>strong{color:#444;cursor:pointer;justify-content:space-between;align-items:center;gap:8px;padding:8px;font-size:12px;font-weight:400;display:flex}.autofill>strong:hover{background:#f3f3f3}.autofill>strong>span{flex-direction:column;gap:2px;display:flex}.autofill>strong small{color:#999;direction:ltr;font-size:10px}.autofill .lines{gap:3px;display:flex}.autofill .lines b{color:#fff;place-items:center;min-width:18px;height:18px;padding:0 4px;font-size:10px;display:grid}.inquiry{flex-direction:column;flex:1;min-height:0;display:flex;overflow:auto}.panelTitle{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.panelTitle strong,.panelHeading{font-size:13px}.clearRoute{cursor:pointer;background:#fff;border:1px solid #ddd;padding:4px 8px;font-size:11px}.clearRoute:hover{background:#f3f3f3}.sidebarPanel{border-top:1px solid #eee;flex-direction:column;flex:1;min-height:0;margin-top:10px;padding-top:10px;display:flex;overflow:hidden}.lineList{flex-direction:column;flex:1;gap:6px;min-height:0;display:flex;overflow:auto}.lineList .panelHeading{margin-bottom:2px}.lineList button{width:100%;color:inherit;cursor:pointer;text-align:right;background:#fafafa;border:1px solid #e8e8e8;align-items:flex-start;gap:8px;padding:8px;display:flex}.lineList button:hover,.lineList button.active{background:#f0f0f0;border-color:#bbb}.lineList button b{flex:none;width:10px;height:10px;margin-top:3px}.lineList button span{flex-direction:column;gap:2px;min-width:0;display:flex}.lineList button em{font-size:12px;font-style:normal;font-weight:700}.lineList button small{color:#777;font-size:11px;line-height:1.4}.routeMeta{gap:6px;margin-bottom:10px;display:flex}.routeMeta span{color:#666;background:#f7f7f7;border:1px solid #e6e6e6;padding:3px 8px;font-size:11px}.routeList{flex-direction:column;flex:1;min-height:0;display:flex}.routeStep{grid-template-columns:18px minmax(0,1fr);gap:8px;min-height:34px;display:grid}.routeRail{justify-content:center;display:flex;position:relative}.routeRail:before{content:"";background:var(--route-color,#ccc);width:3px;position:absolute;top:0;bottom:0}.routeStep.start .routeRail:before{top:12px}.routeStep.end .routeRail:before{bottom:calc(100% - 12px)}.routeRail i{z-index:1;border:2px solid var(--route-color,#ccc);background:#fff;border-radius:50%;width:10px;height:10px;margin-top:8px;position:relative}.routeStep.start .routeRail i,.routeStep.end .routeRail i{border-width:3px;width:12px;height:12px;margin-top:6px}.routeStep.transfer .routeRail i{background:#fff;border:2.5px solid #333;width:12px;height:12px;margin-top:6px}.routeContent{flex-direction:column;gap:2px;padding:4px 0 10px;display:flex}.routeContent strong{color:#777;font-size:12px;font-weight:500}.routeStep.start .routeContent strong,.routeStep.end .routeContent strong,.routeStep.transfer .routeContent strong{color:#1f1f1f;font-size:13px;font-weight:700}.routeContent em{color:#888;font-size:10px;font-style:normal}.routeStep.start .routeContent em{color:#1f7a3f}.routeStep.end .routeContent em{color:#c0392b}.routeStep.transfer .routeContent em{color:#555}.mapBox{background:#fff;border:1px solid #ddd;flex-direction:column;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 4px #00000014}.mapBoxTop{border-bottom:1px solid #eee;flex:none;justify-content:space-between;align-items:center;gap:10px;padding:10px;display:flex}.mapBoxTopStart{align-items:center;gap:8px;min-width:0;display:flex}.mapTitle{font-size:13px;font-weight:700}.githubStar{color:#24292f;background:#f7f7f7;border:1px solid #ddd;border-radius:999px;flex:none;align-items:center;gap:5px;min-height:28px;padding:0 9px;font-size:11px;font-weight:600;line-height:1;text-decoration:none;transition:background .15s,border-color .15s;display:inline-flex}.githubStar:hover{background:#fff;border-color:#bbb}.githubStar svg{display:block}.zoomControls{flex:none;align-items:center;gap:4px;display:flex}.zoomControls button{cursor:pointer;background:#fff;border:1px solid #ccc;width:32px;height:32px;padding:0;font-size:18px;line-height:1}.zoomControls button:hover{background:#f3f3f3}.zoomControls span{text-align:center;min-width:42px;font-size:12px}.graphInfo{z-index:40;backdrop-filter:blur(8px);pointer-events:none;background:#fffffff5;border:1px solid #ddd;border-radius:10px;width:min(220px,100vw - 40px);padding:12px 14px;position:fixed;bottom:20px;right:20px}.graphInfo>strong{margin-bottom:8px;font-family:IBM Plex Mono,SFMono-Regular,Consolas,monospace;font-size:13px;font-weight:600;display:block}.graphInfo dl{gap:6px;margin:0;display:grid}.graphInfo dl>div{grid-template-columns:72px 1fr;align-items:baseline;gap:6px;display:grid}.graphInfo dt{color:#888;font-family:IBM Plex Mono,SFMono-Regular,Consolas,monospace;font-size:11px}.graphInfo dd{color:#333;margin:0;font-size:12px}.mapViewport{cursor:grab;-webkit-user-select:none;user-select:none;-webkit-overflow-scrolling:touch;touch-action:none;scroll-behavior:auto;direction:ltr;background:#fcfcfc;flex:1;min-height:0;padding:16px;overflow:auto}.mapViewport.dragging{cursor:grabbing}.mapViewport.dragging .circle{pointer-events:none}.mapScaler{position:relative}#map{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}#map svg{width:100%;height:100%;position:absolute;inset:0}#map path{stroke-linecap:round;stroke-linejoin:round;transition:opacity .2s}.circle{z-index:10;cursor:pointer;width:14px;height:14px;transform:translate(-50%,-50%)scale(calc(1/var(--map-zoom,1)));transform-origin:50%;background:#fff;border:2px solid;border-radius:50%;padding:0;transition:opacity .2s;position:absolute}.circle.intersection{border-color:#222;width:17px;height:17px}.circle>span{opacity:0;pointer-events:none;white-space:nowrap;background:#fff;border:1px solid #ddd;width:max-content;max-width:140px;padding:3px 5px;font-size:11px;position:absolute;top:18px;left:50%;transform:translate(-50%)}.circle:hover,.circle.active{z-index:40}.circle:hover>span,.circle.active>span{opacity:1}.dataBox{display:none}.stationCard{z-index:100;color:#fff;background:#222;border:1px solid #333;border-radius:12px;width:min(320px,100% - 24px);padding:12px;position:absolute;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #00000040}.stationCard .title{border-bottom:1px solid #555;justify-content:space-between;align-items:baseline;gap:8px;padding-bottom:8px;display:flex}.stationCard .title strong{font-size:13px}.stationCard .title small{color:#bbb;direction:ltr;font-size:10px}.stationCard .lines{gap:6px;padding-top:8px;display:grid}.stationCard .lines b{color:#fff;border-radius:6px;padding:5px 6px;font-size:11px;font-weight:500;display:block}.stationCardClose{color:#fff;cursor:pointer;background:#333;border:1px solid #555;border-radius:8px;width:100%;min-height:36px;margin-top:10px;font-size:12px}.stationCardClose:hover{background:#3d3d3d}@media (width>=900px){.page{grid-template-columns:300px minmax(0,1fr);align-items:stretch}.searchForm{height:100%;max-height:none}}@media (width<=899px){.page{--sheet-inset:12px;--sheet-pad:14px;--sheet-gap:10px;--sheet-radius:20px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);padding:0;display:block;position:relative}.mapBox{box-shadow:none;border:0;border-radius:0;position:absolute;inset:0}.mapBoxTop{top:calc(var(--sheet-inset) + var(--safe-top));left:var(--sheet-inset);right:var(--sheet-inset);z-index:30;backdrop-filter:blur(10px);background:#fffffff0;border:1px solid #00000014;border-radius:14px;padding:8px 10px;position:absolute;box-shadow:0 4px 18px #00000014}.mapTitle{font-size:12px}.githubStar{min-height:30px;padding:0 10px;font-size:11px}.zoomControls button{border-radius:10px;width:36px;height:36px}.mapViewport{padding:0;padding-bottom:calc(188px + var(--sheet-inset) + var(--safe-bottom))}.searchForm{left:var(--sheet-inset);right:var(--sheet-inset);bottom:calc(var(--sheet-inset) + var(--safe-bottom));z-index:50;width:auto;max-width:none;height:auto;max-height:none;padding:0 var(--sheet-pad)var(--sheet-pad);border-radius:var(--sheet-radius);gap:0;position:absolute;overflow:hidden;box-shadow:0 12px 40px #00000024}.sheetHandle{width:calc(100% + (var(--sheet-pad)*2));height:28px;margin:0 calc(var(--sheet-pad)*-1);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;display:flex}.sheetHandle span{background:#d4d4d4;border-radius:999px;width:40px;height:4px}.sheetChrome{gap:var(--sheet-gap);flex-direction:column;display:flex}.searchHeader{justify-content:space-between;align-items:center;gap:10px;margin:0;display:flex}.searchHeader>div{min-width:0}.searchHeader strong{font-size:14px;line-height:1.2}.searchHeader span{display:none}.sheetToggle{color:#444;cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;background:#f6f6f6;border:1px solid #e4e4e4;border-radius:999px;flex:none;justify-content:center;align-items:center;min-height:30px;padding:0 12px;font-size:11px;display:inline-flex}.searchInputs{background:#fafafa;border:1px solid #ececec;border-radius:12px;overflow:hidden}.searchInput{min-height:44px;padding:0 12px}.searchInput input{padding:12px 0;font-size:15px}.sheetBody{opacity:0;pointer-events:none;grid-template-rows:0fr;margin-top:0;transition:grid-template-rows .4s cubic-bezier(.22,1,.36,1),opacity .25s,margin-top .4s cubic-bezier(.22,1,.36,1);display:grid}.searchForm.sheetOpen .sheetBody{margin-top:var(--sheet-gap);opacity:1;pointer-events:auto;grid-template-rows:1fr;transition:grid-template-rows .4s cubic-bezier(.22,1,.36,1),opacity .3s 50ms,margin-top .4s cubic-bezier(.22,1,.36,1)}.sheetBodyInner{flex-direction:column;gap:0;min-height:0;display:flex;overflow:hidden}.searchForm.sheetOpen .sheetBodyInner{max-height:min(52dvh,420px)}.searchForm.sheetAutofill.sheetOpen .sheetBodyInner{max-height:min(58dvh,480px)}.suggestPanel,.mainPanel{opacity:0;pointer-events:none;grid-template-rows:0fr;display:grid}.suggestPanel:not(.isOpen),.mainPanel:not(.isOpen){transition:grid-template-rows .28s cubic-bezier(.4,0,.2,1),opacity .16s}.suggestPanel.isOpen,.mainPanel.isOpen{opacity:1;pointer-events:auto;grid-template-rows:1fr;transition:grid-template-rows .34s cubic-bezier(.22,1,.36,1) 80ms,opacity .26s .1s}.suggestPanelInner,.mainPanelInner{min-height:0;display:block;overflow:hidden}.mainPanel.isOpen .mainPanelInner,.suggestPanel.isOpen .suggestPanelInner{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;max-height:min(52dvh,420px);padding-bottom:6px;overflow:auto}.searchForm.sheetAutofill.sheetOpen .suggestPanel.isOpen .suggestPanelInner{max-height:min(58dvh,480px)}.autofill{border-radius:12px;max-height:none;margin:0;padding:4px;display:block;overflow:visible}.autofill:not(.active){display:block}.autofill>strong{border-radius:10px;min-height:44px;padding:10px 12px;font-size:13px}.autofill>strong:last-child{margin-bottom:0}.sidebarPanel{border:0;flex:auto;min-height:0;margin:0;padding:0;overflow:visible}.lineList{gap:8px;padding-bottom:8px;overflow:visible}.lineList .panelHeading{margin:0 0 4px;padding:0 2px}.lineList button{box-sizing:border-box;border-radius:12px;align-items:flex-start;min-height:54px;padding:14px}.lineList button b{margin-top:5px}.lineList button span{gap:5px;padding-bottom:1px}.lineList button small{line-height:1.45}.lineList button:last-child{margin-bottom:0}.lineList button em{font-size:13px;line-height:1.3}.inquiry{padding-bottom:2px;overflow:visible}.routeList{overflow:visible}.clearRoute{border-radius:8px;min-height:32px;padding:6px 10px;font-size:12px}.routeMeta{margin-bottom:8px}.routeMeta span{border-radius:999px}.graphInfo{display:none}.circle>span{max-width:120px;font-size:10px}.stationCard{top:calc(58px + var(--safe-top));left:var(--sheet-inset);right:var(--sheet-inset);border-radius:14px;width:auto;max-width:none;padding:12px;bottom:auto;transform:none}.stationCard .title strong{font-size:14px}.stationCard .lines b{border-radius:8px;padding:8px;font-size:12px;line-height:1.45}}@media (width<=899px) and (height<=640px){.page{--sheet-pad:12px;--sheet-gap:8px}.searchForm.sheetOpen .sheetBodyInner,.mainPanel.isOpen .mainPanelInner{max-height:min(46dvh,300px)}.searchForm.sheetAutofill.sheetOpen .sheetBodyInner,.searchForm.sheetAutofill.sheetOpen .suggestPanel.isOpen .suggestPanelInner{max-height:min(52dvh,340px)}}