1<!DOCTYPE html> 2<html lang="en" data-color-scheme="system"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 7 <title>Los Angeles Rules</title> 8 9 <meta name="HandheldFriendly" content="True"> 10 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 11 12 <meta name="theme-color" content="#1b7a2c"> 13 <meta name="ghost-theme" content="Maali 1.8.0"> 14 15 16 <link rel="preload" href="https://www.losangelesrules.com/assets/dist/app.min.js?v=hXqflqognnuEh3oU" as="script"> 17 <link rel="preload" href="https://www.losangelesrules.com/assets/dist/app.min.css?v=S_Vd9p7BXloF9dvC" as="style"> 18 19 <link rel="preconnect" href="https://fonts.googleapis.com"> 20 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 21 22 23 24 25 26 27 28 29 30 31 <link rel="preload stylesheet" href="https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&family=Poppins:ital,wght@0,600;0,700;1,600;1,700&display=swap" 32 as="style" onload="this.onload=null;this.rel='stylesheet'" crossorigin> 33 <style> 34 body { --font-headings: var(--gh-font-heading, 'Poppins'), sans-serif; } 35 body .content, p { --font-body: var(--gh-font-body, 'Lora'), serif; font-family: var(--font-body); } 36 </style> 37 38
38<script async defer src="https://www.losangelesrules.com/assets/dist/app.min.js?v=hXqflqognnuEh3oU"></script>
38 39 40 <link rel="stylesheet" type="text/css" href="https://www.losangelesrules.com/assets/dist/app.min.css?v=S_Vd9p7BXloF9dvC"> 41 42 <style> 43 :root { 44 --global-max-width: 1400px; /* site max width */ 45 --global-content-width: 700px; /* post-content-width */ 46 --global-wide-width: 960px; /* site max width */ 47 --global-radius: 0px; /* default radius */ 48 --global-gallery-gap: 1em; /* Image gallery distance between images */ 49 --global-hyphens: none; /* none/auto */ 50 --global-header-height: 92px; 51 --global-theme-notifications: visible; /* visible/hidden */ 52 --global-progress-bar: visible; /* visible/hidden */ 53 --global-content-preview-fading: 0%; /* 50%-100% for fading effect */ 54 --global-scroll-behavior: smooth; 55 } 56</style> 57
58<script> 59 let preferredTheme = localStorage.getItem('PREFERRED_COLOR_SCHEME') || `system`; 60 document.documentElement.setAttribute('data-color-scheme', preferredTheme); 61 62 // Global values needed 63 const themeGlobal = { 64 currentPage: parseInt(''), 65 nextPage: parseInt(''), 66 nextPageLink: '', 67 maxPages: parseInt(''), 68 lastPage: `` === `` ? true : false, 69 postsPerPage: parseInt('12'), 70 scrollPos: 0, 71 imageLightbox: false 72 } 73 74 // Calculate contrast & HSL value; 75 function getBrandColorInfo(hexcolor) { 76 // get contrast 77 if (hexcolor.slice(0, 1) === '#') { hexcolor = hexcolor.slice(1); } 78 if (hexcolor.length === 3) { hexcolor = hexcolor.split('').map(function (hex) { return hex + hex;}).join(''); } 79 let r = parseInt(hexcolor.substr(0,2),16), g = parseInt(hexcolor.substr(2,2),16), b = parseInt(hexcolor.substr(4,2),16); 80 let yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000; 81 const colorContrast = (yiq >= 128) ? '#000' : '#fff'; 82 83 //get HSL 84 r /= 255, g /= 255, b /= 255; 85 const max = Math.max(r, g, b), min = Math.min(r, g, b); 86 let h, s, l = (max + min) / 2; 87 if ( max == min ) { h = s = 0; } else { 88 let d = max - min; 89 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 90 switch(max){ 91 case r: h = (g - b) / d + (g < b ? 6 : 0); break; 92 case g: h = (b - r) / d + 2; break; 93 case b: h = (r - g) / d + 4; break; 94 } 95 h /= 6; 96 } 97 const colorHSL = [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100)]; 98 99 // return 100 return { colorContrast, colorHSL } 101 }; 102 103 const brandColor = getBrandColorInfo("#1b7a2c"); 104 let style = document.createElement('style'); 105 style.innerHTML = `:root { 106 --color-brand-contrast: ${brandColor.colorContrast}; 107 --color-brand-h: ${brandColor.colorHSL[0]}; 108 --color-brand-s: ${brandColor.colorHSL[1]}%; 109 --color-brand-l: ${brandColor.colorHSL[2]}%; 110 --color-brand-hsl: ${brandColor.colorHSL[0]} ${brandColor.colorHSL[1]}% ${brandColor.colorHSL[2]}%; 111 }` 112 document.getElementsByTagName('head')[0].appendChild(style); 113</script>
113 114 115 116 117 118 119 <link rel="canonical" href="https://www.losangelesrules.com/signup/"> 120 <meta name="referrer" content="no-referrer-when-downgrade"> 121 122 <meta property="og:site_name" content="Los Angeles Rules"> 123 <meta property="og:type" content="website"> 124 <meta property="og:title" content="Los Angeles Rules"> 125 <meta property="og:url" content="https://www.losangelesrules.com/signup/"> 126 <meta name="twitter:card" content="summary"> 127 <meta name="twitter:title" content="Los Angeles Rules"> 128 <meta name="twitter:url" content="https://www.losangelesrules.com/signup/"> 129 <meta name="twitter:site" content="@robrtgreene"> 130 131 <meta name="generator" content="Ghost 6.68"> 132 <link rel="alternate" type="application/rss+xml" title="Los Angeles Rules" href="https://www.losangelesrules.com/latest/rss/"> 133
133<script defer src="https://cdn.jsdelivr.net/ghost/portal@~2.71/umd/portal.min.js" data-i18n="true" data-ghost="https://www.losangelesrules.com/" data-key="fe156430e95cadb2c971969e97" data-api="https://los-angeles-rules.ghost.io/ghost/api/content/" data-locale="en" crossorigin="anonymous"></script>
133<style id="gh-members-styles">.gh-post-upgrade-cta-content, 134.gh-post-upgrade-cta { 135 display: flex; 136 flex-direction: column; 137 align-items: center; 138 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 139 text-align: center; 140 width: 100%; 141 color: #ffffff; 142 font-size: 16px; 143} 144 145.gh-post-upgrade-cta-content { 146 border-radius: 8px; 147 padding: 40px 4vw; 148} 149 150.gh-post-upgrade-cta h2 { 151 color: #ffffff; 152 font-size: 28px; 153 letter-spacing: -0.2px; 154 margin: 0; 155 padding: 0; 156} 157 158.gh-post-upgrade-cta p { 159 margin: 20px 0 0; 160 padding: 0; 161} 162 163.gh-post-upgrade-cta small { 164 font-size: 16px; 165 letter-spacing: -0.2px; 166} 167 168.gh-post-upgrade-cta a { 169 color: #ffffff; 170 cursor: pointer; 171 font-weight: 500; 172 box-shadow: none; 173 text-decoration: underline; 174} 175 176.gh-post-upgrade-cta a:hover { 177 color: #ffffff; 178 opacity: 0.8; 179 box-shadow: none; 180 text-decoration: underline; 181} 182 183.gh-post-upgrade-cta a.gh-btn { 184 display: block; 185 background: #ffffff; 186 text-decoration: none; 187 margin: 28px 0 0; 188 padding: 8px 18px; 189 border-radius: 4px; 190 font-size: 16px; 191 font-weight: 600; 192} 193 194.gh-post-upgrade-cta a.gh-btn:hover { 195 opacity: 0.92; 196}</style> 197 198 <link href="https://www.losangelesrules.com/webmentions/receive/" rel="webmention"> 199
199<script defer src="/public/cards.min.js?v=ShRHxgy4po8zN-Wf"></script>
199 200 <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=WwnU9jw5ancNC8Gc"> 201
201<script defer src="/public/member-attribution.min.js?v=AKG4hWena9j3yX3I"></script>
201 202
202<script defer src="/public/ghost-stats.min.js?v=vFcCUf6ZQ0Hyhc8h" data-stringify-payload="false" data-datasource="analytics_events" data-storage="localStorage" data-host="https://www.losangelesrules.com/.ghost/analytics/api/v1/page_hit" tb_site_uuid="7c14f9c7-9fe2-4f5c-a02c-0c99e43c7e77" tb_post_uuid="undefined" tb_post_type="null" tb_member_uuid="undefined" tb_member_status="undefined" tb_gift_link=""></script>
202<style>:root {--ghost-accent-color: #1b7a2c;}</style> 203 <style> 204 /* Disables the bottom newsletter signup card entirely in Headline theme */ 205 .gh-signup, 206 .footer-cta, 207 section[class*="signup"], 208 div[class*="signup"] { 209 display: none !important; 210 visibility: hidden !important; 211 height: 0 !important; 212 padding: 0 !important; 213 margin: 0 !important; 214 } 215</style> 216 </head> 217 <body class=" " data-excerpts="true"> 218 219 220 221 <main class="main flex-1"> 222 223<div class="signup-page flex flex-cc" data-image-style="right"> 224 <div class="signup-page__content"> 225 <a href="https://www.losangelesrules.com" class="signup-page__brand"> 226 Los Angeles Rules 227 </a> 228 229 <div class="signup-page__box"> 230 <h1 class="signup-page__title">Sign up</h1> 231 <p id="form-input-label" class="opacity-080">Sign up to Los Angeles Rules to get access to premium content.</p> 232 233 <form class="subscribe-form" 234 data-members-form="signup" data-style=""> 235 <input data-members-name autocomplete="name" type="text" placeholder="Your name" 236 aria-labelledby="form-input-label" required> 237 <input data-members-email class="" 238 type="email" autocomplete="email" placeholder="Your email address" 239 aria-labelledby="form-input-label" required> 240 <button class="btn uppercase btn--brand" type="submit"> 241 <span>Continue</span> 242 </button> 243 <div class="msg-success">Great! Check your inbox and click the link.</div> 244 <div class="msg-error">Sorry, something went wrong. Please try again.</div> 245</form> <p class="m-0 mt text-center"> 246 <small>Already have an account? 247 <a href="/signin/">Sign in</a> 248 </small> 249 </p> 250 </div> 251 </div> 252 </div> 253 </main> 254 255 256 <dialog class="notification"> 257 <i class="icon icon-success notification-icon"> 258 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-circle-check" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> 259 <path stroke="none" d="M0 0h24v24H0z" fill="none"/> 260 <circle cx="12" cy="12" r="9" /> 261 <path d="M9 12l2 2l4 -4" /> 262</svg> 263 264 265 266</i> <i class="icon icon-error notification-icon"> 267 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-alert-octagon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> 268 <path stroke="none" d="M0 0h24v24H0z" fill="none"/> 269 <path d="M8.7 3h6.6c.3 0 .5 .1 .7 .3l4.7 4.7c.2 .2 .3 .4 .3 .7v6.6c0 .3 -.1 .5 -.3 .7l-4.7 4.7c-.2 .2 -.4 .3 -.7 .3h-6.6c-.3 0 -.5 -.1 -.7 -.3l-4.7 -4.7c-.2 -.2 -.3 -.4 -.3 -.7v-6.6c0 -.3 .1 -.5 .3 -.7l4.7 -4.7c.2 -.2 .4 -.3 .7 -.3z" /> 270 <line x1="12" y1="8" x2="12" y2="12" /> 271 <line x1="12" y1="16" x2="12.01" y2="16" /> 272</svg> 273 274 275 276</i> <i class="icon icon-warning notification-icon"> 277 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-alert-triangle" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> 278 <path stroke="none" d="M0 0h24v24H0z" fill="none"/> 279 <path d="M12 9v2m0 4v.01" /> 280 <path d="M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75" /> 281</svg> 282 283 284 285</i> <p class="notification-msg signup-success">Great! Youâve successfully signed up.</p> 286 <p class="notification-msg signin-success">Welcome back! You've successfully signed in.</p> 287 <p class="notification-msg subscribe-success">You've successfully subscribed to Los Angeles Rules.</p> 288 <p class="notification-msg link-expired">Your link has expired.</p> 289 <p class="notification-msg checkout-success">Success! Check your email for magic link to sign-in.</p> 290 <p class="notification-msg billing-success">Success! Your billing info has been updated.</p> 291 <p class="notification-msg billing-cancel">Your billing was not updated.</p> 292 <button class="notification-close js-notification-close" aria-label="Close" onclick="closeNotification(event.currentTarget.parentNode);"> 293 <i class="icon icon-x"> 294 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-x" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> 295 <path stroke="none" d="M0 0h24v24H0z" fill="none"/> 296 <line x1="18" y1="6" x2="6" y2="18" /> 297 <line x1="6" y1="6" x2="18" y2="18" /> 298</svg> 299</i>
299 </button> 300</dialog> 301 302 303 304 305
305<script> 306 // Give the parameter a variable name 307 const qsParams = new URLSearchParams(window.location.search); 308 const isAction = qsParams.has('action'); 309 const isStripe = qsParams.has('stripe'); 310 const success = qsParams.get('success'); 311 const action = qsParams.get('action'); 312 const stripe = qsParams.get('stripe'); 313 314 if (qsParams && isAction) { 315 if (success === "true") { 316 switch (action) { 317 case 'subscribe': 318 openNotification('subscribe-success'); 319 break; 320 case 'signup': 321 openNotification('signup-success'); 322 break; 323 case 'signin': 324 openNotification('signin-success'); 325 break; 326 default: 327 break; 328 } 329 } else { 330 openNotification('link-expired'); 331 } 332 } 333 334 if (qsParams && isStripe) { 335 switch (stripe) { 336 case 'success': 337 openNotification('checkout-success'); 338 break; 339 case 'billing-update-success': 340 openNotification('billing-success'); 341 break; 342 case 'billing-update-cancel': 343 openNotification('billing-cancel'); 344 break; 345 default: 346 break; 347 } 348 } 349 350 /** 351 * Handle Notifications 352 */ 353 function openNotification(type) { 354 const notification = document.querySelector('dialog.notification'); 355 if (notification) { 356 notification.setAttribute('data-msg-type', type); 357 notification.show(); 358 setTimeout(function(){ closeNotification(notification); }, 3000); 359 } 360 } 361 362 /** 363 * Clean URI 364 */ 365 function clearURI() { 366 window.history.replaceState({}, '', `${window.location.pathname}`); 367 } 368 369 function closeNotification(notification) { 370 notification.close(); 371 clearURI(); 372 setTimeout(function(){ notification.removeAttribute('data-msg-type') }, 500); 373 } 374 </script>
374 375 376 377
377<script> 378 document.addEventListener("DOMContentLoaded", function() { 379 // Finds and destroys any signup footer blocks 380 const signupBlock = document.querySelector(".gh-signup") || document.querySelector(".footer-cta"); 381 if (signupBlock) { 382 signupBlock.remove(); 383 } 384 }); 385</script>
385 386<!-- spectral web services advanced search:start -->
387<script 388 src="https://search.spectralwebservices.com/v1.0.6/sws-search.js" 389 integrity="sha384-TxqF/GtsHBsv3E7I8j4EeBWSvEkJMSRVwlot+wP1NqmVAQtn/SpQDiNmTOTBqutO" 390 crossorigin="anonymous" 391 defer></script>
391 392 393<sws-search 394 id="sws" 395 search-app="P7JLDJ3MCJ" 396 search-key="OGRjYTczMmUyNWY5YzExZDkyZTc5ODIzNWNkYThkZjQ4MTljMGQ4MTAzNWQ4NmVhYzE2MDc4OGE5YTkxOTZmOXJlc3RyaWN0SW5kaWNlcz0lNUIlMjJwb3N0cyUyMiUyQyUyMmF1dGhvcnMlMjIlMkMlMjJ0YWdzJTIyJTVEJmF0dHJpYnV0ZXNUb1JldHJpZXZlPSU1QiUyMnRpdGxlJTIyJTJDJTIydXJsJTIyJTJDJTIycHVibGlzaGVkX2F0JTIyJTJDJTIyaW1hZ2UlMjIlMkMlMjJmZWF0dXJlX2ltYWdlX2FsdCUyMiUyQyUyMmF1dGhvcnMubmFtZSUyMiUyQyUyMmF1dGhvcnMuc2x1ZyUyMiUyQyUyMnNsdWclMjIlMkMlMjJuYW1lJTIyJTJDJTIyYmlvJTIyJTJDJTIycHJvZmlsZV9pbWFnZSUyMiUyQyUyMmRlc2NyaXB0aW9uJTIyJTVEJmF0dHJpYnV0ZXNUb1NuaXBwZXQ9JTVCJTIyY29udGVudCUzQTQwJTIyJTJDJTIyYmlvJTNBNTAlMjIlMkMlMjJkZXNjcmlwdGlvbiUzQTUwJTIyJTVE" 397 css-url="https://search.spectralwebservices.com/v1.0.6/sws-search.css" 398 css-integrity="sha384-Dni8jcVVYTBpHaGKtnHQQ00GcQqn6460ftuWoCAeDnkttO0B5MhW8oyJHVbPammX" 399 title="Search the site" 400 theme="auto" 401 search-as-you-type="true"> 402</sws-search> 403
404<script> 405 // Open this search when the theme's Ghost search button is clicked, and stop 406 // Ghost's own search from also firing. Capture phase + composedPath keep it 407 // robust and avoid swallowing the embed's own modal clicks. 408 document.addEventListener('click', function (e) { 409 var target = e.composedPath()[0]; 410 if (!target || !target.closest) return; 411 if (!target.closest('[data-ghost-search]')) return; 412 e.stopImmediatePropagation(); 413 e.preventDefault(); 414 document.getElementById('sws')?.open(); 415 }, true); 416</script>
416 417<!-- spectral web services advanced search:end --> 418 </body> 419</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.