docs: @Override protected void initGraphics() {
          super.initGraphics();
  
          LocalDateTime now = LocalDateTime.now();
          ZonedDateTime zdt = now.atZone(tile.getZoneId());
  
          try {
              smc = new SunMoonCalculator(zdt.getYear(), zdt.getMonthValue(), zdt.getDayOfMonth(), tile.getCurrentLocation().getLatitude(), tile.getCurrentLocation().getLongitude());
              smc.calcEphemeris(tile.getZoneId());
          } catch (Exception e) {
              smc = null;
          }
          titleText = new Text();
          titleText.setFill(tile.getTitleColor());
          Helper.enableNode(titleText, !tile.getTitle().isEmpty());
  
          blueHourDotMorning       = new Circle(14, TileColor.BLUE.color);
          blueHourTitleMorning     = new Text("Blue Hour");
          blueHourSunriseText      = new Text("--:--");
          blueHourSunriseTextBox   = new VBox(blueHourTitleMorning, blueHourSunriseText);
          blueHourSunriseBox       = new HBox(blueHourDotMorning, blueHourSunriseTextBox);
          blueHourSunriseBox.setAlignment(Pos.CENTER_LEFT);
  
          sunriseSymbol            = new WeatherSymbol(ConditionAndIcon.SUNRISE, 22, tile.getForegroundColor());
          sunriseTitle             = new Text("Sunrise");
          sunriseText              = new Text("--:--");
          sunriseTextBox           = new VBox(sunriseTitle, sunriseText);
          sunriseBox               = new HBox(sunriseSymbol, sunriseTextBox);
          sunriseBox.setAlignment(Pos.CENTER_LEFT);
  
          goldenHourDotMorning     = new Circle(14, TileColor.ORANGE.color);
          goldenHourTitleMorning   = new Text("Golden Hour");
          goldenHourSunriseText    = new Text("--:--");
          goldenHourSunriseTextBox = new VBox(goldenHourTitleMorning, goldenHourSunriseText);
          goldenHourSunriseBox     = new HBox(goldenHourDotMorning, goldenHourSunriseTextBox);
          goldenHourSunriseBox.setAlignment(Pos.CENTER_LEFT);
  
          goldenHourDotEvening     = new Circle(14, TileColor.ORANGE.color);
          goldenHourTitleEvening   = new Text("Golden Hour");
          goldenHourSunsetText     = new Text("--:--");
          goldenHourSunsetTextBox  = new VBox(goldenHourTitleEvening, goldenHourSunsetText);
          goldenHourSunsetBox      = new HBox(goldenHourDotEvening, goldenHourSunsetTextBox);
          goldenHourSunsetBox.setAlignment(Pos.CENTER_LEFT);
  
          sunsetSymbol             = new WeatherSymbol(ConditionAndIcon.SUNSET, 22, tile.getForegroundColor());
          sunsetTitle              = new Text("Sunset");
          sunsetText               = new Text("--:--");
          sunsetTextBox            = new VBox(sunsetTitle, sunsetText);
          sunsetBox                = new HBox(sunsetSymbol, sunsetTextBox);
          sunsetBox.setAlignment(Pos.CENTER_LEFT);
  
          blueHourDotEvening       = new Circle(14, TileColor.BLUE.color);
          blueHourTitleEvening     = new Text("Blue Hour");
          blueHourSunsetText       = new Text("--:--");
          blueHourSunsetTextBox    = new VBox(blueHourTitleEvening, blueHourSunsetText);
          blueHourSunsetBox        = new HBox(blueHourDotEvening, blueHourSunsetTextBox);
          blueHourSunsetBox.setAlignment(Pos.CENTER_LEFT);
  
          infoBoxMorning = new VBox(blueHourSunriseBox, sunriseBox, goldenHourSunriseBox);
          infoBoxEvening = new VBox(goldenHourSunsetBox, sunsetBox, blueHourSunsetBox);
          infoBox        = new HBox(infoBoxMorning, infoBoxEvening);
          infoBox.setAlignment(Pos.CENTER);
  
          text = new Text(tile.getText());
          Helper.enableNode(text, tile.isTextVisible());
  
          getPane().getChildren().addAll(titleText, text, infoBox);
      }