Ecuador Under Equatorial Skies: Andes, Cotopaxi Highlands & Galápagos Nights

Stargazing in Ecuador is shaped less by long seasonal changes in night length than by altitude, cloud regime, settlement light and whether a legal after-dark base actually exists. July–August is the shared planning window for this nine-location portfolio: the mainland Andes are in their drier season, while the Galápagos entries deliberately expose the cloud and garúa trade-off rather than hiding it. The assessed set spans Chimborazo, Cotopaxi, the northern páramo, Quito and three inhabited Galápagos islands.

Ecuador Stargazing Score
69/100
Selected-location portfolio score
Highest-Rated Location
Nomads Ecuador · 84/100
Chimborazo highlands
Preferred Observing Window
July–August
Dryer mainland-Andes pattern
Locations Assessed
9
Mainland highlands + Galápagos settlements
Strongest Sky Type
High Andean Páramo
Elevation and broad mountain horizons
Main Atmospheric Risk
Cloud, Garúa & Moisture
Especially the islands and northern humid páramo

Ecuador Night-Sky Planning Map

Nine markers cover distinct observing decisions rather than multiple points inside the same reserve.

The coordinates are planning centers, not certified parking or permission to remain after dark. Cotopaxi gates, páramo roads, private-lodge boundaries and Galápagos protected visitor sites each have their own access controls, so the responsible authority or host should be checked before an observing night.

Ecuador Stargazing Suitability Score

69/100

Nine observing environments anchor Ecuador’s portfolio, from booked high-altitude stays near Chimborazo and Cotopaxi to Galápagos settlement edges and Quito’s public observatory. The same seven factors and weights are applied to every location, then the country result is built from the median for each factor. The number is an editorial planning score, not an official sky class, live forecast, access permission or promise of clear conditions.

Overall Score69/100
Highest-Rated LocationNomads Ecuador · 84/100
Preferred Observing WindowJuly–August
Locations Assessed9
Factor Coverage7/7
Method Version2.2
Comparability QualityC
Score ScopeSelected Location Portfolio

Artificial-Light Escape

30%70

Clear-Sky Reliability

20%70

Atmospheric Transparency Potential

15%55

Astronomical Darkness Duration

10%100

Elevation and Horizon Quality

10%70

Night Access and Legal Clarity

10%85

Dark-Sky Protection and Astronomy Support

5%0

Weighted Total: 70×0.30 + 70×0.20 + 55×0.15 + 100×0.10 + 70×0.10 + 85×0.10 + 0×0.05 = 68.8 → 69/100

Read the Stargazing Suitability Score methodology

Ecuador Observing Locations

Search the scored portfolio or filter by the observing role each location can realistically serve.

9 locations
Highest-Rated Location

Nomads Ecuador

Chimborazo Province · nearly 3,800 m

MountainRemotePhotography
Location Stargazing Score84/100
Light Escape 85Clear Sky 85Access 85
  • Ecuador Travel places this Chimborazo stay at nearly 3,800 m and explicitly features its night-sky setting.
  • The lodging record maps the property at approximately −1.57900, −78.80202, far from a dense urban center.
  • July–August falls inside the drier June–September highland season described by Ecuador Travel.
  • A booked stay creates a clearer after-dark access model than an unverified roadside pull-off.

Main trade-off: The altitude that helps horizon and atmospheric scoring also raises acclimatization, cold and wind demands; outdoor observing remains subject to the host’s property rules.

Tambopaxi Lodge

Cotopaxi National Park highlands · about 3,720 m

MountainRemotePhotography
Location Stargazing Score82/100
Light Escape 85Clear Sky 85Access 70

Tambopaxi is scored as a lodging-based Cotopaxi night rather than as permission to roam park roads after closing. Mejía’s municipal tourism portal identifies the refuge as an ecotourism complex inside the national park at 3,720 m and describes the nighttime star field.

  • Open páramo terrain gives strong elevation and horizon potential.
  • The common July–August window aligns with the dry highland season.
  • The Ecuador environment SIB visitor document available online lists daytime public park-entry and exit hours, so after-dark road assumptions should be checked directly before travel.

Access caution: A room booking does not make every Cotopaxi road, gate or trail available at night. Confirm lodge arrival instructions, park status and volcanic-road conditions.

Laguna Grande de Mojanda

Imbabura–Pichincha páramo · roughly 3,725–3,750 m at the lake zone

MountainRemotePhotography
Location Stargazing Score77/100
Light Escape 85Clear Sky 85Access 50
  • Botanical collection records place Laguna Grande de Mojanda near 3,725–3,750 m, matching the high open páramo setting.
  • Geoparque Imbabura lists the Mojanda–Fuya Fuya complex within its local-guide network.
  • The northern Ecuador astronomy-site literature supports a stronger dry-season clear-sky pattern than the wet-season baseline.
  • Otavalo and other valley settlements can create distant horizon glow without turning the lake zone into an urban observing site.

Main constraint: Remote-road access is the weak point. The marker is not an overnight-parking or camping authorization; arrange a legal return plan or guide and verify local rules before staying past daylight.

Quilotoa Crater Rim

Cotopaxi Province · crater rim around 3,900 m

MountainRemotePhotography
Location Stargazing Score73/100
Light Escape 70Clear Sky 70Access 85

The crater rim trades a small local settlement footprint for one of the portfolio’s clearest overnight-use signals. Quilotoa’s community tourism site documents camping at the lagoon beach and the Shalalá Tourist Center campsite, while its map places the volcano at about −0.86119, −78.89729.

  • The high rim creates broad sky sectors but also exposed wind.
  • Fog can erase the terrain advantage quickly, even within the drier highland season.
  • Village lighting keeps the light-escape score below the more isolated Chimborazo and Tambopaxi entries.

Planning choice: Use authorized lodging or camping rather than treating every roadside viewpoint as a night site, and confirm that the specific campsite or accommodation is operating before arrival.

Polylepis Lodge

Carchi highlands · private ecological reserve near 3,580 m

MountainRemote
Location Stargazing Score71/100
Light Escape 85Clear Sky 70Access 85
  • The lodge describes itself as accommodation inside a private ecological reserve, making night presence a host-controlled stay rather than a public-road assumption.
  • The northern highland setting is dark by settlement context, but the Polylepis forest blocks large parts of the low horizon.
  • Moist páramo and forest conditions reduce atmospheric and clear-sky scores relative to Chimborazo and Cotopaxi.

Best use: A telescope or camera setup needs a host-approved open area away from trees and guest lighting; the forest itself is not an open-horizon observing platform.

Puerto Velasco Ibarra Waterfront

Floreana, Galápagos · small inhabited coastal settlement

IslandCoastRemote
Location Stargazing Score60/100
Light Escape 70Clear Sky 35Access 70

Floreana contributes the portfolio’s smallest-settlement island case. Its low local light footprint helps, but July–August sits inside the Galápagos cool season when stratus cloud and garúa are a recurring limitation.

  • The open Pacific horizon is useful for low-altitude targets over water.
  • Inter-island transport and accommodation availability need to be part of the observing plan.
  • Protected visitor sites outside the settlement are not assumed to be available after hours.

Boundary rule: Keep the night plan within lawful settlement or accommodation space unless the Galápagos National Park authority explicitly authorizes access elsewhere.

Quito Astronomical Observatory

La Alameda, Quito · urban highland astronomy facility

ObservatoryEasy AccessTelescope
Location Stargazing Score56/100
Light Escape 15Clear Sky 70Access 100

Quito’s observatory earns the strongest access and astronomy-support scores in Ecuador’s portfolio, not the strongest sky. Its official museum page publishes seasonal public nocturnal observations during June–August and asks visitors to reserve in advance.

  • The Merz equatorial telescope was designed for latitude 0° and is part of the public astronomy program.
  • Central Quito light dominates the Artificial-Light Escape score.
  • The facility works for structured public observing, education and brighter targets rather than dark-sky photography.

Facility rule: Treat the published session as a booked program; it is not permission for independent nighttime access to the observatory grounds or instruments.

Puerto Villamil Waterfront

Isabela, Galápagos · inhabited coastal zone

IslandCoastEasy Access
Location Stargazing Score56/100
Light Escape 55Clear Sky 35Access 70
  • Puerto Villamil is an inhabited town, so the scored zone is the public settlement edge rather than a protected park visitor trail.
  • The ocean gives an open horizon sector with minimal terrain obstruction in that direction.
  • July–August garúa and low cloud are the largest reason the island score falls below the Andean locations.
  • Local tourism lighting lowers the light-escape value compared with Floreana’s smaller settlement.

Night-use caution: A nearby beach or trail may belong to the protected visitor network even when the town street is public. Respect posted hours and use no protected route as an assumed after-dark shortcut.

Puerto Baquerizo Moreno Waterfront

San Cristóbal, Galápagos · provincial-capital waterfront

IslandCoastEasy Access
Location Stargazing Score51/100
Light Escape 35Clear Sky 35Access 85

This is the convenience benchmark for the Galápagos side of the portfolio: a populated administrative center with straightforward town access, an open-water horizon and much more local lighting than Floreana.

  • The July–August cool-season cloud penalty is the same structural problem as on the other islands.
  • San Cristóbal’s protected beaches and visitor sites can have their own hours even when the town waterfront remains active.
  • The location is more suitable for casual bright-target viewing than for maximizing faint-sky contrast.

Main constraint: Urban light and garúa combine here; moving onto a protected coastal trail after hours is not a valid light-pollution escape strategy.

Cotopaxi Nights Start with the Gate Question

Cotopaxi’s high plateau looks ideal on a map, but the national-park road system is not a generic night-driving network. The environment authority’s SIB visitor document available online lists daytime public entry and exit hours; that is why Tambopaxi receives a strong but not maximum access score. A booking at the lodge creates an identifiable host and arrival process, yet it does not convert every park road, refuge approach or pull-off into an unrestricted observing site.

Quilotoa has a different access pattern even though it is also in Cotopaxi Province. Community tourism information documents overnight camping options, so the practical question is whether the chosen campsite or accommodation is operating and authorized, not whether a random crater-road shoulder can be occupied all night. On both volcano systems, wind, fog and road status can change faster than the seasonal climate pattern.

Cotopaxi SIB visitor document · Quilotoa overnight-use information

July–August Favors the Andes More Than the Galápagos

Ecuador Travel places the highland dry season in June–September and explicitly associates it with clearer skies. That makes July–August a sensible common window for Chimborazo, Cotopaxi, Quito and the northern páramo, while keeping more than nine hours of astronomical darkness near the equator.

The islands move in the opposite meteorological direction. Charles Darwin Foundation climate work describes the cool season’s stratus cloud layer and garúa, and Galápagos conservation travel information likewise notes cloudier, mistier conditions from June through November. The island locations therefore remain in the portfolio as honest coastal alternatives, not as artificially optimized rows with a separate warm-season window.

Ecuador Travel — Andes seasonal planning · Charles Darwin Foundation — Galápagos climate

Galápagos Nights Belong on the Settlement Side of the Boundary

The three Galápagos markers are intentionally placed in inhabited waterfront zones: Puerto Velasco Ibarra, Puerto Villamil and Puerto Baquerizo Moreno. They are not markers for Tortuga Bay, remote lava trails, wildlife beaches or other protected visitor sites. Galápagos National Park publishes visitor rules and maintains site-specific access controls, so a public street or accommodation in town should never be treated as proof that the neighboring protected route is open after dark.

This distinction matters most on Floreana, where very low settlement density improves light escape but transport and lodging logistics are limited, and on San Cristóbal, where the provincial capital is easy to reach but produces the portfolio’s strongest island light dome. Low-impact observing also means avoiding flash, bright white lighting and wildlife disturbance around the shore.

Galápagos National Park visitor rules · Official visitor portal

At Latitude Zero, Horizon Quality Matters More Than Long Twilight Swings

All nine markers sit close enough to the equator that July–August astronomical-darkness duration is tightly grouped: the calculated portfolio range is about 9.44 to 9.54 hours per night. The difference between a strong and weak Ecuador location therefore comes mainly from artificial light, cloud, moisture, terrain and legal access rather than from one region receiving dramatically longer nights.

The equatorial position also makes both celestial hemispheres relevant. Northern and southern declinations can rise to useful altitudes across the year, but mountains can erase low-altitude sectors quickly. That is why the open páramo and crater-rim locations score well for horizon quality, while forested Polylepis and urban Quito are reduced even at high elevation.

NOAA solar calculation details · OAQ Merz equatorial telescope context

Ecuador Location Comparison

Scores are ordered from the strongest portfolio result to the weakest, with access and sky trade-offs shown side by side.

LocationScoreLight EscapeClear SkyTarget UseHorizonNight AccessMain Constraint
Nomads Ecuador848585High-altitude photographyStrong highland exposureBooked lodgingAltitude, cold, wind
Tambopaxi Lodge828585Cotopaxi highland observingOpen páramoLodge + park coordinationGate and road status
Laguna Grande de Mojanda778585Remote páramo photographyBroad mountain sectorsUnverified night roadReturn-route legality
Quilotoa Crater Rim737070Crater-rim sky and landscapeHigh exposed rimDocumented overnight optionsFog and wind
Polylepis Lodge718570Property-based mountain viewingForest constrainedBooked private lodgeMoisture and trees
Puerto Velasco Ibarra Waterfront607035Remote island coastOpen Pacific sectorSettlement/booking basedGarúa and logistics
Quito Astronomical Observatory561570Public telescope observingUrban constrainedStructured public sessionsCity light
Puerto Villamil Waterfront565535Accessible island coastOpen ocean sectorPublic settlement contextGarúa + local lighting
Puerto Baquerizo Moreno Waterfront513535Casual coastal viewingOpen ocean sectorEasy town accessUrban light + garúa

Tonight’s Astronomical Darkness

Calculated live from each location’s coordinates using NOAA’s public solar-position formula. Weather, cloud cover and local obstructions are not included.

Calculating…

Score Verification and Limitations

Preferred Observing Window: July–August

Locations Assessed: 9

Method Version: 2.2

Comparability Quality: C

Principal Data Periods: GOES clear-sky study 2008–2012; recurring June–September Andean dry-season context; long-term Galápagos cool-season climate literature; 62-night July–August solar-geometry calculation.

Limitations: Artificial-light and atmospheric factors rely mainly on disclosed categorical evidence rather than point SQM, VIIRS radiance or extracted water-vapour grids. Mountain cloud can change on scales smaller than regional climate sources. Access scores describe normal public, lodging or protected-area arrangements and do not replace same-day gate, road, ferry, permit or host confirmation. The live-darkness module uses America/Guayaquil for the single country-level shortcode; Galápagos civil time is one hour earlier under Pacific/Galapagos, so island-row clock labels should be read one hour earlier while the coordinate-based solar geometry remains location-specific.

(function(){ “use strict”; var boot=function(){ var root=document.getElementById(“stargaze-in-ecuador”); if(!root){return;} var prefersReduced=false; if(typeof window.matchMedia===”function”){ prefersReduced=window.matchMedia(“(prefers-reduced-motion: reduce)”).matches; } var mapData=[ {name:”Nomads Ecuador”,region:”Chimborazo highlands”,lat:-1.57900,lng:-78.80202,score:84,raw:83.5000,cardId:”nomads-ecuador-card”}, {name:”Tambopaxi Lodge”,region:”Cotopaxi highlands”,lat:-0.58804,lng:-78.44915,score:82,raw:82.0000,cardId:”tambopaxi-lodge-card”}, {name:”Laguna Grande de Mojanda”,region:”Imbabura-Pichincha páramo”,lat:0.13782,lng:-78.26709,score:77,raw:76.5000,cardId:”laguna-grande-mojanda-card”}, {name:”Quilotoa Crater Rim”,region:”Cotopaxi Province”,lat:-0.86119,lng:-78.89729,score:73,raw:72.5000,cardId:”quilotoa-crater-rim-card”}, {name:”Polylepis Lodge”,region:”Carchi highlands”,lat:0.70537,lng:-77.97955,score:71,raw:71.2500,cardId:”polylepis-lodge-card”}, {name:”Puerto Velasco Ibarra Waterfront”,region:”Floreana, Galápagos”,lat:-1.27511,lng:-90.48654,score:60,raw:60.2500,cardId:”puerto-velasco-ibarra-card”}, {name:”Quito Astronomical Observatory”,region:”Quito”,lat:-0.21494,lng:-78.50258,score:56,raw:56.0000,cardId:”quito-observatory-card”}, {name:”Puerto Villamil Waterfront”,region:”Isabela, Galápagos”,lat:-0.95451,lng:-90.96587,score:56,raw:55.7500,cardId:”puerto-villamil-card”}, {name:”Puerto Baquerizo Moreno Waterfront”,region:”San Cristóbal, Galápagos”,lat:-0.90172,lng:-89.61021,score:51,raw:51.2500,cardId:”puerto-baquerizo-moreno-card”} ]; var mapElement=document.getElementById(“dsky-map-ecuador”); if(!mapElement){return;} var mapRoot=mapElement.closest(“.dsky-page”); if(!mapRoot){return;} if(typeof window.L===”undefined”){return;} if(mapElement.dataset.ready===”1″){return;} if(mapElement._leaflet_id){return;} var map=window.L.map(mapElement,{scrollWheelZoom:false,attributionControl:true}); mapElement._dskyMap=map; mapElement.dataset.ready=”1″; if(map.attributionControl){ map.attributionControl.setPrefix(false); } window.L.tileLayer(“https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png”,{ maxZoom:19, attribution:”\u00A9 OpenStreetMap contributors” }).addTo(map); var markers=[]; var bounds=[]; var highlightCard=function(card){ if(!card){return;} card.classList.add(“is-highlighted”); card.scrollIntoView({behavior:prefersReduced?”auto”:”smooth”,block:”center”}); window.setTimeout(function(){card.classList.remove(“is-highlighted”);},1400); }; var createMarkerIcon=function(index){ var markerNode=document.createElement(“span”); markerNode.className=”dsky-marker”; markerNode.setAttribute(“aria-hidden”,”true”); markerNode.textContent=String(index+1); return window.L.divIcon({className:””,html:markerNode,iconSize:[34,34],iconAnchor:[17,17],popupAnchor:[0,-18]}); }; var createPopup=function(location){ var popup=document.createElement(“div”); popup.className=”dsky-popup”; var name=document.createElement(“strong”); name.textContent=location.name; popup.appendChild(name); popup.appendChild(document.createElement(“br”)); var summary=document.createElement(“span”); summary.textContent=location.region+” · “+location.score+”/100”; popup.appendChild(summary); popup.appendChild(document.createElement(“br”)); var detail=document.createElement(“a”); detail.className=”dsky-popup-detail”; detail.href=”#”+location.cardId; detail.dataset.cardId=location.cardId; detail.textContent=”View Details Below”; detail.addEventListener(“click”,function(event){ event.preventDefault(); var card=document.getElementById(detail.dataset.cardId); highlightCard(card); }); popup.appendChild(detail); return popup; }; mapData.forEach(function(location,index){ var point=window.L.latLng(location.lat,location.lng); bounds.push(point); var marker=window.L.marker([location.lat,location.lng],{icon:createMarkerIcon(index)}).addTo(map).bindPopup(createPopup(location)); marker.on(“click”,function(){marker.openPopup();}); markers.push(marker); }); map.fitBounds(bounds,{padding:[32,32],maxZoom:6}); var legendButtons=root.querySelectorAll(“.dsky-map-item”); Array.prototype.forEach.call(legendButtons,function(button){ button.addEventListener(“click”,function(){ var marker=markers[Number(button.dataset.mapIndex)]; if(!marker){return;} marker.openPopup(); map.panTo(marker.getLatLng()); }); }); var repairMap=function(){ if(mapElement._dskyMap){mapElement._dskyMap.invalidateSize(false);} }; window.requestAnimationFrame(function(){window.requestAnimationFrame(repairMap);}); window.setTimeout(repairMap,250); window.setTimeout(repairMap,1000); window.addEventListener(“resize”,repairMap); if(typeof window.ResizeObserver===”function”){ var mapResizeObserver=new window.ResizeObserver(function(){repairMap();}); mapResizeObserver.observe(mapElement); } var evidenceButtons=root.querySelectorAll(“.dsky-evidence-toggle”); Array.prototype.forEach.call(evidenceButtons,function(button){ button.addEventListener(“click”,function(){ var panel=document.getElementById(button.getAttribute(“aria-controls”)); if(!panel){return;} var willOpen=panel.hidden; panel.hidden=!willOpen; button.setAttribute(“aria-expanded”,willOpen?”true”:”false”); button.textContent=willOpen?”Hide Method, Location Values and Sources”:”View Method, Location Values and Sources”; }); }); var cards=Array.prototype.slice.call(root.querySelectorAll(“.dsky-spot-card”)); var weightMap={light:0.30,clear:0.20,atmosphere:0.15,darkness:0.10,horizon:0.10,access:0.10,support:0.05}; var attrMap={light:”data-light-score”,clear:”data-clear-score”,atmosphere:”data-atmosphere-score”,darkness:”data-darkness-score”,horizon:”data-horizon-score”,access:”data-access-score”,support:”data-support-score”}; var factorKeys=[“light”,”clear”,”atmosphere”,”darkness”,”horizon”,”access”,”support”]; var locationRows=[]; cards.forEach(function(card){ var raw=0; factorKeys.forEach(function(key){raw+=Number(card.getAttribute(attrMap[key]))*weightMap[key];}); var storedRaw=Number(card.getAttribute(“data-location-score-raw”)); var rawMatches=Number(storedRaw).toFixed(4)===Number(raw).toFixed(4); card.dataset.rawScoreValid=rawMatches?”1″:”0″; var visible=Math.round(raw); card.setAttribute(“data-location-score”,String(visible)); var visibleNode=card.querySelector(“.dsky-location-score-number”); if(visibleNode){visibleNode.textContent=String(visible);} locationRows.push({card:card,name:card.getAttribute(“data-location-name”),visible:visible,raw:raw}); }); var sortedRows=locationRows.slice().sort(function(a,b){return b.visible-a.visible||b.raw-a.raw;}); var orderValid=true; locationRows.forEach(function(row,index){ if(!sortedRows[index]){orderValid=false;return;} if(sortedRows[index].card.id!==row.card.id){orderValid=false;} }); root.dataset.locationOrderValid=orderValid?”1″:”0″; var mapOrderValid=true; mapData.forEach(function(location,index){ if(!locationRows[index]){mapOrderValid=false;return;} if(locationRows[index].name!==location.name){mapOrderValid=false;} if(locationRows[index].visible!==location.score){mapOrderValid=false;} if(Number(locationRows[index].raw).toFixed(4)!==Number(location.raw).toFixed(4)){mapOrderValid=false;} }); root.dataset.mapOrderValid=mapOrderValid?”1″:”0″; var bestScore=sortedRows[0].visible; var leaders=sortedRows.filter(function(row){return row.visible===bestScore;}); var leaderNames=leaders.map(function(row){return row.name;}); root.dataset.bestLocation=leaderNames.join(” | “); root.dataset.bestLocationScore=String(bestScore); root.dataset.bestLocationCount=String(leaders.length); var bestLabel=leaders.length===1?”Highest-Rated Location”:”Joint Highest-Rated Locations”; var labelNodes=root.querySelectorAll(“[data-best-location-label]”); Array.prototype.forEach.call(labelNodes,function(node){node.textContent=bestLabel;}); var nameNodes=root.querySelectorAll(“[data-best-location-name]”); Array.prototype.forEach.call(nameNodes,function(node){node.textContent=leaderNames.join(“, “);}); var scoreNodes=root.querySelectorAll(“[data-best-location-score]”); Array.prototype.forEach.call(scoreNodes,function(node){node.textContent=String(bestScore);}); cards.forEach(function(card){ card.classList.remove(“is-top-location”); var oldBadge=card.querySelector(“.dsky-top-badge”); if(oldBadge){oldBadge.parentNode.removeChild(oldBadge);} }); leaders.forEach(function(row){ row.card.classList.add(“is-top-location”); var badge=document.createElement(“span”); badge.className=”dsky-top-badge”; badge.textContent=leaders.length===1?”Highest-Rated Location”:”Joint Highest-Rated Location”; var top=row.card.querySelector(“.dsky-spot-top”); if(top){top.appendChild(badge);} }); var median=function(values){ var sorted=values.slice().sort(function(a,b){return a-b;}); var middle=Math.floor(sorted.length/2); if(sorted.length%2===0){return (sorted[middle-1]+sorted[middle])/2;} return sorted[middle]; }; var factorCards=Array.prototype.slice.call(root.querySelectorAll(“.dsky-score-factor”)); root.dataset.factorCountValid=factorCards.length===7?”1″:”0″; var factorValues=[]; var totalWeight=0; factorCards.forEach(function(factorCard){ var key=factorCard.getAttribute(“data-factor-key”); var values=cards.map(function(card){return Number(card.getAttribute(attrMap[key]));}); var factorMedian=median(values); var weight=Number(factorCard.getAttribute(“data-weight”)); factorCard.setAttribute(“data-score”,factorMedian.toFixed(4)); totalWeight+=weight; factorValues.push({median:factorMedian,weight:weight}); var scoreNode=factorCard.querySelector(“.dsky-score-value”); if(scoreNode){scoreNode.textContent=String(Math.round(factorMedian));} var fill=factorCard.querySelector(“.dsky-bar-fill”); if(fill){fill.style.width=String(Math.round(factorMedian))+”%”;} }); root.dataset.weightTotalValid=totalWeight===100?”1″:”0″; var countryRaw=0; factorValues.forEach(function(item){countryRaw+=item.median*(item.weight/100);}); var countryVisible=Math.round(countryRaw); var scoreCard=root.querySelector(“.dsky-score-card”); if(scoreCard){scoreCard.setAttribute(“data-overall-score”,String(countryVisible));} var countryScoreNode=root.querySelector(“.dsky-score-number”); if(countryScoreNode){countryScoreNode.textContent=String(countryVisible);} var countryDisplayNodes=root.querySelectorAll(“[data-country-score-display]”); Array.prototype.forEach.call(countryDisplayNodes,function(node){node.textContent=String(countryVisible);}); var formulaNode=root.querySelector(“.dsky-weighted-formula”); if(formulaNode){ var formulaParts=factorValues.map(function(item){return String(Math.round(item.median))+”×”+(item.weight/100).toFixed(2);}); formulaNode.textContent=formulaParts.join(” + “); } var resultNode=root.querySelector(“.dsky-weighted-result”); if(resultNode){resultNode.textContent=countryRaw.toFixed(1)+” \u2192 “+countryVisible+”/100”;} var searchInput=root.querySelector(“.dsky-search”); var filterButtons=Array.prototype.slice.call(root.querySelectorAll(“.dsky-filter-btn”)); var resultCount=root.querySelector(“.dsky-result-count”); var activeFilter=”all”; var applyFilters=function(){ var query=””; if(searchInput){query=searchInput.value.toLowerCase().replace(/^\s+|\s+$/g,””);} var visibleCount=0; cards.forEach(function(card){ var show=true; var name=(card.getAttribute(“data-name”)||””).toLowerCase(); var region=(card.getAttribute(“data-region”)||””).toLowerCase(); var tags=(card.getAttribute(“data-tags”)||””).toLowerCase(); if(query){ if(name.indexOf(query)===-1){ if(region.indexOf(query)===-1){ if(tags.indexOf(query)===-1){show=false;} } } } if(activeFilter!==”all”){ if(tags.indexOf(activeFilter)===-1){show=false;} } card.hidden=!show; if(show){visibleCount+=1;} }); if(resultCount){resultCount.textContent=String(visibleCount)+” locations”;} }; if(searchInput){searchInput.addEventListener(“input”,applyFilters);} filterButtons.forEach(function(button){ button.addEventListener(“click”,function(){ activeFilter=button.getAttribute(“data-filter”); filterButtons.forEach(function(item){ var active=item===button; item.classList.toggle(“is-active”,active); item.setAttribute(“aria-pressed”,active?”true”:”false”); }); applyFilters(); }); }); applyFilters(); }; if(document.readyState===”loading”){ document.addEventListener(“DOMContentLoaded”,boot,{once:true}); }else{ boot(); } })();
📌

Complete guide: Stargazing Countries

Scroll to Top