Fix mobile nav/TOC/overflow on article pages + harden membership form
Mobile fixes (article, guide, get-to-know, projects pages): - Remove duplicate main.js include site-wide. footer.js emitted a <script src=main.js> inside the footer block while pages also load one before </body>, so DOMContentLoaded ran twice and every tap toggled the mobile menu / article TOC twice (net no-op). Menu and TOC only worked on the homepage. Now exactly one main.js per page, before </body>. - Kill horizontal overflow: add overflow-x: clip to html/body (clips the off-canvas mobile nav panel without breaking position: sticky, unlike overflow-x: hidden). - Reset align-items to stretch in the mobile .article-layout-container rule; the desktop flex-start made .article-container size to max-content width in a column flexbox and overflow the viewport. Membership form hardening (Become a Member): - Honeypot field + localStorage cooldown (30s gap, max 3/24h) + stronger email regex; trilingual cooldown alert message. - Apps Script (setup doc): per-email auto-reply dedupe + daily send cap; applicant reply is a plain thank-you that never echoes submitted answers. - Draft HTML welcome email (email-welcome-preview.html) for later use. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
7bc249e8a4
commit
efb3c6ea39
196 files changed
+83
-203
No files matched your search
@@ -393,9 +393,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -347,8 +347,9 @@
|
||||
<p>A few friendly questions. You do not need to decide now how active you want to be.</p>
|
||||
</div>
|
||||
<form class="ms-form" novalidate>
|
||||
<div class="ms-hp" aria-hidden="true"><label>Do not fill this in<input type="text" name="company" tabindex="-1" autocomplete="off"></label></div>
|
||||
<div class="ms-progress" data-step="Step" data-of="of" hidden><div class="ms-progress-track"><div class="ms-progress-bar"></div></div><span class="ms-progress-text"></span></div>
|
||||
<div class="ms-alert" hidden>Please fill in the required fields.</div>
|
||||
<div class="ms-alert" hidden data-required-msg="Please fill in the required fields." data-cooldown-msg="It looks like you have just sent a request. Please give us a moment before sending another.">Please fill in the required fields.</div>
|
||||
|
||||
<div class="ms-step" data-step="path" data-flow="both">
|
||||
<h3>How would you like to connect with MSOS?</h3>
|
||||
@@ -567,10 +568,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
<script src="../../member-form.js"></script>
|
||||
|
||||
<script src="../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
+1
-1
@@ -348,10 +348,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
<script src="../../blog-filter.js"></script>
|
||||
|
||||
<script src="../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -283,7 +283,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
+1
-1
@@ -501,9 +501,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -360,7 +360,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -366,7 +366,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -335,7 +335,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -366,7 +366,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -358,7 +358,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -348,7 +348,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -345,7 +345,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -350,7 +350,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -335,7 +335,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -346,7 +346,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -340,7 +340,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -367,7 +367,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -352,7 +352,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -323,7 +323,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
+1
-1
@@ -509,9 +509,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
+1
-1
@@ -413,10 +413,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
<script src="../../news-filter.js"></script>
|
||||
|
||||
<script src="../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -328,7 +328,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -316,7 +316,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -265,7 +265,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -275,7 +275,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -384,9 +384,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -368,9 +368,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -339,10 +339,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -394,9 +394,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -390,9 +390,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -354,9 +354,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -299,7 +299,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -287,7 +287,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -326,7 +326,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -323,7 +323,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -324,7 +324,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -321,7 +321,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -339,7 +339,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -351,7 +351,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -342,7 +342,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -367,7 +367,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -316,7 +316,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -334,7 +334,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -377,7 +377,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -482,7 +482,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -328,7 +328,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -400,7 +400,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -228,7 +228,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -355,7 +355,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -372,7 +372,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -317,7 +317,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -326,7 +326,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -366,7 +366,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -366,7 +366,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -336,7 +336,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -324,7 +324,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -361,7 +361,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -378,7 +378,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -345,7 +345,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -319,7 +319,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -351,7 +351,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -321,7 +321,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -348,7 +348,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -315,7 +315,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -386,7 +386,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
|
||||
@@ -474,9 +474,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../main.js"></script>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user