SIMON Master Console Rebuild
True command center for SIMON + WEB360
This rebuild gives you a cleaner production spine: interactive tree, live viewer, guarded editor, dynamic graphics, architecture map, and note storage. It is designed to sit beside your existing
console.php
and become the stronger replacement path.
Dashboard
Tree
Viewer
System Map
File Registry
Notes
Files
15,025
Folders
377
Scanned Size
3.79 GB
PHP Files
791
Editable Text Files
12,309
File viewer
guarded to /htdocs
/infinity/_inc/app.php
<?php declare(strict_types=1); /** * /infinity/_inc/app.php — shared include (config + layout helpers) * FIX: adds infinity_header()/infinity_footer() wrappers so all pages match. * NOTE: Do not add anything before "<?php" (no spaces, no BOM). */ if (defined('INFINITY_APP_LOADED')) { return; } define('INFINITY_APP_LOADED', true); function h(string $s): string { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); } $INFINITY = [ 'brand' => [ 'name' => 'Infinity', 'tagline' => 'The Marketplace • The Sanctuary • The Living Archive', 'desc' => 'Infinity is a connected home for memory: a living journal while life unfolds, and a sanctuary you can return to when someone is gone.', ], 'links' => [ 'Company' => '/infinity/company.php', 'Mission' => '/infinity/mission.php', 'The Hall' => '/infinity/marketplace.php', 'Sanctuary' => '/infinity/sanctuary.php', 'Living' => '/infinity/living.php', 'Pricing' => '/infinity/pricing.php', 'Investors' => '/infinity/investors.php', 'Virtual' => '/infinity/contact.php', 'Sign up' => '/infinity/signup.php', 'Log in' => '/infinity/login.php', ], 'social' => [ // 'Instagram' => 'https://instagram.com/yourhandle', // 'X' => 'https://x.com/yourhandle', ], ]; /** * Preferred canonical functions: * - infinity_header() * - infinity_footer() * * page_header/page_footer remain for backward compatibility. */ function page_header(string $title, string $desc = ''): void { global $INFINITY; $desc = $desc ?: ($INFINITY['brand']['desc'] ?? ''); ?> <!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover" /> <title><?= h($title) ?></title> <meta name="theme-color" content="#070b16" /> <meta name="description" content="<?= h($desc) ?>" /> <style> :root{ --bg0:#050812; --bg1:#070b16; --text:#eaf2ff; --muted:#a9b6d9; --glass: rgba(255,255,255,.07); --glass2: rgba(255,255,255,.035); --edge: rgba(255,255,255,.16); --cyan:#6ae0ff; --indigo:#7b62ff; --pink:#ff4fd6; --sun:#ffb86b; --radius: 20px; --shadow: 0 18px 60px rgba(0,0,0,.55); } *,*::before,*::after{ box-sizing:border-box; } html,body{ height:100%; width:100%; max-width:100%; overflow-x:hidden; } body{ margin:0; font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial; background: radial-gradient(1200px 800px at 50% 30%, rgba(123,98,255,.16), transparent 60%), radial-gradient(900px 600px at 70% 60%, rgba(106,224,255,.10), transparent 55%), linear-gradient(180deg, var(--bg0), var(--bg1)); color: var(--text); } .top{ padding: 18px clamp(18px, 3vw, 34px); display:flex; align-items:center; justify-content:space-between; gap: 14px; border-bottom: 1px solid rgba(255,255,255,.08); background: rgba(0,0,0,.20); backdrop-filter: blur(16px); width:100%; max-width:100%; overflow:hidden; } .top a{ color: rgba(234,242,255,.92); text-decoration:none; } .brand{ display:flex; flex-direction:column; gap:4px; min-width: 0; max-width: 58%; } .brand b{ letter-spacing:.16em; text-transform: uppercase; font-size: 13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .brand small{ color: rgba(169,182,217,.82); letter-spacing:.08em; text-transform: uppercase; font-size: 11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .nav{ display:flex; gap:10px; justify-content:flex-end; align-items:center; min-width: 0; max-width: 42%; flex: 0 1 auto; flex-wrap: nowrap; overflow: hidden; } .chip{ padding: clamp(5px, 0.9vw, 9px) clamp(7px, 1.2vw, 11px); border-radius: 999px; border: 1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.05); font-size: clamp(9px, 1.05vw, 12px); letter-spacing: .05em; text-transform: uppercase; white-space: nowrap; flex: 0 0 auto; } .wrap{ padding: clamp(20px, 3vw, 38px); max-width: 980px; margin: 0 auto; } .card{ border-radius: var(--radius); background: linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.03)); border: 1px solid rgba(255,255,255,.14); box-shadow: var(--shadow); padding: clamp(16px, 2.4vw, 26px); } h1{ margin:0 0 10px 0; font-size: clamp(22px, 3vw, 34px); letter-spacing:-.02em; } p{ margin:0; color: rgba(169,182,217,.90); line-height: 1.55; font-size: 15px; } .grid{ margin-top: 16px; display:grid; gap: 10px; grid-template-columns: repeat(2, minmax(0,1fr)); } .btn{ display:flex; justify-content:space-between; align-items:center; padding: 12px 12px; border-radius: 16px; border: 1px solid rgba(255,255,255,.12); background: linear-gradient(135deg, rgba(255,255,255,.06), rgba(255,255,255,.02)); text-decoration:none; color: rgba(234,242,255,.92); transition: transform .16s ease, border-color .16s ease, background .16s ease; min-width: 0; } .btn:hover{ transform: translateY(-1px); border-color: rgba(106,224,255,.22); background: linear-gradient(135deg, rgba(106,224,255,.10), rgba(255,255,255,.02)); } .btn i{ font-style:normal; color: rgba(169,182,217,.90); } @media (max-width: 860px){ .grid{ grid-template-columns: 1fr; } .top{ padding: 14px 16px; gap:10px; } .brand{ max-width: 50%; } .nav{ max-width: 50%; gap:6px; } } @media (max-width: 680px){ .top{ padding: 12px 12px; gap:8px; } .brand{ max-width: 46%; } .nav{ max-width: 54%; gap:5px; } } @media (max-width: 560px){ .brand{ max-width: 44%; } .nav{ max-width: 56%; transform: scale(.92); transform-origin: right center; } } @media (max-width: 460px){ .brand{ max-width: 42%; } .nav{ max-width: 58%; transform: scale(.88); transform-origin: right center; } } </style> </head> <body> <div class="top"> <div class="brand"> <b><?= h($INFINITY['brand']['name']) ?></b> <small><?= h($INFINITY['brand']['tagline']) ?></small> </div> <div class="nav"> <a class="chip" href="/infinity/">Home</a> <a class="chip" href="/infinity/sanctuary.php">Sanctuary</a> <a class="chip" href="/infinity/marketplace.php">The Hall</a> <a class="chip" href="/infinity/login.php">Log in</a> </div> </div> <div class="wrap"> <?php } function page_footer(): void { ?> </div> </body> </html> <?php } /* ---------- Canonical names used by your pages ---------- */ function infinity_header(string $title, string $desc = ''): void { page_header($title, $desc); } function infinity_footer(): void { page_footer(); }
Save file
Quick jump
open a path
Open