.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;top:0;left:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{-webkit-transform-origin:0 0;width:1600px;height:1600px}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{width:auto;padding:0;max-width:none!important;max-height:none!important}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:#33b5e566}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{box-sizing:border-box;z-index:800;width:0;height:0}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{z-index:800;pointer-events:visiblePainted;pointer-events:auto;position:relative}.leaflet-top,.leaflet-bottom{z-index:1000;pointer-events:none;position:absolute}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{outline-offset:1px;background:#ddd}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{background:#ffffff80;border:2px dotted #38f}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-bar{border-radius:4px;box-shadow:0 1px 5px #000000a6}.leaflet-bar a{text-align:center;color:#000;background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-decoration:none;display:block}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom:none;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.leaflet-bar a.leaflet-disabled{cursor:default;color:#bbb;background-color:#f4f4f4}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{text-indent:1px;font:700 18px Lucida Console,Monaco,monospace}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{background:#fff;border-radius:5px;box-shadow:0 1px 5px #0006}.leaflet-control-layers-toggle{background-image:url(../media/layers.3muxcl8sz6330.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(../media/layers-2x.23wrxu3xxu9-i.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{color:#333;background:#fff;padding:6px 10px 6px 6px}.leaflet-control-layers-scrollbar{padding-right:5px;overflow:hidden scroll}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{font-size:1.08333em;display:block}.leaflet-control-layers-separator{border-top:1px solid #ddd;height:0;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(../media/marker-icon.1le94j_pe_ih1.png)}.leaflet-container .leaflet-control-attribution{background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{color:#333;padding:0 5px;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{width:1em;height:.6669em;vertical-align:baseline!important;display:inline!important}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{white-space:nowrap;box-sizing:border-box;text-shadow:1px 1px #fff;background:#fffc;border:2px solid #777;border-top:none;padding:2px 5px 1px;line-height:1.1}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{background-clip:padding-box;border:2px solid #0003}.leaflet-popup{text-align:center;margin-bottom:20px;position:absolute}.leaflet-popup-content-wrapper{text-align:left;border-radius:12px;padding:1px}.leaflet-popup-content{min-height:1px;margin:13px 24px 13px 20px;font-size:1.08333em;line-height:1.3}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{pointer-events:none;width:40px;height:20px;margin-top:-1px;margin-left:-20px;position:absolute;left:50%;overflow:hidden}.leaflet-popup-tip{pointer-events:auto;width:17px;height:17px;margin:-10px auto 0;padding:1px;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{color:#333;background:#fff;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{text-align:center;color:#757575;background:0 0;border:none;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;text-decoration:none;position:absolute;top:0;right:0}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";width:24px;filter:progid:DXImageTransform.Microsoft.Matrix(M11=.707107, M12=.707107, M21=-.707107, M22=.707107);margin:0 auto}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{color:#222;white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none;background-color:#fff;border:1px solid #fff;border-radius:3px;padding:6px;position:absolute;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{pointer-events:none;content:"";background:0 0;border:6px solid #0000;position:absolute}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{margin-left:-6px;left:50%}.leaflet-tooltip-top:before{border-top-color:#fff;margin-bottom:-12px;bottom:0}.leaflet-tooltip-bottom:before{border-bottom-color:#fff;margin-top:-12px;margin-left:-6px;top:0}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{margin-top:-6px;top:50%}.leaflet-tooltip-left:before{border-left-color:#fff;margin-right:-12px;right:0}.leaflet-tooltip-right:before{border-right-color:#fff;margin-left:-12px;left:0}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
:root{--text:#0f172a;--muted:#667085;--line:#e5e9f0;--soft:#f7fafc;--green:#14a83b;--green-dark:#07912d;--blue:#2f7df6;--amber:#f6ae18;--red:#f43f5e;--purple:#7c5bd6;color:var(--text);font-synthesis:none;text-rendering:optimizelegibility;background:#edf2f7;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:#edf2f7}body{min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}button{color:inherit;font:inherit}.mobile-shell{background:#fff;width:min(100%,430px);min-height:100vh;margin:0 auto;overflow:hidden;box-shadow:0 20px 80px #0f172a24}.app-header{border-bottom:1px solid var(--line);grid-template-columns:92px minmax(0,1fr) 32px 36px;align-items:center;gap:8px;padding:10px 12px;display:grid}.app-title{color:#0b1328;letter-spacing:0;text-align:center;justify-content:center;align-items:center;gap:6px;margin:0;font-size:1rem;font-weight:900;line-height:1.3;display:inline-flex}.app-title img{object-fit:contain;border-radius:5px;width:36px;height:36px}.location-button,.language-button,.icon-button,.map-control{border:1px solid var(--line);background:#fff;box-shadow:0 10px 24px #0f172a14}.location-button{color:#111827;border-radius:999px;justify-content:center;align-items:center;gap:4px;width:92px;height:28px;padding:0;font-size:.68rem;font-weight:800;display:inline-flex}.location-button svg{width:17px;height:17px;color:var(--green)}.location-button.denied,.location-button.outside,.location-button.unsupported,.location-button.error{color:#9f1239;background:#fff1f2;border-color:#fecdd3}.location-button.denied svg,.location-button.outside svg,.location-button.unsupported svg,.location-button.error svg{color:var(--red)}.location-button span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.location-button span+span{display:none}.language-button{color:#111827;border-radius:11px;place-items:center;width:32px;height:34px;padding:0;font-size:.66rem;font-weight:900;display:grid}.language-button .malayalam-toggle{font-size:.92rem;line-height:1}.icon-button{border-radius:11px;place-items:center;width:34px;height:34px;display:inline-grid}.icon-button svg{width:17px;height:17px}.filter-panel{border-bottom:1px solid #eef1f5;padding:9px 12px 8px}.filter-title,.filter-label{display:none}.connection-switch{grid-template-columns:1fr 1fr;gap:8px;display:grid}.connection-card{border:1px solid var(--line);color:#111827;background:#fff;border-radius:11px;grid-template-columns:auto 1fr auto;align-items:center;gap:6px;min-height:38px;padding:0 9px;font-size:.76rem;font-weight:800;display:grid}.connection-card svg{color:#111827;width:17px;height:17px}.connection-card.active{color:var(--green-dark);background:#ecfbf0;border-color:#b9ecc8}.connection-card.active svg,.connection-card.active .check-mark{color:var(--green)}.check-mark{color:#8a94a6;font-size:.86rem}.provider-scroll{scrollbar-width:none;gap:7px;margin:9px -12px 0;padding:0 12px 2px;display:flex;overflow-x:auto}.provider-scroll::-webkit-scrollbar{display:none}.provider-pill{border:1px solid var(--line);color:#111827;background:#fff;border-radius:999px;flex:none;align-items:center;gap:5px;min-height:31px;padding:0 9px;font-size:.72rem;font-weight:800;display:inline-flex;box-shadow:0 5px 16px #0f172a0d}.provider-pill.active{background:var(--green);color:#fff;box-shadow:none;border-color:#0000}.provider-logo,.network-badge{color:#fff;border-radius:999px;flex:none;place-items:center;font-weight:900;display:inline-grid}.provider-logo{width:19px;height:19px;font-size:.54rem}.provider-pill.active .provider-logo{background:#ffffff38}.provider-all{background:var(--green)}.provider-jio{background:#173bbd}.provider-airtel{background:#ef233c}.provider-bsnl{background:#f17212}.provider-vi{background:#ed1c2e}.provider-asianet{background:#2666d6}.provider-kv{background:#1e9bd7}.provider-railwire{background:#8b5cf6}.provider-others{background:#64748b}.map-panel{background:#dfead7;height:455px;position:relative;overflow:hidden}.speed-map,.map-loading{width:100%;height:100%}.map-loading{color:var(--muted);background:linear-gradient(#ffffff73,#fff3),#dcebd9;place-items:center;font-weight:800;display:grid}.leaflet-container{background:#dfead7;font-family:inherit}.leaflet-tile-pane{filter:saturate(.62)contrast(.9)brightness(1.08)}.leaflet-overlay-pane{filter:drop-shadow(0 1px 2px #7c3aed2e)}.speed-card{z-index:500;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff0;border:1px solid #fffc;border-radius:13px;width:206px;padding:11px;position:absolute;inset:12px 12px auto auto;box-shadow:0 12px 28px #0f172a29}.speed-card:after{display:none}.speed-card-header{align-items:center;gap:9px;padding-right:20px;display:flex;position:relative}.network-badge{width:36px;height:36px;font-size:.72rem}.speed-card h2{margin:0;font-size:.92rem;line-height:1.1}.speed-card p{color:var(--muted);margin:3px 0 0;font-size:.72rem;font-weight:700}.updated-time{color:#8a94a6;margin-top:2px;font-size:.64rem;font-weight:800;line-height:1.1;display:block}.card-close-button{color:#667085;background:0 0;border:0;width:15px;height:15px;padding:0;display:none;position:absolute;top:0;right:0}.card-close-button svg{width:15px;height:15px;display:block}.metric-row{border-bottom:1px solid #ecf0f4;grid-template-columns:repeat(3,1fr);gap:0;margin:11px 0 8px;padding-bottom:8px;display:grid}.metric{text-align:center;border-right:1px solid #ecf0f4;grid-template-columns:1fr;justify-content:center;align-items:center;row-gap:2px;display:grid}.metric:last-child{border-right:0}.metric span{font-size:.84rem;font-weight:900}.metric strong{font-size:1.05rem;line-height:1}.metric small,.metric em{color:#111827;grid-column:1;font-size:.62rem;font-style:normal;font-weight:800}.metric em{color:var(--muted);margin-top:1px;font-weight:700}.metric.download span{color:var(--green)}.metric.upload span{color:var(--blue)}.metric.ping span{color:var(--purple)}.test-count{color:#667085;text-align:center;grid-template-columns:28px minmax(0,1fr) 28px;align-items:center;gap:6px;margin:0;font-size:.63rem;font-weight:800;line-height:1;display:grid}.test-count strong{color:#667085;font-size:.68rem;font-weight:900}.map-control{z-index:500;border-radius:999px;place-items:center;width:47px;height:47px;display:grid;position:absolute;bottom:12px;right:12px}.map-control.locate{left:auto}.map-control svg{width:22px;height:22px}.desktop-zoom-controls{display:none}.speed-marker{place-items:center;display:grid}.speed-marker span{color:#fff;border:1px solid #fff;border-radius:999px;place-items:center;width:100%;height:100%;font-size:.68rem;font-weight:900;display:grid;box-shadow:0 1px 5px #0f172a2e}.speed-marker.single span{border-width:1px;width:7px;height:7px}.speed-marker.quality-good span{background:var(--green)}.speed-marker.quality-average span{background:var(--amber)}.speed-marker.quality-poor span{background:var(--red)}.speed-marker.selected span{outline:2px solid #ffffffc7;transform:scale(1.6)}.current-location-marker{place-items:center;display:grid}.current-location-marker span{background:var(--blue);border:2px solid #fff;border-radius:999px;width:12px;height:12px;display:block;box-shadow:0 0 0 4px #2f7df633,0 4px 12px #0f172a38}.speed-card-nav{width:28px;height:28px;color:var(--green-dark);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff0;border:1px solid #fffc;border-radius:999px;place-items:center;display:grid;box-shadow:0 10px 24px #0f172a1f}.map-empty-state{z-index:500;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff0;border:1px solid #fffc;border-radius:12px;gap:3px;width:206px;padding:10px 12px;display:grid;position:absolute;top:12px;right:12px;box-shadow:0 12px 28px #0f172a24}.map-empty-state strong{color:#0b1328;font-size:.76rem;line-height:1.15}.action-panel{background:#fff;padding:11px 12px 10px}.side-column{flex-direction:column;display:flex}.side-column .action-panel{order:1}.side-column .local-stats-panel{order:2}.speed-range-strip{border:1px solid var(--line);color:#667085;text-align:center;background:#f8fafc;border-top:0;border-radius:0 0 10px 10px;justify-content:center;align-items:center;gap:10px;margin:0;padding:6px 10px;font-size:.62rem;font-weight:800;line-height:1;display:flex}.speed-range-strip span{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.range-dot{border-radius:999px;width:7px;height:7px}.range-dot.good{background:var(--green)}.range-dot.average{background:var(--amber)}.range-dot.poor{background:var(--red)}.speed-test-button{background:var(--green);color:#fff;width:100%;min-height:48px;box-shadow:none;border:0;border-radius:12px;justify-content:center;align-items:center;gap:10px;font-size:.94rem;font-weight:900;display:flex}.speed-test-button svg{width:19px;height:19px}.test-dialog-backdrop{z-index:1000;background:#0f172a61;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.test-dialog{background:#fff;border:1px solid #fffc;border-radius:16px;gap:13px;width:min(100%,430px);max-height:calc(100vh - 32px);padding:14px;display:grid;overflow-y:auto;box-shadow:0 22px 70px #0f172a3d}.location-dialog{background:#fff;border:1px solid #fffc;border-radius:16px;gap:13px;width:min(100%,390px);max-height:calc(100vh - 32px);padding:14px;display:grid;overflow:hidden;box-shadow:0 22px 70px #0f172a3d}.test-dialog-header,.test-dialog-actions{justify-content:space-between;align-items:center;gap:10px;display:flex}.test-dialog-header strong{color:#0b1328;font-size:1rem;font-weight:900;line-height:1.1;display:block}.test-dialog-header span{color:var(--muted);margin-top:3px;font-size:.68rem;font-weight:800;display:block}.test-dialog-close{border:1px solid var(--line);background:#fff;border-radius:999px;flex:none;place-items:center;width:34px;height:34px;display:grid}.test-dialog-warning,.test-dialog-error{color:#9f1239;background:#fff1f2;border-radius:10px;margin:0;font-size:.7rem;font-weight:800;line-height:1.35}.test-dialog-warning{align-items:center;gap:7px;padding:9px 10px;display:flex}.test-dialog-warning svg{color:var(--red);flex:none}.test-dialog-error{padding:9px 10px}.test-dialog-section{gap:8px;display:grid}.test-dialog-label{color:#111827;font-size:.68rem;font-weight:900}.test-segmented{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.test-segmented button,.test-provider-grid button{border:1px solid var(--line);color:#111827;background:#fff;border-radius:11px;justify-content:center;align-items:center;gap:6px;min-width:0;min-height:38px;font-size:.72rem;font-weight:900;display:inline-flex}.test-segmented button.active,.test-provider-grid button.active{color:var(--green-dark);background:#ecfbf0;border-color:#b9ecc8}.test-segmented button:disabled,.test-provider-grid button:disabled,.test-provider-input:disabled,.test-primary-button:disabled,.test-secondary-button:disabled{cursor:not-allowed;opacity:.58}.test-provider-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.test-dialog-hint{color:#667085;text-align:center;background:#f8fafc;border-radius:10px;grid-column:1/-1;margin:0;padding:10px;font-size:.7rem;font-weight:800}.test-provider-grid button span:last-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.test-provider-input{border:1px solid var(--line);color:#111827;width:100%;min-height:40px;font:inherit;background:#fff;border-radius:11px;outline:0;padding:0 11px;font-size:.78rem;font-weight:800}.test-provider-input:focus{border-color:#9fe7b3;box-shadow:0 0 0 3px #14a83b1f}.current-location-choice{width:100%;min-height:54px;color:var(--green-dark);text-align:left;background:#ecfbf0;border:1px solid #b9ecc8;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;display:flex}.current-location-choice svg{flex:none}.current-location-choice span,.location-results button span{gap:2px;min-width:0;display:grid}.current-location-choice strong,.location-results strong{color:#0b1328;font-size:.78rem;font-weight:900}.current-location-choice small,.location-results small{color:#667085;text-overflow:ellipsis;white-space:nowrap;font-size:.66rem;font-weight:800;line-height:1.2;overflow:hidden}.location-search{border:1px solid var(--line);color:#667085;background:#fff;border-radius:12px;align-items:center;gap:8px;min-height:42px;padding:0 11px;display:flex}.location-search:focus-within{border-color:#9fe7b3;box-shadow:0 0 0 3px #14a83b1f}.location-search input{color:#111827;width:100%;min-width:0;font:inherit;background:0 0;border:0;outline:0;font-size:.78rem;font-weight:800}.location-results{scrollbar-width:thin;gap:7px;max-height:min(42vh,330px);padding-right:2px;display:grid;overflow-y:auto}.location-results::-webkit-scrollbar{width:6px}.location-results::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}.location-results p{color:#667085;text-align:center;background:#f8fafc;border-radius:11px;margin:0;padding:12px;font-size:.72rem;font-weight:800}.location-results button{border:1px solid var(--line);text-align:left;background:#fff;border-radius:11px;align-items:center;gap:9px;min-height:44px;padding:8px 10px;display:flex}.location-results button svg{color:var(--green);flex:none}.test-result-summary{border:1px solid var(--line);background:#f8fafc;border-radius:11px;grid-template-columns:repeat(3,minmax(0,1fr));padding:10px 0;display:grid}.test-dialog-actions{padding-top:2px}.test-primary-button,.test-secondary-button{border-radius:11px;justify-content:center;align-items:center;min-height:42px;font-size:.82rem;font-weight:900;display:inline-flex}.test-secondary-button{border:1px solid var(--line);color:#111827;background:#fff;min-width:92px}.test-primary-button{background:var(--green);color:#fff;border:0;flex:1}.local-stats-panel{background:#fff;gap:11px;padding:0 12px 12px;display:grid}.local-stats-header{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.local-stats-header h2{color:#0f172a;margin:0;font-size:.95rem;font-weight:900;line-height:1.15}.local-stats-header p{color:#667085;margin:3px 0 0;font-size:.68rem;font-weight:800;line-height:1.25}.local-stats-header>span{color:#475569;background:#f1f5f9;border-radius:999px;flex:none;padding:5px 8px;font-size:.62rem;font-weight:900}.local-stat-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.local-stat-summary span{border:1px solid var(--line);background:#fff;border-radius:10px;align-content:center;gap:3px;min-height:64px;padding:10px;display:grid}.local-stat-summary strong{color:#0b1328;font-size:1rem;font-weight:900;line-height:1}.local-stat-summary small{color:#667085;font-size:.64rem;font-weight:800}.provider-stats-table{border:1px solid var(--line);background:#fff;border-radius:10px;display:grid;overflow:hidden}.provider-stats-row{color:#0f172a;border-bottom:1px solid #eef1f5;grid-template-columns:minmax(104px,1.35fr) 44px minmax(54px,.7fr) minmax(54px,.7fr) minmax(48px,.6fr);align-items:center;gap:6px;min-height:42px;padding:8px 9px;font-size:.67rem;font-weight:800;display:grid}.provider-stats-row:last-child{border-bottom:0}.provider-stats-row.heading{color:#667085;text-transform:uppercase;background:#f8fafc;min-height:34px;font-size:.6rem;font-weight:900}.provider-stat-name{align-items:center;gap:6px;min-width:0;display:inline-flex}.provider-stat-name strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.provider-stat-name .provider-logo{width:19px;height:19px;font-size:.46rem}.trust-note{color:#667085;text-align:center;justify-content:center;align-items:center;gap:7px;margin:0;padding:0 12px 16px;font-size:.68rem;font-weight:800;display:flex}.trust-note svg{color:var(--green);flex:none}.mobile-shell.theme-dark{--text:#e5e7eb;--muted:#94a3b8;--line:#243044;--soft:#111827;color:var(--text);background:#08111f;box-shadow:0 20px 80px #0000005c}.theme-dark .app-header,.theme-dark .filter-panel,.theme-dark .action-panel,.theme-dark .local-stats-panel{border-color:var(--line);background:#08111f}.theme-dark .app-title,.theme-dark .location-button,.theme-dark .language-button,.theme-dark .icon-button,.theme-dark .connection-card,.theme-dark .provider-pill,.theme-dark .speed-card h2,.theme-dark .metric small,.theme-dark .test-dialog-header strong,.theme-dark .test-dialog-label,.theme-dark .test-segmented button,.theme-dark .test-provider-grid button,.theme-dark .test-provider-input,.theme-dark .local-stats-header h2,.theme-dark .local-stat-summary strong,.theme-dark .provider-stats-row,.theme-dark .location-results strong,.theme-dark .current-location-choice strong,.theme-dark .location-search input{color:#e5e7eb}.theme-dark .location-button,.theme-dark .language-button,.theme-dark .icon-button,.theme-dark .map-control,.theme-dark .connection-card,.theme-dark .provider-pill,.theme-dark .speed-card,.theme-dark .map-empty-state,.theme-dark .speed-card-nav,.theme-dark .test-dialog,.theme-dark .location-dialog,.theme-dark .test-segmented button,.theme-dark .test-provider-grid button,.theme-dark .test-provider-input,.theme-dark .test-result-summary,.theme-dark .local-stat-summary span,.theme-dark .provider-stats-table,.theme-dark .location-search,.theme-dark .location-results button,.theme-dark .desktop-zoom-controls,.theme-dark .desktop-zoom-controls button{border-color:var(--line);background:#0f172a}.theme-dark .speed-card,.theme-dark .map-empty-state,.theme-dark .speed-card-nav,.theme-dark .test-dialog,.theme-dark .location-dialog{background:#0f172af0;box-shadow:0 18px 48px #00000057}.theme-dark .connection-card.active,.theme-dark .test-segmented button.active,.theme-dark .test-provider-grid button.active,.theme-dark .current-location-choice{color:#bbf7d0;background:#14532d6b;border-color:#22c55e80}.theme-dark .provider-pill.active,.theme-dark .speed-test-button{background:var(--green);color:#fff}.theme-dark .speed-range-strip,.theme-dark .provider-stats-row.heading,.theme-dark .test-dialog-hint,.theme-dark .location-results p{border-color:var(--line);color:#94a3b8;background:#111827}.theme-dark .map-panel,.theme-dark .leaflet-container{background:#020617}.theme-dark .leaflet-tile-pane{filter:saturate(.86)contrast(1.02)brightness(.92)}.theme-dark .leaflet-overlay-pane{filter:drop-shadow(0 1px 3px #22c55e3d)}.theme-dark .metric-row,.theme-dark .metric,.theme-dark .provider-stats-row{border-color:var(--line)}.theme-dark .updated-time,.theme-dark .speed-card p,.theme-dark .metric em,.theme-dark .test-dialog-header span,.theme-dark .local-stats-header p,.theme-dark .local-stat-summary small,.theme-dark .location-results small,.theme-dark .current-location-choice small,.theme-dark .trust-note,.theme-dark .test-count,.theme-dark .test-count strong{color:#94a3b8}.theme-dark .card-close-button,.theme-dark .test-dialog-close{color:#cbd5e1}.theme-dark .test-dialog-close{border-color:var(--line);background:#111827}.theme-dark .test-dialog-warning,.theme-dark .test-dialog-error{color:#fecdd3;background:#7f1d1d75}.theme-dark .local-stats-header>span{color:#cbd5e1;background:#111827}@media (max-width:374px){.app-header{grid-template-columns:74px minmax(0,1fr) 30px 32px;gap:6px;padding-inline:10px}.location-button{width:78px;height:32px;font-size:.6rem}.app-title{font-size:.76rem}.app-title img{width:32px;height:32px}.language-button{width:30px;height:32px;font-size:.62rem}.icon-button{width:32px;height:32px}.filter-panel,.action-panel{padding-inline:12px}.connection-card{min-height:44px;padding-inline:8px;font-size:.8rem}.speed-card,.map-empty-state{width:190px;left:auto;right:10px}.local-stats-panel{padding-inline:12px}}@media (max-width:759px){.mobile-shell{padding-top:55px}.app-header{z-index:800;background:#fff;width:min(100%,430px);position:fixed;top:0;left:50%;transform:translate(-50%)}.app-title{font-size:.86rem}.location-button span:first-of-type{display:inline}.location-button span+span{display:none}.card-close-button{place-items:center;display:grid}}@media (min-width:431px){body{padding:20px 0}.mobile-shell{border-radius:28px}}@media (min-width:760px){.mobile-shell{width:min(100%,520px)}.location-button span:first-of-type{display:none}.location-button span+span{display:inline}}@media (min-width:760px) and (max-width:1023px){body{background:#f5f7fb;padding:0}.mobile-shell{width:100%;max-width:820px;min-height:100vh;box-shadow:none;border-radius:0}.app-header{padding-inline:18px}.filter-panel{padding:12px 18px 10px}.connection-card{min-height:40px}.provider-scroll{margin-inline:-18px;padding-inline:18px}.map-panel{border-radius:10px 10px 0 0;height:520px;margin-inline:18px}.speed-range-strip{margin-inline:18px;font-size:.68rem}.action-panel,.local-stats-panel{padding-inline:18px}}@media (min-width:1024px){body{background:#f5f7fb;padding:0}.mobile-shell{width:100dvw;max-width:none;min-height:100vh;box-shadow:none;border-radius:0;grid-template-columns:minmax(0,1fr) clamp(430px,30vw,560px);grid-template-areas:"header header""filters filters""map side""strip side""trust trust";gap:10px;margin:0;padding:0 16px 10px;display:grid;overflow:visible}.app-header{background:#fff;grid-area:header;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);margin-inline:-16px;padding:8px 6px;padding-inline:22px}.app-title{grid-area:1/2;justify-content:center;font-size:1.08rem}.app-title img{width:30px;height:30px}.location-button{width:auto;min-width:144px;height:32px;box-shadow:none;grid-area:1/1;justify-content:flex-start;justify-self:start;padding:0 12px;font-size:.8rem}.language-button{width:30px;height:32px;box-shadow:none;grid-area:1/3;justify-self:end;margin-right:44px}.icon-button{width:32px;height:32px;box-shadow:none;grid-area:1/3;justify-self:end}.filter-panel{border-bottom:0;grid-area:filters;grid-template-columns:auto minmax(0,1fr);align-items:end;gap:20px;padding:0 6px 2px;display:grid}.filter-group{gap:0;min-width:0;display:grid}.connection-switch{gap:8px;display:flex}.connection-card{min-width:112px;min-height:36px;font-size:.82rem}.provider-scroll{gap:8px;margin:0;padding:0;overflow-x:auto}.provider-pill{min-height:36px;padding:0 14px;font-size:.78rem}.map-panel{border:1px solid var(--line);border-radius:10px 10px 0 0;grid-area:map;height:min(64vh,620px);min-height:520px}.speed-card{width:270px;padding:14px;top:12px;left:auto;right:12px;transform:none}.speed-card-header{gap:11px;padding-right:24px}.network-badge{width:44px;height:44px;font-size:.82rem}.speed-card h2{font-size:1.06rem}.speed-card p{font-size:.82rem}.updated-time{font-size:.72rem}.metric-row{margin:14px 0 10px;padding-bottom:10px}.metric span{font-size:.96rem}.metric strong{font-size:1.22rem}.metric small,.metric em{font-size:.68rem}.test-count{font-size:.72rem}.map-control{bottom:16px;right:16px}.desktop-zoom-controls{z-index:500;border:1px solid var(--line);background:#fff;border-radius:10px;display:grid;position:absolute;bottom:72px;right:16px;overflow:hidden;box-shadow:0 10px 24px #0f172a1a}.desktop-zoom-controls button{border:0;border-bottom:1px solid var(--line);color:#0f172a;background:#fff;place-items:center;width:42px;height:38px;font-size:1.2rem;font-weight:800;display:grid}.desktop-zoom-controls button:last-child{border-bottom:0}.speed-range-strip{border-radius:0 0 10px 10px;grid-area:strip;margin:-14px 0 0;font-size:.78rem}.side-column .action-panel{background:0 0;order:2;padding:0}.speed-test-button{border-radius:9px;min-height:60px;font-size:.92rem}.side-column{grid-area:side;grid-template-rows:minmax(0,1fr) auto;gap:10px;min-height:100%;display:grid}.side-column .local-stats-panel{border:1px solid var(--line);background:#fff;border-radius:10px;order:1;align-content:start;align-self:stretch;gap:16px;min-height:100%;padding:20px;display:grid}.theme-dark .side-column .local-stats-panel{border-color:var(--line);background:#08111f}.local-stats-header h2{font-size:1.2rem}.local-stat-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.local-stat-summary span{min-height:78px;padding:12px}.local-stat-summary strong{font-size:1.18rem}.local-stat-summary small{font-size:.64rem}.provider-stats-row{min-height:46px;padding-inline:12px;font-size:.78rem}.provider-stats-row.heading{min-height:38px;font-size:.66rem}.provider-stat-name .provider-logo{width:22px;height:22px;font-size:.52rem}.trust-note{grid-area:trust;padding-bottom:0}}
