{"id":7185,"date":"2026-10-17T10:15:10","date_gmt":"2026-10-17T10:15:10","guid":{"rendered":"https:\/\/schoolict.net\/tools\/?page_id=7185"},"modified":"2026-10-18T15:15:54","modified_gmt":"2026-10-18T15:15:54","slug":"live-location-sharing","status":"publish","type":"page","link":"https:\/\/schoolict.net\/tools\/live-location-sharing\/","title":{"rendered":"Live Location Sharing | Free GPS Tracker with Alarm"},"content":{"rendered":"<div class=\"pth-hero-section\">\n<div class=\"pth-hero-content\">\n<h2>Live Location Sharing<\/h2>\n<p>Free live location sharing: send one link, follow a moving dot with ETA, and set a distance alarm for your stop. Learn how GPS and geofences work.<\/p>\n<div id=\"pth-toc-placeholder\"><\/div>\n<\/p>\n<\/div>\n<div class=\"pth-hero-image\">\n    <img data-no-lazy=\"1\"\n         src=\"https:\/\/schoolict.net\/tools\/wp-content\/uploads\/2026\/10\/share-live-location-link-with-destination-alarm-800x447.jpg\"\n         width=\"800\"\n         height=\"447\"\n         alt=\"share live location link with  destination alarm\"\n         fetchpriority=\"high\"\n         loading=\"eager\"\n         decoding=\"async\"\n         style=\"width:100%; height:auto; display:block;\">\n  <\/div>\n<\/div>\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li><a href=\"#\ud83d\udd34-what-happens-between-the-gps-chip-and-your-friends-screen\">\ud83d\udd34 What happens between the GPS chip and your friend&#8217;s screen<\/a><\/li><li><a href=\"#\ud83d\udfe1-a-worked-example-the-alarm-countdown-at-500-m\">\ud83d\udfe1 A worked example: the alarm countdown at 500 m<\/a><\/li><li><a href=\"#\ud83d\udfe2-three-ways-people-use-it\">\ud83d\udfe2 Three ways people use it<\/a><\/li><li><a href=\"#\ud83d\udd35-mistakes-that-make-the-alarm-miss\">\ud83d\udd35 Mistakes that make the alarm miss<\/a><\/li><li><a href=\"#\ud83d\udfe3-limits-to-know-before-a-long-trip\">\ud83d\udfe3 Limits to know before a long trip<\/a><\/li><\/ul><\/nav><\/div>\n\n\n<style id=\"sict-lt-css\">#sict-lt{--bg:#0b1220;--surface:#111c2e;--surface2:#16233a;--border:rgba(255,255,255,.1);--text:#e8eefc;--muted:#8ea3c4;--accent:#3b82f6;--green:#22c55e;--red:#ef4444;--amber:#f59e0b;--shadow:0 10px 30px rgba(0,0,0,.35);\r\nbox-sizing:border-box;width:100%;max-width:100%;margin:0 auto;color:var(--text);border-radius:18px;\r\nbackground:radial-gradient(1200px 700px at 50% -15%,#1b2b4a 0%,#0b1220 55%,#080e19 100%);\r\nfont-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;line-height:1.45;-webkit-font-smoothing:antialiased}\r\n#sict-lt *,#sict-lt *:before,#sict-lt *:after{box-sizing:border-box}\r\n#sict-lt .slt-hidden{display:none!important}\r\n#sict-lt .slt-wrap{max-width:540px;margin:0 auto;padding:18px 14px 32px}\r\n\r\n\/* Full Screen App Mode (Hides WP Theme\/Article completely) *\/\r\n#sict-lt.slt-app-fullscreen{position:fixed!important;left:0!important;top:0!important;right:0!important;bottom:0!important;width:100vw!important;height:100vh!important;max-width:none!important;margin:0!important;border-radius:0!important;z-index:999990!important;overflow-y:auto!important;overflow-x:hidden!important}\r\n\r\n\/* PC 2-Column Full Width Layout *\/\r\n#sict-lt .slt-grid{display:flex;flex-direction:column;gap:16px}\r\n#sict-lt .slt-col{display:flex;flex-direction:column;gap:14px;min-width:0}\r\n#sict-lt .slt-col .slt-card{margin:0}\r\n@media (min-width:960px){\r\n  #sict-lt .slt-wrap{max-width:100%;width:100%;padding:22px 26px 36px}\r\n  #sict-lt .slt-grid{display:grid;grid-template-columns:430px 1fr;gap:22px;align-items:start}\r\n  #sict-lt .slt-smap{height:460px!important}\r\n}\r\n@media (min-width:1280px){\r\n  #sict-lt .slt-grid{grid-template-columns:460px 1fr;gap:26px}\r\n  #sict-lt .slt-smap{height:520px!important}\r\n}\r\n\r\n\/* Highlighted Passing Town Top Bar *\/\r\n#sict-lt .slt-townbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;background:linear-gradient(90deg,rgba(245,158,11,.22),rgba(59,130,246,.18));border:1.5px solid rgba(245,158,11,.6);border-radius:14px;padding:10px 14px;margin-bottom:12px;box-shadow:0 6px 20px rgba(245,158,11,.15);transition:transform .28s,opacity .28s}\r\n#sict-lt .slt-town-left{display:flex;align-items:center;gap:10px;min-width:0;flex:1}\r\n#sict-lt .slt-town-pulse{width:12px;height:12px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 4px rgba(245,158,11,.28);animation:sltBreathe 1.6s infinite;flex:0 0 12px}\r\n#sict-lt .slt-town-lbl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.7px;color:#fcd34d;display:block}\r\n#sict-lt .slt-town-val{font-size:15px;font-weight:800;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\r\n#sict-lt .slt-town-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}\r\n#sict-lt .slt-town-eta{font-size:12px;font-weight:800;color:#fde68a;background:rgba(11,18,32,.65);padding:6px 11px;border-radius:999px;border:1px solid rgba(245,158,11,.4)}\r\n#sict-lt .slt-top-btn{background:rgba(11,18,32,.75);border:1px solid var(--border);color:var(--text);padding:6px 11px;border-radius:10px;font-size:12px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:5px;font-family:inherit;transition:background .2s,border-color .2s}\r\n#sict-lt .slt-top-btn:hover{background:rgba(59,130,246,.25);border-color:var(--accent)}\r\n#sict-lt .slt-top-btn.slt-on{background:rgba(34,197,94,.25);border-color:var(--green);color:#86efac}\r\n#sict-lt .slt-r-townbar{position:absolute;top:60px;left:12px;right:12px;z-index:1000;max-width:560px;margin:0 auto;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:linear-gradient(90deg,rgba(17,28,46,.93),rgba(22,35,58,.93));border:1.5px solid var(--amber)}\r\n#sict-lt .slt-r-townbar.slt-min-bar{padding:6px 12px;max-width:280px}\r\n#sict-lt .slt-r-townbar.slt-min-bar .slt-town-lbl{display:none}\r\n#sict-lt .slt-r-townbar.slt-min-bar .slt-town-val{font-size:13px}\r\n\r\n\/* =====================================================================\r\n   TOP MUSIC PLAYER & MOTIVATION BANNER (Directly below Top Bar)\r\n   ===================================================================== *\/\r\n#sict-lt .slt-mplayer{width:100%;background:linear-gradient(135deg,rgba(17,28,46,.98),rgba(22,35,58,.95));border:1.5px solid rgba(59,130,246,.5);border-radius:16px;padding:12px 15px;margin:0 0 16px;box-shadow:0 8px 26px rgba(0,0,0,.4);transition:all .25s ease}\r\n#sict-lt .slt-mp-motive{display:flex;align-items:center;justify-content:space-between;gap:10px;background:rgba(34,197,94,.14);border:1px solid rgba(34,197,94,.4);color:#bbf7d0;padding:8px 12px;border-radius:11px;font-size:12.5px;font-weight:600;margin-bottom:10px;line-height:1.35}\r\n#sict-lt .slt-mp-motive strong{color:#4ade80}\r\n#sict-lt .slt-mp-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}\r\n#sict-lt .slt-mp-info{display:flex;align-items:center;gap:10px;min-width:0;flex:1}\r\n#sict-lt .slt-mp-disc{width:38px;height:38px;flex:0 0 38px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#ec4899);display:grid;place-items:center;font-size:17px;color:#fff;box-shadow:0 4px 12px rgba(59,130,246,.4)}\r\n#sict-lt .slt-mp-disc.slt-spin{animation:sltSpin 4s linear infinite}\r\n@keyframes sltSpin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}\r\n#sict-lt .slt-mp-meta{min-width:0;flex:1}\r\n#sict-lt .slt-mp-title{font-size:14px;font-weight:800;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}\r\n#sict-lt .slt-mp-sub{font-size:11.5px;color:#93c5fd;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\r\n#sict-lt .slt-mp-ctrls{display:flex;align-items:center;gap:6px;flex-wrap:wrap}\r\n#sict-lt .slt-mp-btn{width:34px;height:34px;border-radius:10px;border:1px solid var(--border);background:rgba(255,255,255,.07);color:#fff;font-size:14px;font-weight:700;display:grid;place-items:center;cursor:pointer;padding:0;transition:background .2s,transform .1s}\r\n#sict-lt .slt-mp-btn:hover{background:rgba(59,130,246,.3);border-color:var(--accent)}\r\n#sict-lt .slt-mp-btn:active{transform:scale(.92)}\r\n#sict-lt .slt-mp-btn.slt-mp-play{width:40px;height:40px;border-radius:50%;background:linear-gradient(145deg,#22c55e,#15803d);border:0;font-size:16px;box-shadow:0 4px 14px rgba(34,197,94,.35)}\r\n#sict-lt .slt-mp-btn.slt-mp-active{background:rgba(59,130,246,.35);border-color:var(--accent);color:#93c5fd}\r\n#sict-lt .slt-mp-add{padding:0 12px;width:auto;font-size:12.5px;gap:5px;display:inline-flex;align-items:center;background:linear-gradient(145deg,#3b82f6,#1d4ed8);border:0}\r\n#sict-lt .slt-mp-bar{display:flex;align-items:center;gap:10px;margin-top:9px}\r\n#sict-lt .slt-mplayer.slt-mp-min{padding:8px 12px}\r\n#sict-lt .slt-mplayer.slt-mp-min .slt-mp-motive,#sict-lt .slt-mplayer.slt-mp-min .slt-mp-bar,#sict-lt .slt-mplayer.slt-mp-min .slt-mp-plist,#sict-lt .slt-mplayer.slt-mp-min .slt-mp-sub,#sict-lt .slt-mplayer.slt-mp-min .slt-mp-extra{display:none!important}\r\n#sict-lt .slt-mp-time{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;min-width:35px}\r\n#sict-lt .slt-mp-range{flex:1;height:5px;accent-color:var(--accent);cursor:pointer;margin:0}\r\n#sict-lt .slt-mp-vol{width:70px;height:5px;accent-color:var(--green);cursor:pointer;margin:0}\r\n#sict-lt .slt-mp-plist{max-height:170px;overflow-y:auto;margin-top:10px;border-top:1px solid var(--border);padding-top:8px;display:flex;flex-direction:column;gap:4px}\r\n#sict-lt .slt-mp-track{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-radius:8px;font-size:12.5px;background:rgba(255,255,255,.03);cursor:pointer;color:var(--text);transition:background .15s}\r\n#sict-lt .slt-mp-track:hover{background:rgba(255,255,255,.08)}\r\n#sict-lt .slt-mp-track.slt-playing{background:rgba(59,130,246,.25);border:1px solid rgba(59,130,246,.5);color:#fff;font-weight:700}\r\n#sict-lt .slt-mp-track span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:82%}\r\n#sict-lt .slt-mp-track small{color:var(--muted);font-size:11px}\r\n\r\n\/* Receiver Status Banner (Quick Message \/ SOS) *\/\r\n#sict-lt .slt-msg-banner{margin-top:6px;width:100%;background:rgba(59,130,246,.22);border:1px solid rgba(59,130,246,.5);color:#fff;padding:6px 10px;border-radius:9px;font-size:13px;font-weight:700;text-align:center}\r\n#sict-lt .slt-msg-banner.slt-sos{background:rgba(239,68,68,.85);border-color:#fff;animation:sltFlash 1s infinite}\r\n\r\n#sict-lt .slt-brand{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px;flex-wrap:wrap}\r\n#sict-lt .slt-brand-left{display:flex;align-items:center;gap:12px}\r\n#sict-lt .slt-mark{width:44px;height:44px;flex:0 0 44px;border-radius:13px;display:grid;place-items:center;font-size:22px;color:#fff;background:linear-gradient(145deg,#3b82f6,#1d4ed8);box-shadow:0 8px 20px rgba(59,130,246,.35)}\r\n#sict-lt .slt-title{margin:0;font-size:20px;font-weight:800;letter-spacing:-.3px;color:var(--text)}\r\n#sict-lt .slt-sub{margin:2px 0 0;font-size:12px;color:var(--muted)}\r\n#sict-lt .slt-card{background:linear-gradient(180deg,var(--surface),var(--surface2));border:1px solid var(--border);border-radius:16px;padding:16px;margin:0 0 14px;box-shadow:var(--shadow)}\r\n#sict-lt .slt-card-title{margin:0 0 4px;font-size:15px;font-weight:700;color:var(--text);display:flex;align-items:center;justify-content:space-between;gap:8px}\r\n#sict-lt .slt-muted{color:var(--muted);font-size:12.5px;margin:0 0 12px}\r\n#sict-lt .slt-row{display:flex;align-items:center;gap:10px;font-size:14px;margin-bottom:14px}\r\n#sict-lt .slt-dot{width:10px;height:10px;border-radius:50%;flex:0 0 10px;background:var(--muted);transition:background .25s,box-shadow .25s}\r\n#sict-lt .slt-dot.slt-live{background:var(--green);box-shadow:0 0 0 4px rgba(34,197,94,.18);animation:sltBreathe 2s infinite}\r\n#sict-lt .slt-dot.slt-err{background:var(--red);box-shadow:0 0 0 4px rgba(239,68,68,.18)}\r\n#sict-lt .slt-dot.slt-warn{background:var(--amber);box-shadow:0 0 0 4px rgba(245,158,11,.18)}\r\n@keyframes sltBreathe{0%,100%{opacity:1}50%{opacity:.45}}\r\n#sict-lt .slt-field{display:block;margin-bottom:12px}\r\n#sict-lt .slt-field span{display:block;font-size:11.5px;color:var(--muted);margin-bottom:5px;font-weight:700;letter-spacing:.2px}\r\n#sict-lt .slt-input{width:100%;height:auto;padding:10px 12px;border-radius:11px;font-size:13.5px;background:rgba(255,255,255,.05);border:1px solid var(--border);color:var(--text);outline:none;font-family:inherit;box-shadow:none;margin:0}\r\n#sict-lt .slt-input:focus{border-color:var(--accent);background:rgba(59,130,246,.1)}\r\n#sict-lt select.slt-input option{color:#111;background:#fff}\r\n#sict-lt .slt-input[readonly]{color:var(--muted);font-size:12px}\r\n#sict-lt .slt-btn{display:block;width:100%;margin:0;padding:12px 16px;border-radius:11px;border:0;font-size:14px;font-weight:700;font-family:inherit;line-height:1.2;cursor:pointer;color:#fff;text-align:center;text-decoration:none;transition:transform .12s,opacity .2s}\r\n#sict-lt .slt-btn:active{transform:scale(.975)}\r\n#sict-lt .slt-btn:disabled{opacity:.45;cursor:not-allowed}\r\n#sict-lt .slt-btn-go{background:linear-gradient(145deg,#22c55e,#15803d);box-shadow:0 8px 22px rgba(34,197,94,.28)}\r\n#sict-lt .slt-btn-stop{background:linear-gradient(145deg,#ef4444,#b91c1c);box-shadow:0 8px 22px rgba(239,68,68,.25)}\r\n#sict-lt .slt-btn-ghost{background:rgba(255,255,255,.07);border:1px solid var(--border);color:var(--text)}\r\n#sict-lt .slt-btn-ghost:hover{background:rgba(255,255,255,.12)}\r\n#sict-lt .slt-btn-blue{background:linear-gradient(145deg,#3b82f6,#1d4ed8)}\r\n#sict-lt .slt-btn-wa{background:linear-gradient(145deg,#25D366,#128C7E);color:#fff}\r\n#sict-lt .slt-btn-amber{background:linear-gradient(145deg,#f59e0b,#b45309);color:#fff}\r\n#sict-lt .slt-link-row{display:flex;gap:8px;margin-bottom:10px}\r\n#sict-lt .slt-link-row .slt-input{flex:1;min-width:0}\r\n#sict-lt .slt-link-row .slt-btn{flex:0 0 auto;width:auto;padding:10px 14px;font-size:13px}\r\n#sict-lt .slt-btn-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}\r\n#sict-lt .slt-btn-row3{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}\r\n#sict-lt .slt-chip-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin-bottom:10px}\r\n#sict-lt .slt-chip{padding:8px 10px;font-size:12px;border-radius:10px;background:rgba(255,255,255,.06);border:1px solid var(--border);color:var(--text);font-weight:600;cursor:pointer;text-align:center;transition:background .2s}\r\n#sict-lt .slt-chip:hover,#sict-lt .slt-chip.slt-active{background:rgba(59,130,246,.3);border-color:var(--accent)}\r\n#sict-lt .slt-chip.slt-chip-sos{background:rgba(239,68,68,.2);border-color:rgba(239,68,68,.5);color:#fca5a5}\r\n#sict-lt .slt-qr{display:grid;place-items:center;margin-top:14px}\r\n#sict-lt .slt-qr svg{width:160px;height:160px;background:#fff;padding:10px;border-radius:14px}\r\n#sict-lt .slt-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}\r\n#sict-lt .slt-stats-3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}\r\n#sict-lt .slt-stat{background:rgba(255,255,255,.05);border:1px solid var(--border);border-radius:11px;padding:9px 11px}\r\n#sict-lt .slt-k{display:block;font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-weight:700}\r\n#sict-lt .slt-val{display:block;font-size:14.5px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums;color:var(--text)}\r\n#sict-lt .slt-notice{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.35);border-radius:13px;padding:11px 13px;margin:0 0 12px;font-size:12.5px}\r\n#sict-lt .slt-notice strong{display:block;margin-bottom:3px;color:#fbbf24}\r\n#sict-lt .slt-info{background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.3);border-radius:13px;padding:11px 13px;margin:0 0 12px;font-size:12.5px;color:var(--text)}\r\n#sict-lt .slt-info strong{display:block;margin-bottom:3px;color:#93c5fd}\r\n\r\n\/* Multi-stop Queue List *\/\r\n#sict-lt .slt-qlist{display:flex;flex-direction:column;gap:6px;margin:8px 0 12px}\r\n#sict-lt .slt-qitem{display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.04);border:1px solid var(--border);border-radius:9px;padding:7px 10px;font-size:12.5px}\r\n#sict-lt .slt-qitem button{background:none;border:0;color:#fca5a5;cursor:pointer;font-weight:700;font-size:13px;padding:2px 6px}\r\n\r\n\/* Pocket Dimmer Black Screen Overlay *\/\r\n#sict-lt .slt-dimmer{position:fixed;inset:0;background:#000;color:#475569;z-index:100002;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;user-select:none}\r\n#sict-lt .slt-dimmer-info{font-size:18px;font-weight:700;color:#64748b;margin-bottom:8px}\r\n#sict-lt .slt-dimmer-sub{font-size:13px;color:#334155}\r\n\r\n\/* =====================================================================\r\n   RECEIVER MAP & COLLAPSIBLE BLUE CAGE (Bottom Sheet)\r\n   ===================================================================== *\/\r\n#sict-lt .slt-mapwrap{position:relative;isolation:isolate;height:78vh;min-height:500px;border-radius:18px;overflow:hidden;background:#0b1220}\r\n#sict-lt.slt-app-fullscreen .slt-mapwrap,#sict-lt .slt-mapwrap.slt-full{position:fixed;left:0;top:0;right:0;bottom:0;height:auto;min-height:0;border-radius:0;z-index:99998}\r\n#sict-lt .slt-map{position:absolute;left:0;top:0;right:0;bottom:0;z-index:0;background:#0b1220}\r\n#sict-lt .slt-map-top{position:absolute;top:12px;left:12px;right:12px;display:flex;justify-content:space-between;align-items:flex-start;gap:8px;z-index:1000;pointer-events:none}\r\n#sict-lt .slt-mapwrap.slt-full .slt-map-top{top:calc(12px + env(safe-area-inset-top,0px))}\r\n#sict-lt .slt-map-top > *{pointer-events:auto}\r\n#sict-lt .slt-pill{display:inline-flex;align-items:center;gap:8px;background:rgba(11,18,32,.85);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:999px;padding:9px 14px;font-size:13px;font-weight:600;box-shadow:var(--shadow);max-width:55vw}\r\n#sict-lt .slt-pill span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\r\n#sict-lt .slt-tools{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}\r\n#sict-lt .slt-tool{width:40px;height:40px;padding:0;margin:0;border-radius:12px;display:grid;place-items:center;background:rgba(11,18,32,.85);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);color:var(--text);font-size:17px;font-weight:700;cursor:pointer;font-family:inherit;box-shadow:var(--shadow);transition:background .2s,transform .12s}\r\n#sict-lt .slt-tool:active{transform:scale(.93)}\r\n#sict-lt .slt-tool.slt-active{background:rgba(59,130,246,.95);border-color:transparent}\r\n\r\n\/* Collapsible Bottom Blue Cage (Sheet) *\/\r\n#sict-lt .slt-sheet{position:absolute;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:680px;background:linear-gradient(180deg,rgba(17,28,46,.96),rgba(11,18,32,.99));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--border);border-bottom:0;border-radius:22px 22px 0 0;padding:8px 14px 14px;z-index:1000;box-shadow:0 -12px 40px rgba(0,0,0,.5);transition:all .28s cubic-bezier(.2,.8,.2,1)}\r\n#sict-lt .slt-mapwrap.slt-full .slt-sheet{padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))}\r\n#sict-lt .slt-sheet-head{display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding:2px 4px 8px;user-select:none}\r\n#sict-lt .slt-handle{width:42px;height:5px;border-radius:99px;background:rgba(255,255,255,.28);margin:0}\r\n#sict-lt .slt-sheet-toggle{background:rgba(59,130,246,.2);border:1px solid rgba(59,130,246,.45);color:#93c5fd;border-radius:99px;padding:4px 12px;font-size:11.5px;font-weight:800;cursor:pointer;font-family:inherit;transition:background .2s}\r\n#sict-lt .slt-sheet-toggle:hover{background:rgba(59,130,246,.4);color:#fff}\r\n#sict-lt .slt-sheet.slt-sheet-min{max-width:260px;border-radius:99px 99px 0 0;padding:6px 14px 8px}\r\n#sict-lt .slt-sheet.slt-sheet-min .slt-sheet-body{display:none!important}\r\n#sict-lt .slt-sheet.slt-sheet-min .slt-sheet-head{padding:0;justify-content:center;gap:10px}\r\n\r\n#sict-lt .slt-sheet .slt-stats{grid-template-columns:repeat(4,1fr);gap:7px}\r\n@media (max-width:600px){#sict-lt .slt-sheet .slt-stats{grid-template-columns:repeat(3,1fr)}}\r\n#sict-lt .slt-sheet .slt-stat{padding:7px 9px;border-radius:10px}\r\n#sict-lt .slt-sheet .slt-val{font-size:12.5px}\r\n#sict-lt .slt-sheet .slt-k{font-size:9.5px}\r\n#sict-lt .slt-sheet-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}\r\n#sict-lt .slt-sheet-actions .slt-btn{padding:10px;font-size:12.5px}\r\n#sict-lt .leaflet-container{font-family:inherit;background:#0b1220}\r\n#sict-lt .leaflet-container img.leaflet-tile,#sict-lt .leaflet-container .leaflet-marker-icon,#sict-lt .leaflet-container .leaflet-marker-shadow{max-width:none!important;max-height:none!important;width:auto;padding:0}\r\n#sict-lt .leaflet-container img.leaflet-tile{width:256px!important;height:256px!important}\r\n#sict-lt .slt-mapwrap .leaflet-top.leaflet-left{margin-top:125px}\r\n#sict-lt .leaflet-control-attribution{background:rgba(11,18,32,.78)!important;color:var(--muted)!important;font-size:10px!important;border-radius:8px;padding:2px 7px!important;border:1px solid var(--border)}\r\n#sict-lt .leaflet-control-attribution a{color:#9ec1ff!important}\r\n#sict-lt .slt-mk{position:relative;width:26px;height:26px}\r\n#sict-lt .slt-mk-pulse{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:50%;background:rgba(59,130,246,.45);animation:sltPulse 2s ease-out infinite}\r\n#sict-lt .slt-mk-dot{position:absolute;left:6px;top:6px;right:6px;bottom:6px;border-radius:50%;background:#3b82f6;border:3px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.5)}\r\n@keyframes sltPulse{0%{transform:scale(.55);opacity:.95}100%{transform:scale(2.3);opacity:0}}\r\n#sict-lt .slt-toasts{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:100005;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:calc(100% - 32px);max-width:400px}\r\n#sict-lt .slt-toast{background:rgba(17,28,46,.97);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:12px;padding:11px 15px;font-size:13px;font-weight:600;color:var(--text);box-shadow:var(--shadow);animation:sltIn .28s cubic-bezier(.2,.9,.3,1.2);width:100%;text-align:center}\r\n#sict-lt .slt-toast.slt-success{border-left-color:var(--green)}\r\n#sict-lt .slt-toast.slt-error{border-left-color:var(--red)}\r\n#sict-lt .slt-toast.slt-warn{border-left-color:var(--amber)}\r\n#sict-lt .slt-toast.slt-out{animation:sltOut .25s forwards}\r\n@keyframes sltIn{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}\r\n@keyframes sltOut{to{opacity:0;transform:translateY(10px) scale(.97)}}\r\n#sict-lt .slt-smap-wrap{position:relative;isolation:isolate;border-radius:12px;overflow:hidden;border:1px solid var(--border)}\r\n#sict-lt .slt-smap{height:340px;background:#0b1220}\r\n#sict-lt .slt-pin{width:22px;height:22px;border-radius:50%;background:#ef4444;border:3px solid #fff;box-shadow:0 2px 12px rgba(0,0,0,.75);cursor:grab}\r\n#sict-lt .slt-ralarm{position:absolute;left:12px;top:130px;z-index:1000;width:calc(100% - 24px);max-width:320px;max-height:calc(100% - 270px);overflow-y:auto;background:rgba(11,18,32,.95);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--border);border-radius:14px;padding:12px;box-shadow:var(--shadow)}\r\n#sict-lt .slt-ralarm .slt-field{margin-bottom:8px}\r\n#sict-lt .slt-ralarm .slt-btn{padding:9px 10px;font-size:13px}\r\n#sict-lt .slt-alarm{position:fixed;left:0;top:0;right:0;bottom:0;z-index:100003;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(127,29,29,.94);animation:sltFlash 1s infinite}\r\n#sict-lt .slt-alarm-box{max-width:420px;width:100%;text-align:center;color:#fff}\r\n#sict-lt .slt-alarm-icon{font-size:64px;line-height:1.1}\r\n#sict-lt .slt-alarm-title{font-size:26px;font-weight:800;margin-top:6px;color:#fff}\r\n#sict-lt .slt-alarm-text{font-size:15px;margin:8px 0 22px;color:#fee2e2}\r\n#sict-lt .slt-alarm .slt-btn{background:#fff;color:#7f1d1d;font-size:17px;padding:16px 18px}\r\n@keyframes sltFlash{0%,100%{background:rgba(127,29,29,.94)}50%{background:rgba(185,28,28,.94)}}\r\n#sict-lt .slt-hud{position:fixed;left:50%;transform:translateX(-50%);top:calc(64px + env(safe-area-inset-top,0px));z-index:99999;width:calc(100% - 24px);max-width:320px;padding:12px 16px;border-radius:16px;text-align:center;color:#fff;background:rgba(11,18,32,.96);border:2px solid #3b82f6;box-shadow:0 10px 30px rgba(0,0,0,.5)}\r\n#sict-lt .slt-hud.slt-near{border-color:#f59e0b;animation:sltHudPulse 1.2s infinite}\r\n#sict-lt .slt-hud-label{font-size:12px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:#93c5fd}\r\n#sict-lt .slt-hud.slt-near .slt-hud-label{color:#fbbf24}\r\n#sict-lt .slt-hud-dist{font-size:32px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums;color:#fff}\r\n#sict-lt .slt-hud-bar{height:8px;border-radius:99px;background:rgba(255,255,255,.14);overflow:hidden;margin:8px 0 6px}\r\n#sict-lt .slt-hud-bar span{display:block;height:100%;width:0;background:#3b82f6;transition:width .6s}\r\n#sict-lt .slt-hud.slt-near .slt-hud-bar span{background:#f59e0b}\r\n#sict-lt .slt-hud-sub{font-size:12px;color:var(--muted)}\r\n@keyframes sltHudPulse{0%,100%{box-shadow:0 10px 30px rgba(0,0,0,.5)}50%{box-shadow:0 0 0 6px rgba(245,158,11,.45),0 10px 30px rgba(0,0,0,.5)}}\r\n#sict-lt .slt-headsup{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:100004;width:calc(100% - 32px);max-width:360px;padding:24px 20px;border-radius:20px;text-align:center;background:linear-gradient(145deg,#f59e0b,#b45309);color:#fff;font-size:22px;font-weight:800;box-shadow:0 20px 60px rgba(0,0,0,.6);cursor:pointer;animation:sltIn .28s cubic-bezier(.2,.9,.3,1.2)}\r\n#sict-lt .slt-headsup small{display:block;margin-top:8px;font-size:12px;font-weight:600;opacity:.9}<\/style><div id=\"sict-lt\">\r\n\r\n  <section id=\"slt-sender\" class=\"slt-hidden\">\r\n    <div class=\"slt-wrap\">\r\n\r\n      <!-- 1. Highlighted Passing Town Top Bar + Voice Sound Button + App Fullscreen -->\r\n      <div class=\"slt-townbar\" id=\"slt-s-townbar\">\r\n        <div class=\"slt-town-left\">\r\n          <span class=\"slt-town-pulse\"><\/span>\r\n          <div>\r\n            <span class=\"slt-town-lbl\">Passing Town \/ Current Area<\/span>\r\n            <div class=\"slt-town-val\" id=\"slt-s-town\">Waiting for GPS location...<\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"slt-town-actions\">\r\n          <span class=\"slt-town-eta\" id=\"slt-s-top-eta\">ETA: -<\/span>\r\n          <button type=\"button\" id=\"slt-s-voice-btn\" class=\"slt-top-btn\" title=\"Voice Announcer\">&#128264; Voice Off<\/button>\r\n          <button type=\"button\" id=\"slt-s-appfull-btn\" class=\"slt-top-btn\" title=\"Hide article and view full screen\">&#9974; Full Screen App<\/button>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- 2. BUILT-IN TOP MUSIC PLAYER (Directly below Top Sound Bar with Open-Page Motivation) -->\r\n      <div id=\"slt-mplayer\" class=\"slt-mplayer\">\r\n        <input id=\"slt-mp-files\" type=\"file\" accept=\"audio\/*\" multiple class=\"slt-hidden\" \/>\r\n        <div class=\"slt-mp-motive\">\r\n          <span>&#128161; <strong>Keep Page Open Motivation:<\/strong> Play your favorite songs from your phone or PC right here! Enjoy music on your journey while keeping this page open so Live GPS &amp; Alarms stay <strong>100% active<\/strong> without sleeping.<\/span>\r\n        <\/div>\r\n        <div class=\"slt-mp-top\">\r\n          <div class=\"slt-mp-info\">\r\n            <div id=\"slt-mp-disc\" class=\"slt-mp-disc\">&#127925;<\/div>\r\n            <div class=\"slt-mp-meta\">\r\n              <span id=\"slt-mp-title\" class=\"slt-mp-title\">Travel Music Player (Keeps GPS Active)<\/span>\r\n              <span id=\"slt-mp-sub\" class=\"slt-mp-sub\">Select MP3 \/ audio files from your phone or PC to start listening<\/span>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"slt-mp-ctrls\">\r\n            <button type=\"button\" id=\"slt-mp-add\" class=\"slt-mp-btn slt-mp-add\" title=\"Select songs from phone or PC\">&#128194; Add Songs<\/button>\r\n            <button type=\"button\" id=\"slt-mp-prev\" class=\"slt-mp-btn\" title=\"Previous song\">&#9198;<\/button>\r\n            <button type=\"button\" id=\"slt-mp-play\" class=\"slt-mp-btn slt-mp-play\" title=\"Play \/ Pause\">&#9654;<\/button>\r\n            <button type=\"button\" id=\"slt-mp-next\" class=\"slt-mp-btn\" title=\"Next song\">&#9197;<\/button>\r\n            <button type=\"button\" id=\"slt-mp-shuf\" class=\"slt-mp-btn slt-mp-extra\" title=\"Shuffle\">&#128256;<\/button>\r\n            <button type=\"button\" id=\"slt-mp-rep\" class=\"slt-mp-btn slt-mp-extra\" title=\"Repeat\">&#128257;<\/button>\r\n            <button type=\"button\" id=\"slt-mp-listbtn\" class=\"slt-mp-btn slt-mp-extra\" title=\"Show\/Hide Playlist\">&#9776;<\/button>\r\n            <button type=\"button\" id=\"slt-mp-minbtn\" class=\"slt-mp-btn\" title=\"Minimize \/ Expand Player\">&#9650;<\/button>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"slt-mp-bar\">\r\n          <span id=\"slt-mp-cur\" class=\"slt-mp-time\">0:00<\/span>\r\n          <input id=\"slt-mp-seek\" class=\"slt-mp-range\" type=\"range\" min=\"0\" max=\"100\" value=\"0\" \/>\r\n          <span id=\"slt-mp-dur\" class=\"slt-mp-time\">0:00<\/span>\r\n          <span style=\"font-size:13px\">&#128266;<\/span>\r\n          <input id=\"slt-mp-vol\" class=\"slt-mp-vol\" type=\"range\" min=\"0\" max=\"100\" value=\"90\" title=\"Volume\" \/>\r\n        <\/div>\r\n        <div id=\"slt-mp-plist\" class=\"slt-mp-plist slt-hidden\"><\/div>\r\n      <\/div>\r\n\r\n      <div class=\"slt-brand\">\r\n        <div class=\"slt-brand-left\">\r\n          <div class=\"slt-mark\">&#9678;<\/div>\r\n          <div>\r\n            <div class=\"slt-title\">LiveTrack Pro<\/div>\r\n            <p class=\"slt-sub\">Auto-Resume Same Link, Live GPS, Road Route &amp; Travel Music Player.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div id=\"slt-setup-warning\" class=\"slt-notice slt-hidden\">\r\n        <strong>&#9888; Firebase is not configured<\/strong>\r\n        Open the snippet and paste your Firebase web config into FIREBASE_CONFIG, enable Realtime Database and Anonymous sign-in, then publish the security rules.\r\n      <\/div>\r\n\r\n      <!-- Paused \/ Backup Link Recovery Box (Only shown if user manually paused or ended early) -->\r\n      <div id=\"slt-resume\" class=\"slt-info slt-hidden\">\r\n        <strong>&#128279; Your previous share link is still valid!<\/strong>\r\n        <p class=\"slt-muted\" style=\"margin:0 0 10px\">Reconnect to continue sharing on the exact same link without sending a new link to your viewers.<\/p>\r\n        <div class=\"slt-btn-row\">\r\n          <button type=\"button\" id=\"slt-resume-btn\" class=\"slt-btn slt-btn-go\">&#9654; Reconnect Same Link<\/button>\r\n          <button type=\"button\" id=\"slt-discard-btn\" class=\"slt-btn slt-btn-ghost\">New Session<\/button>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- 2-Column Grid for PC View -->\r\n      <div class=\"slt-grid\">\r\n\r\n        <!-- Left Column: Controls, Background Booster, Share & Stats -->\r\n        <div class=\"slt-col\">\r\n          <div class=\"slt-card\">\r\n            <div class=\"slt-row\">\r\n              <span class=\"slt-dot\" id=\"slt-dot\"><\/span>\r\n              <span id=\"slt-status\">Ready to share your live location.<\/span>\r\n            <\/div>\r\n\r\n            <div class=\"slt-btn-row\" style=\"margin-bottom:12px\">\r\n              <label class=\"slt-field\" style=\"margin:0\">\r\n                <span>Display name (optional)<\/span>\r\n                <input id=\"slt-name\" class=\"slt-input\" type=\"text\" maxlength=\"24\" placeholder=\"e.g. Alex\" autocomplete=\"name\" \/>\r\n              <\/label>\r\n              <label class=\"slt-field\" style=\"margin:0\">\r\n                <span>Auto-stop after<\/span>\r\n                <select id=\"slt-duration\" class=\"slt-input\">\r\n                  <option value=\"60\">1 hour<\/option>\r\n                  <option value=\"240\">4 hours<\/option>\r\n                  <option value=\"480\" selected>8 hours<\/option>\r\n                  <option value=\"1440\">24 hours<\/option>\r\n                <\/select>\r\n              <\/label>\r\n            <\/div>\r\n\r\n            <label class=\"slt-field\" style=\"margin:0 0 12px\">\r\n              <span>Send my location every (longer = saves battery and data)<\/span>\r\n              <select id=\"slt-interval\" class=\"slt-input\">\r\n                <option value=\"1\">1 second (smoothest)<\/option>\r\n                <option value=\"2\">2 seconds<\/option>\r\n                <option value=\"5\" selected>5 seconds<\/option>\r\n                <option value=\"10\">10 seconds<\/option>\r\n                <option value=\"30\">30 seconds<\/option>\r\n                <option value=\"60\">1 minute<\/option>\r\n              <\/select>\r\n            <\/label>\r\n\r\n            <button type=\"button\" id=\"slt-start\" class=\"slt-btn slt-btn-go\">Start live sharing<\/button>\r\n            <div id=\"slt-active-btns\" class=\"slt-btn-row slt-hidden\">\r\n              <button type=\"button\" id=\"slt-pause\" class=\"slt-btn slt-btn-amber\" title=\"Temporarily pause GPS but keep link alive\">&#9208; Pause (Keep Link)<\/button>\r\n              <button type=\"button\" id=\"slt-stop\" class=\"slt-btn slt-btn-stop\" title=\"Permanently stop and delete link\">&#9209; End &amp; Delete<\/button>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <!-- Background Keep-Alive Booster Card -->\r\n          <div class=\"slt-card\">\r\n            <div class=\"slt-card-title\">\r\n              <span>&#128640; Background &amp; Screen-Off Booster<\/span>\r\n            <\/div>\r\n            <p class=\"slt-muted\">If this page closes by mistake, reopening it will <strong>automatically resume<\/strong> your same link!<\/p>\r\n            <div class=\"slt-btn-row3\">\r\n              <button type=\"button\" id=\"slt-bg-audio\" class=\"slt-btn slt-btn-ghost\" style=\"padding:10px 6px;font-size:12px\">&#128266; Keep-Alive: OFF<\/button>\r\n              <button type=\"button\" id=\"slt-bg-pip\" class=\"slt-btn slt-btn-ghost\" style=\"padding:10px 6px;font-size:12px\">&#128470; Float Mini View<\/button>\r\n              <button type=\"button\" id=\"slt-bg-dim\" class=\"slt-btn slt-btn-ghost\" style=\"padding:10px 6px;font-size:12px\">&#127761; Pocket Screen<\/button>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <!-- Share Link + Direct WhatsApp Card -->\r\n          <div id=\"slt-share\" class=\"slt-card slt-hidden\">\r\n            <div class=\"slt-card-title\">Share this live link<\/div>\r\n            <p class=\"slt-muted\">This link stays valid for your selected time period even if you refresh or reopen the page.<\/p>\r\n            <div class=\"slt-link-row\">\r\n              <input id=\"slt-link\" class=\"slt-input\" readonly \/>\r\n              <button type=\"button\" id=\"slt-copy\" class=\"slt-btn slt-btn-blue\">Copy<\/button>\r\n            <\/div>\r\n            <div class=\"slt-btn-row3\">\r\n              <button type=\"button\" id=\"slt-wa-btn\" class=\"slt-btn slt-btn-wa\" style=\"padding:10px 8px;font-size:12.5px\">WhatsApp<\/button>\r\n              <button type=\"button\" id=\"slt-share-btn\" class=\"slt-btn slt-btn-ghost\" style=\"padding:10px 8px;font-size:12.5px\">Share&hellip;<\/button>\r\n              <button type=\"button\" id=\"slt-preview\" class=\"slt-btn slt-btn-ghost\" style=\"padding:10px 8px;font-size:12.5px\">Preview (New Tab)<\/button>\r\n            <\/div>\r\n            <div id=\"slt-qr\" class=\"slt-qr slt-hidden\"><\/div>\r\n          <\/div>\r\n\r\n          <!-- One-Tap Quick Status \/ SOS Message Card -->\r\n          <div id=\"slt-quick-card\" class=\"slt-card slt-hidden\">\r\n            <div class=\"slt-card-title\">&#128172; Quick Status \/ SOS to Viewers<\/div>\r\n            <p class=\"slt-muted\">Tap a status to display it immediately on your viewers' map screen:<\/p>\r\n            <div class=\"slt-chip-grid\">\r\n              <button type=\"button\" class=\"slt-chip\" data-msg=\"In the bus \/ On the way\">&#128652; In the bus<\/button>\r\n              <button type=\"button\" class=\"slt-chip\" data-msg=\"Stuck in traffic\">&#128678; In traffic<\/button>\r\n              <button type=\"button\" class=\"slt-chip\" data-msg=\"Stopped for a break\">&#9749; Taking a break<\/button>\r\n              <button type=\"button\" class=\"slt-chip slt-chip-sos\" data-msg=\"SOS! Need help, please call me\">&#127384; SOS \/ Call Me<\/button>\r\n            <\/div>\r\n            <button type=\"button\" id=\"slt-clear-msg\" class=\"slt-btn slt-btn-ghost\" style=\"padding:8px;font-size:12px\">Clear status message<\/button>\r\n          <\/div>\r\n\r\n          <div id=\"slt-stats\" class=\"slt-card slt-hidden\">\r\n            <div class=\"slt-stats\">\r\n              <div class=\"slt-stat\"><span class=\"slt-k\">Duration<\/span><span class=\"slt-val\" id=\"slt-s-duration\">00:00<\/span><\/div>\r\n              <div class=\"slt-stat\"><span class=\"slt-k\">Time left<\/span><span class=\"slt-val\" id=\"slt-s-remaining\">-<\/span><\/div>\r\n              <div class=\"slt-stat\"><span class=\"slt-k\">Distance<\/span><span class=\"slt-val\" id=\"slt-s-distance\">0 m<\/span><\/div>\r\n              <div class=\"slt-stat\"><span class=\"slt-k\">Battery<\/span><span class=\"slt-val\" id=\"slt-s-battery\">-<\/span><\/div>\r\n              <div class=\"slt-stat\"><span class=\"slt-k\">Updates sent<\/span><span class=\"slt-val\" id=\"slt-s-updates\">0<\/span><\/div>\r\n              <div class=\"slt-stat\"><span class=\"slt-k\">Units<\/span><span class=\"slt-val\"><button type=\"button\" id=\"slt-s-units\" class=\"slt-btn slt-btn-ghost\" style=\"padding:4px 8px;font-size:12px\">Metric<\/button><\/span><\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"slt-card\">\r\n            <div class=\"slt-card-title\">&#128274; Your privacy<\/div>\r\n            <p class=\"slt-muted\" style=\"margin:0\">Your location is deleted from the database when you press End &amp; Delete, or when your selected timer expires.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- Right Column: Live Map, Route & Multi-Stop Destination Alarm -->\r\n        <div class=\"slt-col\">\r\n          <div id=\"slt-s-mapcard\" class=\"slt-card slt-hidden\">\r\n            <div class=\"slt-card-title\">Live Route &amp; Direction Map<\/div>\r\n            <p class=\"slt-muted\">Tap the map, drag the red pin, or search a town below to auto-draw the road route and calculate arrival time (ETA).<\/p>\r\n            <div class=\"slt-smap-wrap\"><div id=\"slt-s-map\" class=\"slt-smap\"><\/div><\/div>\r\n            <div class=\"slt-btn-row\" style=\"margin-top:10px\">\r\n              <button type=\"button\" id=\"slt-s-locate\" class=\"slt-btn slt-btn-ghost\">Show my location<\/button>\r\n              <button type=\"button\" id=\"slt-s-center\" class=\"slt-btn slt-btn-ghost\">Center on me<\/button>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div id=\"slt-s-alarmcard\" class=\"slt-card slt-hidden\">\r\n            <div class=\"slt-card-title\">&#128276; Destination &amp; Multi-Stop Pass Alarm<\/div>\r\n            <p class=\"slt-muted\" id=\"slt-s-gf-state\">No destination yet. Search a place or tap the map.<\/p>\r\n\r\n            <!-- Search or add to multi-stop queue -->\r\n            <label class=\"slt-field\">\r\n              <span>Search town \/ pass place (Change anytime or add to queue)<\/span>\r\n              <div class=\"slt-link-row\" style=\"margin-bottom:6px\">\r\n                <input id=\"slt-s-gf-q\" class=\"slt-input\" type=\"text\" placeholder=\"e.g. Karapitiya, Kumbalwela, Badulla...\" \/>\r\n                <button type=\"button\" id=\"slt-s-gf-find\" class=\"slt-btn slt-btn-blue\">Set Spot<\/button>\r\n                <button type=\"button\" id=\"slt-s-gf-addq\" class=\"slt-btn slt-btn-amber\" title=\"Add to multi-stop queue\">+ Queue<\/button>\r\n              <\/div>\r\n            <\/label>\r\n\r\n            <!-- Multi-Stop Queue container -->\r\n            <div id=\"slt-s-gf-qwrap\" class=\"slt-hidden\">\r\n              <span style=\"font-size:11px;color:#fcd34d;font-weight:700\">Upcoming Pass Places Queue (Auto-advances on arrival):<\/span>\r\n              <div id=\"slt-s-gf-qlist\" class=\"slt-qlist\"><\/div>\r\n            <\/div>\r\n\r\n            <!-- Change alarm distance (Preset + Custom) -->\r\n            <label class=\"slt-field\">\r\n              <span>Sound the alarm when I am within (Change anytime)<\/span>\r\n              <div class=\"slt-btn-row\">\r\n                <select id=\"slt-s-gf-radius\" class=\"slt-input\">\r\n                  <option value=\"100\">100 m<\/option>\r\n                  <option value=\"200\">200 m<\/option>\r\n                  <option value=\"500\" selected>500 m<\/option>\r\n                  <option value=\"1000\">1 km<\/option>\r\n                  <option value=\"2000\">2 km<\/option>\r\n                  <option value=\"5000\">5 km<\/option>\r\n                  <option value=\"custom\">Custom distance (m)<\/option>\r\n                <\/select>\r\n                <input id=\"slt-s-gf-custom\" class=\"slt-input\" type=\"number\" min=\"20\" max=\"50000\" step=\"50\" value=\"500\" placeholder=\"Meters (m)\" \/>\r\n              <\/div>\r\n            <\/label>\r\n\r\n            <div class=\"slt-stats-3\">\r\n              <div class=\"slt-stat\"><span class=\"slt-k\">Direct Dist<\/span><span class=\"slt-val\" id=\"slt-s-gf-dist\">-<\/span><\/div>\r\n              <div class=\"slt-stat\"><span class=\"slt-k\">Road Route<\/span><span class=\"slt-val\" id=\"slt-s-gf-rdist\">-<\/span><\/div>\r\n              <div class=\"slt-stat\"><span class=\"slt-k\">Est. Time (ETA)<\/span><span class=\"slt-val\" id=\"slt-s-gf-eta\">-<\/span><\/div>\r\n            <\/div>\r\n\r\n            <div class=\"slt-btn-row\">\r\n              <button type=\"button\" id=\"slt-s-gf-arm\" class=\"slt-btn slt-btn-blue\" disabled>Arm alarm<\/button>\r\n              <button type=\"button\" id=\"slt-s-gf-clear\" class=\"slt-btn slt-btn-ghost\" disabled>Clear spot<\/button>\r\n            <\/div>\r\n            <button type=\"button\" id=\"slt-s-gf-test\" class=\"slt-btn slt-btn-ghost\" style=\"margin-top:8px\">Test sound and vibration<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- RECEIVER SECTION -->\r\n  <section id=\"slt-receiver\" class=\"slt-hidden\">\r\n    <div id=\"slt-mapwrap\" class=\"slt-mapwrap\">\r\n      <div id=\"slt-map\" class=\"slt-map\"><\/div>\r\n\r\n      <div class=\"slt-map-top\">\r\n        <div class=\"slt-pill\">\r\n          <span class=\"slt-dot\" id=\"slt-conn-dot\"><\/span>\r\n          <span id=\"slt-conn-text\">Connecting&hellip;<\/span>\r\n        <\/div>\r\n        <div class=\"slt-tools\">\r\n          <button type=\"button\" class=\"slt-tool\" id=\"slt-r-hideui\" title=\"Show \/ Hide Blue Panels\" aria-label=\"Toggle panels\">&#128065;<\/button>\r\n          <button type=\"button\" class=\"slt-tool\" id=\"slt-r-voice\" title=\"Voice Announcer\" aria-label=\"Voice Announcer\">&#128264;<\/button>\r\n          <button type=\"button\" class=\"slt-tool\" id=\"slt-zoom-in\" title=\"Zoom in\" aria-label=\"Zoom in\">+<\/button>\r\n          <button type=\"button\" class=\"slt-tool\" id=\"slt-zoom-out\" title=\"Zoom out\" aria-label=\"Zoom out\">&minus;<\/button>\r\n          <button type=\"button\" class=\"slt-tool slt-active\" id=\"slt-follow\" title=\"Follow\" aria-label=\"Toggle follow\">&#9678;<\/button>\r\n          <button type=\"button\" class=\"slt-tool\" id=\"slt-full\" title=\"Full screen App\" aria-label=\"Toggle full screen\">&#9974;<\/button>\r\n          <button type=\"button\" class=\"slt-tool\" id=\"slt-r-bell\" title=\"Proximity alarm\" aria-label=\"Toggle proximity alarm\">&#128276;<\/button>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- Receiver Highlighted Passing Town Top Bar + Quick Status Banner -->\r\n      <div class=\"slt-townbar slt-r-townbar\" id=\"slt-r-townbar\">\r\n        <div class=\"slt-town-left\">\r\n          <span class=\"slt-town-pulse\"><\/span>\r\n          <div>\r\n            <span class=\"slt-town-lbl\">Passing Town \/ Current Area<\/span>\r\n            <div class=\"slt-town-val\" id=\"slt-r-town\">Waiting for GPS...<\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"slt-town-actions\">\r\n          <span class=\"slt-town-eta\" id=\"slt-r-top-eta\">ETA: -<\/span>\r\n        <\/div>\r\n        <div id=\"slt-r-msg\" class=\"slt-msg-banner slt-hidden\"><\/div>\r\n      <\/div>\r\n\r\n      <div id=\"slt-r-alarm\" class=\"slt-ralarm slt-hidden\">\r\n        <div class=\"slt-card-title\">&#128276; Proximity &amp; Pass Alarm<\/div>\r\n        <p class=\"slt-muted\" style=\"margin:0 0 8px\" id=\"slt-r-gf-state\">No spot yet. Tap the map or search below.<\/p>\r\n        <label class=\"slt-field\">\r\n          <span>Search pass place \/ town<\/span>\r\n          <div class=\"slt-link-row\" style=\"margin-bottom:0\">\r\n            <input id=\"slt-r-gf-q\" class=\"slt-input\" type=\"text\" placeholder=\"Town name...\" \/>\r\n            <button type=\"button\" id=\"slt-r-gf-find\" class=\"slt-btn slt-btn-blue\">Set<\/button>\r\n            <button type=\"button\" id=\"slt-r-gf-addq\" class=\"slt-btn slt-btn-amber\">+Q<\/button>\r\n          <\/div>\r\n        <\/label>\r\n        <div id=\"slt-r-gf-qwrap\" class=\"slt-hidden\">\r\n          <div id=\"slt-r-gf-qlist\" class=\"slt-qlist\"><\/div>\r\n        <\/div>\r\n        <label class=\"slt-field\">\r\n          <span>Alert me when they are within<\/span>\r\n          <div class=\"slt-btn-row\">\r\n            <select id=\"slt-r-gf-radius\" class=\"slt-input\">\r\n              <option value=\"100\">100 m<\/option>\r\n              <option value=\"200\">200 m<\/option>\r\n              <option value=\"500\" selected>500 m<\/option>\r\n              <option value=\"1000\">1 km<\/option>\r\n              <option value=\"2000\">2 km<\/option>\r\n              <option value=\"custom\">Custom (m)<\/option>\r\n            <\/select>\r\n            <input id=\"slt-r-gf-custom\" class=\"slt-input\" type=\"number\" min=\"20\" max=\"50000\" step=\"50\" value=\"500\" \/>\r\n          <\/div>\r\n        <\/label>\r\n        <div class=\"slt-stats-3\">\r\n          <div class=\"slt-stat\"><span class=\"slt-k\">Direct<\/span><span class=\"slt-val\" id=\"slt-r-gf-dist\">-<\/span><\/div>\r\n          <div class=\"slt-stat\"><span class=\"slt-k\">Road<\/span><span class=\"slt-val\" id=\"slt-r-gf-rdist\">-<\/span><\/div>\r\n          <div class=\"slt-stat\"><span class=\"slt-k\">ETA<\/span><span class=\"slt-val\" id=\"slt-r-gf-eta\">-<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"slt-btn-row\">\r\n          <button type=\"button\" id=\"slt-r-gf-arm\" class=\"slt-btn slt-btn-blue\" disabled>Arm alarm<\/button>\r\n          <button type=\"button\" id=\"slt-r-gf-clear\" class=\"slt-btn slt-btn-ghost\" disabled>Clear spot<\/button>\r\n        <\/div>\r\n        <button type=\"button\" id=\"slt-r-gf-test\" class=\"slt-btn slt-btn-ghost\" style=\"margin-top:8px\">Test sound<\/button>\r\n      <\/div>\r\n\r\n      <!-- Collapsible Bottom Blue Cage (Sheet) with Hide \/ Show Toggle -->\r\n      <div id=\"slt-r-sheet\" class=\"slt-sheet\">\r\n        <div id=\"slt-r-sheet-head\" class=\"slt-sheet-head\" title=\"Click to Hide or Show panel\">\r\n          <div class=\"slt-handle\"><\/div>\r\n          <button type=\"button\" id=\"slt-r-sheet-btn\" class=\"slt-sheet-toggle\">&#9660; Hide Info<\/button>\r\n        <\/div>\r\n        <div id=\"slt-r-sheet-body\" class=\"slt-sheet-body\">\r\n          <div class=\"slt-stats\">\r\n            <div class=\"slt-stat\"><span class=\"slt-k\">Speed<\/span><span class=\"slt-val\" id=\"slt-r-speed\">-<\/span><\/div>\r\n            <div class=\"slt-stat\"><span class=\"slt-k\">Battery<\/span><span class=\"slt-val\" id=\"slt-r-battery\">-<\/span><\/div>\r\n            <div class=\"slt-stat\"><span class=\"slt-k\">Updated<\/span><span class=\"slt-val\" id=\"slt-r-updated\">-<\/span><\/div>\r\n            <div class=\"slt-stat\"><span class=\"slt-k\">Distance<\/span><span class=\"slt-val\" id=\"slt-r-distance\">0 m<\/span><\/div>\r\n            <div class=\"slt-stat\"><span class=\"slt-k\">Accuracy<\/span><span class=\"slt-val\" id=\"slt-r-acc\">-<\/span><\/div>\r\n            <div class=\"slt-stat\"><span class=\"slt-k\">Sharing for<\/span><span class=\"slt-val\" id=\"slt-r-elapsed\">-<\/span><\/div>\r\n            <div class=\"slt-stat\"><span class=\"slt-k\">Dest. Road<\/span><span class=\"slt-val\" id=\"slt-r-dest-dist\">-<\/span><\/div>\r\n            <div class=\"slt-stat\"><span class=\"slt-k\">Dest. ETA<\/span><span class=\"slt-val\" id=\"slt-r-dest-eta\">-<\/span><\/div>\r\n          <\/div>\r\n          <div class=\"slt-sheet-actions\">\r\n            <button type=\"button\" class=\"slt-btn slt-btn-ghost\" id=\"slt-gmaps\">Open in Google Maps<\/button>\r\n            <button type=\"button\" class=\"slt-btn slt-btn-ghost\" id=\"slt-copyloc\">Copy coordinates<\/button>\r\n            <button type=\"button\" class=\"slt-btn slt-btn-ghost\" id=\"slt-r-units\">Units: Metric<\/button>\r\n            <a class=\"slt-btn slt-btn-blue\" id=\"slt-own\" href=\"#\">Share my location<\/a>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- Pocket Dimmer Overlay -->\r\n  <div id=\"slt-dimmer\" class=\"slt-dimmer slt-hidden\">\r\n    <div class=\"slt-dimmer-info\" id=\"slt-dimmer-town\">LiveTrack GPS Active<\/div>\r\n    <div class=\"slt-dimmer-sub\" id=\"slt-dimmer-eta\">Pocket Mode - Saving Battery<\/div>\r\n    <div class=\"slt-dimmer-sub\" style=\"margin-top:28px;color:#64748b;border:1px solid #1e293b;padding:8px 16px;border-radius:99px\">Double-tap anywhere to wake screen<\/div>\r\n  <\/div>\r\n\r\n  <div id=\"slt-hud\" class=\"slt-hud slt-hidden\" aria-live=\"polite\">\r\n    <div id=\"slt-hud-label\" class=\"slt-hud-label\">Waiting for GPS<\/div>\r\n    <div id=\"slt-hud-dist\" class=\"slt-hud-dist\">-<\/div>\r\n    <div class=\"slt-hud-bar\"><span id=\"slt-hud-fill\"><\/span><\/div>\r\n    <div id=\"slt-hud-sub\" class=\"slt-hud-sub\"><\/div>\r\n  <\/div>\r\n\r\n  <div id=\"slt-headsup\" class=\"slt-headsup slt-hidden\" role=\"alert\">\r\n    <span id=\"slt-headsup-text\">Getting close<\/span>\r\n    <small>Tap to close<\/small>\r\n  <\/div>\r\n\r\n  <div id=\"slt-alarm\" class=\"slt-alarm slt-hidden\" role=\"alertdialog\" aria-live=\"assertive\">\r\n    <div class=\"slt-alarm-box\">\r\n      <div class=\"slt-alarm-icon\">&#128276;<\/div>\r\n      <div id=\"slt-alarm-title\" class=\"slt-alarm-title\">Alarm<\/div>\r\n      <p id=\"slt-alarm-text\" class=\"slt-alarm-text\"><\/p>\r\n      <button type=\"button\" id=\"slt-alarm-stop\" class=\"slt-btn\">Dismiss alarm<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div id=\"slt-toasts\" class=\"slt-toasts\"><\/div>\r\n<\/div>\n\n\n\n<style>\n.sict-lls-bottom{color:#1e293b;font-size:16px;line-height:1.7;max-width:100%}\n.sict-lls-bottom *{box-sizing:border-box}\n.sict-lls-bottom h2{font-size:1.35rem;line-height:1.3;color:#0f172a;font-weight:800;margin:32px 0 12px}\n.sict-lls-bottom h3{font-size:1.05rem;line-height:1.35;color:#0f172a;font-weight:800;margin:0 0 8px}\n.sict-lls-bottom p{margin:0 0 14px}\n.sict-lls-bottom a{color:#0369A1;text-decoration:underline}\n.sict-lls-bottom strong{color:#0f172a;font-weight:800}\n.sict-lls-bottom ul{list-style:none;margin:0 0 16px;padding:0}\n.sict-lls-bottom li{position:relative;padding-left:28px;margin:0 0 10px}\n.sict-lls-bottom ul li:before{content:\"\\1F535\";position:absolute;left:0;top:2px;font-size:.8rem}\n.sict-lls-features{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin:0 0 26px}\n.sict-lls-feature{border:1px solid #e2e8f0;border-radius:14px;padding:16px 18px;background:#f8fafc}\n.sict-lls-feature p{margin:0;font-size:.95rem}\n.sict-lls-steps{list-style:none;margin:0 0 8px;padding:0}\n.sict-lls-steps li{position:relative;padding:2px 0 2px 52px;margin:0 0 16px;min-height:40px}\n.sict-lls-steps li:before{content:none}\n.sict-lls-num{position:absolute;left:0;top:0;width:38px;height:38px;border-radius:50%;background:#0369A1;color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center}\n.sict-lls-tablewrap{overflow-x:auto;margin:0 0 16px;border:1px solid #e2e8f0;border-radius:12px}\n.sict-lls-tablewrap table{border-collapse:collapse;width:100%;min-width:520px;font-size:.93rem}\n.sict-lls-tablewrap th{background:#f1f5f9;color:#0f172a;text-align:left;padding:10px 12px;font-weight:800}\n.sict-lls-tablewrap td{padding:10px 12px;border-top:1px solid #e2e8f0;vertical-align:top}\n.sict-lls-bottom .sict-faq-q{font-weight:800;color:#0f172a;margin:0 0 6px}\n.sict-lls-faq{border:1px solid #e2e8f0;border-radius:14px;padding:14px 18px;margin:0 0 12px;background:#fff}\n.sict-lls-faq p:last-child{margin:0}\n.sict-lls-updated{font-size:.9rem;color:#475569;margin:20px 0 0}\n<\/style>\n \n<div class=\"sict-lls-bottom\">\n \n  <div class=\"sict-lls-features\">\n    <div class=\"sict-lls-feature\">\n      <h3>\ud83d\udfe2 One link, no app, no sign-up<\/h3>\n      <p>Press <strong>Start live sharing<\/strong> and you get a link and a QR code. Anyone who opens it sees your moving dot in their browser. You choose how long it lasts with <strong>Auto-stop after<\/strong> (1, 4, 8 or 24 hours).<\/p>\n    <\/div>\n    <div class=\"sict-lls-feature\">\n      <h3>\ud83d\udd35 Passing town, road route and ETA<\/h3>\n      <p>The map names the town you are passing and draws a road route to the spot you choose, with an estimated arrival time. Viewers see the same route and a <strong>Dest. ETA<\/strong> on their panel.<\/p>\n    <\/div>\n    <div class=\"sict-lls-feature\">\n      <h3>\ud83d\udfe3 A distance alarm you can actually see<\/h3>\n      <p>A countdown panel, a &#8220;Getting close&#8221; popup and a full-screen alert tell you when you are near your stop. Sound and vibration are extras, because browsers can block them.<\/p>\n    <\/div>\n  <\/div>\n \n  <h2>How to start sharing in four steps<\/h2>\n  <ol class=\"sict-lls-steps\">\n    <li><span class=\"sict-lls-num\">1<\/span><strong>Set up and start.<\/strong> Type a display name if you like, choose <strong>Auto-stop after<\/strong> and <strong>Send my location every<\/strong>, then press <strong>Start live sharing<\/strong> and tap Allow when the browser asks for your location.<\/li>\n    <li><span class=\"sict-lls-num\">2<\/span><strong>Send the link.<\/strong> When the <strong>Share this live link<\/strong> card appears, press <strong>Copy<\/strong>, <strong>WhatsApp<\/strong> or <strong>Share\u2026<\/strong>. <strong>Preview<\/strong> shows exactly what your viewers will see.<\/li>\n    <li><span class=\"sict-lls-num\">3<\/span><strong>Choose where you are going.<\/strong> In <strong>Destination &amp; Multi-Stop Pass Alarm<\/strong>, type a town and press <strong>Set Spot<\/strong>, or tap the map. Use <strong>+ Queue<\/strong> for extra stops, pick the alarm distance, press <strong>Arm alarm<\/strong>, then press <strong>Test sound and vibration<\/strong> once.<\/li>\n    <li><span class=\"sict-lls-num\">4<\/span><strong>Watch, then stop.<\/strong> Viewers follow the dot and can press the bell for their own alarm. When you arrive, press <strong>Stop sharing<\/strong> and your location is deleted from the database.<\/li>\n  <\/ol>\n \n<\/div>\n\n\n\n<h2 id=\"\ud83d\udd34-what-happens-between-the-gps-chip-and-your-friends-screen\" class=\"wp-block-heading\">\ud83d\udd34 What happens between the GPS chip and your friend&#8217;s screen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When you allow location access, your browser asks the device for its position through the <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Geolocation_API\" target=\"_blank\" rel=\"noopener\">Geolocation API<\/a>. The device answers with latitude, longitude and an accuracy figure: the radius, in metres, inside which your true position probably lies. That figure comes from satellites when the sky is visible, or from Wi-Fi and mobile-tower hints when it is not. It is why a laptop indoors can be hundreds of metres off while a phone outdoors is usually much closer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Live location sharing then works like a small broadcast. Each reading is written to one record in a Firebase Realtime Database, and every viewer&#8217;s browser has a listener attached to that record. The database pushes the change to them, so viewers never keep asking &#8220;is there news yet?&#8221;. The <strong>Direct Dist<\/strong> figure is a straight-line distance worked out on the device that is looking at the map, using the haversine formula for distances on a sphere. <strong>Road Route<\/strong> comes from a routing service and is normally longer.<\/p>\n\n\n\n<h2 id=\"\ud83d\udfe1-a-worked-example-the-alarm-countdown-at-500-m\" class=\"wp-block-heading\">\ud83d\udfe1 A worked example: the alarm countdown at 500 m<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Leave the alarm distance at its 500 m default and set <strong>Send my location every<\/strong> to 5 seconds. A coach approaches your chosen stop, and the app sees three positions:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Distance to the spot<\/th><th>What you see<\/th><th>Why<\/th><\/tr><\/thead><tbody><tr><td>1.50 km<\/td><td>Blue panel &#8220;On the way&#8221; with a short progress bar<\/td><td>Still outside twice the alarm distance (1 km)<\/td><\/tr><tr><td>801 m<\/td><td>Amber panel &#8220;Getting close&#8221; and a popup: &#8220;Getting close to your stop: 801 m to go.&#8221;<\/td><td>Inside 1 km, still outside 500 m<\/td><\/tr><tr><td>445 m<\/td><td>Full-screen red alert, with sound and vibration if the browser allows them<\/td><td>Inside 500 m, so the circle has been entered<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">That &#8220;is the distance smaller than the radius?&#8221; test is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Geo-fence\" target=\"_blank\" rel=\"noopener\">geofence<\/a>: an invisible circle around a point on the map. You&#8217;ll notice the alarm fires once and then disarms. If you added more stops with <strong>+ Queue<\/strong>, it moves on to the next stop by itself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One detail decides whether a viewer&#8217;s alarm is reliable. The alarm on your own phone checks every GPS reading, but <strong>Send my location every<\/strong> controls how often viewers receive an update. A coach at 54 km\/h covers 15 m each second: 75 m between 5-second updates, but 900 m between 1-minute updates. That is nearly as wide as the whole 1,000 m circle, so a coach on an off-centre path can slip through between two updates. For fast journeys, keep the interval at 5 seconds or less.<\/p>\n\n\n\n<h2 id=\"\ud83d\udfe2-three-ways-people-use-it\" class=\"wp-block-heading\">\ud83d\udfe2 Three ways people use it<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>A school trip.<\/strong> The teacher sends the link to the parents&#8217; group. Parents watch the ETA, and the teacher taps <strong>In the bus<\/strong>, <strong>In traffic<\/strong> or <strong>Taking a break<\/strong> so the message appears on every viewer&#8217;s map.<\/li>\n\n\n\n<li><strong>A night coach where you must not miss your stop.<\/strong> Set the spot, choose <strong>1 km<\/strong> in the alarm distance list and press <strong>Arm alarm<\/strong> without starting a share. Nothing is stored in the database in this alarm-only mode.<\/li>\n\n\n\n<li><strong>A pick-up.<\/strong> A viewer presses the bell button, taps the pick-up point and sets &#8220;Alert me when they are within&#8221; to 1 km, then waits indoors until the alert appears.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"\ud83d\udd35-mistakes-that-make-the-alarm-miss\" class=\"wp-block-heading\">\ud83d\udd35 Mistakes that make the alarm miss<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Locking the screen or switching apps.<\/strong> Browsers pause GPS for hidden pages. Keep the screen on and the phone on a charger. <strong>Keep-Alive<\/strong>, <strong>Float Mini View<\/strong> and <strong>Pocket Screen<\/strong> can help on some phones, but nothing here is guaranteed.<\/li>\n\n\n\n<li><strong>An alarm distance smaller than the accuracy.<\/strong> A 100 m circle is meaningless if the position is only good to 150 m. Watch the <strong>Accuracy<\/strong> value on the viewer&#8217;s panel and use 200 m or more unless you have a clear GPS signal.<\/li>\n\n\n\n<li><strong>Skipping the test.<\/strong> Browsers allow sound only after you tap something, and iPhone browsers cannot vibrate. Press <strong>Test sound and vibration<\/strong> before the journey and treat the popup as the main alert.<\/li>\n\n\n\n<li><strong>Posting the link publicly.<\/strong> Anyone who has the link can see your location until you stop. Send it to people, not to a public page.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"\ud83d\udfe3-limits-to-know-before-a-long-trip\" class=\"wp-block-heading\">\ud83d\udfe3 Limits to know before a long trip<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Background tracking is a browser limit.<\/strong> A web page cannot promise GPS while it is hidden, so this tool is not a full replacement for a native tracking app.<\/li>\n\n\n\n<li><strong>The ETA is an estimate.<\/strong> It uses typical road speeds from a public routing service, not live traffic.<\/li>\n\n\n\n<li><strong>SOS \/ Call Me is only a message.<\/strong> It shows a red banner on viewers&#8217; maps. It does not contact emergency services, so call your local emergency number if you need help.<\/li>\n\n\n\n<li><strong>Town names and routes come from public OpenStreetMap services.<\/strong> They receive the coordinates being looked up and may slow down or limit heavy use.<\/li>\n\n\n\n<li><strong>Free database limits apply.<\/strong> A very large number of viewers at one time can reach the free tier&#8217;s connection cap.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Planning the route before you leave? Try the <a href=\"https:\/\/schoolict.net\/tools\/trip-route-planner\/\">Trip Route Planner<\/a>, and read <a href=\"https:\/\/schoolict.net\/how-gps-works\/\">how GPS works<\/a> for the theory behind the numbers above.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Last updated: October 2026<\/p>\n\n\n\n<div class=\"sict-lls-bottom\">\n \n  <h2>\ud83e\udd14 Frequently asked questions<\/h2>\n \n  <div class=\"sict-lls-faq\">\n    <p class=\"sict-faq-q\">Do my viewers need to install an app or create an account?<\/p>\n    <p>No. They open your link in any modern browser and see the map. Only the person sharing must allow location access, and sharing needs a secure (https) page.<\/p>\n  <\/div>\n \n  <div class=\"sict-lls-faq\">\n    <p class=\"sict-faq-q\">Why does sharing stop when I lock my phone?<\/p>\n    <p>Browsers pause GPS and network activity for pages that are hidden or on a locked screen. The Background and Screen-Off Booster buttons try to reduce this, but results differ by phone, so keep the screen on for important trips.<\/p>\n  <\/div>\n \n  <div class=\"sict-lls-faq\">\n    <p class=\"sict-faq-q\">Who can see my location?<\/p>\n    <p>Anyone who has your link, while sharing is active. The link ends with a random 12-character code, so treat it like a key: send it to people you trust and press Stop sharing when you arrive.<\/p>\n  <\/div>\n \n  <div class=\"sict-lls-faq\">\n    <p class=\"sict-faq-q\">What happens to my location after I press Stop sharing?<\/p>\n    <p>The record is deleted from the database. It is also removed if your device goes offline and when the Auto-stop after timer ends. A viewer who still has the page open keeps the last dot on their own screen until they close it.<\/p>\n  <\/div>\n \n  <div class=\"sict-lls-faq\">\n    <p class=\"sict-faq-q\">What does &#8220;Send my location every&#8221; change?<\/p>\n    <p>It sets how often your position is sent to viewers: from every second for the smoothest movement up to once a minute to save battery and data. Your own alarm is not affected, but viewers&#8217; alarms and the moving dot depend on it.<\/p>\n  <\/div>\n \n  <div class=\"sict-lls-faq\">\n    <p class=\"sict-faq-q\">How small can I set the alarm distance?<\/p>\n    <p>You can type a custom distance, but it only makes sense if it is larger than the accuracy your device reports. Outdoors a phone is often good to a few metres up to a few tens of metres. A laptop using Wi-Fi can be far worse, so use 200 m or more there.<\/p>\n  <\/div>\n \n  <div class=\"sict-lls-faq\">\n    <p class=\"sict-faq-q\">Is the ETA based on live traffic?<\/p>\n    <p>No. It is calculated from typical road speeds on a public routing service. Treat it as a guide and expect delays in heavy traffic, road works or bad weather.<\/p>\n  <\/div>\n \n  <div class=\"sict-lls-faq\">\n    <p class=\"sict-faq-q\">Is the SOS \/ Call Me button an emergency call?<\/p>\n    <p>No. It places a red message on your viewers&#8217; maps so people you know can phone you. It cannot reach police, ambulance or any emergency service, so use your local emergency number when you need urgent help.<\/p>\n  <\/div>\n \n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Live Location Sharing Free live location sharing: send one link, follow a moving dot with ETA, and set a distance alarm for your stop. Learn how GPS and geofences work. \ud83d\udfe2 One link, no app, no sign-up Press Start live sharing and you get a link and a QR code. Anyone who opens it sees &#8230; <a title=\"Live Location Sharing | Free GPS Tracker with Alarm\" class=\"read-more\" href=\"https:\/\/schoolict.net\/tools\/live-location-sharing\/\" aria-label=\"Read more about Live Location Sharing | Free GPS Tracker with Alarm\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":7211,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-7185","page","type-page","status-publish","has-post-thumbnail"],"_links":{"self":[{"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/pages\/7185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/comments?post=7185"}],"version-history":[{"count":4,"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/pages\/7185\/revisions"}],"predecessor-version":[{"id":7212,"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/pages\/7185\/revisions\/7212"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/media\/7211"}],"wp:attachment":[{"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/media?parent=7185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}