1<!DOCTYPE html> 2<html lang="en"sta> 3 <head> 4 <meta charset="utf-8" /> 5 <meta property="og:image" content="https://www.brooksee.com/files/bee/imgs/facebook_image.jpg"/> 6 <meta property="og:title" content="Brooksee"/> 7 <meta property="og:description" content="We do Endurance Events. Check out the fast and beautiful REVEL Marathon/Half Marathon Race Series."/> 8 <meta property="og:site_name" content="Brooksee"/> 9 <meta property="og:url" content="https://www.brooksee.com"/> 10 <meta property="og:type" content="website" /> 11 <meta property="fb:app_id" context="" /> 12 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 13 <link rel="stylesheet" href="/files/css/normalize.css" /> 14 <link rel="stylesheet" href="/files/bee/css/master2.css" /> 15 <!--
15<script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
15--> 16 <link href="/files/js/jquery-ui-1.10.3.custom/css/smoothness/jquery-ui-1.10.3.custom.min.css" rel="stylesheet"> 17 <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic' rel='stylesheet' type='text/css'> 18 <link href='/files/fonts/aleo.css' rel='stylesheet' type='text/css'> 19 <link rel="stylesheet" href="https://use.typekit.net/sxx8ssb.css"> <!--Proxima Nova --> 20
20<script src="/files/js/jquery-1.11.1.min.js"></script>
20 21
21<script type="text/javascript" src="/files/js/jquery-ui-1.10.3.custom/js/jquery-ui-1.10.3.custom.min.js"></script>
21 22
22<script src="/files/js/jquery.ui.touch-punch.min.js"></script>
22 23
23<script type="text/javascript" src="/files/js/jquery.colorbox-min.js"></script>
23 24 <link rel="stylesheet" type="text/css" href="/files/css/colorbox.css"> 25 26 <link rel="shortcut icon" href="/files/bee/imgs/favicon.ico" /> 27 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 28 <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400" rel="stylesheet"> 29 30 <title> Brooksee</title> 31 32 33 34 35<!-- Facebook Pixel Code -->
36<script>
vendor: 426 bytes, lines 36-45
36 37 !function(f,b,e,v,n,t,s) 38 {if(f.fbq)return;n=f.fbq=function(){n.callMethod? 39 n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 40 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 41 n.queue=[];t=b.createElement(e);t.async=!0; 42 t.src=v;s=b.getElementsByTagName(e)[0]; 43 s.parentNode.insertBefore(t,s)}(window, document,'script', 44 'https://connect.facebook.net/en_US/fbevents.js'); 45 fbq('init', '
45525290401179405
vendor: 34 bytes, lines 45-46
45'); 46 fbq('track', 'PageView');
47</script>
47 48<noscript><img height="1" width="1" style="display:none" 49 src="https://www.facebook.com/tr?id=525290401179405&ev=PageView&noscript=1" 50/></noscript> 51<!-- End Facebook Pixel Code --> 52 53<!-- Global site tag (gtag.js) - Google Ads: 1008471620 -->
vendor: 69 bytes, lines 53-54
53 54 <script async src="https://www.googletagmanager.com/gtag/js?id=
54AW-1008471620
vendor: 17 bytes, lines 54-55
54"></script> 55
55<script> 56
vendor: 148 bytes, lines 56-59
56window.dataLayer = window.dataLayer || []; 57 function gtag(){dataLayer.push(arguments);} 58 gtag('js', new Date()); 59 gtag('config', '
59AW-1008471620
vendor: 9 bytes, lines 59-60
59'); 60
60</script>
60 61<style> 62#slideout .menu a { 63 color: #4d4d4d; 64 text-decoration: none; 65 padding: 5px 0; 66 width: 100%; 67 display: flex; 68 align-items: center; 69} 70#slideout .menu li { 71 padding: 10px 20px; 72 display: flex; 73 align-items: center; 74} 75#slideout .menu a:hover { 76 background-color: #00aba363; 77 color: #0B1D46; 78} 79#slideout .menu { 80 margin: 0; 81 padding: 0; 82} 83#slideout .menu li p { 84 margin: 0px; 85 padding-left: 10px; 86 font-size: 1.4rem; 87 88} 89#slideout { 90 position: absolute; 91 width: 30%; 92 top:-100%; 93 left:0px; 94 transition: top 0.5s; 95 background-color: white; 96 box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3), 0 2px 5px rgba(0, 0, 0, 0.25); 97} 98.menu-list-container { 99 display: flex; 100 flex-direction: column; 101} 102.cart-container { 103 display: flex; 104 align-items: center; 105 background-color: #00ABA3; 106 padding: 10px 0px 10px 20px; 107} 108.cart-container img { 109 width: 20px; 110 height: 20px; 111} 112.cart-container p { 113 margin: 0; 114 padding-left: 15px; 115 font-size: 1.4rem; 116} 117.authenticated-user { 118 background-color: #0B1D46; 119 padding: 20px 0 10px 0; 120} 121.user-name { 122 margin: 0px; 123 display: flex; 124 padding-left: 20px; 125} 126.user-name span, .logout-container span{ 127 padding-left: 10px; 128} 129.user-email { 130 font-size: 0.8em; 131 padding-top: 10px; 132 padding-left: 60px; 133} 134.logout-container { 135 display: flex; 136 align-items: center; 137 padding-left: 20px; 138 font-size: 1.4rem; 139} 140.authenticated-user a { 141 color: white; 142 font-size: 1.4rem; 143 display: flex; 144} 145.login-container { 146 padding-left: 20px; 147 display: flex; 148 align-items: center; 149 font-size: 1.4rem; 150} 151#hamb{ 152 position: absolute; 153 left: 2rem; 154 z-index: 10; 155 flex-direction: column; 156 justify-content: space-between; 157 display: flex; 158 width: 30px; 159 height: 23px; 160 transition: all 0.5s ease-out; 161 cursor: pointer; 162 z-index: 100; 163} 164#hamb .bar { 165 width: 30px; 166 height: 3px; 167 background-color: #0B1D46; 168 border-radius: 10px; 169 transition: all 0.5s ease-out; 170 display: block; 171 cursor: pointer; 172} 173#hamb, #hamb.close { 174 top: 25%; 175} 176#hamb.close { 177 transform: rotate(180deg); 178 cursor: pointer; 179 pointer-events: all; 180} 181#hamb.close .bar:nth-child(1) { 182 transform: rotate(45deg) translate(5px, 3px); 183} 184#hamb.close .bar:nth-child(2) { 185 opacity: 0; 186} 187#hamb.close .bar:nth-child(3) { 188 transform: rotate(-45deg) translate(11px, -8px); 189} 190@media only screen and (max-width: 1300px) { 191 #slideout { 192 width: 40%; 193 } 194} 195 196@media only screen and (max-width: 800px) { 197 #slideout { 198 width: 100%; 199 } 200 #hamb .bar { 201 width: 28px; 202 } 203 #hamb { 204 left: 0.75rem; 205 } 206 #slideout-menu li { 207 padding: 5px 20px; 208 } 209} 210@media only screen and (max-width: 350px) { 211 #hamb { 212 left: 0.5rem; 213 } 214 #hamb, #hamb.close { 215 top: 30%; 216 } 217 #hamb .bar { 218 width: 25px; 219 } 220} 221@media (hover: hover) { 222 .user-name span:hover, .logout-container span:hover{ 223 transform: translateY(-2px); 224 } 225} 226</style> 227 </head> 228 229 <body> 230 231 <div data-role="page" id="page" style="display: flex; flex-direction: column; height: 100vh;"> 232 <div style='position: relative; text-align: center; background-color: white; box-shadow: 0 -6px 10px 5px rgba(0,0,0,0.5); z-index:2;'> 233 <div id="hamb"> 234 <span class="bar"></span> 235 <span class="bar"></span> 236 <span class="bar"></span> 237 </div> 238 <!--<img id='hamb' style='cursor: pointer; position: absolute; top: 20%; left: 5px' src="https://brookseeevents.s3.amazonaws.com/bee/2019/albums/hamburger.png" />--> 239 <a href="https://www.brooksee.com"><img style="padding: 10px 0" src="https://brookseeevents.s3.amazonaws.com/bee/2023/albums/BrookseeColor_web.png" width="275px" /></a> 240 </div> 241 <div id="content" style="z-index: 0; position: relative"> 242 243<!--<div class="row" id="subpage_header"> 244 <div class="row_content"> 245 <div class="row_inner"> 246 <h1></h1> 247 </div> 248 </div> 249</div>--> 250 251<div class="row" id="nav2"> 252 <div class="row_content"> 253 <div class="row_inner"> 254 255 </div> 256 </div> 257</div> 258 259<div class="row"> 260 <div class="row_content"> 261 <div class="row_inner accounts" id="subpage"> 262 <div id="subpage_inner"> 263 264 265<div id="login_form"> 266 267 268 <form method="post" action="https://www.brooksee.com/accounts/login"> 269 <fieldset> 270 <legend>Login</legend> 271 <input type='hidden' name='csrfmiddlewaretoken' value='6uxv67e7KG5FNVGakj85xCzn0dnkecoU' /> 272 <table class="table_form"> 273 <tr> 274 <th><label for="id_username">Email</label></th> 275 <td><input id="id_username" type="text" name="username" maxlength="100" /></td> 276 </tr> 277 <tr> 278 <th><label for="id_password">Password</label></th> 279 <td><input id="id_password" type="password" name="password" maxlength="4096" /></td> 280 </tr> 281 </table> 282 <p> 283 <div class="button_bar"> 284 <input type="submit" value="Login" /> 285 </div> 286 </p> 287 <input type="hidden" name="next" value="/" /> 288 </fieldset> 289 <p> 290 <a href="https://www.brooksee.com/accounts/password/reset">Forgot Username or Password</a> 291 </p> 292 </form> 293</div> 294 295 296 </div> 297 </div> 298 </div> 299</div> 300 301 302 303 304 </div> 305 <div id="footer" style="margin: 0px"> 306 307 308<div class="row"> 309 <div class="row_content"> 310 <div class="row_inner"> 311 <div class="col" id="announcement_list" style="width: auto;"> 312 <img src="https://brookseeevents.s3.amazonaws.com/bee/2023/albums/BrookseeWhite_web.png" alt="Brooksee" /> 313 <p id="announcement">Join the announcement list:</p> 314 <form id="subscribe" method="get" action="https://www.brooksee.com/subscribe2"> 315 <input type="text" name="email" placeholder="Email Address"><br> 316 <input type="hidden" name="list_name" value="announcement"> 317 <select name="which"> 318 <option value="rev">REVEL Events</option> 319 <option value="pdx">Portland Marathon</option> 320 <option value="mes">Mesa Marathon</option> 321 <option value="lvm">Las Vegas Marathon</option> 322 </select> 323 <button class="button" style="float: none !important;">Submit</button> 324 </form> 325 </div> 326 <div class="col"> 327 <div class="col bottom_nav" style="margin-top: 0px"> 328 <ul class="nav_footer"> 329 <li><a href="https://www.brooksee.com/jobs">Jobs</a></li> 330 <li><a href="https://www.brooksee.com/help">Contact Us </a></li> 331 </ul> 332 </div> 333 <div class="col bottom_nav" style="margin-top: 0px"> 334 <ul class="nav_footer"> 335 <li><a href="https://portlandmarathon.com">Portland Marathon</a></li> 336 <li><a href="https://mesamarathon.com">Mesa Marathon</a></li> 337 <li><a href="https://phxmarathon.com">Phoenix Marathon</a></li> 338 <li><a href="https://vegasmarathon.com">Las Vegas Marathon</a></li> 339 <li><a href="https://www.runrevel.com">REVEL Race Series</a></li> 340 <li><a href="https://timing.brooksee.com">Laurel Timing</a></li> 341 <!--<li><a href="https://www.brooksee.com/tst">Twenty Six Two Coaching</a></li>--> 342 <!--<li><a href="/stf/register">Staff Marathon</a></li>--> 343 </ul> 344 </div> 345 <div class="col bottom_nav" style="margin-top: 0px"> 346 <ul class="nav_footer"> 347 <li><a href="https://www.brooksee.com/terms">Terms of use</a></li> 348 <li><a href="https://www.brooksee.com/privacy">Privacy Policy</a></li> 349 </ul> 350 </div> 351 </div> 352 <p id="copyright" style="text-align: left">© Brooksee 2026</p> 353 </div> 354 </div> 355</div> 356 357
358 </div> 359 </div> 360 <div id='slideout'> 361 <div class="menu-list-container"> 362 <ul class='menu'> 363 <a href="/"> 364 <li> 365 <img src="https://brookseeevents.s3.amazonaws.com/bee/2023/albums/favicon_web.png" style="height: 30px; width: 30px;" /> 366 <p>Home</p> 367 </li> 368 </a> 369 <a href="/blog"> 370 <li> 371 <svg xmlns="http://www.w3.org/2000/svg" width="30" height="21" viewBox="0 0 24 24" fill="none" stroke="#0B1D46" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V8l-6-6z"/><path d="M14 3v5h5M16 13H8M16 17H8M10 9H8"/></svg> 372 <p>News</p> 373 </li> 374 </a> 375 <a href="/jobs"> 376 <li> 377 <svg xmlns="http://www.w3.org/2000/svg" width="30" height="20" viewBox="0 0 24 24" fill="none" stroke="#0b1d46" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg> 378 <p>Jobs</p> 379 </li> 380 </a> 381 <a href="/training/coaching"> 382 <li> 383 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="30" height="40" viewBox="0 0 2048 2048"> <defs> <style type="text/css"> <![CDATA[ .fil1 {fill:none} .fil0 {fill:#0B1d46;fill-rule:nonzero} ]]> </style> </defs> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"/> <polygon class="fil0" points="282.946,1542.13 282.278,1540.11 282.707,1541.41 "/> <path class="fil0" d="M397.732 1022.44c-0.478347,0.214961 -0.957875,0.414567 -1.44331,0.6l3.90237 1.70079c-0.516142,-0.392126 -1.41614,-1.25197 -2.45906,-2.30079z"/> <path class="fil0" d="M370.259 975.209l185.971 -136.237c20.628,-15.1299 43.2355,-23.8347 66.2847,-23.2961 22.148,0.516142 43.4965,9.15473 62.4981,28.1563l137.707 137.707 168.702 -33.7406c31.0937,-6.19252 54.6626,7.28623 68.0623,27.8776 4.97481,7.64646 8.39292,16.1315 10.115,24.7772 1.72205,8.64449 1.82008,17.778 0.159449,26.7225 -4.48819,24.1748 -21.0969,45.6744 -52.1894,51.8693l-202.728 40.5449 -0.0165354 -0.0838583c-6.12638,1.06654 -20.8937,-0.131102 -33.3012,-3.71221 -8.62796,-2.4874 -17.5051,-6.13819 -24.202,-11.028 -1.38425,-0.947245 -2.7,-2.03386 -3.92835,-3.26221l0.0555119 -0.056693 -3.17599 -3.17481c-0.529134,-0.453544 -1.04528,-0.933072 -1.54606,-1.43386l0.00236221 -0.00236221 -35.4603 -35.4603 14.7638 169.034 0.433465 0.291733c1.05709,0.659056 2.08229,1.39725 3.06614,2.21693l-0.0744095 0.0897638 166.719 138.86c4.66418,1.91221 8.91969,5.16969 12.7831,9.49843 2.53583,2.84173 5.04331,6.49607 7.33111,10.3748 3.42048,5.79685 6.85867,13.4327 8.99646,19.2957 0.783071,1.68662 1.40669,3.47835 1.84488,5.35985l-0.124016 0.0295276 0.0011811 0.00354331 0.0885827 -0.0212599 65.0056 278.91c4.18583,17.9669 0.68504,35.9386 -8.35512,50.4674 -8.70709,13.9984 -22.5567,24.7949 -39.6201,29.3079 -1.24843,0.388583 -2.53465,0.692127 -3.85158,0.900001 -17.3303,3.52323 -34.5567,-0.0401575 -48.5776,-8.76497 -13.9961,-8.70709 -24.7914,-22.552 -29.3067,-39.6142 -0.298819,-0.956694 -0.544489,-1.93583 -0.73819,-2.93504l-70.4871 -252.601 -129.623 -89.9906 -29.5477 134.979c-0.133465,0.759449 -0.298819,1.52008 -0.498426,2.27953l-0.0614174 -0.0165354c-3.21614,12.1878 -9.61064,22.7043 -18.0567,30.8941 -8.17087,7.92284 -18.2575,13.6665 -29.2394,16.637 -0.348425,0.112205 -0.698032,0.220866 -1.05354,0.32126l-0.011811 -0.0437008 -0.329528 0.0826772 -267.968 75.3816c-0.657875,0.233858 -1.32992,0.442914 -2.01024,0.625985 -16.9949,5.20512 -34.6087,3.22559 -49.4953,-4.26378 -14.8193,-7.45512 -26.8736,-20.3847 -32.8536,-37.1126 -0.377953,-0.954331 -0.703938,-1.93347 -0.97441,-2.9374 -5.20867,-16.9984 -3.23032,-34.6193 4.26142,-49.5095 7.48229,-14.8689 20.4744,-26.9587 37.2886,-32.9138 0.414567,-0.16063 0.836221,-0.312992 1.2626,-0.454725l0.00590552 0.0188977 0.0874016 -0.0295276 0.0318898 0.0968505 221.789 -73.8662 27.554 -136.553c-1.19291,-3.2811 -2.20512,-6.67087 -3.02362,-10.1551 -1.55906,-6.63189 -2.38465,-13.4551 -2.38465,-20.3681l0.00236221 0c0,-0.307087 0.00354331,-0.616
383536 0.0141732,-0.927166l0.0933072 0.00354331 8.36812 -248.162 -48.8233 35.765 7.61339 171.956c1.36536,31.6784 -15.4843,52.8745 -37.7847,62.9221 -8.13544,3.66378 -17.0492,5.70591 -26.0327,6.09331 -8.91733,0.383859 -17.954,-0.889371 -26.4012,-3.84922 -23.1166,-8.10355 -41.7555,-27.7677 -43.1197,-59.4154l-9.05316 -204.474 1.6748 -0.0720473c-0.552756,-9.79253 1.08543,-21.815 5.50748,-31.9961 3.80079,-8.74843 9.17835,-17.8087 15.9803,-24.4347 1.15866,-1.24016 2.44725,-2.39292 3.86693,-3.43229l0.0366142 0.0507874z"/> <path class="fil0" d="M692.869 656.258c-11.0315,-11.0315 -26.2795,-17.8571 -43.1209,-17.8571 -16.8414,0 -32.0882,6.82441 -43.1209,17.8571 -11.0327,11.0327 -17.8571,26.2795 -17.8571,43.1209 0,16.8414 6.8256,32.0882 17.8571,43.1197 11.0327,11.0327 26.2795,17.8583 43.1209,17.8583 16.8414,0 32.0894,-6.8256 43.1209,-17.8571 11.0327,-11.0327 17.8583,-26.2795 17.8583,-43.1209 0,-16.8414 -6.8256,-32.0882 -17.8583,-43.1209z"/> <path class="fil0" d="M649.749 598.252c27.9213,0 53.2052,11.3209 71.5052,29.6209 18.3012,18.3012 29.6221,43.5839 29.6221,71.5052 0,27.9213 -11.3209,53.204 -29.6221,71.5052 -18.3,18.3 -43.5839,29.6209 -71.5052,29.6209 -27.9213,0 -53.204,-11.3209 -71.5052,-29.6221 -18.3,-18.3 -29.6209,-43.5827 -29.6209,-71.504 0,-27.9213 11.3209,-53.204 29.6209,-71.5052 18.3012,-18.3 43.5839,-29.6209 71.5052,-29.6209z"/> <polygon class="fil0" points="989.198,1187.23 988.529,1185.21 988.958,1186.51 "/> <path class="fil0" d="M1103.98 667.537c-0.477166,0.214961 -0.959056,0.414567 -1.44331,0.6l3.90118 1.70079c-0.517323,-0.392126 -1.41614,-1.25197 -2.45788,-2.30079z"/> <path class="fil0" d="M1076.51 620.308l185.971 -136.237c20.628,-15.1299 43.2355,-23.8347 66.2847,-23.2961 22.148,0.516142 43.4965,9.15473 62.4981,28.1563l137.707 137.707 168.702 -33.7406c31.0949,-6.19252 54.6638,7.28741 68.0623,27.8776 4.97481,7.64646 8.39292,16.1315 10.115,24.7772 1.72205,8.64449 1.82008,17.778 0.159449,26.7225 -4.48819,24.1748 -21.0969,45.6744 -52.1894,51.8693l-202.728 40.5449 -0.0165354 -0.0838583c-6.12638,1.06536 -20.8937,-0.131102 -33.3012,-3.71221 -8.62796,-2.4874 -17.5051,-6.13819 -24.202,-11.028 -1.38425,-0.947245 -2.7,-2.03386 -3.92835,-3.26221l0.0555119 -0.056693 -3.17599 -3.17481c-0.529134,-0.453544 -1.04528,-0.933072 -1.54606,-1.43386l0.00236221 -0.00236221 -35.4603 -35.4603 14.7638 169.034 0.433465 0.291733c1.05709,0.659056 2.08229,1.39725 3.06614,2.21693l-0.0744095 0.0897638 166.715 138.856c4.66536,1.91221 8.92205,5.17087 12.7866,9.50198 2.53583,2.84292 5.04331,6.49607 7.33111,10.3748 3.42048,5.79685 6.85867,13.4327 8.99646,19.2957 0.783071,1.68662 1.40669,3.47835 1.84488,5.35985l-0.124016 0.0295276 0.0011811 0.00354331 0.0885827 -0.0212599 65.0056 278.91c4.18583,17.9669 0.68504,35.9386 -8.35512,50.4674 -8.70709,13.9973 -22.5567,24.7949 -39.6201,29.3079 -1.24725,0.388583 -2.53347,0.690945 -3.8504,0.89882 -17.3291,3.52205 -34.5579,-0.0389764 -48.5788,-8.76379 -13.9949,-8.70591 -24.7914,-22.552 -29.3067,-39.6142 -0.298819,-0.956694 -0.544489,-1.93583 -0.73819,-2.93504l-70.4871 -252.601 -129.623 -89.9906 -29.5477 134.979c-0.133465,0.759449 -0.298819,1.52008 -0.498426,2.27953l-0.0614174 -0.0165354c-3.21614,12.1878 -9.60946,22.7032 -18.0567,30.8941 -8.17087,7.92284 -18.2575,13.6665 -29.2394,16.637 -0.348425,0.112205 -0.698032,0.220866 -1.05354,0.32126l-0.011811 -0.0437008 -0.329528 0.0826772 -267.968 75.3816c-0.657875,0.233858 -1.32992,0.442914 -2.01024,0.625985 -16.9949,5.20512 -34.6087,3.22559 -49.4953,-4.26378 -14.8193,-7.45512 -26.8736,-20.3847 -32.8536,-37.1126 -0.377953,-0.954331 -0.703938,-1.93347 -0.97441,-2.9374 -5.20867,-16.9984 -3.23032,-34.6193 4.26142,-49.5095 7.48229,-14.8689 20.4744,-26.9587 37.2886,-32.9138 0.414567,-0.16063 0.836221,-0.312992 1.2626,-0.454725l0.00590552 0.0188977 0.0874016 -0.0295276 0.0318898 0.0968505 221.789 -73.8662 27.554 -136.553c-1.19291,-3.2811 -2.20512,-6.67087 -3.02362,-10.1551 -1.55906,-6.63189 -2.38465,-13.4551 -2.38465,-20.3681l0.00236221 0c0,-0.307087 0.00354331,-0.616536 0.0141732,-0.927166l0.0933072 0.00354331 8.36812 -248.162 -48.8233 35.765 7.61339 171.956c1.36536,31.6772 -15.4843,52.8745 -37.7847,62.9221 -8.13544,3.66378 -17.0492,5.70591 -26.0327,6.09331
383-8.91615,0.383859 -17.954,-0.889371 -26.4012,-3.84922 -23.1166,-8.10355 -41.7555,-27.7677 -43.1197,-59.4154l-9.05316 -204.474 1.6748 -0.0720473c-0.552756,-9.79253 1.08543,-21.815 5.50748,-31.9961 3.80079,-8.74843 9.17835,-17.8087 15.9803,-24.4347 1.15866,-1.24016 2.44725,-2.39292 3.86693,-3.43229l0.0366142 0.0507874z"/> <path class="fil0" d="M1399.12 301.357c-11.0315,-11.0315 -26.2795,-17.8571 -43.1209,-17.8571 -16.8414,0 -32.0882,6.8256 -43.1197,17.8571 -11.0327,11.0327 -17.8583,26.2795 -17.8583,43.1209 0,16.8414 6.8256,32.0882 17.8583,43.1197 11.0315,11.0327 26.2784,17.8583 43.1197,17.8583 16.8414,0 32.0894,-6.8256 43.1209,-17.8571 11.0327,-11.0327 17.8583,-26.2795 17.8583,-43.1209 0,-16.8414 -6.8256,-32.0882 -17.8583,-43.1209z"/> <path class="fil0" d="M1356 243.352c27.9213,0 53.2052,11.3209 71.5052,29.6209 18.3012,18.3012 29.6221,43.5839 29.6221,71.5052 0,27.9213 -11.3209,53.204 -29.6221,71.5052 -18.3,18.3 -43.5839,29.6209 -71.5052,29.6209 -27.9225,0 -53.204,-11.3209 -71.504,-29.6221 -18.3012,-18.3 -29.6221,-43.5815 -29.6221,-71.504 0,-27.9213 11.3209,-53.204 29.6221,-71.5052 18.3,-18.3 43.5827,-29.6209 71.504,-29.6209z"/> </g> <rect class="fil1" width="2048" height="2048"/></svg> 384 <p>Coaching</p> 385 </li> 386 </a> 387 <a href="/help"> 388 <li> 389 <svg xmlns="http://www.w3.org/2000/svg" width="30" height="20" viewBox="0 0 24 24" fill="none" stroke="#0b1d46" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg> 390 <p>Contact Us</p> 391 </li> 392 </a> 393 394 </ul> 395 </div> 396 <div style='color: white'> 397 <a style='color: white; text-decoration: none' href="/cart"> 398 <div class="cart-container"> 399 <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="20.5" r="1"/><circle cx="18" cy="20.5" r="1"/><path d="M2.5 2.5h3l2.7 12.4a2 2 0 0 0 2 1.6h7.7a2 2 0 0 0 2-1.6l1.6-8.4H7.1"/></svg> 400 <!--<img src="/files/shop/imgs/cart.png" alt='Shopping Cart' /> --> 401 <p>My Cart</p> 402 </div> 403 </a> 404 405 <div class="authenticated-user"> 406 407 <div class="login-container"> 408 <a style="color: white; text-decoration: none; display: flex; align-items: center" 409 href="https://www.brooksee.com/accounts/login?next=/accounts/login" 410 > 411 <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5.52 19c.64-2.2 1.84-3 3.22-3h6.52c1.38 0 2.58.8 3.22 3"/><circle cx="12" cy="10" r="3"/><circle cx="12" cy="12" r="10"/></svg> 412 <p style="margin: 0; padding-left: 10px; "> 413 Login 414 </p> 415 </a> 416 </div> 417 418 </div> 419 </div> 420</div> 421 422 423
423<script> 424let isMenuOpen = false; 425 426document.addEventListener("DOMContentLoaded", function() { 427 // Set up the "click outside" functionality after the DOM is loaded 428 document.addEventListener("click", closeMenuOnClickOutside); 429 430 // Check if the masterReady function is defined and execute it 431 if (typeof masterReady == 'function') { 432 masterReady(); 433 } 434 435 // Set up the hamburger button click event 436 $("#hamb").click(function() { 437 toggleMenu(); 438 }); 439}); 440 441function closeMenuOnClickOutside(event) { 442 const slideout = document.querySelector("#slideout"); 443 const hamburger = document.querySelector("#hamb"); 444 445 // Check if the click is outside of the slideout menu or hamburger button 446 if (!slideout.contains(event.target) && !hamburger.contains(event.target)) { 447 if (isMenuOpen) { 448 toggleMenu(); // Close the menu if it's open 449 } 450 } 451} 452 453function toggleMenu() { 454 if (isMenuOpen) { 455 $("#slideout").css('z-index', 0).css('top', '-100%'); // Close the menu 456 } else { 457 // If the menu is closed, slide it in (show) 458 $("#slideout").css('display', 'block').css('top', '62px'); 459 } 460 isMenuOpen = !isMenuOpen; // Toggle the state 461 $("#hamb").toggleClass('close', isMenuOpen); // Update hamburger button 462} 463 464 465 466 467 $(".question_mark").tooltip( 468 {tooltipClass: "tooltip", 469 content: function() { return $(this).prop('title'); } 470 }); 471 if(typeof nav3_init == 'function') { 472 nav3_init(); 473 } 474 $(".quotes").each(function(idx) { 475 var nav = $(this).find(".nav"); 476 var prev = nav.find(".prev"); 477 var next = nav.find(".next"); 478 var quotes = $(this).find("ul").children(); 479 var count = quotes.length; 480 var pos = Math.floor(Math.random() * count); 481 if(count < 2) { 482 nav.hide(); 483 } else { 484 for (var j=0; j<count; j++) { 485 if(j==pos) { 486 $(quotes[j]).css('display', 'list-item'); 487 } else { 488 $(quotes[j]).css('display', 'none'); 489 } 490 } 491 prev.click(function() { 492 $(quotes[pos]).css('display', 'none'); 493 pos = pos - 1; 494 if(pos < 0) { 495 pos = count - 1; 496 } 497 $(quotes[pos]).css('display', 'list-item'); 498 }); 499 next.click(function() { 500 $(quotes[pos]).css('display', 'none'); 501 pos = pos + 1; 502 if (pos >= count ) { 503 pos = 0; 504 } 505 $(quotes[pos]).css('display', 'list-item'); 506 }); 507 } 508}); 509 510 511 (function() { 512 if (document.getElementById('ui_toast_styles')) { return; } 513 var style = document.createElement('style'); 514 style.id = 'ui_toast_styles'; 515 style.textContent = 516 '.ui_toast_stack { position:fixed; right:16px; bottom:16px; z-index:9500;' + 517 ' display:flex; flex-direction:column-reverse; gap:8px; }' + 518 '.ui_toast { min-width:220px; max-width:360px; padding:10px 14px; border-radius:8px;' + 519 ' background:#1f2937; color:#fff; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;' + 520 ' font-size:13px; box-shadow:0 8px 20px rgba(0,0,0,.25); opacity:0; transform:translateY(6px);' + 521 ' transition:opacity .15s ease, transform .15s ease; }' + 522 '.ui_toast.ui_toast_in { opacity:1; transform:translateY(0); }' + 523 '.ui_toast_title { font-weight:700; margin-bottom:2px; }' + 524 '.ui_toast_error { background:#991b1b; }'; 525 document.head.appendChild(style); 526})(); 527 528function ui_toast(title, msg, type) { 529 var stack = document.querySelector('.ui_toast_stack'); 530 if (!stack) { 531 stack = document.createElement('div'); 532 stack.className = 'ui_toast_stack'; 533 document.body.appendChild(stack); 534 } 535 var toast = document.createElement('div'); 536 toast.className = 'ui_toast' + (type === 'error' ? ' ui_toast_error' : ''); 537 toast.innerHTML = (title ? '<div class="ui_toast_title"></div>' : '') + '<div class="ui_toast_msg"></div>'; 538 if (title) { toast.querySelector('.ui_toast_title').textContent = title; } 539 toast.querySelector('.ui_toast_msg').textContent = msg; 540 stack.appendChild(toast); 541 requestAnimationFrame(function() { toast.classList.add('ui_toast_in'); }); 542 setTimeout(function() { 543 toast.classList.remove('ui_toast_in'); 544 setTimeout(function() { toast.remove(); }, 200); 545 }, 3000); 546} 547 548(function() { 549 if (document.getElementById('ui_modal_styles')) { return; } 550 var style = document.createElement('style'); 551 style.id = 'ui_modal_styles'; 552 style.textContent = 553 '.ui_modal_overlay { position:fixed; inset:0; background:rgba(15,23,42,.5); }' + 554 '.ui_modal { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%);' + 555 ' min-width:320px; max-width:520px; background:#fff; border-radius:10px;' + 556 ' box-shadow:0 20px 40px rgba(0,0,0,.25); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; }' + 557 '.ui_modal_titlebar { display:flex; align-items:center; justify-content:space-between;' + 558 ' padding:14px 16px; border-bottom:1px solid #e5e7eb; font-weight:700; font-size:15px;
558 color:#1f2937; }' + 559 '.ui_modal_close { border:0 !important; outline:0 !important; appearance:none !important;' + 560 ' -webkit-appearance:none !important; background:none !important; box-shadow:none !important;' + 561 ' font-size:26px !important; line-height:1 !important; padding:0 4px !important; margin:0 !important;' + 562 ' cursor:pointer; color:#9ca3af; }' + 563 '.ui_modal_close:hover { color:#4b5563 !important; background:none !important; }' + 564 '.ui_modal_body { padding:16px; font-size:14px; color:#374151; max-height:60vh; overflow-y:auto; }' + 565 '.ui_modal_body input[type=text], .ui_modal_body textarea {' + 566 ' box-sizing:border-box; width:100%; margin-top:8px; padding:7px 9px; border:1px solid #d1d5db;' + 567 ' border-radius:6px; font-size:14px; font-family:inherit; }' + 568 '.ui_modal_body textarea { min-height:70px; }' + 569 '.ui_modal_buttons { display:flex; justify-content:flex-end; gap:8px; padding:12px 16px; border-top:1px solid #e5e7eb; }' + 570 '.ui_modal_buttons button { border:1px solid #d1d5db; border-radius:6px; padding:8px 18px; background:#fff;' + 571 ' color:#1f2937; font-size:13px; font-weight:600; cursor:pointer; }' + 572 '.ui_modal_buttons button:hover { background:#f3f4f6; }'; 573 document.head.appendChild(style); 574})(); 575 576var _ui_modal_z = 9600; 577 578/* Shared engine behind ui_alert/ui_blocking_msg/ui_confirm/ui_prompt/ui_comment 579 -- vanilla JS/CSS, no jQuery UI. opts: 580 title, bodyHtml -- same as each function's own args 581 buttons: [{label, cb}] -- rendered left-to-right; clicking always 582 closes first, then calls cb (cb is optional 583 -- omit it for a plain Cancel/close button) 584 showClose (default true) -- title-bar X icon 585 closeOnEscape (default true) 586 enterButton: index -- Enter key clicks this button (unset = no 587 Enter binding, e.g. ui_comment's textarea) 588 onOpen(body) -- called with the body element once it's in 589 the DOM, for callers that need to add their 590 own controls (ui_prompt's input, etc.) 591 Returns a jQuery-wrapped element with a .dialog('close') shim, since 592 several existing call sites hold onto the return value and close it 593 themselves later -- see git history for which ones. */ 594function _ui_modal_open(opts) { 595 _ui_modal_z += 2; 596 var overlay = document.createElement('div'); 597 overlay.className = 'ui_modal_overlay'; 598 overlay.style.zIndex = _ui_modal_z; 599 600 var box = document.createElement('div'); 601 box.className = 'ui_modal'; 602 box.style.zIndex = _ui_modal_z + 1; 603 604 function close() { 605 overlay.remove(); 606 box.remove(); 607 $(document).off(keyNs); 608 } 609 610 var titlebar = document.createElement('div'); 611 titlebar.className = 'ui_modal_titlebar'; 612 var titleSpan = document.createElement('span'); 613 titleSpan.textContent = opts.title || ''; 614 titlebar.appendChild(titleSpan); 615 if (opts.showClose !== false) { 616 var closeBtn = document.createElement('button'); 617 closeBtn.type = 'button'; 618 closeBtn.className = 'ui_modal_close'; 619 closeBtn.innerHTML = '×'; 620 closeBtn.onclick = close; 621 titlebar.appendChild(closeBtn); 622 } 623 624 var body = document.createElement('div'); 625 body.className = 'ui_modal_body'; 626 body.innerHTML = opts.bodyHtml || ''; 627 628 box.appendChild(titlebar); 629 box.appendChild(body); 630 631 var buttonEls = []; 632 if (opts.buttons && opts.buttons.length) { 633 var pane = document.createElement('div'); 634 pane.className = 'ui_modal_buttons'; 635 opts.buttons.forEach(function(b) { 636 var btn = document.createElement('button'); 637 btn.type = 'button'; 638 btn.textContent = b.label; 639 btn.onclick = function() { 640 close(); 641 if (b.cb) { b.cb(); } 642 }; 643 pane.appendChild(btn); 644 buttonEls.push(btn); 645 }); 646 box.appendChild(pane); 647 } 648 649 var keyNs = 'keydown.ui_modal_' + _ui_modal_z; 650 $(document).on(keyNs, function(e) { 651 if (e.key === 'Escape' && opts.closeOnEscape !== false) { 652 close(); 653 } else if (e.key === 'Enter' && opts.enterButton !== undefined && buttonEls[opts.enterButton]) { 654 buttonEls[opts.enterButton].click(); 655 } 656 }); 657 658 document.body.appendChild(overlay); 659 document.body.appendChild(box); 660 if (opts.onOpen) { opts.onOpen(body); } 661 662 var $box = $(box); 663 $box.dialog = function(action) { if (action === 'close') { close(); } }; 664 return $box; 665} 666 667function ui_alert(title, msg, done_cb) { 668 return _ui_modal_open({ 669 title: title, 670 bodyHtml: msg, 671 buttons: [{ label: "Ok", cb: done_cb }] 672 }); 673} 674 675function ui_blocking_msg(title, msg) { 676 return _ui_modal_open({ 677 title: title, 678 bodyHtml: msg, 679 showClose: false, 680 closeOnEscape: false 681 }); 682} 683 684function ui_confirm(title, msg, yes_cb, no_cb, yes_text, no_text) { 685 return _ui_modal_open({ 686 title: title, 687 bodyHtml: msg, 688 buttons: [ 689 { label: yes_text || "Yes", cb: yes_cb }, 690 { label: no_text || "No", cb: no_cb } 691 ], 692 enterButton: 0 693 }); 694} 695 696function ui_prompt(title, msg, done_cb, defaultText) { 697 var defval = (defaultText != null) ? defaultText : ""; 698 var input; 699 return _ui_modal_open({ 700 title: title, 701 bodyHtml: msg + "<br>", 702 onOpen: function(body) { 703 input = document.createElement('input'); 704 input.type = 'text'; 705 input.className = 'nice input-text'; 706 input.value = defval; 707 body.appendChild(input); 708 input.focus(); 709 }, 710 buttons: [ 711 { label: "Cancel" },
712 { label: "Ok", cb: function() { done_cb(input.value); } } 713 ], 714 enterButton: 1 715 }); 716} 717 718function ui_comment(title, msg, done_cb, defaultText) { 719 var defval = (defaultText != null) ? defaultText : ""; 720 var textarea; 721 return _ui_modal_open({ 722 title: title, 723 bodyHtml: msg + "<br>", 724 onOpen: function(body) { 725 body.classList.add('ui_comment_box'); 726 textarea = document.createElement('textarea'); 727 textarea.value = defval; 728 body.appendChild(textarea); 729 }, 730 buttons: [ 731 { label: "Cancel" }, 732 { label: "Ok", cb: function() { done_cb(textarea.value); } } 733 ] 734 }); 735} 736 737var _requests = []; 738var _abortAllRequests = function() { 739 $(_requests).each(function(i, xhr) { 740 console.log("aborting..." + xhr.abort()); 741 }); 742} 743 744$(window).on("beforeunload", function() { 745 _abortAllRequests(); 746}); 747 748var _rpc_server = "" // blank to use relative path for rpc_server 749function rpc(mod, funcName, args, success, error, type, ajax_args) { 750 var xhr; 751 $("body").css("cursor", "progress"); 752 function mySuccess(data, textStatus, jqXHR) { 753 _requests.pop(xhr); 754 $("body").css("cursor", "default"); 755 if(data["status"] == "OK") { 756 $("body").css("cursor", "default"); 757 success(data["result"], textStatus, jqXHR); 758 } else { 759 $("body").css("cursor", "default"); 760 error(jqXHR, data["status"], data["result"]); 761 } 762 } 763 function myError(a0, a1, a2) { 764 if(a2=="abort") { return; } 765 _requests.pop(xhr); 766 $("body").css("cursor", "default"); 767 error(a0, a1, a2); 768 } 769 if(!type) 770 type="POST"; 771 var settings = { 772 url : _rpc_server + "/func/" + mod + "/" + funcName, 773 type : type, 774 data : { '__json__': JSON.stringify(args)}, 775 dataType : "json", 776 success : mySuccess, 777 error : myError 778 }; 779 $.extend(settings, ajax_args); 780 xhr = $.ajax(settings); 781 _requests.push(xhr); 782} 783 784function rpc_file(mod, funcName, args, file_obj, success, error, type, ajax_args) { 785 let reader = new FileReader(); 786 reader.onloadend = function(evt) { 787 args["data"] = reader.result 788 rpc(mod, funcName, args, success, error, type, ajax_args) 789 } 790 reader.readAsBinaryString(file_obj) 791} 792 793/* 794var _rpc2_server = "https://rpc.brooksee.com" // blank to use relative path for rpc_server 795async function rpc2(mod, view, func, args, msg, context, options) { 796 // cant share session with existing server, so will need to login again 797 let _context = {} 798 if(context !== undefined) { 799 Object.assign(_context, context) 800 } 801 802 let body = { 803 args: args, 804 context: _context 805 } 806 let loading 807 if(msg !== "__bg__") { 808 loading = ui_blocking_msg("", msg); 809 } 810 let url = _rpc2_server + "/rest/" + mod + "/" + view + "/" + func 811 console.log('rpc(' + url + ', ' + JSON.stringify(body) + ')') 812 try { 813 let response = await fetch(url, { 814 method: 'POST', 815 //mode: "no-cors", 816 body:JSON.stringify(body), 817 }) 818 console.log(response) 819 data = await response.json() 820 console.log(data) 821 if (data.status === 'OK') { 822 return data.result 823 } else { 824 throw(data) 825 } 826 } finally { 827 if(loading !== undefined) { 828 loading.dialog("close") 829 } 830 } 831} 832*/ 833 834let _rpc3_server = "https://rpc.brooksee.com" // blank to use relative path for rpc_server 835async function rpc3(mod, view, func, args) { 836 // Base rpc call that does not handle any errors but 837 // throws errors any error as an exception so that the 838 // caller can handle it and decide what do with the error. 839 // Does not display any indication of busy or progress. 840 let url = _rpc3_server + "/rest/" + mod + "/" + view + "/" + func 841 let body = { 842 args: args, 843 context: {}, 844 } 845 console.log('rpc(' + url + ', ' + JSON.stringify(body) + ')') 846 let response = await fetch(url, { 847 method: "POST", 848 headers: { "X-Pickle-Session": "ro2qd0xh4o7a5uu9xyvptnipga50gd51" }, 849 body: JSON.stringify(body), 850 }) 851 console.log(response) 852 if(response.ok) { 853 let data = await response.json() 854 console.log(data) 855 if(data.status === "ERROR") { 856 console.log("err:",data.result) 857 throw(data.result) 858 } else if(data.status === "OK") { 859 return data.result 860 } else { 861 throw("Unknown Response") 862 } 863 } else { 864 throw("Error: " + response.status) 865 } 866} 867 868 $(".vimeo_colorbox,.vimeo").colorbox({iframe:true, width:"95%", height:"95%", reposition: true}); 869 870 </script>
870 871 872
872<script type="text/javascript"> 873 var _gaq = _gaq || []; 874 _gaq.push(['_setAccount', 'G-L9EFPF17EV']); 875 _gaq.push(['_trackPageview']); 876 877 (function() { 878 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 879 ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; 880 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 881 })(); 882 </script>
882 883 884 </body> 885</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.