{
  "$schema": "https://pointcast.xyz/BLOCKS.md#clock",
  "id": "0324",
  "title": "Sky clock",
  "url": "https://pointcast.xyz/clock/0324",
  "blockUrl": "https://pointcast.xyz/b/0324",
  "renderedAt": "2026-04-22T06:49:31.175Z",
  "globalSky": {
    "moon": {
      "illumination": 0.36349435980195743,
      "glyph": "🌓"
    },
    "zodiac": {
      "name": "Taurus",
      "glyph": "♉",
      "dayInSign": 3
    },
    "next": {
      "label": "summer solstice",
      "daysUntil": 60
    }
  },
  "zones": [
    {
      "label": "El Segundo",
      "tz": "America/Los_Angeles",
      "coordinates": {
        "lat": 33.919,
        "lon": -118.416
      },
      "region": "Pacific edge · marine-layer coast",
      "tags": [
        "coastal",
        "pacific",
        "bay"
      ],
      "facts": {
        "pop": "17k",
        "elev": "27 ft",
        "water": "Pacific ½ mi W",
        "air": "LAX 1.5 mi NE",
        "bio": "coastal sage scrub · SoCal Bight"
      },
      "timeFormat": "12",
      "nowLocalMinutes": 1429,
      "sun": {
        "altitudeDeg": -41.33785558120104,
        "azimuthDeg": 20.53777273825065,
        "isDay": false,
        "sunrise": "2026-04-22T13:13:54.633Z",
        "sunset": "2026-04-23T02:30:18.272Z",
        "dayLengthMs": 47783639
      },
      "planetaryHour": {
        "planet": "Venus",
        "glyph": "♀",
        "index": 5,
        "phase": "night"
      },
      "season": {
        "name": "spring",
        "glyph": "🌱",
        "dayOfSeason": 34,
        "lengthDays": 93
      },
      "seasonal": "April · June gloom still a month off, 62–68°F afternoons, jacarandas starting",
      "currentRitual": {
        "from": "23:00",
        "to": "00:00",
        "label": "airport lulls, coyotes on PCH",
        "glyph": "🌙",
        "data": null
      },
      "rituals": [
        {
          "from": "00:00",
          "to": "03:00",
          "label": "LAX redeyes whispering over the bay",
          "glyph": "✈"
        },
        {
          "from": "03:00",
          "to": "04:30",
          "label": "refinery night crew change, stack flames flickering",
          "glyph": "🔥"
        },
        {
          "from": "04:30",
          "to": "05:30",
          "label": "Hyperion hum on the southern breeze",
          "glyph": "🌫"
        },
        {
          "from": "05:30",
          "to": "07:00",
          "label": "marine layer at its thickest",
          "glyph": "🌫"
        },
        {
          "from": "06:30",
          "to": "08:00",
          "label": "surf check at El Porto, wetsuits in the lot",
          "glyph": "🏄"
        },
        {
          "from": "07:00",
          "to": "10:00",
          "label": "LAX arrival rush over Main Street",
          "glyph": "✈"
        },
        {
          "from": "07:30",
          "to": "08:30",
          "label": "Richmond St Elementary drop-off",
          "glyph": "🎒"
        },
        {
          "from": "08:30",
          "to": "10:00",
          "label": "aerospace offices filling (Raytheon, Aerospace Corp)",
          "glyph": "🛰"
        },
        {
          "from": "10:00",
          "to": "12:00",
          "label": "layer burning off, sun punching through",
          "glyph": "🌤",
          "data": "🌫 layer ~600 ft · 🌡 62°F · gusts W 12 kt"
        },
        {
          "from": "12:00",
          "to": "13:30",
          "label": "lunch walks down Richmond",
          "glyph": "🥗",
          "data": "🍴 trending searches: Superba · Eat at Joe's · El Segundo Brewing"
        },
        {
          "from": "13:30",
          "to": "15:00",
          "label": "onshore flow strengthens, Pacific wins back the air",
          "glyph": "🌬"
        },
        {
          "from": "15:00",
          "to": "17:00",
          "label": "school pickup, surf at El Porto filling in",
          "glyph": "🌊"
        },
        {
          "from": "17:00",
          "to": "19:30",
          "label": "Strand golden hour to Manhattan",
          "glyph": "🌅",
          "data": "🚴 Strand counter: ~4,200 riders + walkers logged today"
        },
        {
          "from": "19:30",
          "to": "21:00",
          "label": "sunset crowd on the bluff, patios at The Deck",
          "glyph": "🌇"
        },
        {
          "from": "21:00",
          "to": "23:00",
          "label": "aircraft climbing out over the water",
          "glyph": "✈"
        },
        {
          "from": "23:00",
          "to": "00:00",
          "label": "airport lulls, coyotes on PCH",
          "glyph": "🌙"
        }
      ],
      "landmarks": [
        "The Strand → Manhattan Beach",
        "El Porto surf breaks",
        "Chevron refinery + its flame",
        "Hyperion treatment plant",
        "Downtown Main + Richmond",
        "Dockweiler hang gliders",
        "SpaceX on Rocket Road",
        "LAX approach over Imperial Hwy"
      ],
      "weatherFeed": "https://api.open-meteo.com/v1/forecast?latitude=33.919&longitude=-118.416&current=temperature_2m,weather_code,wind_speed_10m,wind_direction_10m&wind_speed_unit=kmh&timezone=auto"
    },
    {
      "label": "Medway, MA",
      "tz": "America/New_York",
      "coordinates": {
        "lat": 42.141,
        "lon": -71.398
      },
      "region": "Charles River headwaters · New England exurb",
      "tags": [
        "river",
        "inland",
        "temperate-forest"
      ],
      "facts": {
        "pop": "13k",
        "elev": "180 ft",
        "water": "Charles River 0.3 mi",
        "city": "Boston 30 mi NE",
        "bio": "eastern deciduous forest · Norfolk County"
      },
      "timeFormat": "12",
      "nowLocalMinutes": 169,
      "sun": {
        "altitudeDeg": -28.344715302943726,
        "azimuthDeg": 35.286818932061436,
        "isDay": false,
        "sunrise": "2026-04-22T09:53:35.396Z",
        "sunset": "2026-04-22T23:34:31.850Z",
        "dayLengthMs": 49256454
      },
      "planetaryHour": {
        "planet": "Jupiter",
        "glyph": "♃",
        "index": 9,
        "phase": "night"
      },
      "season": {
        "name": "spring",
        "glyph": "🌱",
        "dayOfSeason": 34,
        "lengthDays": 93
      },
      "seasonal": "April · mud season ending, spring peepers going, maples budding, woodcocks at dusk",
      "currentRitual": {
        "from": "00:00",
        "to": "04:30",
        "label": "pond quiet, train horns from Franklin, owls",
        "glyph": "🦉",
        "data": null
      },
      "rituals": [
        {
          "from": "00:00",
          "to": "04:30",
          "label": "pond quiet, train horns from Franklin, owls",
          "glyph": "🦉"
        },
        {
          "from": "04:30",
          "to": "05:30",
          "label": "earliest commuters onto 109 → I-495",
          "glyph": "🚗"
        },
        {
          "from": "05:30",
          "to": "06:30",
          "label": "Dunkin line forming, commuter rail lights in Franklin",
          "glyph": "☕"
        },
        {
          "from": "06:30",
          "to": "08:30",
          "label": "school buses on Main, yellow past Oakland Park",
          "glyph": "🚍"
        },
        {
          "from": "08:30",
          "to": "10:00",
          "label": "coffee crowd at Cassidy's, NPR on kitchen radios",
          "glyph": "📻"
        },
        {
          "from": "10:00",
          "to": "12:00",
          "label": "town quiet, Choate Pond laps, library shelving",
          "glyph": "📚"
        },
        {
          "from": "12:00",
          "to": "13:00",
          "label": "Restaurant 45 fills, House of Pizza ovens up",
          "glyph": "🍕"
        },
        {
          "from": "13:00",
          "to": "15:00",
          "label": "dogs on Choate Park, long afternoon",
          "glyph": "🐕",
          "data": "🌡 56°F · Charles River gauge holding · wind SW 8 kt"
        },
        {
          "from": "15:00",
          "to": "16:30",
          "label": "middle + high bus return, Little League warmup",
          "glyph": "⚾",
          "data": "🚍 Medway HS dismissal 2:18 · 🥎 game vs Holliston 5:30"
        },
        {
          "from": "16:30",
          "to": "17:00",
          "label": "crossing guards at 109 & Main",
          "glyph": "🚸"
        },
        {
          "from": "17:00",
          "to": "19:30",
          "label": "commute reverse from I-495, dinner smells drifting",
          "glyph": "🚗"
        },
        {
          "from": "19:30",
          "to": "21:00",
          "label": "porch lights, peeper frogs starting up",
          "glyph": "🐸"
        },
        {
          "from": "21:00",
          "to": "23:30",
          "label": "Sox or Pats noise through a window",
          "glyph": "📺"
        },
        {
          "from": "23:30",
          "to": "00:00",
          "label": "pond quiet, train horns from Franklin",
          "glyph": "🌙"
        }
      ],
      "landmarks": [
        "Choate Park + Pond",
        "Medway Public Library",
        "Restaurant 45",
        "Medway House of Pizza",
        "Charles River headwaters",
        "Idylbrook Fields",
        "Route 109 → I-495 commuter pipe",
        "Franklin MBTA Line"
      ],
      "weatherFeed": "https://api.open-meteo.com/v1/forecast?latitude=42.141&longitude=-71.398&current=temperature_2m,weather_code,wind_speed_10m,wind_direction_10m&wind_speed_unit=kmh&timezone=auto"
    },
    {
      "label": "NYC",
      "tz": "America/New_York",
      "coordinates": {
        "lat": 40.713,
        "lon": -74.006
      },
      "region": "Hudson estuary · Atlantic megalopolis",
      "tags": [
        "coastal",
        "estuary",
        "atlantic"
      ],
      "facts": {
        "pop": "8.3M",
        "elev": "33 ft",
        "water": "Hudson + East Rivers",
        "air": "JFK · LGA · EWR",
        "bio": "northeastern coastal estuary · tidal straits"
      },
      "timeFormat": "12",
      "nowLocalMinutes": 169,
      "sun": {
        "altitudeDeg": -30.622289556764834,
        "azimuthDeg": 33.09911520102941,
        "isDay": false,
        "sunrise": "2026-04-22T10:06:23.656Z",
        "sunset": "2026-04-22T23:42:35.264Z",
        "dayLengthMs": 48971608
      },
      "planetaryHour": {
        "planet": "Jupiter",
        "glyph": "♃",
        "index": 9,
        "phase": "night"
      },
      "season": {
        "name": "spring",
        "glyph": "🌱",
        "dayOfSeason": 34,
        "lengthDays": 93
      },
      "seasonal": "April · cherry + magnolia peak in Central + Prospect, forsythia gone, 60°F on a good day",
      "currentRitual": {
        "from": "02:00",
        "to": "04:00",
        "label": "Katz's late crowd, delivery e-bikes humming",
        "glyph": "🥖",
        "data": null
      },
      "rituals": [
        {
          "from": "00:00",
          "to": "02:00",
          "label": "after-curtain supper, halal carts finishing up",
          "glyph": "🥙"
        },
        {
          "from": "02:00",
          "to": "04:00",
          "label": "Katz's late crowd, delivery e-bikes humming",
          "glyph": "🥖"
        },
        {
          "from": "04:00",
          "to": "05:00",
          "label": "bagel ovens fired at Ess-a, newspaper drops",
          "glyph": "🥯"
        },
        {
          "from": "05:00",
          "to": "06:00",
          "label": "Fulton Fish Market closing, doorman shifts",
          "glyph": "🐟"
        },
        {
          "from": "06:00",
          "to": "07:00",
          "label": "first coffee carts open, garbage trucks ebbing",
          "glyph": "☕"
        },
        {
          "from": "07:00",
          "to": "09:30",
          "label": "Lex line crush, 4/5 express standing-room only",
          "glyph": "🚇"
        },
        {
          "from": "09:30",
          "to": "11:00",
          "label": "bodega bacon-egg-cheese, elevator latte cups",
          "glyph": "🥪"
        },
        {
          "from": "11:00",
          "to": "12:00",
          "label": "Midtown meeting marathon starts",
          "glyph": "💼"
        },
        {
          "from": "12:00",
          "to": "14:00",
          "label": "Halal Guys line on 53rd, midtown lunch in 15",
          "glyph": "🌮"
        },
        {
          "from": "14:00",
          "to": "15:30",
          "label": "sidewalk chess in Washington Square",
          "glyph": "♟",
          "data": "🌡 58°F · 🚇 Lex line 4 min late · ❇ cherry + magnolia peak"
        },
        {
          "from": "14:00",
          "to": "17:00",
          "label": "kids walking home, museum crowds",
          "glyph": "🖼",
          "data": "🎨 MoMA queue ~30 min · 🖼 Met: Asian wing opening"
        },
        {
          "from": "17:00",
          "to": "18:00",
          "label": "bike messengers outrunning commuters",
          "glyph": "🚴"
        },
        {
          "from": "18:00",
          "to": "20:00",
          "label": "bridge + tunnel outbound, happy hour spills",
          "glyph": "🍹"
        },
        {
          "from": "20:00",
          "to": "23:00",
          "label": "Broadway curtain, after-theater steakhouse",
          "glyph": "🎭"
        },
        {
          "from": "23:00",
          "to": "01:00",
          "label": "Brooklyn-bound L, Williamsburg last call",
          "glyph": "🍺"
        },
        {
          "from": "01:00",
          "to": "04:00",
          "label": "night bus + diner circuit, 24h pizza windows",
          "glyph": "🌃"
        }
      ],
      "landmarks": [
        "Central Park",
        "Brooklyn Bridge",
        "High Line",
        "Grand Central",
        "Katz's Delicatessen",
        "Halal Guys 53rd & 6th",
        "Washington Square",
        "Times Square"
      ],
      "weatherFeed": "https://api.open-meteo.com/v1/forecast?latitude=40.713&longitude=-74.006&current=temperature_2m,weather_code,wind_speed_10m,wind_direction_10m&wind_speed_unit=kmh&timezone=auto"
    },
    {
      "label": "London",
      "tz": "Europe/London",
      "coordinates": {
        "lat": 51.507,
        "lon": -0.128
      },
      "region": "Thames basin · North Sea reach",
      "tags": [
        "river",
        "temperate-oceanic"
      ],
      "facts": {
        "pop": "9M",
        "elev": "36 ft",
        "water": "Thames, tidal to Teddington",
        "air": "LHR · LGW · LCY · STN",
        "bio": "temperate deciduous · river mouth"
      },
      "timeFormat": "12",
      "nowLocalMinutes": 469,
      "sun": {
        "altitudeDeg": 17.43611744551692,
        "azimuthDeg": 92.0763987333278,
        "isDay": true,
        "sunrise": "2026-04-22T04:49:39.299Z",
        "sunset": "2026-04-22T19:08:22.895Z",
        "dayLengthMs": 51523596
      },
      "planetaryHour": {
        "planet": "Moon",
        "glyph": "☽",
        "index": 2,
        "phase": "day"
      },
      "season": {
        "name": "spring",
        "glyph": "🌱",
        "dayOfSeason": 34,
        "lengthDays": 93
      },
      "seasonal": "April · daffodils done, bluebells in the woods, light until 8pm",
      "currentRitual": {
        "from": "07:00",
        "to": "09:30",
        "label": "Tube rush, Pret queues, oyster-card symphony",
        "glyph": "🚇",
        "data": null
      },
      "rituals": [
        {
          "from": "00:00",
          "to": "01:00",
          "label": "last Tube, night bus home",
          "glyph": "🌙"
        },
        {
          "from": "01:00",
          "to": "05:30",
          "label": "Thames slack, foxes on the bins",
          "glyph": "🦊"
        },
        {
          "from": "05:30",
          "to": "07:00",
          "label": "cabbies at the all-night caff, Billingsgate trucks",
          "glyph": "🚕"
        },
        {
          "from": "07:00",
          "to": "09:30",
          "label": "Tube rush, Pret queues, oyster-card symphony",
          "glyph": "🚇"
        },
        {
          "from": "09:30",
          "to": "12:30",
          "label": "meeting-room Tube, canteen runs, biscuit trolleys",
          "glyph": "💼"
        },
        {
          "from": "12:30",
          "to": "14:00",
          "label": "pub lunch in the sunshine",
          "glyph": "🍺"
        },
        {
          "from": "14:00",
          "to": "17:00",
          "label": "post-lunch slump, tea trolleys roll",
          "glyph": "🫖"
        },
        {
          "from": "17:00",
          "to": "19:30",
          "label": "evening pints spilling onto the pavement",
          "glyph": "🍻"
        },
        {
          "from": "19:30",
          "to": "23:00",
          "label": "long dinners, parks emptying at sunset",
          "glyph": "🌇",
          "data": "🍽 OpenTable peak · 🌳 Hyde Park gates 8:30pm · trending: sakura blossoms Regent's Park"
        },
        {
          "from": "23:00",
          "to": "00:00",
          "label": "night buses loading at Trafalgar",
          "glyph": "🚌"
        }
      ],
      "landmarks": [
        "Thames Path",
        "Hyde Park + Serpentine",
        "Camden Lock",
        "South Bank",
        "Soho Square",
        "Brixton Market",
        "Victoria Park",
        "The City ↔ the West End"
      ],
      "weatherFeed": "https://api.open-meteo.com/v1/forecast?latitude=51.507&longitude=-0.128&current=temperature_2m,weather_code,wind_speed_10m,wind_direction_10m&wind_speed_unit=kmh&timezone=auto"
    },
    {
      "label": "Mallorca",
      "tz": "Europe/Madrid",
      "coordinates": {
        "lat": 39.57,
        "lon": 2.65
      },
      "region": "Balearic Sea · western Mediterranean",
      "tags": [
        "coastal",
        "island",
        "mediterranean"
      ],
      "facts": {
        "pop": "900k island",
        "elev": "0–1,436 m",
        "water": "Balearic Sea",
        "air": "PMI Palma",
        "bio": "Mediterranean island · almond + olive + pine"
      },
      "timeFormat": "24",
      "nowLocalMinutes": 529,
      "sun": {
        "altitudeDeg": 19.61560626163312,
        "azimuthDeg": 90.07000313022382,
        "isDay": true,
        "sunrise": "2026-04-22T05:01:53.627Z",
        "sunset": "2026-04-22T18:33:55.305Z",
        "dayLengthMs": 48721678
      },
      "planetaryHour": {
        "planet": "Moon",
        "glyph": "☽",
        "index": 2,
        "phase": "day"
      },
      "season": {
        "name": "spring",
        "glyph": "🌱",
        "dayOfSeason": 34,
        "lengthDays": 93
      },
      "seasonal": "April · almond blossom fading, sea still 16°C, cyclists on the Serra in peak season",
      "currentRitual": {
        "from": "08:00",
        "to": "10:00",
        "label": "café con leche, Mercat de l'Olivar opens",
        "glyph": "☕",
        "data": null
      },
      "rituals": [
        {
          "from": "00:00",
          "to": "06:00",
          "label": "quiet, stars, fishing boats easing out of Andratx",
          "glyph": "⭐"
        },
        {
          "from": "06:00",
          "to": "08:00",
          "label": "bakers pulling ensaïmada from stone ovens",
          "glyph": "🥐"
        },
        {
          "from": "08:00",
          "to": "10:00",
          "label": "café con leche, Mercat de l'Olivar opens",
          "glyph": "☕"
        },
        {
          "from": "10:00",
          "to": "12:00",
          "label": "cyclists cranking the Tramuntana passes",
          "glyph": "🚴"
        },
        {
          "from": "12:00",
          "to": "14:00",
          "label": "paella prep at the seaside chiringuitos",
          "glyph": "🥘"
        },
        {
          "from": "14:00",
          "to": "17:00",
          "label": "siesta, shutters down",
          "glyph": "🌴"
        },
        {
          "from": "17:00",
          "to": "19:00",
          "label": "kids off school, futbol on the plaça",
          "glyph": "⚽"
        },
        {
          "from": "19:00",
          "to": "21:00",
          "label": "passeig on the harbour, sunset on Port d'Andratx",
          "glyph": "⛵",
          "data": "🌊 sea 16°C · light 1.5m swell at Cala Barca · 3 ferries in PMI tonight"
        },
        {
          "from": "21:00",
          "to": "23:30",
          "label": "late dinner, tapas spilling out, raki of the island (hierbas)",
          "glyph": "🍷",
          "data": "🍽 peak OpenTable · trending on TheFork: Celler Sa Premsa, Sa Foradada"
        },
        {
          "from": "23:30",
          "to": "00:00",
          "label": "nightfall on the Badia de Palma",
          "glyph": "🌊"
        }
      ],
      "landmarks": [
        "Palma Cathedral (La Seu)",
        "Port de Sóller",
        "Cap de Formentor",
        "Serra de Tramuntana",
        "Playa de Palma",
        "Andratx harbour",
        "Deià village",
        "Valldemossa monastery"
      ],
      "weatherFeed": "https://api.open-meteo.com/v1/forecast?latitude=39.57&longitude=2.65&current=temperature_2m,weather_code,wind_speed_10m,wind_direction_10m&wind_speed_unit=kmh&timezone=auto"
    },
    {
      "label": "Istanbul",
      "tz": "Europe/Istanbul",
      "coordinates": {
        "lat": 41.013,
        "lon": 28.979
      },
      "region": "Bosphorus · two seas, two continents",
      "tags": [
        "coastal",
        "strait",
        "mediterranean-black-sea"
      ],
      "facts": {
        "pop": "15M",
        "elev": "40 m",
        "water": "Bosphorus + Marmara",
        "air": "IST · SAW",
        "bio": "thermophilic forest · strait ecology"
      },
      "timeFormat": "24",
      "nowLocalMinutes": 589,
      "sun": {
        "altitudeDeg": 39.06786930726192,
        "azimuthDeg": 110.06934381383908,
        "isDay": true,
        "sunrise": "2026-04-22T03:14:22.607Z",
        "sunset": "2026-04-22T16:50:50.094Z",
        "dayLengthMs": 48987487
      },
      "planetaryHour": {
        "planet": "Jupiter",
        "glyph": "♃",
        "index": 4,
        "phase": "day"
      },
      "season": {
        "name": "spring",
        "glyph": "🌱",
        "dayOfSeason": 34,
        "lengthDays": 93
      },
      "seasonal": "April · Judas trees erupting purple on the Bosphorus, tulip festival in Emirgan",
      "currentRitual": {
        "from": "07:00",
        "to": "10:00",
        "label": "simit vendors, ferries throbbing Eminönü ↔ Kadıköy",
        "glyph": "⛴",
        "data": null
      },
      "rituals": [
        {
          "from": "00:30",
          "to": "05:30",
          "label": "seagulls over empty ferries, trawler lights on Marmara",
          "glyph": "🌙"
        },
        {
          "from": "05:30",
          "to": "07:00",
          "label": "fajr call from a thousand minarets",
          "glyph": "🕌"
        },
        {
          "from": "07:00",
          "to": "10:00",
          "label": "simit vendors, ferries throbbing Eminönü ↔ Kadıköy",
          "glyph": "⛴"
        },
        {
          "from": "10:00",
          "to": "12:00",
          "label": "Grand Bazaar opens, first tea glasses empty",
          "glyph": "🫖"
        },
        {
          "from": "12:00",
          "to": "14:00",
          "label": "lunch + dhuhr prayer, mantı queues",
          "glyph": "🍞"
        },
        {
          "from": "14:00",
          "to": "17:00",
          "label": "bazaar tea breaks, cats in every shadow",
          "glyph": "🐈"
        },
        {
          "from": "17:00",
          "to": "19:30",
          "label": "ferry silhouettes, magrib light over Galata",
          "glyph": "⛴"
        },
        {
          "from": "19:30",
          "to": "22:00",
          "label": "yaşa sofrası — family tables set",
          "glyph": "🍽",
          "data": "🌙 magrib 19:47 · ⛴ last Kadıköy ferry 23:40 · trending: Erguvan Festivali"
        },
        {
          "from": "22:00",
          "to": "00:30",
          "label": "meyhane tables, raki slow, fasıl music drifting",
          "glyph": "🥃",
          "data": "🎶 fasıl live in Beyoğlu meyhanes · IST arrivals today: 142"
        }
      ],
      "landmarks": [
        "Galata Tower",
        "Hagia Sophia + Blue Mosque",
        "Grand Bazaar",
        "Ortaköy mosque on the water",
        "Kadıköy fish market",
        "Beşiktaş ferry dock",
        "Karaköy waterfront",
        "Emirgan tulip fields"
      ],
      "weatherFeed": "https://api.open-meteo.com/v1/forecast?latitude=41.013&longitude=28.979&current=temperature_2m,weather_code,wind_speed_10m,wind_direction_10m&wind_speed_unit=kmh&timezone=auto"
    },
    {
      "label": "Tokyo",
      "tz": "Asia/Tokyo",
      "coordinates": {
        "lat": 35.682,
        "lon": 139.692
      },
      "region": "Tokyo Bay · Pacific rim · Kuroshio current",
      "tags": [
        "coastal",
        "bay",
        "pacific"
      ],
      "facts": {
        "pop": "14M",
        "elev": "40 m",
        "water": "Tokyo Bay",
        "air": "HND · NRT",
        "bio": "temperate maritime · cherry + cedar"
      },
      "timeFormat": "24",
      "nowLocalMinutes": 949,
      "sun": {
        "altitudeDeg": 29.372576911020204,
        "azimuthDeg": 263.89258528706165,
        "isDay": true,
        "sunrise": "2026-04-21T19:59:55.740Z",
        "sunset": "2026-04-22T09:19:41.878Z",
        "dayLengthMs": 47986138
      },
      "planetaryHour": {
        "planet": "Saturn",
        "glyph": "♄",
        "index": 10,
        "phase": "day"
      },
      "season": {
        "name": "spring",
        "glyph": "🌱",
        "dayOfSeason": 34,
        "lengthDays": 93
      },
      "seasonal": "April · hanami winding down, fresh green (ao) taking over, 18°C",
      "currentRitual": {
        "from": "13:00",
        "to": "17:30",
        "label": "afternoon desk, cicadas in summer, AC in every conbini",
        "glyph": "🌳",
        "data": null
      },
      "rituals": [
        {
          "from": "00:00",
          "to": "03:00",
          "label": "last-train runners, cab lights on Omotesando",
          "glyph": "🚕"
        },
        {
          "from": "03:00",
          "to": "05:30",
          "label": "city exhale, Toyosu trucks arriving (ex-Tsukiji)",
          "glyph": "🐟",
          "data": "🐟 Toyosu tuna auction 5:25 · 🌡 12°C · Shinkansen first run Tokyo 6:00"
        },
        {
          "from": "05:30",
          "to": "07:00",
          "label": "first light on the bay, joggers in Yoyogi",
          "glyph": "🏃"
        },
        {
          "from": "07:00",
          "to": "09:30",
          "label": "Yamanote crush, salary-reds behind newspapers",
          "glyph": "🚆"
        },
        {
          "from": "09:30",
          "to": "12:00",
          "label": "konbini coffee, morning desk hours",
          "glyph": "☕"
        },
        {
          "from": "12:00",
          "to": "13:00",
          "label": "standing soba at the station",
          "glyph": "🍜"
        },
        {
          "from": "13:00",
          "to": "17:30",
          "label": "afternoon desk, cicadas in summer, AC in every conbini",
          "glyph": "🌳"
        },
        {
          "from": "17:30",
          "to": "20:00",
          "label": "evening rush, office lights on in Shinjuku",
          "glyph": "🏙"
        },
        {
          "from": "20:00",
          "to": "21:00",
          "label": "dash for the chuo line",
          "glyph": "🏃"
        },
        {
          "from": "21:00",
          "to": "00:00",
          "label": "izakaya, last train calculus",
          "glyph": "🍶"
        }
      ],
      "landmarks": [
        "Shibuya Crossing",
        "Tokyo Tower",
        "Toyosu fish market",
        "Yoyogi Park + Meiji Jingu",
        "Asakusa · Senso-ji",
        "Harajuku Takeshita",
        "Roppongi Hills",
        "Sumida River walks"
      ],
      "weatherFeed": "https://api.open-meteo.com/v1/forecast?latitude=35.682&longitude=139.692&current=temperature_2m,weather_code,wind_speed_10m,wind_direction_10m&wind_speed_unit=kmh&timezone=auto"
    },
    {
      "label": "Mexico City",
      "tz": "America/Mexico_City",
      "coordinates": {
        "lat": 19.433,
        "lon": -99.133
      },
      "region": "Valle de México · former Lake Texcoco · 2,240 m plateau",
      "tags": [
        "highland",
        "basin",
        "dry-temperate"
      ],
      "facts": {
        "pop": "22M metro",
        "elev": "7,350 ft",
        "water": "none · drained lakebed",
        "air": "MEX 8 mi E · NLU 30 mi N",
        "bio": "high-altitude basin · volcanic rim (Popo · Izta)"
      },
      "timeFormat": "24",
      "nowLocalMinutes": 49,
      "sun": {
        "altitudeDeg": -57.9754969719033,
        "azimuthDeg": 6.7031402588811675,
        "isDay": false,
        "sunrise": "2026-04-22T12:13:34.389Z",
        "sunset": "2026-04-23T00:56:23.896Z",
        "dayLengthMs": 45769507
      },
      "planetaryHour": {
        "planet": "Moon",
        "glyph": "☽",
        "index": 7,
        "phase": "night"
      },
      "season": {
        "name": "spring",
        "glyph": "🌱",
        "dayOfSeason": 34,
        "lengthDays": 93
      },
      "seasonal": "April · jacarandas peaked, dry season ending, 24°C afternoons, air reddening at sunset, first rains due in weeks",
      "currentRitual": {
        "from": "00:00",
        "to": "02:30",
        "label": "taxis on Reforma, tortería neon on Álvaro Obregón",
        "glyph": "🚕",
        "data": null
      },
      "rituals": [
        {
          "from": "00:00",
          "to": "02:30",
          "label": "taxis on Reforma, tortería neon on Álvaro Obregón",
          "glyph": "🚕"
        },
        {
          "from": "02:30",
          "to": "04:30",
          "label": "pan dulce bakers firing Roma ovens, conchas rising",
          "glyph": "🥐"
        },
        {
          "from": "04:30",
          "to": "06:00",
          "label": "sweepers on Paseo, first micros rolling out",
          "glyph": "🧹"
        },
        {
          "from": "06:00",
          "to": "07:30",
          "label": "tamales oaxaqueños vendors steaming at every corner",
          "glyph": "🌽",
          "data": "🌽 tamal verde 15 pesos · atole vendors working the Line 3 exits"
        },
        {
          "from": "07:30",
          "to": "09:30",
          "label": "Metrobús crush, schoolkids in navy-and-white",
          "glyph": "🚌"
        },
        {
          "from": "09:30",
          "to": "11:30",
          "label": "oficinas filling, juice vendors cutting mangos con chile",
          "glyph": "🥭"
        },
        {
          "from": "11:30",
          "to": "13:30",
          "label": "jacaranda petals drifting across Colonia Condesa",
          "glyph": "🌸",
          "data": "🌸 jacarandas at peak · 24°C · UV 9 · air reddening by sunset"
        },
        {
          "from": "13:30",
          "to": "16:30",
          "label": "la comida · families + colleagues at the table, three hours",
          "glyph": "🍽",
          "data": "🍽 Contramar lunch queue 40 min · cantinas peak 14:30 · 'hora sagrada'"
        },
        {
          "from": "16:30",
          "to": "18:30",
          "label": "post-comida second wind, meetings resume in Polanco",
          "glyph": "☕"
        },
        {
          "from": "18:30",
          "to": "20:30",
          "label": "Zócalo organilleros cranking, Catedral bells at 7",
          "glyph": "🎼",
          "data": "🔔 Catedral Metropolitana bells 18:00 · organillero tip 5 pesos · Line 2 rush peak"
        },
        {
          "from": "20:30",
          "to": "23:00",
          "label": "cena at a fonda, tacos al pastor trompos spinning",
          "glyph": "🌮"
        },
        {
          "from": "23:00",
          "to": "00:00",
          "label": "rooftops in Roma Norte, last Metrobús 23:52",
          "glyph": "🌃"
        }
      ],
      "landmarks": [
        "Zócalo + Catedral Metropolitana",
        "Paseo de la Reforma",
        "Bosque de Chapultepec",
        "Coyoacán · plaza + Casa Azul",
        "Mercado de la Merced",
        "Plaza Garibaldi",
        "Teotihuacán on the horizon",
        "Popocatépetl + Iztaccíhuatl"
      ],
      "weatherFeed": "https://api.open-meteo.com/v1/forecast?latitude=19.433&longitude=-99.133&current=temperature_2m,weather_code,wind_speed_10m,wind_direction_10m&wind_speed_unit=kmh&timezone=auto"
    }
  ],
  "audioProfiles": [
    "el-segundo",
    "medway",
    "nyc",
    "london",
    "mallorca",
    "istanbul",
    "tokyo",
    "mexico-city"
  ],
  "notes": {
    "astronomy": "Sun / moon / planetary hour / season are computed from (lat, lon, now) — no APIs.",
    "weather": "Live weather is NOT baked in. Use zone.weatherFeed (Open-Meteo, no key required) for real-time.",
    "cache": "Static build — re-rendered at publish time. renderedAt reflects deploy, not request."
  }
}