{"version":3,"file":"index.js","mappings":"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","sources":["webpack://frontend/./src/index/cityPages.js","webpack://frontend/./src/index/Search.vue","webpack://frontend/src/index/Search.vue","webpack://frontend/./src/index/Search.vue?5268","webpack://frontend/./src/index/Search.vue?13f8","webpack://frontend/./src/index/Content.vue","webpack://frontend/src/index/Content.vue","webpack://frontend/./src/index/Content.vue?a45b","webpack://frontend/./src/index/Content.vue?536a","webpack://frontend/./src/index/BelongingHome.vue","webpack://frontend/./src/index/PublicHeader.vue","webpack://frontend/src/index/PublicHeader.vue","webpack://frontend/./src/index/PublicHeader.vue?4b7b","webpack://frontend/./src/index/PublicHeader.vue?3cd1","webpack://frontend/./src/index/PublicFooter.vue","webpack://frontend/src/index/PublicFooter.vue","webpack://frontend/./src/index/PublicFooter.vue?20cc","webpack://frontend/./src/index/PublicFooter.vue?95cf","webpack://frontend/src/index/BelongingHome.vue","webpack://frontend/./src/index/BelongingHome.vue?89ea","webpack://frontend/./src/index/BelongingHome.vue?9305","webpack://frontend/./src/index/main.js","webpack://frontend/webpack/bootstrap","webpack://frontend/webpack/runtime/chunk loaded","webpack://frontend/webpack/runtime/compat get default export","webpack://frontend/webpack/runtime/define property getters","webpack://frontend/webpack/runtime/global","webpack://frontend/webpack/runtime/hasOwnProperty shorthand","webpack://frontend/webpack/runtime/make namespace object","webpack://frontend/webpack/runtime/node module decorator","webpack://frontend/webpack/runtime/runtimeId","webpack://frontend/webpack/runtime/jsonp chunk loading","webpack://frontend/webpack/startup"],"sourcesContent":["const clean = value => typeof value === 'string' ? value.trim() : ''\nconst cityLabel = page => clean(page.city) + (clean(page.state) ? ', ' + clean(page.state) : '')\nconst cityKey = value => clean(value).toLocaleLowerCase('en-US')\n\nfunction safeCityCover (value) {\n  const cover = clean(value)\n  if (!cover) return ''\n  try {\n    const url = new URL(cover, 'https://storyfaith.invalid')\n    return ['http:', 'https:'].includes(url.protocol) ? cover : ''\n  } catch (_) {\n    return ''\n  }\n}\n\nfunction buildCityPages (records, communities) {\n  // An explicit empty catalog is authoritative: do not resurrect draft city\n  // pages from their independently published community listings.\n  const source = Array.isArray(records) ? records : communities\n  const seen = new Set()\n  return source.reduce((pages, record) => {\n    const page = {city: clean(record.city), state: clean(record.state), cover: safeCityCover(record.cover)}\n    const key = cityKey(cityLabel(page))\n    if (!page.city || record.published === false || seen.has(key)) return pages\n    seen.add(key)\n    pages.push(page)\n    return pages\n  }, [])\n}\n\nmodule.exports = {cityLabel, cityKey, safeCityCover, buildCityPages}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{\n      \"public-position\": _vm.publicFrontPage,\n      \"searchbox\": true,\n      \"shadow\": true,\n      \"d-flex\": true,\n      \"flex-column\": true,\n      \"flex-md-row\": true\n    }},[_c('div',{staticClass:\"section d-flex flex-fill flex-column location\"},[_c('label',[_vm._v(\"Location\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.cityQuery),expression:\"cityQuery\"}],staticClass:\"mt-auto\",attrs:{\"type\":\"text\",\"placeholder\":\"Where do you live?\"},domProps:{\"value\":(_vm.cityQuery)},on:{\"keyup\":_vm.autocomplete_city,\"focus\":_vm.focus,\"blur\":_vm.blur,\"input\":function($event){if($event.target.composing)return;_vm.cityQuery=$event.target.value}}}),(_vm.state=='autocomplete' && _vm.autocompleteOptions.length > 0)?_c('div',{staticClass:\"options\"},_vm._l((_vm.autocompleteOptions),function(option,i){return _c('div',{key:i,staticClass:\"option\",on:{\"click\":function($event){return _vm.select_city(option)}}},[_vm._v(\" \"+_vm._s(option.city)+\", \"+_vm._s(option.state_name)+\" \")])}),0):_vm._e(),_c('div',{staticClass:\"background\"}),((_vm.state=='optionsMainScreen' && _vm.featuredCities.length > 0))?_c('div',{staticClass:\"options main-screen\"},[_c('h5',[_vm._v(\"Cities on StoryFaith\")]),_vm._l((_vm.featuredCities),function(option,i){return _c('a',{key:i,staticClass:\"option\",on:{\"click\":function($event){return _vm.select_city(option)}}},[_vm._v(\" \"+_vm._s(option.city)+\", \"+_vm._s(option.state_name)+\" \")])})],2):_vm._e()]),_c('div',{staticClass:\"section d-flex flex-fill flex-column type\"},[_c('label',[_vm._v(\"What are you looking for?\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.typeQuery),expression:\"typeQuery\"}],staticClass:\"mt-auto\",attrs:{\"type\":\"text\",\"placeholder\":\"ex. College Ministry, Local Church\"},domProps:{\"value\":(_vm.typeQuery)},on:{\"focus\":function($event){_vm.typeSelect = true},\"input\":function($event){if($event.target.composing)return;_vm.typeQuery=$event.target.value}}}),(_vm.typeSelect)?_c('div',{staticClass:\"options\"},_vm._l((_vm.typeOptions),function(option,i){return _c('div',{key:i,staticClass:\"option\",on:{\"click\":function($event){return _vm.selectType(option)}}},[_vm._v(\" \"+_vm._s(option.text)+\" \")])}),0):_vm._e(),_c('div',{staticClass:\"background\"})]),_c('a',{staticClass:\"search-btn d-flex align-self-center\",attrs:{\"href\":'/search?location=' + this.cityQuery + '&q=' + this.typeQuery}},[_c('svg',{attrs:{\"width\":\"56\",\"height\":\"56\",\"viewBox\":\"0 0 56 56\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('circle',{attrs:{\"cx\":\"28\",\"cy\":\"28\",\"r\":\"28\",\"fill\":\"#222222\"}}),_c('path',{attrs:{\"d\":\"M26.3594 37.8438C32.702 37.8438 37.8438 32.702 37.8438 26.3594C37.8438 20.0167 32.702 14.875 26.3594 14.875C20.0167 14.875 14.875 20.0167 14.875 26.3594C14.875 32.702 20.0167 37.8438 26.3594 37.8438Z\",\"stroke\":\"#EFEFEF\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}}),_c('path',{attrs:{\"d\":\"M34.4795 34.4805L41.1241 41.1251\",\"stroke\":\"#EFEFEF\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})]),_c('span',{staticClass:\"d-md-none d-block\"},[_vm._v(\" Search \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div :class='{\n        \"public-position\": publicFrontPage,\n        \"searchbox\": true,\n        \"shadow\": true,\n        \"d-flex\": true,\n        \"flex-column\": true,\n        \"flex-md-row\": true\n      }'>\n      <div class=\"section d-flex flex-fill flex-column location\">\n          <label>Location</label>\n          <input\n            class=\"mt-auto\"\n            type=\"text\"\n            placeholder=\"Where do you live?\"\n            @keyup=\"autocomplete_city\"\n            @focus=\"focus\"\n            @blur=\"blur\"\n            v-model=\"cityQuery\"\n            />\n          <div class=\"options\" v-if=\"state=='autocomplete' && autocompleteOptions.length > 0\">\n              <div\n                v-for=\"(option, i) in autocompleteOptions\"\n                :key=\"i\"\n                @click=\"select_city(option)\"\n                class=\"option\"\n                >\n                  {{option.city}}, {{option.state_name}}\n              </div>\n          </div>\n          <div class=\"background\" />\n          <div\n            class=\"options main-screen\"\n            v-if=\"(state=='optionsMainScreen' && featuredCities.length > 0)\"\n            >\n            <h5>Cities on StoryFaith</h5>\n            <a\n              v-for=\"(option, i) in featuredCities\"\n              :key=\"i\"\n              @click=\"select_city(option)\"\n              class=\"option\"\n              >\n                {{option.city}}, {{option.state_name}}\n            </a>\n          </div>\n      </div>\n      <div class=\"section  d-flex flex-fill flex-column type\" >\n          <label>What are you looking for?</label>\n          <input class=\"mt-auto\" type=\"text\" placeholder=\"ex. College Ministry, Local Church\" v-model=\"typeQuery\" @focus=\"typeSelect = true\" />\n          <div class=\"options\" v-if=\"typeSelect\">\n              <div v-for=\"(option, i) in typeOptions\" class=\"option\" :key=\"i\" @click=\"selectType(option)\">\n                  {{option.text}}\n              </div>\n          </div>\n          <div class=\"background\" />\n      </div>\n      <a class=\"search-btn d-flex align-self-center\" :href=\"'/search?location=' + this.cityQuery + '&q=' + this.typeQuery\">\n          <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <circle cx=\"28\" cy=\"28\" r=\"28\" fill=\"#222222\"/>\n          <path d=\"M26.3594 37.8438C32.702 37.8438 37.8438 32.702 37.8438 26.3594C37.8438 20.0167 32.702 14.875 26.3594 14.875C20.0167 14.875 14.875 20.0167 14.875 26.3594C14.875 32.702 20.0167 37.8438 26.3594 37.8438Z\" stroke=\"#EFEFEF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n          <path d=\"M34.4795 34.4805L41.1241 41.1251\" stroke=\"#EFEFEF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n          </svg>\n          <span class=\"d-md-none d-block\"> Search </span>\n      </a>\n  </div>\n</template>\n\n<script>\n// Fetch compatibility\nimport 'whatwg-fetch'\n\nexport default {\n  name: 'Search',\n  props: {\n    publicFrontPage: Boolean\n  },\n  data () {\n      return {\n          cityQuery: \"\", // \"Gainesville, Florida\",\n          typeQuery: \"\",\n          autocompleteOptions: [],\n          featuredCities: [],\n          state: \"closed\",\n          typeOptions: [\n              {\n                  \"text\": \"Local Church\"\n              },\n              {\n                  \"text\": \"College Ministry\"\n              }\n          ],\n          typeSelect: false\n      };\n  },\n  created () {\n    let self = this\n    fetch(\"/featured_cities\")\n            .then(response => response.json())\n            .then( (data) => {\n              self.featuredCities = data\n\n            });\n\n  },\n  methods: {\n      autocomplete_city () {\n          /*this.autocompleteOptions = [\n              {\n                city: \"Gainesville\", state_name: \"Florida\"\n              }\n          ]\n          /* Disable temporarily */\n          let self = this\n          if (this.cityQuery.length >= 3 && this.cityQuery.length < 100) {\n              fetch(\"/cityquery?q=\" + this.cityQuery)\n                      .then(response => response.json())\n                      .then((data) => {\n                        self.autocompleteOptions = data\n                        self.state=\"autocomplete\"\n                      });\n\n          } else {\n              this.autocompleteOptions = [];\n              self.state=\"optionsMainScreen\"\n          }\n      },\n      clear_city () {\n          this.state=\"closed\"\n          this.autocompleteOptions = [];\n      },\n      select_city (city) {\n          this.cityQuery = city.city + \", \" + city.state_name;\n          this.clear_city();\n      },\n      selectType (type) {\n          this.typeQuery = type.text;\n          this.typeSelect = false;\n      },\n      focus () {\n        if (self.timer) {\n          clearTimeout(self.timer)\n          self.timer = null\n        }\n        this.state = 'optionsMainScreen'\n      },\n      blur () {\n        let self = this\n        if (this.state !== \"autocomplete\")\n          self.timer = window.setTimeout( () => {\n            self.state = \"closed\"\n            self.timer = null\n          }, 200 )\n      },\n      href (city) {\n        return '/search?location=' + city.city + \", \" + city.state_name;\n      }\n  }\n}\n</script>\n<style scoped>\n.public-position {\n    position: relative;\n    top: -50px;\n    margin: 0px auto;\n}\n\n.searchbox {\n    border-radius: 50px;\n    background: white;\n    font-size: 16px;\n    padding: 10px 10px;\n    max-width: 700px;\n    width: auto;\n    box-shadow: 0px 10px 35px rgba(0, 0, 0, 0.4);\n}\n\nlabel {\n    font-weight: bold;\n}\n\n.section {\n    padding: 5px 30px;\n    position: relative;\n\n}\n.section:first-child {\n    border-right: 1px solid #ddd;\n}\n.section .background {\n    opacity: 0;\n    transition: opacity 0.5s;\n}\n.section:hover .background {\n    opacity: 1;\n}\n.section:hover input[type=\"text\"] {\n    background: #f3f3f3;\n}\n\n.section input {\n    border: 0;\n    border-bottom: 1px solid #eee;\n    width: 100%;\n    display: block;\n    padding: 5px;\n    z-index: 1;\n    position: relative;\n    background: #fff;\n    transition: background-color 0.5s;\n}\n.section input[type=\"text\"]:focus {\n    outline: none;\n}\n.section label {\n    z-index: 1;\n    position: relative;\n}\n\n.options {\n    position: absolute;\n    top: 60px;\n    background: white;\n    border: 1px solid #ddd;\n    box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.15);\n    z-index: 2;\n}\n.options > .option {\n    border-bottom: 1px solid #ddd;\n    padding: 8px 18px;\n    cursor: pointer;\n    text-decoration: none;\n    color: inherit;\n    display: block;\n}\n.options > .option:hover {\n    background: #efefef;\n}\n\n\nh5 {\n  font-weight: lighter;\n  font-size: 14px;\n  margin: 10px;\n}\n\n.main-screen {\n  padding-bottom: 10px;\n}\n\n\n.search-btn {\n    background: #222222;\n    border-radius: 30px;\n    padding: 0px;\n    margin-right: 7px;\n    margin-left: 10px;\n}\n.search-btn svg circle {\n    transition: fill 0.24s;\n    fill: #222;\n}\n.search-btn:hover svg circle {\n    fill: #7B7B7B;\n}\n.search-btn span {\n    color: white;\n    padding: 14px 25px 0px 0px;\n}\n\n\n@media(max-width: 770px) {\n    .searchbox {\n        border-radius: 25px;\n        padding: 30px 30px;\n        margin: 20px;\n        top: -70px;\n    }\n    .search-btn {\n        margin-top: 15px;\n    }\n    .section {\n        padding: 15px 0px;\n    }\n    .section:first-child {\n        border-right: 0;\n    }\n    .options {\n        top: 80px;\n    }\n\n\n    .section .background {\n        display: none;\n    }\n}\n\n.section .background {\n    background-color: #f3f3f3;\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    top: 0px;\n    left: 0px;\n    z-index: 0;\n}\n.section.location .background {\n    border-radius: 50px 0 0 50px;\n\n}\n\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Search.vue?vue&type=template&id=832eca66&scoped=true&\"\nimport script from \"./Search.vue?vue&type=script&lang=js&\"\nexport * from \"./Search.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Search.vue?vue&type=style&index=0&id=832eca66&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"832eca66\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.mobile)?_c('div',{staticClass:\"index-content\"},[(_vm.communities.length > 0)?_c('div',{staticClass:\"featured\"},[_c('div',{staticClass:\"container\"},[_c('h2',{staticClass:\"text-start\"},[_vm._v(\"Featured Communities\")]),_c('div',{ref:\"communitiesContainer\",staticClass:\"cards d-flex flex-nowrap\"},_vm._l((_vm.communities),function(comm,i){return _c('div',{key:i,staticClass:\"col-12 col-md-4 col-sm-6 col-lg-3 d-flex\"},[_c('div',{staticClass:\"card d-flex shadow align-items-start\"},[_c('a',{staticClass:\"img-link\",attrs:{\"href\":comm.url}},[_c('img',{staticClass:\"card-img-top\",attrs:{\"src\":comm.thumbnail}})]),_c('div',{staticClass:\"card-body\"},[_c('h5',{staticClass:\"card-title\"},[_vm._v(\" \"+_vm._s(comm.title)+\" \")]),_c('h4',[_vm._v(_vm._s(comm.university_name))]),_c('p',[_vm._v(_vm._s(comm.small_description))])]),_c('div',{staticClass:\"p-3 mt-auto text-center align-self-stretch\"},[_c('a',{staticClass:\"btn btn-dark\",attrs:{\"href\":comm.url}},[_vm._v(\"Learn More\")])])])])}),0),_c('button',{staticClass:\"btn-nav right\",on:{\"click\":_vm.communityNavRight}},[_c('svg',{attrs:{\"width\":\"16\",\"height\":\"28\",\"viewBox\":\"0 0 16 28\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"d\":\"M1.91309 1.28247L14.6305 13.9999L1.91309 26.7173\",\"stroke\":\"black\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})])]),_c('button',{staticClass:\"btn-nav left\",on:{\"click\":_vm.communityNavLeft}},[_c('svg',{attrs:{\"width\":\"16\",\"height\":\"28\",\"viewBox\":\"-16 0 16 28\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"d\":\"M-1.91309 1.28247L-14.6305 13.9999L-1.91309 26.7173\",\"stroke\":\"black\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})])])])]):_vm._e(),(_vm.events.length > 0)?_c('div',{staticClass:\"featured\"},[_c('div',{staticClass:\"container\"},[_c('h2',{staticClass:\"text-start\"},[_vm._v(\"Featured Events\")]),_c('div',{ref:\"eventsContainer\",staticClass:\"cards d-flex flex-nowrap\"},_vm._l((_vm.events),function(event,i){return _c('div',{key:i,staticClass:\"col-12 col-sm-6 col-md-6 col-lg-4 d-flex\"},[_c('div',{staticClass:\"card w-100 d-flex shadow align-items-start\"},[_c('a',{staticClass:\"img-link\",attrs:{\"href\":event.url}},[_c('img',{staticClass:\"card-img-top\",attrs:{\"src\":event.thumbnail}})]),_c('div',{staticClass:\"card-body\"},[_c('h5',{staticClass:\"card-title\"},[_vm._v(\" \"+_vm._s(event.title)+\" \")]),_c('h4',{staticClass:\"small\"},[_vm._v(_vm._s(event.address))]),_c('p',[(event.schedule)?_c('span',{staticClass:\"card-detail\"},[_c('svg',{attrs:{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"d\":\"M8 14C11.3137 14 14 11.3137 14 8C14 4.68629 11.3137 2 8 2C4.68629 2 2 4.68629 2 8C2 11.3137 4.68629 14 8 14Z\",\"stroke\":\"#333333\",\"stroke-width\":\"2\",\"stroke-miterlimit\":\"10\"}}),_c('path',{attrs:{\"d\":\"M8 4.5V8H11.5\",\"stroke\":\"#333333\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})]),_vm._v(\" \"+_vm._s(event.schedule)+\" \")]):_vm._e(),(event.rsvps)?_c('span',{staticClass:\"card-detail\"},[_c('svg',{attrs:{\"width\":\"17\",\"height\":\"16\",\"viewBox\":\"0 0 17 16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"d\":\"M5.5 10C7.29493 10 8.75 8.54493 8.75 6.75C8.75 4.95507 7.29493 3.5 5.5 3.5C3.70507 3.5 2.25 4.95507 2.25 6.75C2.25 8.54493 3.70507 10 5.5 10Z\",\"stroke\":\"#333333\",\"stroke-width\":\"2\",\"stroke-miterlimit\":\"10\"}}),_c('path',{attrs:{\"d\":\"M9.71289 3.62132C10.1599 3.49537 10.6287 3.46668 11.0878 3.53718C11.5468 3.60767 11.9854 3.77572 12.374 4.02999C12.7626 4.28427 13.0922 4.61887 13.3407 5.01127C13.5891 5.40366 13.7505 5.84473 13.8141 6.30477C13.8777 6.76481 13.842 7.23314 13.7093 7.67821C13.5767 8.12329 13.3502 8.53477 13.0452 8.88494C12.7401 9.23511 12.3636 9.51585 11.9409 9.70824C11.5182 9.90063 11.0592 10.0002 10.5947 10.0003\",\"stroke\":\"#333333\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}}),_c('path',{attrs:{\"d\":\"M1 12.3373C1.50758 11.6153 2.18143 11.026 2.96466 10.6192C3.74788 10.2124 4.61748 10 5.50005 10C6.38262 9.99997 7.25224 10.2123 8.0355 10.619C8.81875 11.0258 9.49265 11.615 10.0003 12.337\",\"stroke\":\"#333333\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}}),_c('path',{attrs:{\"d\":\"M10.5957 10C11.4784 9.99936 12.3482 10.2114 13.1315 10.6182C13.9148 11.025 14.5886 11.6146 15.0957 12.337\",\"stroke\":\"#333333\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})]),_vm._v(\" \"+_vm._s(event.rsvps)+\" people will join \")]):_vm._e()])]),_c('div',{staticClass:\"p-3 mt-auto text-center align-self-stretch\"},[_c('a',{staticClass:\"btn btn-dark\",attrs:{\"href\":event.url}},[_vm._v(\"Learn More\")])])])])}),0),_c('button',{staticClass:\"btn-nav right\",on:{\"click\":_vm.eventNavRight}},[_c('svg',{attrs:{\"width\":\"16\",\"height\":\"28\",\"viewBox\":\"0 0 16 28\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"d\":\"M1.91309 1.28247L14.6305 13.9999L1.91309 26.7173\",\"stroke\":\"black\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})])]),_c('button',{staticClass:\"btn-nav left\",on:{\"click\":_vm.eventNavLeft}},[_c('svg',{attrs:{\"width\":\"16\",\"height\":\"28\",\"viewBox\":\"-16 0 16 28\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"d\":\"M-1.91309 1.28247L-14.6305 13.9999L-1.91309 26.7173\",\"stroke\":\"black\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})])])])]):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"index-content\" v-if=\"!mobile\">\n    <div v-if=\"communities.length > 0\" class=\"featured\">\n        <div class=\"container\">\n            <h2 class=\"text-start\">Featured Communities</h2>\n            <div class=\"cards d-flex flex-nowrap\" ref=\"communitiesContainer\">\n                <div class=\"col-12 col-md-4 col-sm-6 col-lg-3 d-flex\" v-for=\"comm,i in communities\" :key=\"i\">\n                    <div class=\"card d-flex shadow align-items-start \">\n                        <a class=\"img-link\" :href=\"comm.url\"><img :src=\"comm.thumbnail\" class=\"card-img-top\"></a>\n                        <div class=\"card-body\">\n                            <h5 class=\"card-title\">\n                              {{ comm.title }}\n                            </h5>\n                            <h4>{{comm.university_name}}</h4>\n                            <p>{{comm.small_description}}</p>\n\n                        </div>\n                        <div class=\"p-3 mt-auto text-center align-self-stretch\">\n                            <a class=\"btn btn-dark\"  :href=\"comm.url\">Learn More</a>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <button class=\"btn-nav right\" @click=\"communityNavRight\">\n              <svg width=\"16\" height=\"28\" viewBox=\"0 0 16 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path d=\"M1.91309 1.28247L14.6305 13.9999L1.91309 26.7173\" stroke=\"black\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n              </svg>\n            </button>\n            <button class=\"btn-nav left\" @click=\"communityNavLeft\">\n              <svg width=\"16\" height=\"28\" viewBox=\"-16 0 16 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path d=\"M-1.91309 1.28247L-14.6305 13.9999L-1.91309 26.7173\" stroke=\"black\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n              </svg>\n            </button>\n        </div>\n    </div>\n    <div v-if=\"events.length > 0\" class=\"featured\">\n        <div class=\"container\">\n            <h2 class=\"text-start\">Featured Events</h2>\n            <div class=\"cards d-flex flex-nowrap\" ref=\"eventsContainer\" >\n                <div class=\"col-12 col-sm-6 col-md-6 col-lg-4 d-flex\" v-for=\"event,i in events\" :key=\"i\">\n                    <div class=\"card w-100 d-flex shadow align-items-start \">\n                        <a class=\"img-link\" :href=\"event.url\"><img :src=\"event.thumbnail\" class=\"card-img-top\"></a>\n                        <div class=\"card-body\">\n                            <h5 class=\"card-title\">\n                              {{ event.title }}\n                            </h5>\n                            <h4 class=\"small\">{{event.address}}</h4>\n                            <p>\n                              <span v-if=\"event.schedule\" class=\"card-detail\">\n                                <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                                <path d=\"M8 14C11.3137 14 14 11.3137 14 8C14 4.68629 11.3137 2 8 2C4.68629 2 2 4.68629 2 8C2 11.3137 4.68629 14 8 14Z\" stroke=\"#333333\" stroke-width=\"2\" stroke-miterlimit=\"10\"/>\n                                <path d=\"M8 4.5V8H11.5\" stroke=\"#333333\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                                </svg>\n                                {{event.schedule}}\n                              </span>\n                              <span v-if=\"event.rsvps\" class=\"card-detail\">\n                                <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                                <path d=\"M5.5 10C7.29493 10 8.75 8.54493 8.75 6.75C8.75 4.95507 7.29493 3.5 5.5 3.5C3.70507 3.5 2.25 4.95507 2.25 6.75C2.25 8.54493 3.70507 10 5.5 10Z\" stroke=\"#333333\" stroke-width=\"2\" stroke-miterlimit=\"10\"/>\n                                <path d=\"M9.71289 3.62132C10.1599 3.49537 10.6287 3.46668 11.0878 3.53718C11.5468 3.60767 11.9854 3.77572 12.374 4.02999C12.7626 4.28427 13.0922 4.61887 13.3407 5.01127C13.5891 5.40366 13.7505 5.84473 13.8141 6.30477C13.8777 6.76481 13.842 7.23314 13.7093 7.67821C13.5767 8.12329 13.3502 8.53477 13.0452 8.88494C12.7401 9.23511 12.3636 9.51585 11.9409 9.70824C11.5182 9.90063 11.0592 10.0002 10.5947 10.0003\" stroke=\"#333333\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                                <path d=\"M1 12.3373C1.50758 11.6153 2.18143 11.026 2.96466 10.6192C3.74788 10.2124 4.61748 10 5.50005 10C6.38262 9.99997 7.25224 10.2123 8.0355 10.619C8.81875 11.0258 9.49265 11.615 10.0003 12.337\" stroke=\"#333333\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                                <path d=\"M10.5957 10C11.4784 9.99936 12.3482 10.2114 13.1315 10.6182C13.9148 11.025 14.5886 11.6146 15.0957 12.337\" stroke=\"#333333\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                                </svg>\n                                {{event.rsvps}} people will join\n                              </span>\n                            </p>\n\n                        </div>\n                        <div class=\"p-3 mt-auto text-center align-self-stretch\">\n                            <a class=\"btn btn-dark\" :href=\"event.url\">Learn More</a>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <button class=\"btn-nav right\" @click=\"eventNavRight\">\n              <svg width=\"16\" height=\"28\" viewBox=\"0 0 16 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path d=\"M1.91309 1.28247L14.6305 13.9999L1.91309 26.7173\" stroke=\"black\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n              </svg>\n            </button>\n            <button class=\"btn-nav left\" @click=\"eventNavLeft\">\n              <svg width=\"16\" height=\"28\" viewBox=\"-16 0 16 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path d=\"M-1.91309 1.28247L-14.6305 13.9999L-1.91309 26.7173\" stroke=\"black\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n              </svg>\n            </button>\n        </div>\n    </div>\n  </div>\n</template>\n<script>\n// Fetch compatibility\nimport 'whatwg-fetch'\n\nexport default {\n  name: 'Content',\n  props: {\n    mobile: Boolean\n  },\n  data () {\n      return {\n          communities: [],\n          events: []\n      }\n  },\n  methods: {\n      communityNavLeft () {\n          if (this.communities.length == 0) return;\n          let cardWidth = this.$refs.communitiesContainer.scrollWidth / this.communities.length;\n          this.$refs.communitiesContainer.scrollLeft -= cardWidth;\n      },\n      communityNavRight () {\n          if (this.communities.length == 0) return;\n          let cardWidth = this.$refs.communitiesContainer.scrollWidth / this.communities.length;\n          this.$refs.communitiesContainer.scrollLeft += cardWidth;\n      },\n      eventNavLeft () {\n          if (this.events.length == 0) return;\n          let cardWidth = this.$refs.eventsContainer.scrollWidth / this.events.length;\n          this.$refs.eventsContainer.scrollLeft -= cardWidth;\n      },\n      eventNavRight () {\n          if (this.events.length == 0) return;\n          let cardWidth = this.$refs.eventsContainer.scrollWidth / this.events.length;\n          this.$refs.eventsContainer.scrollLeft += cardWidth;\n      }\n  },\n  created () {\n      var self = this;\n      fetch(\"/api/community/home/\").then(async function(result) {\n          self.communities = await result.json();\n      });\n      fetch(\"/api/event/home/\").then(async function(result) {\n          self.events = await result.json();\n      });\n  }\n}\n</script>\n<style scoped>\n.container {\n    position: relative;\n}\n.cards {\n    overflow-x: scroll;\n    padding-bottom: 20px;\n}\n.btn-nav:hover {\n    background: #f0f0f0;\n}\n.btn-nav {\n    background: #fcfcfc;\n    border-radius: 30px;\n    padding: 15px 20px;\n    border: 0;\n    outline: 0;\n    z-index: 2;\n    position: absolute;\n    top: 250px;\n}\n.btn-nav.left {\n    left: -25px;\n}\n.btn-nav.right {\n    right: -25px;\n}\n\n.featured {\n    margin-bottom: 100px;\n}\n.featured .card {\n    margin: 0px 5px;\n}\n.featured .cards div .card img, .featured .cards .card  {\n    border-radius: 0;\n}\n\n/* width */\n::-webkit-scrollbar {\n  width: 10px;\n}\n\n/* Track */\n::-webkit-scrollbar-track {\n  background: #f1f1f1;\n}\n\n/* Handle */\n::-webkit-scrollbar-thumb {\n  background: #888;\n}\n\n/* Handle on hover */\n::-webkit-scrollbar-thumb:hover {\n  background: #555;\n}\n\n@media (max-width: 992px) {\n    .featured {\n        padding: 20px;\n    }\n    .featured .container {\n        max-width: none;\n    }\n}\n@media (min-width: 992px) {\n    .featured .container {\n        width: auto;\n        max-width: 1100px;\n    }\n}\n@media (min-width: 1200px) {\n    .featured .container {\n        width: 1200px;\n    }\n}\n.featured .cards div:first-child .card {\n    border-radius: 25px 0px 0px 20px;\n}\n.featured .cards div:first-child .card img {\n    border-radius: 25px 0px 0px 0px;\n}\n.featured .cards div:last-child .card {\n    border-radius: 0px 25px 25px 0px;\n}\n.featured .cards div:last-child .card img {\n    border-radius: 0px 25px 0px 0px;\n}\n\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Content.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Content.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Content.vue?vue&type=template&id=9a1e626e&scoped=true&\"\nimport script from \"./Content.vue?vue&type=script&lang=js&\"\nexport * from \"./Content.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Content.vue?vue&type=style&index=0&id=9a1e626e&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"9a1e626e\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"belonging\"},[_c('PublicHeader',{attrs:{\"username\":_vm.username,\"login-url\":_vm.loginUrl}}),_c('main',[(!_vm.city)?_c('section',{staticClass:\"sf-hero\"},[_c('div',{staticClass:\"sf-hero-copy\"},[_c('p',{staticClass:\"sf-eyebrow\"},[_vm._v(\"FAITH FOR EVERYDAY LIFE\")]),_vm._m(0),_c('p',{staticClass:\"sf-intro\"},[_vm._v(\" Find a local church and make room for God in your everyday life—with Bible reading, prayer, and spiritual practices you can share in community. \")]),_c('div',{staticClass:\"sf-hero-actions\"},[_c('a',{staticClass:\"sf-primary\",attrs:{\"href\":\"#discover\"}},[_vm._v(\"Find a Church →\")]),_c('a',{staticClass:\"sf-text-link\",attrs:{\"href\":_vm.appIntroUrl}},[_vm._v(\"Explore the App →\")])]),_c('form',{staticClass:\"sf-search\",on:{\"submit\":function($event){$event.preventDefault();return _vm.explore.apply(null, arguments)}}},[_c('label',{attrs:{\"for\":\"sf-city\"}},[_vm._v(\"Find a church near you\")]),_c('div',{staticClass:\"sf-search-row\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.city),expression:\"city\"}],attrs:{\"id\":\"sf-city\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.city=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"\"}},[_vm._v(\"Choose a city\")]),_vm._l((_vm.cities),function(item){return _c('option',{key:item,domProps:{\"value\":item}},[_vm._v(\" \"+_vm._s(item)+\" \")])})],2),_c('button',{staticClass:\"sf-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Explore →\")])])]),_c('button',{staticClass:\"sf-help\",on:{\"click\":_vm.openGuide}},[_vm._v(\" Not sure where to start? Help me find a church → \")])]),_vm._m(1)]):_vm._e(),(_vm.city)?_c('section',{staticClass:\"sf-city-hero\"},[(_vm.selectedCityCover)?_c('img',{staticClass:\"sf-city-hero-photo\",attrs:{\"src\":_vm.selectedCityCover,\"alt\":\"\"},on:{\"error\":_vm.cityCoverFailed}}):_vm._e(),(_vm.selectedCityCover)?_c('div',{staticClass:\"sf-city-hero-shade\",attrs:{\"aria-hidden\":\"true\"}}):_vm._e(),_c('div',{staticClass:\"sf-city-hero-inner\"},[_c('button',{staticClass:\"sf-city-back\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.backToCities}},[_vm._v(\" ← Explore all cities \")]),_c('p',{staticClass:\"sf-city-eyebrow\"},[_vm._v(\"FIND YOUR COMMUNITY\")]),_c('h1',[_vm._v(_vm._s(_vm.city.split(',')[0]))]),_c('p',{staticClass:\"sf-city-state\"},[_vm._v(_vm._s(_vm.city.split(',').slice(1).join(',').trim()))]),_c('p',{staticClass:\"sf-city-count\"},[_vm._v(\" \"+_vm._s(_vm.cityCommunityCount)+\" communities to explore \")]),_c('label',{staticClass:\"sf-city-switch\"},[_vm._v(\" Explore another city \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.city),expression:\"city\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.city=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.cities),function(label){return _c('option',{key:label,domProps:{\"value\":label}},[_vm._v(\" \"+_vm._s(label)+\" \")])}),0)])])]):_vm._e(),(_vm.guideOpen)?_c('section',{ref:\"guide\",staticClass:\"sf-guide\",attrs:{\"aria-labelledby\":\"sf-guide-title\"}},[_vm._m(2),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.applyGuide.apply(null, arguments)}}},[_c('label',{attrs:{\"for\":\"sf-guide-city\"}},[_vm._v(\"Your city\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.city),expression:\"city\"}],attrs:{\"id\":\"sf-guide-city\",\"required\":\"\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.city=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"\"}},[_vm._v(\"Choose a city\")]),_vm._l((_vm.cities),function(item){return _c('option',{key:item,domProps:{\"value\":item}},[_vm._v(_vm._s(item))])})],2),_c('fieldset',[_c('legend',[_vm._v(\"What would help you take a first step?\")]),_c('label',{staticClass:\"sf-choice\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.guideType),expression:\"guideType\"}],attrs:{\"type\":\"radio\",\"value\":\"Local Church\"},domProps:{\"checked\":_vm._q(_vm.guideType,\"Local Church\")},on:{\"change\":function($event){_vm.guideType=\"Local Church\"}}}),_vm._v(\" Find a local church \")]),_c('label',{staticClass:\"sf-choice\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.guideType),expression:\"guideType\"}],attrs:{\"type\":\"radio\",\"value\":\"College Ministry\"},domProps:{\"checked\":_vm._q(_vm.guideType,\"College Ministry\")},on:{\"change\":function($event){_vm.guideType=\"College Ministry\"}}}),_vm._v(\" Explore a college ministry \")]),_c('label',{staticClass:\"sf-choice\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.guideType),expression:\"guideType\"}],attrs:{\"type\":\"radio\",\"value\":\"\"},domProps:{\"checked\":_vm._q(_vm.guideType,\"\")},on:{\"change\":function($event){_vm.guideType=\"\"}}}),_vm._v(\" I'm open to exploring both \")])]),_c('button',{staticClass:\"sf-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Show me places to explore →\")]),_c('button',{staticClass:\"sf-help\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.guideOpen = false}}},[_vm._v(\"Close\")])])]):_vm._e(),(!_vm.city && !_vm.isDiscovery)?_c('section',{staticClass:\"sf-path\",attrs:{\"id\":\"how-it-works\",\"aria-labelledby\":\"sf-path-title\"}},[_c('p',{staticClass:\"sf-eyebrow\"},[_vm._v(\"BELONGING AND EVERYDAY FAITH\")]),_c('h2',{attrs:{\"id\":\"sf-path-title\"}},[_vm._v(\"A place to belong. A rhythm to grow.\")]),_vm._m(3)]):_vm._e(),(!_vm.city && !_vm.isDiscovery)?_c('section',{staticClass:\"sf-app-intro\",attrs:{\"id\":\"explore-app\",\"aria-labelledby\":\"sf-app-title\"}},[_vm._m(4),_vm._m(5)]):_vm._e(),(!_vm.city)?_c('section',{staticClass:\"sf-cities\",attrs:{\"aria-labelledby\":\"sf-cities-title\"}},[_c('p',{staticClass:\"sf-eyebrow\"},[_vm._v(\"FIND COMMUNITY CLOSE TO HOME\")]),_c('h2',{attrs:{\"id\":\"sf-cities-title\"}},[_vm._v(\"Explore our cities.\")]),_c('p',[_vm._v(\"Discover local churches and ministries where you live.\")]),_c('div',{staticClass:\"sf-city-grid\"},_vm._l((_vm.cityCards),function(item){return _c('button',{key:item.label,staticClass:\"sf-city-card\",on:{\"click\":function($event){return _vm.chooseCity(item.label)}}},[_c('span',{staticClass:\"sf-city-pin\",attrs:{\"aria-hidden\":\"true\"}},[_c('svg',{attrs:{\"viewBox\":\"0 0 24 24\",\"width\":\"25\",\"height\":\"25\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.7\"}},[_c('path',{attrs:{\"d\":\"M19 10c0 5-7 11-7 11S5 15 5 10a7 7 0 1 1 14 0Z\"}}),_c('circle',{attrs:{\"cx\":\"12\",\"cy\":\"10\",\"r\":\"2.5\"}})])]),_c('strong',[_vm._v(_vm._s(item.label))]),_c('span',[_vm._v(_vm._s(item.count)+\" \"+_vm._s(item.count === 1 ? 'listed community' : 'listed communities'))]),_c('span',{staticClass:\"sf-city-link\"},[_vm._v(\"View communities →\")])])}),0)]):_vm._e(),_c('section',{ref:\"discover\",staticClass:\"sf-discover\",attrs:{\"id\":\"discover\"}},[(_vm.city)?_c('button',{staticClass:\"sf-help sf-back-cities\",on:{\"click\":_vm.backToCities}},[_vm._v(\" ← Explore other cities \")]):_vm._e(),_c('div',{staticClass:\"sf-section-heading\"},[_c('div',[_c('p',{staticClass:\"sf-eyebrow\"},[_vm._v(\"MAKE ROOM FOR BELONGING\")]),_c('h2',[_vm._v(_vm._s(_vm.city ? 'Find your community in ' + _vm.city + '.' : 'Explore communities near you.'))]),_c('p',[_vm._v(\"Get a feel for a community before you walk through the door.\")])]),(_vm.city || _vm.kind || _vm.query || _vm.campus)?_c('button',{staticClass:\"sf-help\",on:{\"click\":_vm.reset}},[_vm._v(\"Reset filters\")]):_vm._e()]),_c('div',{staticClass:\"sf-filter-panel\"},[_c('h3',[_vm._v(\"Find your community\")]),_c('div',{staticClass:\"sf-filters\"},[_c('div',{staticClass:\"sf-tabs\",attrs:{\"role\":\"group\",\"aria-label\":\"Community type\"}},_vm._l((_vm.types),function(option){return _c('button',{key:option.value,class:{ active: _vm.kind === option.value },attrs:{\"aria-pressed\":_vm.kind === option.value},on:{\"click\":function($event){_vm.kind = option.value; _vm.shown = 12}}},[_vm._v(_vm._s(option.label))])}),0),_c('label',{staticClass:\"sf-name-search\"},[_c('span',{staticClass:\"sf-sr-only\"},[_vm._v(\"Search community names or locations\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],attrs:{\"type\":\"search\",\"placeholder\":\"Search by name or location\"},domProps:{\"value\":(_vm.query)},on:{\"input\":function($event){if($event.target.composing)return;_vm.query=$event.target.value}}})])]),_c('button',{staticClass:\"sf-more-filter\",attrs:{\"aria-expanded\":_vm.moreFilters,\"aria-controls\":\"sf-extra-filters\"},on:{\"click\":function($event){_vm.moreFilters = !_vm.moreFilters}}},[_vm._v(\" \"+_vm._s(_vm.moreFilters ? 'Fewer filters −' : 'More filters +')+\" \")]),(_vm.moreFilters)?_c('div',{staticClass:\"sf-extra-filters\",attrs:{\"id\":\"sf-extra-filters\"}},[_c('label',{attrs:{\"for\":\"sf-campus\"}},[_vm._v(\"Campus listed by the community\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.campus),expression:\"campus\"}],attrs:{\"id\":\"sf-campus\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.campus=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"\"}},[_vm._v(\"All campuses and communities\")]),_vm._l((_vm.campuses),function(item){return _c('option',{key:item,domProps:{\"value\":item}},[_vm._v(_vm._s(item))])})],2),_c('p',[_vm._v(\"This filters campus information in the listings, rather than distance from campus.\")])]):_vm._e()]),(_vm.saveMessage)?_c('div',{staticClass:\"sf-save-message\",attrs:{\"role\":\"status\"}},[_vm._v(\" \"+_vm._s(_vm.saveMessage)+\" \"),(!_vm.username)?_c('a',{attrs:{\"href\":_vm.loginUrl}},[_vm._v(\"Sign in →\")]):_vm._e()]):_vm._e(),(_vm.username && _vm.savedInCity.length)?_c('section',{staticClass:\"sf-saved-section\"},[_c('h3',[_vm._v(_vm._s(_vm.city ? 'Saved in this city' : 'Your saved communities'))]),_c('p',[_vm._v(\"Your shortlist. Saving does not register you as a member.\")]),_c('div',{staticClass:\"sf-saved-list\"},_vm._l((_vm.savedInCity),function(item){return _c('article',{key:item.slug},[_c('a',{attrs:{\"href\":'/' + item.slug + '/'}},[_vm._v(_vm._s(item.title)+\" ↗\")]),_c('button',{attrs:{\"type\":\"button\",\"disabled\":_vm.savingSlugs.includes(item.slug)},on:{\"click\":function($event){return _vm.toggleSave(item)}}},[_vm._v(\" \"+_vm._s(_vm.savingSlugs.includes(item.slug) ? 'Updating…' : 'Remove')+\" \")])])}),0)]):_vm._e(),_c('p',{staticClass:\"sf-count\",attrs:{\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.filtered.length)+\" \"+_vm._s(_vm.filtered.length === 1 ? 'community' : 'communities')+\" \"+_vm._s(_vm.city ? 'in ' + _vm.city : 'across our cities')+\" \")]),(_vm.filtered.length)?_c('div',{staticClass:\"sf-grid\"},_vm._l((_vm.filtered.slice(0, _vm.shown)),function(community){return _c('article',{key:community.slug,staticClass:\"sf-card\"},[_c('div',{staticClass:\"sf-card-image\"},[(community.cover)?_c('img',{attrs:{\"src\":community.cover,\"alt\":\"\",\"loading\":\"lazy\"},on:{\"error\":function($event){$event.target.style.visibility = 'hidden'}}}):_vm._e(),_c('span',[_vm._v(_vm._s(community.type || 'Community'))])]),_c('div',{staticClass:\"sf-card-copy\"},[_c('p',{staticClass:\"sf-location\"},[_vm._v(_vm._s(community.city)+_vm._s(community.state ? ', ' + community.state : ''))]),_c('h3',[_vm._v(_vm._s(community.title))]),(community.small_description)?_c('p',[_vm._v(_vm._s(community.small_description))]):_vm._e(),(community.university_name)?_c('p',{staticClass:\"sf-campus\"},[_vm._v(_vm._s(community.university_name))]):_vm._e(),_c('div',{staticClass:\"sf-discovery-card-actions\"},[_c('a',{attrs:{\"href\":'/' + community.slug + '/'}},[_vm._v(\" Get to know this community ↗ \")]),_c('button',{attrs:{\"type\":\"button\",\"aria-pressed\":_vm.isSaved(community.slug),\"aria-label\":(_vm.isSaved(community.slug) ? 'Remove saved ' : 'Save ') + community.title,\"disabled\":_vm.savingSlugs.includes(community.slug)},on:{\"click\":function($event){return _vm.toggleSave(community)}}},[_vm._v(\" \"+_vm._s(_vm.savingSlugs.includes(community.slug) ? 'Updating…' : _vm.isSaved(community.slug) ? 'Saved ✓' : 'Save')+\" \")])])])])}),0):_c('div',{staticClass:\"sf-empty\"},[_c('h3',[_vm._v(_vm._s(_vm.city && _vm.cityCommunityCount === 0 ? 'No communities are listed in this city yet.' : 'No communities match these filters yet.'))]),_c('p',[_vm._v(_vm._s(_vm.city && _vm.cityCommunityCount === 0 ? 'Check back as local communities join StoryFaith.' : 'Try another city, search, or community type.'))]),_c('a',{staticClass:\"sf-text-link\",attrs:{\"href\":\"/interest/?intent=visitor&source=discovery\"}},[_vm._v(\"Not finding a church near you? Stay in touch →\")]),_c('button',{staticClass:\"sf-primary\",on:{\"click\":_vm.reset}},[_vm._v(\"Explore all communities\")])]),(_vm.filtered.length > _vm.shown)?_c('button',{staticClass:\"sf-more\",on:{\"click\":function($event){_vm.shown += 12}}},[_vm._v(\" Show more communities ↓ \")]):_vm._e()]),(!_vm.isDiscovery)?_c('section',{staticClass:\"sf-ending\",attrs:{\"aria-labelledby\":\"sf-ending-title\"}},[_c('span',{staticClass:\"sf-ending-accent\",attrs:{\"aria-hidden\":\"true\"}}),_c('h2',{attrs:{\"id\":\"sf-ending-title\"}},[_vm._v(\"Your next step doesn't need to be complicated.\")]),_c('p',[_vm._v(\"Discover a local church near you. Practice spiritual disciplines personalized to your schedule. Grow your faith in the context of community.\")]),_c('div',{staticClass:\"sf-ending-actions\"},[_c('a',{staticClass:\"sf-ending-primary\",attrs:{\"href\":\"#discover\"}},[_vm._v(\"Find a Church →\")]),_c('a',{staticClass:\"sf-ending-secondary\",attrs:{\"href\":_vm.appIntroUrl}},[_vm._v(\"Explore the App →\")])])]):_vm._e()]),_c('PublicFooter')],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('h1',[_vm._v(\"Find your rhythm.\"),_c('br'),_vm._v(\"Grow your \"),_c('em',[_vm._v(\"faith.\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sf-hero-visual sf-clean-brand\"},[_c('img',{staticClass:\"sf-clean-brand-logo\",attrs:{\"src\":\"/static/communities/storyfaith-icon-yellow.png\",\"alt\":\"StoryFaith\"}})])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('p',{staticClass:\"sf-eyebrow\"},[_vm._v(\"A LITTLE DIRECTION\")]),_c('h2',{attrs:{\"id\":\"sf-guide-title\"}},[_vm._v(\"Let's find somewhere to begin.\")]),_c('p',[_vm._v(\"Choose a starting point. You can always explore something different.\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sf-path-grid\"},[_c('article',[_c('span',{staticClass:\"sf-step\"},[_vm._v(\"01\")]),_c('h3',[_vm._v(\"Find a place to belong\")]),_c('p',[_vm._v(\"Explore local churches and Christian communities. Get to know their story before you take your first step through the door.\")]),_c('a',{attrs:{\"href\":\"#discover\"}},[_vm._v(\"Find a Church →\")])]),_c('article',[_c('span',{staticClass:\"sf-step\"},[_vm._v(\"02\")]),_c('h3',[_vm._v(\"Make room for God\")]),_c('p',[_vm._v(\"Build a rhythm of Scripture, prayer, and solitude. Choose spiritual practices and a schedule that fits your everyday life.\")]),_c('a',{attrs:{\"href\":\"#explore-app\"}},[_vm._v(\"Explore the App →\")])]),_c('article',[_c('span',{staticClass:\"sf-step\"},[_vm._v(\"03\")]),_c('h3',[_vm._v(\"Grow together\")]),_c('p',[_vm._v(\"Join practices from your community and reflect alongside your group. Choose what to share and what to keep private.\")]),_c('a',{attrs:{\"href\":\"#explore-app\"}},[_vm._v(\"See how it comes together →\")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sf-app-copy\"},[_c('p',{staticClass:\"sf-eyebrow\"},[_vm._v(\"THE STORYFAITH APP\")]),_c('h2',{attrs:{\"id\":\"sf-app-title\"}},[_vm._v(\"Make room for faith\"),_c('br'),_vm._v(\"in your everyday life.\")]),_c('p',[_vm._v(\"Start with Scripture, a moment of prayer, or a little stillness. Choose when you practice, return to your rhythm, and grow with others along the way.\")]),_c('p',[_vm._v(\"Your community can offer a shared Bible practice. You choose to join, make time for it, and share reflections with your group.\")]),_c('a',{staticClass:\"sf-text-link\",attrs:{\"href\":\"mailto:hello@storyfaith.com?subject=StoryFaith%20app%20access\"}},[_vm._v(\"Ask about app access →\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sf-app-practices\",attrs:{\"aria-label\":\"Practices in the StoryFaith app\"}},[_c('p',{staticClass:\"sf-app-label\"},[_vm._v(\"A LITTLE ROOM, EVERY DAY\")]),_c('article',[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"01\")]),_c('div',[_c('h3',[_vm._v(\"Bible reading\")]),_c('p',[_vm._v(\"Read Scripture through a personal plan or a practice from your community.\")])])]),_c('article',[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"02\")]),_c('div',[_c('h3',[_vm._v(\"Prayer\")]),_c('p',[_vm._v(\"Set aside time to pray and return to the prayers in your journal.\")])])]),_c('article',[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"03\")]),_c('div',[_c('h3',[_vm._v(\"Solitude\")]),_c('p',[_vm._v(\"Make space for stillness with quiet time or gentle guidance.\")])])]),_c('p',{staticClass:\"sf-app-footnote\"},[_vm._v(\"Your schedule. Your next step. Room to grow together.\")])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('header',{staticClass:\"sf-public-nav\"},[_c('div',{staticClass:\"sf-public-nav-inner\"},[_vm._m(0),_c('TopSearch'),_c('nav',{attrs:{\"aria-label\":\"Main navigation\"}},[_c('a',{attrs:{\"href\":\"/discover/\"}},[_vm._v(\"Find a Church\")]),_c('a',{attrs:{\"href\":\"/?section=app#explore-app\"}},[_vm._v(\"Explore the App\")]),_vm._m(1),_c('a',{attrs:{\"href\":\"/about/\"}},[_vm._v(\"About\")]),(_vm.username)?_c('a',{attrs:{\"href\":\"/#/\"}},[_vm._v(\"Your StoryFaith\")]):_c('a',{attrs:{\"href\":_vm.loginUrl}},[_vm._v(\"Log in\")])])],1)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"sf-public-logo\",attrs:{\"href\":\"/\",\"aria-label\":\"StoryFaith home\"}},[_c('img',{attrs:{\"src\":\"/static/communities/header-logo.png\",\"alt\":\"StoryFaith\"}})])\n},function (){var _vm=this,_c=_vm._self._c;return _c('details',{staticClass:\"sf-public-menu\"},[_c('summary',[_vm._v(\"For Churches\")]),_c('div',[_c('a',{attrs:{\"href\":\"/for-churches/\"}},[_vm._v(\"For Church Leaders\"),_c('span',[_vm._v(\"Discover what StoryFaith can offer your ministry.\")])]),_c('a',{attrs:{\"href\":\"/create\"}},[_vm._v(\"Add Your Community\"),_c('span',[_vm._v(\"Begin your community page.\")])]),_c('a',{attrs:{\"href\":\"/interest/?intent=church&source=leaders\"}},[_vm._v(\"Join the Interest List\"),_c('span',[_vm._v(\"Stay in touch about partnering with us.\")])])])])\n}]\n\nexport { render, staticRenderFns }","<template>\n<header class=\"sf-public-nav\"><div class=\"sf-public-nav-inner\">\n  <a class=\"sf-public-logo\" href=\"/\" aria-label=\"StoryFaith home\"><img src=\"/static/communities/header-logo.png\" alt=\"StoryFaith\"></a>\n  <TopSearch />\n  <nav aria-label=\"Main navigation\">\n    <a href=\"/discover/\">Find a Church</a>\n    <a href=\"/?section=app#explore-app\">Explore the App</a>\n    <details class=\"sf-public-menu\"><summary>For Churches</summary><div>\n      <a href=\"/for-churches/\">For Church Leaders<span>Discover what StoryFaith can offer your ministry.</span></a>\n      <a href=\"/create\">Add Your Community<span>Begin your community page.</span></a>\n      <a href=\"/interest/?intent=church&amp;source=leaders\">Join the Interest List<span>Stay in touch about partnering with us.</span></a>\n    </div></details>\n    <a href=\"/about/\">About</a>\n    <a v-if=\"username\" href=\"/#/\">Your StoryFaith</a><a v-else :href=\"loginUrl\">Log in</a>\n  </nav>\n</div></header>\n</template>\n<script>\nimport TopSearch from './TopSearch.vue'\nexport default { name: 'PublicHeader', components: {TopSearch}, props: { username: {type: String, default: ''}, loginUrl: {type: String, default: '/accounts/login/'} } }\n</script>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PublicHeader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PublicHeader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PublicHeader.vue?vue&type=template&id=4c4da27a&\"\nimport script from \"./PublicHeader.vue?vue&type=script&lang=js&\"\nexport * from \"./PublicHeader.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('footer',{staticClass:\"sf-public-footer\"},[_c('div',{staticClass:\"sf-public-footer-inner\"},[_vm._m(0),_c('div',{staticClass:\"sf-public-footer-bottom\"},[_c('p',[_vm._v(\"Find a local church. Practice your faith. Grow in community.\")]),_c('p',[_vm._v(\"© \"+_vm._s(_vm.year)+\" StoryFaith\")])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sf-public-footer-top\"},[_c('div',[_c('a',{staticClass:\"sf-public-logo\",attrs:{\"href\":\"/\",\"aria-label\":\"StoryFaith home\"}},[_c('img',{attrs:{\"src\":\"/static/communities/header-logo.png\",\"alt\":\"StoryFaith\"}})]),_c('p',[_vm._v(\"Find your rhythm.\"),_c('br'),_vm._v(\"Grow your faith.\")])]),_c('nav',{staticClass:\"sf-public-footer-links\",attrs:{\"aria-label\":\"Footer navigation\"}},[_c('div',[_c('h2',[_vm._v(\"Explore\")]),_c('a',{attrs:{\"href\":\"/discover/\"}},[_vm._v(\"Find a Church\")]),_c('a',{attrs:{\"href\":\"/?section=cities#sf-cities-title\"}},[_vm._v(\"Browse Cities\")]),_c('a',{attrs:{\"href\":\"/interest/?intent=visitor&source=discovery\"}},[_vm._v(\"Stay in Touch\")])]),_c('div',[_c('h2',[_vm._v(\"The App\")]),_c('a',{attrs:{\"href\":\"/?section=app#explore-app\"}},[_vm._v(\"Spiritual Practices\")]),_c('a',{attrs:{\"href\":\"/?section=app#explore-app\"}},[_vm._v(\"Explore the App\")])]),_c('div',[_c('h2',[_vm._v(\"For Churches\")]),_c('a',{attrs:{\"href\":\"/for-churches/\"}},[_vm._v(\"For Church Leaders\")]),_c('a',{attrs:{\"href\":\"/create\"}},[_vm._v(\"Add Your Community\")]),_c('a',{attrs:{\"href\":\"/interest/?intent=church&source=leaders\"}},[_vm._v(\"Join the Interest List\")])]),_c('div',[_c('h2',[_vm._v(\"StoryFaith\")]),_c('a',{attrs:{\"href\":\"/about/\"}},[_vm._v(\"Our Story\")]),_c('a',{attrs:{\"href\":\"/about/#our-beliefs\"}},[_vm._v(\"Our Beliefs\")]),_c('a',{attrs:{\"href\":\"mailto:hello@storyfaith.com\"}},[_vm._v(\"Contact\")]),_c('a',{attrs:{\"href\":\"/policies/\"}},[_vm._v(\"Privacy Policy\")])])])])\n}]\n\nexport { render, staticRenderFns }","<template>\n<footer class=\"sf-public-footer\"><div class=\"sf-public-footer-inner\">\n  <div class=\"sf-public-footer-top\"><div><a class=\"sf-public-logo\" href=\"/\" aria-label=\"StoryFaith home\"><img src=\"/static/communities/header-logo.png\" alt=\"StoryFaith\"></a><p>Find your rhythm.<br>Grow your faith.</p></div>\n  <nav class=\"sf-public-footer-links\" aria-label=\"Footer navigation\">\n    <div><h2>Explore</h2><a href=\"/discover/\">Find a Church</a><a href=\"/?section=cities#sf-cities-title\">Browse Cities</a><a href=\"/interest/?intent=visitor&amp;source=discovery\">Stay in Touch</a></div>\n    <div><h2>The App</h2><a href=\"/?section=app#explore-app\">Spiritual Practices</a><a href=\"/?section=app#explore-app\">Explore the App</a></div>\n    <div><h2>For Churches</h2><a href=\"/for-churches/\">For Church Leaders</a><a href=\"/create\">Add Your Community</a><a href=\"/interest/?intent=church&amp;source=leaders\">Join the Interest List</a></div>\n    <div><h2>StoryFaith</h2><a href=\"/about/\">Our Story</a><a href=\"/about/#our-beliefs\">Our Beliefs</a><a href=\"mailto:hello@storyfaith.com\">Contact</a><a href=\"/policies/\">Privacy Policy</a></div>\n  </nav></div><div class=\"sf-public-footer-bottom\"><p>Find a local church. Practice your faith. Grow in community.</p><p>© {{ year }} StoryFaith</p></div>\n</div></footer>\n</template>\n<script>\nexport default { name: 'PublicFooter', computed: { year () { return new Date().getFullYear() } } }\n</script>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PublicFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PublicFooter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PublicFooter.vue?vue&type=template&id=dff7d09a&\"\nimport script from \"./PublicFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./PublicFooter.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div class=\"belonging\">\n    <PublicHeader :username=\"username\" :login-url=\"loginUrl\" />\n\n    <main>\n      <section v-if=\"!city\" class=\"sf-hero\">\n        <div class=\"sf-hero-copy\">\n\n          <p class=\"sf-eyebrow\">FAITH FOR EVERYDAY LIFE</p>\n          <h1>Find your rhythm.<br>Grow your <em>faith.</em></h1>\n          <p class=\"sf-intro\">\n            Find a local church and make room for God in your everyday life—with\n            Bible reading, prayer, and spiritual practices you can share in community.\n          </p>\n\n          <div class=\"sf-hero-actions\">\n            <a class=\"sf-primary\" href=\"#discover\">Find a Church →</a>\n            <a class=\"sf-text-link\" :href=\"appIntroUrl\">Explore the App →</a>\n          </div>\n\n          <form class=\"sf-search\" @submit.prevent=\"explore\">\n            <label for=\"sf-city\">Find a church near you</label>\n            <div class=\"sf-search-row\">\n              <select id=\"sf-city\" v-model=\"city\">\n                <option value=\"\">Choose a city</option>\n                <option v-for=\"item in cities\" :key=\"item\" :value=\"item\">\n                  {{ item }}\n                </option>\n              </select>\n              <button class=\"sf-primary\" type=\"submit\">Explore →</button>\n            </div>\n          </form>\n\n          <button class=\"sf-help\" @click=\"openGuide\">\n            Not sure where to start? Help me find a church →\n          </button>\n        </div>\n\n        <div class=\"sf-hero-visual sf-clean-brand\">\n          <img class=\"sf-clean-brand-logo\"\n            src=\"/static/communities/storyfaith-icon-yellow.png\"\n            alt=\"StoryFaith\">\n        </div>\n      </section>\n    <section v-if=\"city\" class=\"sf-city-hero\">\n      <img v-if=\"selectedCityCover\" class=\"sf-city-hero-photo\" :src=\"selectedCityCover\"\n        alt=\"\" @error=\"cityCoverFailed\">\n      <div v-if=\"selectedCityCover\" class=\"sf-city-hero-shade\" aria-hidden=\"true\"></div>\n      <div class=\"sf-city-hero-inner\">\n        <button type=\"button\" class=\"sf-city-back\" @click=\"backToCities\">\n          ← Explore all cities\n        </button>\n        <p class=\"sf-city-eyebrow\">FIND YOUR COMMUNITY</p>\n        <h1>{{ city.split(',')[0] }}</h1>\n        <p class=\"sf-city-state\">{{ city.split(',').slice(1).join(',').trim() }}</p>\n        <p class=\"sf-city-count\">\n          {{ cityCommunityCount }}\n          communities to explore\n        </p>\n        <label class=\"sf-city-switch\">\n          Explore another city\n          <select v-model=\"city\">\n            <option v-for=\"label in cities\" :key=\"label\" :value=\"label\">\n              {{ label }}\n            </option>\n          </select>\n        </label>\n      </div>\n    </section>\n\n\n      <section v-if=\"guideOpen\" ref=\"guide\" class=\"sf-guide\" aria-labelledby=\"sf-guide-title\">\n        <div>\n          <p class=\"sf-eyebrow\">A LITTLE DIRECTION</p>\n          <h2 id=\"sf-guide-title\">Let's find somewhere to begin.</h2>\n          <p>Choose a starting point. You can always explore something different.</p>\n        </div>\n        <form @submit.prevent=\"applyGuide\">\n          <label for=\"sf-guide-city\">Your city</label>\n          <select id=\"sf-guide-city\" v-model=\"city\" required>\n            <option value=\"\">Choose a city</option>\n            <option v-for=\"item in cities\" :key=\"item\" :value=\"item\">{{ item }}</option>\n          </select>\n          <fieldset>\n            <legend>What would help you take a first step?</legend>\n            <label class=\"sf-choice\">\n              <input v-model=\"guideType\" type=\"radio\" value=\"Local Church\">\n              Find a local church\n            </label>\n            <label class=\"sf-choice\">\n              <input v-model=\"guideType\" type=\"radio\" value=\"College Ministry\">\n              Explore a college ministry\n            </label>\n            <label class=\"sf-choice\">\n              <input v-model=\"guideType\" type=\"radio\" value=\"\">\n              I'm open to exploring both\n            </label>\n          </fieldset>\n          <button type=\"submit\" class=\"sf-primary\">Show me places to explore →</button>\n          <button type=\"button\" class=\"sf-help\" @click=\"guideOpen = false\">Close</button>\n        </form>\n      </section>\n\n\n      <section v-if=\"!city && !isDiscovery\" id=\"how-it-works\" class=\"sf-path\" aria-labelledby=\"sf-path-title\">\n        <p class=\"sf-eyebrow\">BELONGING AND EVERYDAY FAITH</p>\n        <h2 id=\"sf-path-title\">A place to belong. A rhythm to grow.</h2>\n        <div class=\"sf-path-grid\">\n          <article><span class=\"sf-step\">01</span><h3>Find a place to belong</h3>\n            <p>Explore local churches and Christian communities. Get to know their story before you take your first step through the door.</p>\n            <a href=\"#discover\">Find a Church →</a></article>\n          <article><span class=\"sf-step\">02</span><h3>Make room for God</h3>\n            <p>Build a rhythm of Scripture, prayer, and solitude. Choose spiritual practices and a schedule that fits your everyday life.</p>\n            <a href=\"#explore-app\">Explore the App →</a></article>\n          <article><span class=\"sf-step\">03</span><h3>Grow together</h3>\n            <p>Join practices from your community and reflect alongside your group. Choose what to share and what to keep private.</p>\n            <a href=\"#explore-app\">See how it comes together →</a></article>\n        </div>\n      </section>\n\n      <section v-if=\"!city && !isDiscovery\" id=\"explore-app\" class=\"sf-app-intro\" aria-labelledby=\"sf-app-title\">\n        <div class=\"sf-app-copy\">\n          <p class=\"sf-eyebrow\">THE STORYFAITH APP</p>\n          <h2 id=\"sf-app-title\">Make room for faith<br>in your everyday life.</h2>\n          <p>Start with Scripture, a moment of prayer, or a little stillness. Choose when you practice, return to your rhythm, and grow with others along the way.</p>\n          <p>Your community can offer a shared Bible practice. You choose to join, make time for it, and share reflections with your group.</p>\n          <a class=\"sf-text-link\" href=\"mailto:hello@storyfaith.com?subject=StoryFaith%20app%20access\">Ask about app access →</a>\n        </div>\n        <div class=\"sf-app-practices\" aria-label=\"Practices in the StoryFaith app\">\n          <p class=\"sf-app-label\">A LITTLE ROOM, EVERY DAY</p>\n          <article><span aria-hidden=\"true\">01</span><div><h3>Bible reading</h3><p>Read Scripture through a personal plan or a practice from your community.</p></div></article>\n          <article><span aria-hidden=\"true\">02</span><div><h3>Prayer</h3><p>Set aside time to pray and return to the prayers in your journal.</p></div></article>\n          <article><span aria-hidden=\"true\">03</span><div><h3>Solitude</h3><p>Make space for stillness with quiet time or gentle guidance.</p></div></article>\n          <p class=\"sf-app-footnote\">Your schedule. Your next step. Room to grow together.</p>\n        </div>\n      </section>\n\n      <section v-if=\"!city\" class=\"sf-cities\" aria-labelledby=\"sf-cities-title\">\n        <p class=\"sf-eyebrow\">FIND COMMUNITY CLOSE TO HOME</p>\n        <h2 id=\"sf-cities-title\">Explore our cities.</h2>\n        <p>Discover local churches and ministries where you live.</p>\n        <div class=\"sf-city-grid\">\n          <button v-for=\"item in cityCards\" :key=\"item.label\"\n            class=\"sf-city-card\" @click=\"chooseCity(item.label)\">\n            <span class=\"sf-city-pin\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 24 24\" width=\"25\" height=\"25\" fill=\"none\"\n                stroke=\"currentColor\" stroke-width=\"1.7\">\n                <path d=\"M19 10c0 5-7 11-7 11S5 15 5 10a7 7 0 1 1 14 0Z\"/>\n                <circle cx=\"12\" cy=\"10\" r=\"2.5\"/>\n              </svg>\n            </span>\n            <strong>{{ item.label }}</strong>\n            <span>{{ item.count }} {{ item.count === 1 ? 'listed community' : 'listed communities' }}</span>\n            <span class=\"sf-city-link\">View communities →</span>\n          </button>\n        </div>\n      </section>\n\n      <section id=\"discover\" ref=\"discover\" class=\"sf-discover\">\n        <button v-if=\"city\" class=\"sf-help sf-back-cities\" @click=\"backToCities\">\n          ← Explore other cities\n        </button>\n        <div class=\"sf-section-heading\">\n          <div>\n            <p class=\"sf-eyebrow\">MAKE ROOM FOR BELONGING</p>\n            <h2>{{ city ? 'Find your community in ' + city + '.' : 'Explore communities near you.' }}</h2>\n            <p>Get a feel for a community before you walk through the door.</p>\n          </div>\n          <button v-if=\"city || kind || query || campus\" class=\"sf-help\" @click=\"reset\">Reset filters</button>\n        </div>\n\n        <div class=\"sf-filter-panel\">\n        <h3>Find your community</h3>\n        <div class=\"sf-filters\">\n          <div class=\"sf-tabs\" role=\"group\" aria-label=\"Community type\">\n            <button v-for=\"option in types\" :key=\"option.value\"\n              :class=\"{ active: kind === option.value }\"\n              :aria-pressed=\"kind === option.value\"\n              @click=\"kind = option.value; shown = 12\">{{ option.label }}</button>\n          </div>\n          <label class=\"sf-name-search\">\n            <span class=\"sf-sr-only\">Search community names or locations</span>\n            <input v-model=\"query\" type=\"search\" placeholder=\"Search by name or location\">\n          </label>\n        </div>\n\n\n        <button class=\"sf-more-filter\" :aria-expanded=\"moreFilters\"\n          aria-controls=\"sf-extra-filters\" @click=\"moreFilters = !moreFilters\">\n          {{ moreFilters ? 'Fewer filters −' : 'More filters +' }}\n        </button>\n        <div v-if=\"moreFilters\" id=\"sf-extra-filters\" class=\"sf-extra-filters\">\n          <label for=\"sf-campus\">Campus listed by the community</label>\n          <select id=\"sf-campus\" v-model=\"campus\">\n            <option value=\"\">All campuses and communities</option>\n            <option v-for=\"item in campuses\" :key=\"item\" :value=\"item\">{{ item }}</option>\n          </select>\n          <p>This filters campus information in the listings, rather than distance from campus.</p>\n        </div>\n        </div>\n\n        <div v-if=\"saveMessage\" class=\"sf-save-message\" role=\"status\">\n  {{ saveMessage }}\n  <a v-if=\"!username\" :href=\"loginUrl\">Sign in →</a>\n</div>\n\n<section v-if=\"username && savedInCity.length\" class=\"sf-saved-section\">\n  <h3>{{ city ? 'Saved in this city' : 'Your saved communities' }}</h3>\n  <p>Your shortlist. Saving does not register you as a member.</p>\n  <div class=\"sf-saved-list\">\n    <article v-for=\"item in savedInCity\" :key=\"item.slug\">\n      <a :href=\"'/' + item.slug + '/'\">{{ item.title }} ↗</a>\n      <button type=\"button\"\n        :disabled=\"savingSlugs.includes(item.slug)\"\n        @click=\"toggleSave(item)\">\n        {{ savingSlugs.includes(item.slug) ? 'Updating…' : 'Remove' }}\n      </button>\n    </article>\n  </div>\n</section>\n\n<p class=\"sf-count\" aria-live=\"polite\">\n          {{ filtered.length }} {{ filtered.length === 1 ? 'community' : 'communities' }}\n          {{ city ? 'in ' + city : 'across our cities' }}\n        </p>\n\n        <div v-if=\"filtered.length\" class=\"sf-grid\">\n        <article v-for=\"community in filtered.slice(0, shown)\"\n  :key=\"community.slug\" class=\"sf-card\">\n            <div class=\"sf-card-image\">\n              <img v-if=\"community.cover\" :src=\"community.cover\" alt=\"\" loading=\"lazy\"\n                @error=\"$event.target.style.visibility = 'hidden'\">\n              <span>{{ community.type || 'Community' }}</span>\n            </div>\n            <div class=\"sf-card-copy\">\n              <p class=\"sf-location\">{{ community.city }}{{ community.state ? ', ' + community.state : '' }}</p>\n              <h3>{{ community.title }}</h3>\n              <p v-if=\"community.small_description\">{{ community.small_description }}</p>\n              <p v-if=\"community.university_name\" class=\"sf-campus\">{{ community.university_name }}</p>\n              <div class=\"sf-discovery-card-actions\">\n  <a :href=\"'/' + community.slug + '/'\">\n    Get to know this community ↗\n  </a>\n  <button type=\"button\"\n    :aria-pressed=\"isSaved(community.slug)\"\n    :aria-label=\"(isSaved(community.slug) ? 'Remove saved ' : 'Save ') + community.title\"\n    :disabled=\"savingSlugs.includes(community.slug)\"\n    @click=\"toggleSave(community)\">\n    {{ savingSlugs.includes(community.slug)\n      ? 'Updating…' : isSaved(community.slug) ? 'Saved ✓' : 'Save' }}\n  </button>\n</div>\n            </div>\n          </article>\n        </div>\n\n        <div v-else class=\"sf-empty\">\n          <h3>{{ city && cityCommunityCount === 0 ? 'No communities are listed in this city yet.' : 'No communities match these filters yet.' }}</h3>\n          <p>{{ city && cityCommunityCount === 0 ? 'Check back as local communities join StoryFaith.' : 'Try another city, search, or community type.' }}</p>\n          <a class=\"sf-text-link\" href=\"/interest/?intent=visitor&amp;source=discovery\">Not finding a church near you? Stay in touch →</a>\n          <button class=\"sf-primary\" @click=\"reset\">Explore all communities</button>\n        </div>\n\n        <button v-if=\"filtered.length > shown\" class=\"sf-more\" @click=\"shown += 12\">\n          Show more communities ↓\n        </button>\n      </section>\n\n      <section v-if=\"!isDiscovery\" class=\"sf-ending\" aria-labelledby=\"sf-ending-title\">\n        <span class=\"sf-ending-accent\" aria-hidden=\"true\"></span>\n        <h2 id=\"sf-ending-title\">Your next step doesn't need to be complicated.</h2>\n        <p>Discover a local church near you. Practice spiritual disciplines personalized to your schedule. Grow your faith in the context of community.</p>\n        <div class=\"sf-ending-actions\">\n          <a class=\"sf-ending-primary\" href=\"#discover\">Find a Church →</a>\n          <a class=\"sf-ending-secondary\" :href=\"appIntroUrl\">Explore the App →</a>\n        </div>\n      </section>\n    </main>\n\n    <PublicFooter />\n  </div>\n</template>\n\n<script>\nimport PublicHeader from './PublicHeader.vue'\nimport PublicFooter from './PublicFooter.vue'\nimport {buildCityPages, cityLabel, cityKey} from './cityPages'\nexport default {\n  components: { PublicHeader, PublicFooter },\n  name: 'BelongingHome',\n  data () {\n    let communities = []\n    try {\n      communities = JSON.parse(document.getElementById('belonging-data').textContent)\n    } catch (error) {\n      console.error('Unable to load community listings', error)\n    }\n    let cityRecords = null\n    try {\n      const element = document.getElementById('city-pages')\n      if (element) cityRecords = JSON.parse(element.textContent)\n    } catch (error) {\n      console.error('Unable to load city pages', error)\n    }\n    const pages = buildCityPages(cityRecords, communities)\n    let account = {}\ntry {\n  const element = document.getElementById('discovery-account')\n  if (element) account = JSON.parse(element.textContent)\n} catch (error) {\n  console.error('Unable to read discovery account', error)\n}\nconst params = new URLSearchParams(window.location.search)\n    const requestedCity = pages.find(page => cityKey(cityLabel(page)) === cityKey(params.get('city')))\n    return {\n      communities,\n      cityPages: pages,\n      failedCityCovers: [],\n      city: requestedCity ? cityLabel(requestedCity) : '',\n      kind: params.get('type') || '',\n      query: params.get('q') || '',\n      campus: params.get('campus') || '',\n      guideOpen: false,\n      guideType: 'Local Church',\n      shown: 12,\n      moreFilters: false,\n      username: account.username || '',\n      savedSlugs: account.saved_slugs || [],\n      savingSlugs: [],\n      saveMessage: '',\n      types: [\n        { value: '', label: 'All communities' },\n        { value: 'Local Church', label: 'Local churches' },\n        { value: 'College Ministry', label: 'College ministries' }\n      ]\n    }\n  },\n  computed: {\n    isDiscovery () { return window.location.pathname === '/discover/' },\n    appIntroUrl () { return this.isDiscovery || this.city ? '/?section=app#explore-app' : '#explore-app' },\n    currentYear () { return new Date().getFullYear() },\n  loginUrl () {\n  return '/accounts/login/?next=' +\n    encodeURIComponent(window.location.pathname + window.location.search)\n},\nsavedInCity () {\n  return this.communities.filter(item =>\n    this.savedSlugs.includes(item.slug) &&\n    this.matchesCity(item)\n  ).sort((a, b) => a.title.localeCompare(b.title, 'en', {\n    sensitivity: 'base'\n  }))\n},\n    cities () {\n      return this.cityPages.map(cityLabel)\n    },\n    selectedCity () {\n      return this.cityPages.find(page => cityKey(cityLabel(page)) === cityKey(this.city))\n    },\n    selectedCityCover () {\n      const cover = this.selectedCity ? this.selectedCity.cover : ''\n      return this.failedCityCovers.includes(cover) ? '' : cover\n    },\n    cityCommunityCount () {\n      return this.communities.filter(this.matchesCity).length\n    },\n    cityCards () {\n      return this.cities.map(label => ({\n        label,\n        count: this.communities.filter(item => cityKey(cityLabel(item)) === cityKey(label)).length\n      }))\n    },\n    campuses () {\n      const items = this.communities.filter(item =>\n        this.matchesCity(item)\n      )\n      return [...new Set(items.map(item => item.university_name).filter(Boolean))].sort()\n    },\n    filtered () {\n      const terms = this.query.trim().toLowerCase().split(/[\\s,]+/).filter(Boolean)\n      return this.communities.filter(item =>\n        this.matchesCity(item) &&\n        (!this.kind || item.type === this.kind) &&\n        (!this.campus || item.university_name === this.campus) &&\n        terms.every(term => [item.title, item.city, item.state].some(value =>\n          (value || '').toLowerCase().includes(term)))\n      ).sort((a, b) => a.title.localeCompare(b.title, 'en', { sensitivity: 'base' }))\n    },\n    heroImage () {\n      const photos = this.communities.flatMap(item => item.photos || [])\n      return photos[0] || ''\n    }\n  },\n  watch: {\n    city () {\n      this.shown = 12\n      this.campus = ''\n      this.rememberFilters()\n    },\n    kind () {\n      this.shown = 12\n      this.rememberFilters()\n    },\n    campus () {\n      this.shown = 12\n      this.rememberFilters()\n    },\n    query () {\n      this.shown = 12\n      this.rememberFilters()\n    }\n  },\n\n  methods: {\n    matchesCity (item) {\n      return !this.city || cityKey(cityLabel(item)) === cityKey(this.city)\n    },\n    cityCoverFailed () {\n      if (this.selectedCityCover) this.failedCityCovers.push(this.selectedCityCover)\n    },\n  rememberFilters () {\n  // The public homepage keeps its existing behavior.\n  if (window.location.pathname !== '/discover/') return\n  const url = new URL(window.location.href)\n  for (const [key, value] of Object.entries({\n    city: this.city, type: this.kind, q: this.query, campus: this.campus\n  })) {\n    if (value) url.searchParams.set(key, value)\n    else url.searchParams.delete(key)\n  }\n  window.history.replaceState(null, '', url.pathname + url.search + url.hash)\n},\nisSaved (slug) {\n  return this.savedSlugs.includes(slug)\n},\nupdateSaved (slug, saved) {\n  this.savedSlugs = this.savedSlugs.filter(value => value !== slug)\n  if (saved) this.savedSlugs.push(slug)\n},\ncsrfToken () {\n  const cookie = document.cookie.split(';')\n    .map(value => value.trim())\n    .find(value => value.startsWith('csrftoken='))\n  return cookie ? decodeURIComponent(cookie.slice('csrftoken='.length)) : ''\n},\nasync readSavedState (slug) {\n  const response = await fetch(\n    '/api/account/' + encodeURIComponent(this.username) +\n    '/favoritecommunity/?community=' + encodeURIComponent(slug),\n    { credentials: 'same-origin', cache: 'no-store' }\n  )\n  if (!response.ok) throw new Error('Unable to check saved state')\n  const value = await response.json()\n  if (typeof value !== 'boolean') throw new Error('Unexpected saved state')\n  return value\n},\nasync toggleSave (community) {\n  if (!this.username) {\n    this.saveMessage = 'Sign in to save this community. You’ll return to your discovery filters.'\n    return\n  }\n  if (this.savingSlugs.includes(community.slug)) return\n  const desired = !this.isSaved(community.slug)\n  this.savingSlugs.push(community.slug)\n  this.saveMessage = ''\n  try {\n    const current = await this.readSavedState(community.slug)\n    if (current !== desired) {\n      const body = new FormData()\n      body.append('community', community.slug)\n      const response = await fetch(\n        '/api/account/' + encodeURIComponent(this.username) + '/favoritecommunity/',\n        {\n          method: 'POST',\n          credentials: 'same-origin',\n          headers: { 'X-CSRFToken': this.csrfToken() },\n          body\n        }\n      )\n      if (!response.ok) throw new Error('Save request failed')\n    }\n    const confirmed = await this.readSavedState(community.slug)\n    this.updateSaved(community.slug, confirmed)\n    this.saveMessage = confirmed === desired\n      ? community.title + (confirmed ? ' saved.' : ' removed from saved communities.')\n      : 'The saved state changed elsewhere. Please check this community again.'\n  } catch (error) {\n    this.saveMessage = 'We couldn’t confirm the change. Refresh to check your saved communities before trying again.'\n  } finally {\n    this.savingSlugs = this.savingSlugs.filter(slug => slug !== community.slug)\n  }\n},\n    chooseCity (label) {\n      this.city = label\n      this.kind = ''\n      this.query = ''\n      this.$nextTick(() => this.explore())\n    },\n    backToCities () {\n      this.reset()\n      this.$nextTick(() => {\n        document.getElementById('sf-cities-title').scrollIntoView({\n          behavior: 'smooth', block: 'center'\n        })\n      })\n    },\n    cityLabel (item) {\n      return cityLabel(item)\n    },\n    explore () {\n      this.$refs.discover.scrollIntoView({ behavior: 'smooth', block: 'start' })\n    },\n    openGuide () {\n      this.guideOpen = true\n      this.$nextTick(() => {\n        this.$refs.guide.scrollIntoView({ behavior: 'smooth', block: 'start' })\n        this.$refs.guide.querySelector('select').focus({ preventScroll: true })\n      })\n    },\n    applyGuide () {\n      this.kind = this.guideType\n      this.explore()\n    },\n    reset () {\n      this.city = ''\n      this.kind = ''\n      this.query = ''\n      this.campus = ''\n      this.shown = 12\n    }\n  }\n}\n</script>\n\n<style>\n#sf-belonging > header,\n#sf-belonging > footer,\n#sf-belonging > .main-content > .container { display: none; }\n#sf-belonging { margin: 0; background: #faf8f2; }\n#sf-belonging .main-content { margin: 0; padding: 0; }\n.belonging { --ink: #222222; --muted: #62695f; --gold: #ffd400; color: var(--ink); background: #faf8f2; font-family: \"Inter\", \"Open Sans\", Arial, sans-serif; }\n.belonging *, .belonging *::before, .belonging *::after { box-sizing: border-box; }\n.belonging h1, .belonging h2, .belonging h3, .belonging p { margin: 0; text-align: left; }\n.belonging a { color: inherit; text-decoration: none; }\n.belonging button, .belonging input, .belonging select { font: inherit; }\n.belonging button { cursor: pointer; }\n.belonging button:focus-visible, .belonging a:focus-visible,\n.belonging input:focus-visible, .belonging select:focus-visible { outline: 3px solid #557bba; outline-offset: 4px; }\n.sf-nav, .sf-footer { max-width: 1240px; margin: auto; padding: 28px 40px; display: flex; align-items: center; gap: 28px; }\n.sf-brand { font-size: 27px; font-weight: 800; letter-spacing: -1.5px; }\n.sf-brand span { color: #af8136; }\n.sf-nav nav { margin-left: auto; display: flex; gap: 30px; font-size: 14px; }\n.sf-hero { max-width: 1240px; margin: auto; padding: 76px 40px 92px; display: grid; grid-template-columns: 1.1fr 1fr; gap: 70px; align-items: center; }\n.sf-eyebrow { font-size: 10px; font-weight: 700; letter-spacing: 2px; color: #776944; margin-bottom: 22px !important; }\n.belonging h1 { font-family: Georgia, serif; font-size: clamp(48px, 5.5vw, 78px); font-weight: 400; line-height: 1.06; letter-spacing: -3px; }\n.belonging h1 em { color: #7b8659; font-weight: 400; }\n.sf-intro { color: var(--muted); max-width: 480px; line-height: 1.85; margin-top: 25px !important; font-size: 15px; }\n.sf-search { background: white; border: 1px solid #e6e3d9; border-radius: 15px; padding: 18px; margin: 30px 0 16px; box-shadow: 0 8px 30px #293c2f08; }\n.sf-search label, .sf-guide form > label { display: block; font-size: 12px; font-weight: 700; margin-bottom: 10px; }\n.sf-search-row { display: flex; gap: 10px; }\n.belonging select, .sf-name-search input { border: 1px solid #dddcd3; background: #fff; padding: 12px; border-radius: 8px; color: var(--ink); min-width: 0; }\n.sf-search select { flex: 1; width: 100%; }\n.sf-primary { border: 0; border-radius: 8px; background: var(--ink); color: white; padding: 13px 20px; font-size: 13px !important; font-weight: 600; }\n.sf-primary:hover { background: #435847; }\n.sf-help { border: 0; background: none; color: #66532f; padding: 8px 0; font-size: 12px !important; text-align: left; }\n.sf-hero-visual { position: relative; padding-bottom: 30px; }\n.sf-photo { height: 440px; background: linear-gradient(150deg, #869b74, #314c3e); background-size: cover; background-position: center; border-radius: 120px 16px 16px 16px; position: relative; overflow: hidden; }\n.sf-photo::after { content: \"\"; position: absolute; inset: 0; background: linear-gradient(transparent 45%, #102719bb); }\n.sf-photo-caption { position: absolute; bottom: 35px; left: 30px; z-index: 1; color: white; font-family: Georgia, serif; font-size: 27px; }\n.sf-photo-caption span, .sf-photo-caption strong { display: block; font-weight: 400; }\n.sf-note { position: relative; margin: -30px 20px 0 -25px; z-index: 2; display: flex; gap: 15px; padding: 20px; background: #efe7d4; border-radius: 12px; box-shadow: 0 10px 25px #26362e10; }\n.sf-note-icon { font-size: 27px; }\n.sf-note strong { font-size: 13px; }\n.sf-note p { font-size: 11px; margin-top: 5px; line-height: 1.7; }\n.sf-guide { max-width: 1160px; margin: 0 auto 60px; background: #edf2f8; border: 1px solid #d9e2ef; padding: 40px; border-radius: 18px; display: grid; grid-template-columns: 1fr 1fr; gap: 50px; scroll-margin-top: 24px; }\n.belonging h2 { font-family: Georgia, serif; font-weight: 400; font-size: 37px; line-height: 1.15; letter-spacing: -1px; }\n.sf-guide p:not(.sf-eyebrow), .sf-section-heading p:not(.sf-eyebrow) { color: var(--muted); font-size: 14px; line-height: 1.8; margin-top: 16px; }\n.sf-guide select { width: 100%; }\n.sf-guide fieldset { border: 0; padding: 0; margin: 22px 0; }\n.sf-guide legend { font-size: 13px; font-weight: 700; margin-bottom: 12px; }\n.sf-choice { display: flex; align-items: center; gap: 10px; padding: 9px 0; font-size: 13px; }\n.sf-guide .sf-help { margin-left: 15px; }\n.sf-discover { max-width: 1240px; margin: auto; padding: 65px 40px 85px; border-top: 1px solid #e6e2d6; scroll-margin-top: 24px; }\n.sf-section-heading { display: flex; justify-content: space-between; align-items: start; gap: 20px; }\n.sf-filters { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin: 30px 0 18px; flex-wrap: wrap; }\n.sf-tabs { display: flex; flex-wrap: wrap; gap: 8px; }\n.sf-tabs button { border: 1px solid #dedfd5; background: transparent; color: var(--ink); border-radius: 30px; padding: 10px 17px; font-size: 12px; }\n.sf-tabs button.active { background: var(--ink); color: white; border-color: var(--ink); }\n.sf-name-search input { font-size: 12px; }\n.sf-count { font-size: 11px; color: var(--muted); margin-bottom: 22px !important; }\n.sf-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 25px; }\n.sf-card { background: #fff; border: 1px solid #e6e4dc; border-radius: 14px; overflow: hidden; display: flex; flex-direction: column; transition: transform .18s, box-shadow .18s; }\n.sf-card:hover { transform: translateY(-4px); box-shadow: 0 12px 30px #26362e12; }\n.sf-card-image { height: 210px; background: #e7e9de; position: relative; }\n.sf-card-image img { width: 100%; height: 100%; object-fit: cover; }\n.sf-card-image > span { position: absolute; left: 15px; bottom: 15px; background: #fffef8; border-radius: 30px; padding: 6px 12px; font-size: 10px; }\n.sf-card-copy { padding: 23px; display: flex; flex-direction: column; flex: 1; }\n.sf-location { color: var(--muted); font-size: 10px; margin-bottom: 9px !important; }\n.belonging h3 { font-size: 20px; font-weight: 600; letter-spacing: -.5px; }\n.sf-card-copy > p:not(.sf-location) { font-size: 12px; line-height: 1.8; color: var(--muted); margin-top: 10px; }\n.sf-card-copy strong { font-size: 11px; font-weight: 600; padding-top: 23px; margin-top: auto; display: flex; justify-content: space-between; gap: 8px; }\n.sf-campus { color: #776944 !important; }\n.sf-more { display: block; margin: 35px auto 0; border: 1px solid #d1d5c7; border-radius: 8px; padding: 12px 22px; background: transparent; font-size: 12px !important; }\n.sf-empty { padding: 45px; border: 1px solid #dedfd5; border-radius: 12px; }\n.sf-empty p { margin: 15px 0 25px; color: var(--muted); }\n.sf-ending { background: #eaeedc; padding: 75px 24px; text-align: center; }\n.sf-ending h2, .sf-ending p { text-align: center; }\n.sf-ending > p:not(.sf-eyebrow) { margin: 20px auto 25px; font-size: 13px; color: var(--muted); }\n.sf-footer { flex-wrap: wrap; padding-top: 40px; padding-bottom: 40px; }\n.sf-footer p { flex: 1; font-size: 11px; color: var(--muted); }\n.sf-footer > a:not(.sf-brand) { font-size: 11px; }\n.sf-sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }\n@media (max-width: 900px) {\n  .sf-hero { gap: 30px; }\n  .sf-photo { height: 380px; }\n  .sf-grid { grid-template-columns: repeat(2, 1fr); }\n}\n@media (max-width: 650px) {\n  .sf-nav, .sf-footer { padding: 22px; gap: 16px; }\n  .sf-nav nav { gap: 16px; font-size: 11px; }\n  .sf-brand { font-size: 23px; }\n  .sf-hero { padding: 45px 22px 55px; grid-template-columns: 1fr; gap: 35px; }\n  .belonging h1 { letter-spacing: -2px; }\n  .sf-photo { height: 310px; border-top-left-radius: 80px; }\n  .sf-note { margin-left: 0; }\n  .sf-guide { margin: 0 22px 30px; padding: 25px; grid-template-columns: 1fr; gap: 25px; }\n  .sf-discover { padding: 40px 22px; }\n  .belonging h2 { font-size: 30px; }\n  .sf-grid { grid-template-columns: 1fr; }\n  .sf-card-image { height: 235px; }\n  .sf-section-heading { display: block; }\n  .sf-footer p { flex-basis: 100%; }\n}\n@media (prefers-reduced-motion: reduce) {\n  .sf-card { transition: none; }\n}\n\n/* Keep primary actions readable alongside legacy styles. */\n#sf-belonging .belonging button.sf-primary {\n  color: #ffffff !important;\n  -webkit-text-fill-color: #ffffff;\n  font-size: 13px !important;\n  line-height: 1.5 !important;\n  text-indent: 0 !important;\n  opacity: 1;\n}\n\n\n.sf-cities { max-width: 1240px; margin: auto; padding: 55px 40px 75px; }\n.sf-cities > p:not(.sf-eyebrow) { margin-top: 16px; color: #62695f; font-size: 14px; }\n.sf-city-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; margin-top: 32px; }\n.sf-city-card { display: flex; flex-direction: column; align-items: center; gap: 15px; padding: 32px 20px; background: white; border: 1px solid #e6e4dc; border-radius: 18px; color: #26362e; transition: border-color .18s, box-shadow .18s; }\n.sf-city-card:hover { border-color: #26362e; box-shadow: 0 8px 25px #26362e0c; }\n.sf-city-pin { display: grid; place-items: center; width: 58px; height: 58px; background: #faf8f2; border: 1px solid #e6e4dc; border-radius: 50%; }\n.sf-city-card strong { font-size: 20px; letter-spacing: -.4px; }\n.sf-city-card > span:not(.sf-city-pin) { font-size: 12px; color: #62695f; }\n.sf-city-card > .sf-city-link { color: #26362e !important; font-weight: 600; margin-top: 7px; }\n.sf-back-cities { margin-bottom: 25px; }\n.sf-filter-panel { padding: 25px; margin: 30px 0 25px; border: 1px solid #e6e4dc; border-radius: 16px; background: white; box-shadow: 0 5px 18px #26362e05; }\n.sf-filter-panel > h3 { font-size: 17px; }\n.sf-filter-panel .sf-filters { margin: 20px 0 15px; }\n.sf-more-filter { border: 1px solid #dedfd5; background: white; border-radius: 30px; color: #26362e; padding: 10px 17px; font-size: 12px !important; }\n.sf-extra-filters { border-top: 1px solid #e6e4dc; margin-top: 20px; padding-top: 20px; }\n.sf-extra-filters label { display: block; font-size: 12px; font-weight: 600; margin-bottom: 10px; }\n.sf-extra-filters select { width: 100%; max-width: 400px; }\n.sf-extra-filters p { font-size: 11px; color: #62695f; margin-top: 10px; }\n@media (max-width: 900px) { .sf-city-grid { grid-template-columns: repeat(2, 1fr); } }\n@media (max-width: 650px) {\n  .sf-cities { padding: 35px 22px; }\n  .sf-city-grid { grid-template-columns: 1fr; gap: 15px; }\n  .sf-city-card { padding: 25px; }\n  .sf-filter-panel { padding: 20px; }\n}\n@media (prefers-reduced-motion: reduce) { .sf-city-card { transition: none; } }\n\n\n/* The gradient remains the fallback for cities without a usable hero image. */\n#sf-belonging .sf-city-hero {\n  position: relative;\n  padding: 56px 28px 64px;\n  background:\n    radial-gradient(ellipse at 85% 15%, #cbd6c1 0%, transparent 55%),\n    linear-gradient(135deg, #e8e9dd, #f3eee2 65%, #faf8f2);\n}\n#sf-belonging .sf-city-hero-inner {\n  position: relative;\n  z-index: 1;\n  max-width: 1180px;\n  margin: 0 auto;\n}\n#sf-belonging .sf-city-hero-photo,\n#sf-belonging .sf-city-hero-shade {\n  position: absolute;\n  inset: 0;\n  width: 100%;\n  height: 100%;\n}\n#sf-belonging .sf-city-hero-photo { object-fit: cover; }\n#sf-belonging .sf-city-hero-shade {\n  background: linear-gradient(90deg, rgba(250,248,242,.96), rgba(250,248,242,.65));\n}\n#sf-belonging .sf-city-back {\n  border: 0;\n  background: transparent;\n  padding: 0;\n  color: #26362e;\n  font-size: 13px;\n  cursor: pointer;\n}\n#sf-belonging .sf-city-eyebrow {\n  margin: 36px 0 12px;\n  font-size: 11px;\n  letter-spacing: .16em;\n  color: #62695f;\n}\n#sf-belonging .sf-city-hero h1 {\n  margin: 0;\n  font-family: Georgia, serif;\n  font-size: clamp(42px, 7vw, 76px);\n  line-height: 1.1;\n  color: #26362e;\n}\n#sf-belonging .sf-city-state {\n  margin: 12px 0;\n  font-size: 18px;\n  color: #62695f;\n}\n#sf-belonging .sf-city-count {\n  margin: 20px 0;\n  color: #26362e;\n}\n#sf-belonging .sf-city-switch {\n  display: block;\n  max-width: 320px;\n  font-size: 12px;\n  color: #62695f;\n}\n#sf-belonging .sf-city-switch select {\n  display: block;\n  width: 100%;\n  margin-top: 8px;\n  padding: 12px;\n  border: 1px solid #d6d9cb;\n  border-radius: 8px;\n  background: #fff;\n  color: #26362e;\n}\n\n\n/* Original StoryFaith brand */\n#sf-belonging .belonging .sf-brand .sf-original-logo {\n  display: block;\n  width: 145px;\n  height: auto;\n}\n\n\n/* StoryFaith charcoal framing */\n#sf-belonging .belonging .sf-nav,\n#sf-belonging .belonging .sf-footer {\n  background: #222222 !important;\n  color: #faf8f2 !important;\n  border-color: #333333 !important;\n}\n\n#sf-belonging .belonging .sf-nav a,\n#sf-belonging .belonging .sf-footer a,\n#sf-belonging .belonging .sf-footer p {\n  color: #faf8f2 !important;\n}\n.sf-save-message {\n  padding: 16px; margin: 20px 0;\n  background: #eaeedc; border-radius: 10px; font-size: 13px;\n}\n.sf-save-message a { margin-left: 10px; text-decoration: underline; }\n.sf-saved-section {\n  padding: 24px; margin: 24px 0; background: #fff;\n  border: 1px solid #d7dacd; border-radius: 14px;\n}\n.sf-saved-section h3 { text-align: left; }\n.sf-saved-section p { font-size: 13px; color: #62695f; }\n.sf-saved-list { display: flex; flex-wrap: wrap; gap: 12px; }\n.sf-saved-list article {\n  display: flex; align-items: center; gap: 16px;\n  padding: 12px 14px; background: #faf8f2; border-radius: 9px;\n}\n.sf-saved-list button, .sf-discovery-card-actions button {\n  padding: 8px 12px; border: 1px solid #d7dacd;\n  border-radius: 8px; background: #fff; color: #26362e; font-size: 12px;\n}\n.sf-discovery-card-actions {\n  display: flex; align-items: center; justify-content: space-between;\n  flex-wrap: wrap; gap: 12px; margin-top: 18px;\n}\n.sf-discovery-card-actions a { font-size: 12px; font-weight: 700; }\n.sf-discovery-card-actions button[aria-pressed=\"true\"] { background: #eaeedc; }\n.sf-discovery-card-actions button:disabled { opacity: .6; }\n\n/* Homepage invitation and app introduction. */\n.sf-hero-actions, .sf-ending-actions { display:flex; align-items:center; flex-wrap:wrap; gap:24px; }\n.sf-hero-actions { margin-top:28px; }\n.belonging .sf-text-link { font-size:14px; font-weight:600; text-decoration:underline; text-underline-offset:5px; }\n.sf-primary { display:inline-flex; align-items:center; justify-content:center; min-height:44px; }\n.belonging .sf-primary:hover { background:#3b3b3b; color:#fff; }\n.sf-path { max-width:1240px; margin:auto; padding:36px 40px 70px; }\n.sf-path-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; margin-top:32px; }\n.sf-path-grid article { padding:28px; border:1px solid #e6e3d9; border-radius:18px; background:#fff; }\n.sf-step { display:inline-block; border-bottom:3px solid #ffd400; padding-bottom:8px; margin-bottom:22px; font-size:12px; }\n.belonging .sf-path h3 { font-family:Georgia,serif; font-size:25px; font-weight:400; line-height:1.25; }\n.sf-path-grid p { margin-top:16px; color:var(--muted); font-size:14px; line-height:1.85; }\n.sf-path-grid a { display:inline-block; margin-top:24px; font-size:13px; font-weight:600; padding:8px 0; }\n.sf-app-intro { max-width:1160px; margin:0 auto 55px; padding:44px; display:grid; grid-template-columns:1fr 1fr; gap:56px; background:#eeeee5; border-radius:24px; scroll-margin-top:24px; }\n.sf-app-copy > p:not(.sf-eyebrow) { margin-top:22px; font-size:14px; line-height:1.85; color:var(--muted); }\n.sf-app-copy > a { display:inline-block; margin-top:22px; padding:10px 0; }\n.sf-app-practices { padding:28px; background:#fff; border:1px solid #e6e3d9; border-radius:20px; }\n.sf-app-label { font-size:10px; letter-spacing:1.8px; color:var(--muted); }\n.sf-app-practices article { display:flex; gap:18px; padding:23px 0; border-bottom:1px solid #e6e3d9; }\n.sf-app-practices article > span { font-size:11px; color:var(--muted); padding-top:5px; }\n.belonging .sf-app-practices h3 { font-family:Georgia,serif; font-size:24px; font-weight:400; }\n.sf-app-practices article p { font-size:13px; line-height:1.8; color:var(--muted); margin-top:9px; }\n.sf-app-footnote { margin-top:20px !important; font-size:12px; line-height:1.8; color:var(--muted); }\n#sf-belonging .belonging .sf-ending { background:#222; color:#faf8f2; padding:76px 24px; }\n.sf-ending-accent { display:block; width:42px; height:3px; background:#ffd400; margin:0 auto 28px; }\n.belonging .sf-ending h2 { font-size:clamp(32px,4vw,52px); }\n#sf-belonging .sf-ending > p { color:#dedcd5; max-width:660px; font-size:16px; line-height:1.85; margin:22px auto 30px; }\n.sf-ending-actions { justify-content:center; }\n.belonging .sf-ending-primary { background:#faf8f2; color:#222; border-radius:10px; padding:16px 24px; font-size:14px; font-weight:600; min-height:48px; }\n.belonging .sf-ending-secondary { color:#faf8f2; padding:16px 8px; font-size:14px; text-decoration:underline; text-underline-offset:6px; }\n#sf-belonging .belonging .sf-footer { display:block; max-width:none; padding:52px max(24px,calc((100% - 1160px)/2)); border-top:1px solid #444; }\n.sf-footer-top { display:grid; grid-template-columns:1fr 3fr; gap:50px; }\n.sf-footer-brand > p { margin-top:24px; line-height:1.8; font-size:14px; }\n.sf-footer-links { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; }\n.belonging .sf-footer-links h2 { font-family:Inter,\"Open Sans\",Arial,sans-serif; font-size:13px; font-weight:600; letter-spacing:0; margin-bottom:16px; }\n.sf-footer-links a { display:block; padding:8px 0; font-size:12px; line-height:1.6; }\n.sf-footer-links a:hover { text-decoration:underline; text-underline-offset:4px; }\n.sf-footer-bottom { border-top:1px solid #444; margin-top:36px; padding-top:24px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px; }\n.sf-footer-bottom p { font-size:11px; line-height:1.8; }\n@media(max-width:900px) { .sf-app-intro { margin:0 24px 40px; gap:30px; padding:30px; } .sf-path-grid { gap:15px; } .sf-path-grid article { padding:22px; } .sf-footer-top { grid-template-columns:1fr; gap:32px; } }\n@media(max-width:650px) { .sf-nav { flex-wrap:wrap; } .sf-nav nav { flex-wrap:wrap; gap:14px; } .sf-path { padding:25px 22px 45px; } .sf-path-grid,.sf-app-intro { grid-template-columns:1fr; } .sf-app-intro { padding:24px; margin:0 22px 35px; } .sf-app-practices { padding:22px; } .sf-footer-links { grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; } #sf-belonging .belonging .sf-ending { padding:54px 22px; } .sf-ending-actions { gap:12px; } .sf-footer-bottom { display:block; } .sf-footer-bottom p + p { margin-top:12px; } }\n\n\n/* StoryFaith CTA text contrast */\n#sf-belonging .belonging a.sf-primary,\n#sf-belonging .belonging a.sf-primary:visited,\n#sf-belonging .belonging a.sf-primary:hover,\n#sf-belonging .belonging a.sf-primary:focus {\n  color: #ffffff !important;\n  -webkit-text-fill-color: #ffffff;\n}\n\n\n/* Original StoryFaith logo in the homepage hero. */\n#sf-belonging .sf-logo-hero {\n  background: #222222;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 48px 40px 130px;\n}\n#sf-belonging .sf-logo-hero::after {\n  display: none;\n}\n#sf-belonging .sf-hero-logo {\n  display: block;\n  width: 70%;\n  max-width: 280px;\n  max-height: 220px;\n  height: auto;\n  object-fit: contain;\n}\n\n\n/* StoryFaith yellow and charcoal app introduction. */\n#sf-belonging .belonging .sf-hero h1 em { color: #ffd400; }\n#sf-belonging .belonging .sf-app-intro { background: #222222; color: #faf8f2; }\n#sf-belonging .belonging .sf-app-copy h2 { color: #faf8f2; }\n#sf-belonging .belonging .sf-app-copy > p:not(.sf-eyebrow) { color: #dedcd5; }\n#sf-belonging .belonging .sf-app-copy .sf-eyebrow { color: #ffd400; }\n#sf-belonging .belonging .sf-app-copy > a { color: #faf8f2; }\n/* Keep reading examples calm and legible on white cards. */\n#sf-belonging .belonging .sf-app-practices { color: #222222; }\n#sf-belonging .belonging .sf-app-practices h3 { color: #222222; }\n\n/* Original yellow StoryFaith mark, without a decorative panel. */\n#sf-belonging .belonging .sf-clean-brand {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 0;\n  background: transparent;\n}\n#sf-belonging .belonging .sf-clean-brand-logo {\n  display: block;\n  width: 100%;\n  max-width: 460px;\n  height: auto;\n  object-fit: contain;\n}\n@media (max-width: 650px) {\n  #sf-belonging .belonging .sf-clean-brand-logo {\n    max-width: 300px;\n  }\n}\n\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BelongingHome.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BelongingHome.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BelongingHome.vue?vue&type=template&id=fdd1a086&\"\nimport script from \"./BelongingHome.vue?vue&type=script&lang=js&\"\nexport * from \"./BelongingHome.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BelongingHome.vue?vue&type=style&index=0&id=fdd1a086&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import Vue from 'vue'\nimport Search from './Search.vue'\nimport TopSearch from './TopSearch.vue'\nimport Content from './Content.vue'\n\n\nif (document.getElementById(\"search-bar\")) {\n    new Vue({\n      render: h => h(Search, {\n        props: {\n          publicFrontPage: true\n        }\n      }),\n    }).$mount('#search-bar')\n}\n\nif (document.getElementById(\"top-search-bar\")) {\n    new Vue({\n      render: h => h(TopSearch, {\n        props: {mobile: false, legacy: true}\n      }),\n    }).$mount('#top-search-bar')\n}\n\nif (document.getElementById(\"top-search-bar-mobile\")) {\n    new Vue({\n      render: h => h(TopSearch, {\n        props: {\n          mobile: true, legacy: true\n        }\n      }),\n    }).$mount('#top-search-bar-mobile')\n}\n\nif (document.getElementById(\"index-content\")) {\n    new Vue({\n      render: h => h(Content, {\n        props: {\n          mobile: window.innerWidth < 600\n        }\n      })\n    }).$mount(\"#index-content\");\n}\n\ndocument.querySelectorAll('[data-header-search]').forEach(element => {\n    new Vue({render: h => h(TopSearch)}).$mount(element)\n})\n\nimport BelongingHome from './BelongingHome.vue'\n\nif (document.getElementById('belonging-home')) {\n    new Vue({\n        render: h => h(BelongingHome)\n    }).$mount('#belonging-home')\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 826;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t826: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkfrontend\"] = self[\"webpackChunkfrontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998,64], function() { return __webpack_require__(4149); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["clean","value","trim","cityLabel","page","city","state","cityKey","toLocaleLowerCase","safeCityCover","cover","url","URL","includes","protocol","_","buildCityPages","records","communities","source","Array","isArray","seen","Set","reduce","pages","record","key","published","has","add","push","module","exports","render","_vm","this","_c","_self","class","publicFrontPage","staticClass","_v","directives","name","rawName","cityQuery","expression","attrs","domProps","on","autocomplete_city","focus","blur","$event","target","composing","autocompleteOptions","length","_l","option","i","select_city","_s","state_name","_e","featuredCities","typeQuery","typeSelect","typeOptions","selectType","text","staticRenderFns","props","Boolean","data","created","self","fetch","then","response","json","methods","clear_city","type","timer","clearTimeout","window","setTimeout","href","component","mobile","ref","comm","thumbnail","title","university_name","small_description","communityNavRight","communityNavLeft","events","event","address","schedule","rsvps","eventNavRight","eventNavLeft","cardWidth","$refs","communitiesContainer","scrollWidth","scrollLeft","eventsContainer","result","username","loginUrl","_m","appIntroUrl","preventDefault","explore","apply","arguments","$$selectedVal","prototype","filter","call","options","o","selected","map","val","_value","multiple","cities","item","openGuide","selectedCityCover","cityCoverFailed","backToCities","split","slice","join","cityCommunityCount","label","guideOpen","applyGuide","guideType","_q","isDiscovery","cityCards","chooseCity","count","kind","query","campus","reset","types","active","shown","moreFilters","campuses","saveMessage","savedInCity","slug","savingSlugs","toggleSave","filtered","community","style","visibility","isSaved","components","TopSearch","String","default","year","computed","Date","getFullYear","PublicHeader","PublicFooter","JSON","parse","document","getElementById","textContent","error","console","cityRecords","element","account","params","URLSearchParams","location","search","requestedCity","find","get","cityPages","failedCityCovers","savedSlugs","saved_slugs","pathname","currentYear","encodeURIComponent","matchesCity","sort","a","b","localeCompare","sensitivity","selectedCity","items","terms","toLowerCase","every","term","some","heroImage","photos","flatMap","watch","rememberFilters","Object","entries","q","searchParams","set","delete","history","replaceState","hash","updateSaved","saved","csrfToken","cookie","startsWith","decodeURIComponent","readSavedState","credentials","cache","ok","Error","desired","current","body","FormData","append","method","headers","confirmed","$nextTick","scrollIntoView","behavior","block","discover","guide","querySelector","preventScroll","Vue","h","Search","$mount","legacy","Content","innerWidth","querySelectorAll","forEach","BelongingHome","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","id","loaded","__webpack_modules__","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","keys","splice","r","n","getter","__esModule","d","definition","defineProperty","enumerable","g","globalThis","Function","e","obj","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""}