<!DOCTYPE html>
<html lang="en-US"><head><meta charset="utf-8">
<title>Phase 5.IV.A — $_SERVER["MOBILE"] branch triage</title>
<style>body{font-family:system-ui,sans-serif;max-width:820px;margin:2rem auto;
padding:0 1rem;line-height:1.5;color:#1a1a1a}h2{margin-top:1.8rem;
border-bottom:1px solid #ddd;padding-bottom:.2rem}code{background:#f2f2f2;
padding:0 .2em;border-radius:3px}table{border-collapse:collapse;width:100%}
td{border-top:1px solid #eee;padding:.25rem .4rem;vertical-align:top;font-size:.94em}
td.loc{white-space:nowrap;font-family:monospace;font-size:.85em}.n{color:#555}
</style></head><body>
<h1>Phase 5.IV.A — the <code>$_SERVER["MOBILE"]</code> branch triage</h1>
<p>All 108 branch sites. Every arrangement site is now a media query: the column-hides and simple markup swaps in A.2, and the mixed structural forms in A.3 (uniform cell markup that stacks on narrow with <code>stack-narrow</code>). Content and logic sites stay PHP; the viewport meta is IV.B and the last body-class IV.C.</p>
<p class="n">Totals: arrangement 43 (converted), content 38, logic 24, viewport 2, mobile-class 1 — 108 sites.</p>
<h2>arrangement — converted to a media query (A.2 + A.3 done) <span class="n">(43)</span></h2>
<table>
<tr><td class="loc">?:101</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:108</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:129</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:93</td><td>colspan count for a spacer row</td></tr>
<tr><td class="loc">?:115</td><td>A.3: uniform row markup + stack-narrow</td></tr>
<tr><td class="loc">?:144</td><td>A.3: uniform row markup + stack-narrow</td></tr>
<tr><td class="loc">?:147</td><td>A.3: constant colspan, spacer hidden narrow</td></tr>
<tr><td class="loc">?:163</td><td>A.3: spacer cell always emitted, hidden narrow</td></tr>
<tr><td class="loc">?:109</td><td>A.3: one row per string, stacks on narrow via stack-narrow</td></tr>
<tr><td class="loc">?:107</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:104</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:159</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:488</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:60</td><td>colspan count for a spacer row</td></tr>
<tr><td class="loc">?:104</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:122</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:81</td><td>colspan count for a spacer row</td></tr>
<tr><td class="loc">?:109</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:378</td><td>A.3: user cell stays inline, stacks on narrow</td></tr>
<tr><td class="loc">?:436</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:471</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:508</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:715</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:96</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:102</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:128</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:72</td><td>colspan count for a spacer row</td></tr>
<tr><td class="loc">?:143</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:122</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:141</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:79</td><td>colspan count for a spacer row</td></tr>
<tr><td class="loc">src/views/elements/MixcrawlsElement.php:80</td><td>colspan count for a spacer row</td></tr>
<tr><td class="loc">?:357</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:165</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:166</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:81</td><td>A.3: uniform cell markup, stacks on narrow via stack-narrow</td></tr>
<tr><td class="loc">?:82</td><td>A.3: uniform centered cell, stacks on narrow</td></tr>
<tr><td class="loc">?:295</td><td>colspan count for a spacer row</td></tr>
<tr><td class="loc">?:325</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:378</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:2191</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:2733</td><td>converted in A.2</td></tr>
<tr><td class="loc">?:2796</td><td>converted in A.2</td></tr>
</table>
<h2>content → stays PHP <span class="n">(38)</span></h2>
<table>
<tr><td class="loc">src/views/elements/AdminbarElement.php:63</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/views/elements/AdminmenuElement.php:71</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">?:117</td><td>wordwraps the description text</td></tr>
<tr><td class="loc">src/models/GroupModel.php:5951</td><td>title truncation length (emits a shorter string)</td></tr>
<tr><td class="loc">src/views/elements/GroupbarElement.php:59</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/views/elements/GroupfeedElement.php:587</td><td>omits the thread-expand query block</td></tr>
<tr><td class="loc">src/views/elements/GroupfeedElement.php:80</td><td>omits the side-ad script block</td></tr>
<tr><td class="loc">?:130</td><td>name-truncate stretch (shorter string)</td></tr>
<tr><td class="loc">?:496</td><td>omits the ad-preview panel on mobile</td></tr>
<tr><td class="loc">?:445</td><td>name-truncate stretch (emits a shorter string)</td></tr>
<tr><td class="loc">src/views/elements/ManagerolesElement.php:114</td><td>name-truncate stretch (emits a shorter string)</td></tr>
<tr><td class="loc">?:134</td><td>name-truncate stretch (emits a shorter string)</td></tr>
<tr><td class="loc">src/views/elements/MixcrawlsElement.php:112</td><td>variable-length FRAGMENTS list kept in PHP</td></tr>
<tr><td class="loc">src/views/elements/MixcrawlsElement.php:99</td><td>definition header matches its PHP-omitted data cell (112)</td></tr>
<tr><td class="loc">src/views/helpers/OptionsHelper.php:174</td><td>dropdown word-wrap length (emits a shorter string)</td></tr>
<tr><td class="loc">src/views/helpers/OptionsHelper.php:67</td><td>dropdown word-wrap length (emits a shorter string)</td></tr>
<tr><td class="loc">src/views/helpers/PaginationHelper.php:186</td><td>a -- gap marker vs the full numbered page-list loop (different content)</td></tr>
<tr><td class="loc">src/views/RecoverView.php:58</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/views/RegisterView.php:81</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/views/ResendEmailView.php:58</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/controllers/SearchController.php:875</td><td>picks chart pixel width/height for a rendered image</td></tr>
<tr><td class="loc">src/views/elements/SearchElement.php:118</td><td>omits the search-stats <h2> block</td></tr>
<tr><td class="loc">src/views/elements/SearchElement.php:271</td><td>omits the word-cloud block</td></tr>
<tr><td class="loc">src/views/elements/SearchElement.php:526</td><td>swaps to LOGO_MEDIUM resource</td></tr>
<tr><td class="loc">src/views/elements/SearchbarElement.php:60</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/views/elements/SideadvertisementElement.php:51</td><td>omits the side-ad script block</td></tr>
<tr><td class="loc">src/views/SigninView.php:182</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/views/SigninView.php:66</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/controllers/components/SocialComponent.php:1012</td><td>picks chart pixel width/height + tick font for a rendered image</td></tr>
<tr><td class="loc">src/controllers/components/SocialComponent.php:9531</td><td>picks chart pixel width/height for a rendered image</td></tr>
<tr><td class="loc">src/controllers/StaticController.php:192</td><td>picks chart pixel width/height for a rendered image</td></tr>
<tr><td class="loc">src/views/StaticView.php:109</td><td>omits the side-ad script block</td></tr>
<tr><td class="loc">src/views/StaticView.php:72</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/views/SuggestView.php:59</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/views/TestsView.php:64</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/views/helpers/VideosHelper.php:105</td><td>title truncation length (emits a shorter string)</td></tr>
<tr><td class="loc">src/views/elements/WelcomemenuElement.php:62</td><td>swaps to LOGO_SMALL resource</td></tr>
<tr><td class="loc">src/views/elements/WikiElement.php:216</td><td>name-wrap length (emits a shorter string)</td></tr>
</table>
<h2>logic → stays PHP <span class="n">(24)</span></h2>
<table>
<tr><td class="loc">src/views/AdminView.php:61</td><td>addContainer region placement (view assembly)</td></tr>
<tr><td class="loc">src/views/AdminView.php:66</td><td>addContainer region placement</td></tr>
<tr><td class="loc">src/views/elements/GroupfeedElement.php:1044</td><td>$clear feeds a <script> block, not markup</td></tr>
<tr><td class="loc">src/views/helpers/GrouplistHelper.php:64</td><td>reads flag into $is_mobile for use below</td></tr>
<tr><td class="loc">src/views/elements/HelpElement.php:50</td><td>reads flag into $mobile for use below (see its uses)</td></tr>
<tr><td class="loc">src/views/helpers/HelpbuttonHelper.php:91</td><td>flag to a JS 'true'/'false' string for a script</td></tr>
<tr><td class="loc">src/views/elements/ManageaccountElement.php:173</td><td>reads flag into $is_mobile for use below</td></tr>
<tr><td class="loc">src/views/elements/ManageaccountElement.php:61</td><td>reads flag into $is_mobile for use below</td></tr>
<tr><td class="loc">?:253</td><td>adds onkeyup preview hook on desktop</td></tr>
<tr><td class="loc">?:255</td><td>adds onkeyup preview hook on desktop</td></tr>
<tr><td class="loc">src/views/helpers/PaginationHelper.php:77</td><td>early-returns (skips micro pagination) on mobile</td></tr>
<tr><td class="loc">src/views/helpers/PagingtableHelper.php:69</td><td>calls a different table-controls method</td></tr>
<tr><td class="loc">src/views/elements/SearchElement.php:435</td><td>links-per-row modulus controls the row-break loop</td></tr>
<tr><td class="loc">src/views/SearchView.php:64</td><td>addContainer region placement</td></tr>
<tr><td class="loc">src/views/SearchView.php:70</td><td>addContainer region placement</td></tr>
<tr><td class="loc">src/controllers/components/SocialComponent.php:3958</td><td>mail feature gated off on mobile (behavior)</td></tr>
<tr><td class="loc">src/controllers/components/SocialComponent.php:7421</td><td>passes the flag into $data for a view</td></tr>
<tr><td class="loc">src/controllers/components/StoreComponent.php:614</td><td>adds preview() JS calls on desktop</td></tr>
<tr><td class="loc">src/views/elements/TrendingElement.php:214</td><td>terms-per-row controls row grouping loop (emits different structure)</td></tr>
<tr><td class="loc">src/views/elements/TrendingElement.php:221</td><td>number of random trends sliced (emits fewer items)</td></tr>
<tr><td class="loc">src/views/layouts/WebLayout.php:293</td><td>maps the flag to the body's 'mobile' class string</td></tr>
<tr><td class="loc">src/index.php:61</td><td>sets $_SERVER['MOBILE'] from the request; the flag's origin</td></tr>
<tr><td class="loc">src/index.php:63</td><td>sets the flag false; flag plumbing</td></tr>
<tr><td class="loc">src/index.php:66</td><td>sets the flag false; flag plumbing</td></tr>
</table>
<h2>viewport meta → IV.B <span class="n">(2)</span></h2>
<table>
<tr><td class="loc">src/library/VersionFunctions.php:594</td><td>upgrade page's own viewport meta; IV.B territory</td></tr>
<tr><td class="loc">src/views/layouts/WebLayout.php:100</td><td>emits the viewport meta only on mobile; IV.B makes it always</td></tr>
</table>
<h2>the .mobile body class → IV.C <span class="n">(1)</span></h2>
<table>
<tr><td class="loc">src/library/VersionFunctions.php:600</td><td>the .mobile body class is IV.C's to retire</td></tr>
</table>
</body></html>