but configurable
+
+ # Launch/Splash screen
+
+*/
+?>
+
+
diff --git a/lib/ico.legacy.php b/lib/ico.legacy.php
new file mode 100644
index 0000000..ed447cc
--- /dev/null
+++ b/lib/ico.legacy.php
@@ -0,0 +1 @@
+
diff --git a/lib/ico.microsoft.php b/lib/ico.microsoft.php
new file mode 100644
index 0000000..2d97e90
--- /dev/null
+++ b/lib/ico.microsoft.php
@@ -0,0 +1,7 @@
+
+ = _meta_intranet() ?>
+
+
+
diff --git a/meta.inc.php b/meta.inc.php
new file mode 100644
index 0000000..2fa778a
--- /dev/null
+++ b/meta.inc.php
@@ -0,0 +1,130 @@
+':'';
+}
+
+/**
+ * _meta_viewport
+ *
+ *
+ * Screen Density
+ * --------------
+ * - `initial-scale`: `1`
+ * Controls the zoom level when the page is first loaded.
+ * Minimum: `0.1`. Maximum: `10`
+ *
+ * The default pixel ratio depends on the display density.
+ * On a display with density less than 200dpi, the ratio is 1.0. On displays with density between 200 and 300dpi, the ratio is 1.5. For displays with density over 300dpi, the ratio is the integer floor (density/150dpi). Note that the default ratio is true only when the viewport scale equals 1.
+ *
+ * Screen Size
+ * -----------
+`width`
+
+Controls the size of the viewport. It can be set to a specific number of pixels like `width=600` or to the special value `device-width`, which is [100vw](https://developer.mozilla.org/en-US/docs/Web/CSS/length#relative_length_units_based_on_viewport), or 100% of the viewport width. Minimum: `1`. Maximum: `10000`. Negative values: ignored.
+
+`height`
+
+Controls the size of the viewport. It can be set to a specific number of pixels like `height=400` or to the special value `device-height`, which is [100vh](https://developer.mozilla.org/en-US/docs/Web/CSS/length#vh), or 100% of the viewport height. Minimum: `1`. Maximum: `10000`. Negative values: ignored.
+
+`minimum-scale`
+
+Controls how much zoom out is allowed on the page. Minimum: `0.1`. Maximum: `10`. Default: `0.1`. Negative values: ignored.
+
+`maximum-scale`
+
+Controls how much zoom in is allowed on the page. Any value less than 3 fails accessibility. Minimum: `0.1`. Maximum: `10`. Default: `10`. Negative values: ignored.
+
+`user-scalable`
+
+Controls whether zoom in and zoom out actions are allowed on the page. Valid values: `0`, `1`, `yes`, or `no`. Default: `1`, which is the same as `yes`. Setting the value to `0`, which is the same as `no`, is against Web Content Accessibility Guidelines (WCAG).
+
+`interactive-widget`
+
+Specifies the effect that interactive UI widgets, such as a virtual keyboard, have on the page's viewports. Valid values: `resizes-visual`, `resizes-content`, or `overlays-content`. Default: `resizes-visual`.
+
+#
+
+
+
+
+
+
+
+
+
+
+
+
+
+?>
diff --git a/seo.inc.php b/seo.inc.php
new file mode 100644
index 0000000..8372829
--- /dev/null
+++ b/seo.inc.php
@@ -0,0 +1,3 @@
+$config['APP_NAME']??'App',
+ 'short_name' =>$config['APP_SHORT_NAME']??str_replace(' ','',$config['APP_NAME'])??'App',
+ 'start_url' =>$config['APP_START_URL']??'/',
+];
+
+
+# "display": browser (default), standalone, minimal-ui, and fullscreen
+# fallback for each given mode: fullscreen → standalone → minimal-ui → browser
+
+$options=[
+ 'display',
+ 'description',
+ 'background_color',
+ 'theme_color',
+];
+
+foreach($options as $option) {
+ $config_name='APP_'.strtoupper($option);
+ isset($config[$config_name]) && $mf[$option] = $config[$config_name];
+}
+
+# Ensure override is set
+if (isset($mf['display']) && !isset($mf['display_override'])) {
+ $mf['display_override']= [
+ 'window-controls-overlay',
+ $mf['display'],
+ 'browser',
+ ];
+}
+
+$mf['icons'] = [
+ ['src' => __ICO__.'/android-icon-36x36.png', 'sizes' => '36x36', 'type' => 'image/png', 'density' => '0.75' ],
+ ['src' => __ICO__.'/android-icon-48x48.png', 'sizes' => '48x48', 'type' => 'image/png', 'density' => '1.0' ],
+ ['src' => __ICO__.'/android-icon-72x72.png', 'sizes' => '72x72', 'type' => 'image/png', 'density' => '1.5' ],
+ ['src' => __ICO__.'/android-icon-96x96.png', 'sizes' => '96x96', 'type' => 'image/png', 'density' => '2.0' ],
+ ['src' => __ICO__.'/android-icon-144x144.png', 'sizes' => '144x144', 'type' => 'image/png', 'density' => '3.0' ],
+ ['src' => __ICO__.'/android-icon-192x192.png', 'sizes' => '192x192', 'type' => 'image/png', 'density' => '4.0' ]
+];
+
+echo json_encode($mf,JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);
diff --git a/sitemap.php b/sitemap.php
new file mode 100644
index 0000000..f5e14ad
--- /dev/null
+++ b/sitemap.php
@@ -0,0 +1,46 @@
+
+
+
+
+modified_date;
+ $file = basename($file, '.php');
+ $update = '2025-05-07';
+?>
+
+ = $base ?>/articles/= $file ?>
+ = $update ?>
+
+
+