1import{bH as e,a7 as t,V as k,di as ee,d6 as te,aA as ie,G as ae,ax as ne,F as oe,cf as l,cB as me,bF as fe,d5 as xe,dh as ge,dm as be,aS as ue,dc as we,d9 as ye,aW as ve,bI as ke,d8 as je,cM as ze,M as $e,al as Ne,x as V,u as Ce,d1 as Ie,aY as G,m as Se,cJ as Fe,a$ as Be}from"./index-Cgui02_0.js";import{c as Me}from"./neighborhoodCenters-EA46RgCh.js";import{u as Te,a as Ae}from"./usePersonalizedFeed-BqQ5NSG1.js";import{u as Ee}from"./useHydratedFeedItems-BrSP-V4k.js";import{u as He}from"./useVisitingFeed-B_FhdsgH.js";import{h as Re}from"./visitingFeedSource-DQiWpBq4.js";import{c as K,b as Q,a as X}from"./FamilyDock-DjUFmQfQ.js";import{P as Pe,u as _e,e as Le}from"./FamilyWeekPage-Dc4N0142.js";import{u as Oe,p as We,P as De,B as qe,N as Ye}from"./FamilyPlanWidget-CCKAGpNE.js";import{u as Ve}from"./FamilyAuthOverlay-pQyDiJlu.js";import"./feedStatus-8ADoy5il.js";import"./feedNearMe-DYEM62gE.js";const J=333,U=172,Ge=[{n:1,base:"/images/family/step-1-profile",title:[{text:"Build your "},{text:"family weekend profile",hi:!0}]},{n:2,base:"/images/family/step-2-match",title:[{text:"We match it to "},{text:"whatâs happening now",hi:!0}]},{n:3,base:"/images/family/step-3-plan",title:[{text:"We send you a plan, "},{text:"every week",hi:!0}]}];function Ke({onStart:r}){return e.jsxs("section",{className:"fgs","aria-labelledby":"fgs-title",children:[e.jsx("style",{children:` 2 .fgs{max-width:1200px;margin:0 auto;padding:14px 34px 0; 3 font-family:${t.fontBody};color:${t.ink}} 4 .fgs-card{background:${t.surface};border:1px solid #e3e3e3; 5 border-radius:16px;padding:20px 16px 18px} 6 .fgs h2{margin:0 0 16px;font-family:${t.fontHead};font-size:28px;font-weight:800; 7 letter-spacing:-.5px;line-height:1.1} 8 /* Three steps with an arrow between them: a process, left to right. */ 9 .fgs-grid{display:grid;grid-template-columns:333px;gap:16px; 10 align-items:start;justify-content:center} 11 .fgs-step{display:flex;flex-direction:column;gap:8px;width:333px;position:relative} 12 /* Number sits above the headline, both centred over the box below. */ 13 .fgs-top{display:flex;flex-direction:column;align-items:center;gap:8px; 14 min-width:0;width:100%} 15 .fgs-n{width:44px;height:44px;border-radius:50%;background:${t.yellow}; 16 color:${t.ink};font-family:${t.fontHead};font-size:22px;font-weight:800; 17 display:flex;align-items:center;justify-content:center;flex:0 0 auto; 18 box-shadow:0 1px 4px rgba(0,0,0,.14)} 19 /* One line, centred, the full frame width. Sized down from the 20 original 15px so these specific sentences hold on one line. */ 21 .fgs-top b{display:block;width:100%;text-align:center; 22 font-family:${t.fontHead};font-size:13px;font-weight:700;line-height:1.3; 23 white-space:nowrap;overflow:hidden;text-overflow:ellipsis} 24 /* Desktop is one fixed layout (the family area is 1200px wide on 25 desktop): always three across. Phones stack. */ 26 @media (min-width:768px){ 27 .fgs-grid{grid-template-columns:repeat(3,333px)} 28 } 29 .fgs-top b em{font-style:normal;color:${t.yellow}} 30 /* The one and only frame size â same on a phone and on desktop. */ 31 .fgs-shot{position:relative;border-radius:13px;overflow:hidden;background:#fff; 32 border:1px solid #8a8a8a;width:${J}px;height:${U}px;flex:0 0 auto} 33 .fgs-shot img{display:block} 34 /* Anchored to the image itself, so it stays centred on it regardless 35 of how many lines the headline above takes. */ 36 .fgs-arrow{position:absolute;top:50%;right:-19px;transform:translateY(-50%); 37 color:#c9c9c9;z-index:1;background:${t.surface};border-radius:50%} 38 .fgs-step:last-child .fgs-arrow{display:none} 39 .fgs-cta{margin-top:18px;display:flex;justify-content:center} 40 .fgs-cta button{display:inline-flex;align-items:center;gap:8px;border:0; 41 border-radius:40px;background:${t.yellow};color:${t.ink};font-family:${t.fontHead}; 42 font-size:15px;font-weight:800;padding:12px 26px;cursor:pointer} 43 @media (max-width:767px){ 44 .fgs{padding:10px 16px 0} 45 .fgs-card{padding:14px} 46 .fgs h2{font-size:22px;margin-bottom:12px} 47 /* Same 333px frame as desktop, just one column instead of three. */ 48 .fgs-arrow{display:none !important} 49 .fgs-cta button{width:100%;justify-content:center} 50 } 51 `}),e.jsxs("div",{className:"fgs-card",children:[e.jsx("h2",{id:"fgs-title",children:"How it works"}
51),e.jsx("div",{className:"fgs-grid",children:Ge.map(i=>e.jsxs("div",{className:"fgs-step",children:[e.jsxs("span",{className:"fgs-top",children:[e.jsx("span",{className:"fgs-n",children:i.n}),e.jsx("b",{children:i.title.map((d,c)=>d.hi?e.jsx("em",{children:d.text},c):e.jsx("span",{children:d.text},c))})]}),e.jsxs("span",{className:"fgs-shot",children:[e.jsx("img",{src:`${i.base}.png`,width:J,height:U,alt:"",loading:"lazy"}),e.jsx("span",{className:"fgs-arrow","aria-hidden":!0,children:e.jsx(k,{name:"chevron-forward",size:22})})]})]},i.n))}),e.jsx("div",{className:"fgs-cta",children:e.jsxs("button",{type:"button",onClick:r,children:["Build your family profile",e.jsx(k,{name:"arrow-forward",size:17})]})})]})]})}function Qe(){const r=ee(),{city:i,path:d}=te(),c=ie(i),{plans:p,loading:x}=Oe(i);return e.jsxs("section",{className:"fbb","aria-labelledby":"fbb-title",children:[e.jsx("style",{children:` 52 .fbb{max-width:1200px;margin:0 auto;padding:14px 34px 24px; 53 font-family:${t.fontBody};color:${t.ink}} 54 .fbb-card{background:${t.surface};border:1px solid #e3e3e3;border-radius:16px; 55 padding:16px 18px;display:flex;flex-direction:column;gap:14px} 56 .fbb h2{margin:0;font-family:${t.fontHead};font-size:18px;font-weight:700; 57 letter-spacing:-.3px;line-height:1.2} 58 .fbb-sub{margin:3px 0 0;font-size:13px;color:${t.textMeta}} 59 /* Map left, plans right, equal halves. */ 60 .fbb-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px; 61 align-items:start} 62 .fbb-half{display:flex;flex-direction:column;gap:9px;min-width:0} 63 .fbb-head{display:flex;align-items:center;justify-content:space-between;gap:10px} 64 .fbb-h3{margin:0;font-family:${t.fontHead};font-size:15px;font-weight:700} 65 .fbb-more{display:inline-flex;align-items:center;gap:3px;border:0;background:none; 66 font-size:12.5px;font-weight:700;color:${t.ink};cursor:pointer; 67 font-family:${t.fontBody};padding:0;white-space:nowrap} 68 .fbb-mapframe{border-radius:13px;overflow:hidden;border:1px solid #e6e6e6} 69 /* Two plan cards per row inside half the width. */ 70 .fbb-plans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px} 71 .fbb-plans .pub-card-badges{display:none !important} 72 .fbb-plans .pub-card > div:first-child, 73 .fbb-plans .pub-card > div:first-child img{height:92px !important} 74 .fbb-plans .pub-card-body{padding:8px 9px 9px !important;gap:5px !important} 75 .fbb-plans .pub-card .pub-card-title{font-size:12.5px !important; 76 line-height:1.25 !important;min-height:0 !important;max-height:31px !important; 77 overflow:hidden !important} 78 .fbb-plans .pub-card-desc{font-size:11px !important;max-height:15px !important; 79 overflow:hidden !important} 80 .fbb-plans .pub-card-tags,.fbb-plans .pub-card-meta, 81 .fbb-plans .pub-btn-details,.fbb-plans .pub-btn-share{display:none !important} 82 .fbb-plans .pub-card{border:1px solid #dcdcdc !important;box-shadow:none !important} 83 .fbb-plans .pub-card-foot button{width:26px !important;height:26px !important; 84 flex:0 0 26px !important;padding:0 !important} 85 .fbb-plans .pub-card-foot svg{width:13px !important;height:13px !important} 86 .fbb-skel{height:150px;border-radius:13px;border:1px solid #dcdcdc;opacity:.7; 87 background:linear-gradient(180deg,#e6e6e6 0 92px,#fff 92px 100%)} 88 @media (max-width:767px){ 89 .fbb{padding:10px 16px 20px} 90 .fbb-card{padding:14px;gap:12px} 91 .fbb-cols{grid-template-columns:minmax(0,1fr);gap:14px} 92 } 93 `}),e.jsxs("div",{className:"fbb-card",children:[e.jsxs("div",{children:[e.jsx("h2",{id:"fbb-title",children:"Explore the city"}),e.jsx("p",{className:"fbb-sub",children:"No profile needed â have a look around first."})]}),e.jsxs("div",{className:"fbb-cols",children:[e.jsxs("div",{className:"fbb-half",children:[e.jsxs("div",{className:"fbb-head",children:[e.jsx("h3",{className:"fbb-h3",children:"Explore the map"}),e.jsxs("button",{type:"button",className:"fbb-more",onClick:()=>r(d("/family/map")),children:["Open the map ",e.jsx(k,{name:"chevron-forward",size:13})]})]}),e.jsx("div",{className:"fbb-mapframe",children:e.jsx(ae,{items:[],cityLabel:c,nearLabel:"Events & places near you",center:ne(i),onOpen:()=>r(d("/family/map"))})})]}),e.jsxs("div",{className:"fbb-half",children:[e.jsxs("div",{className:"fbb-head",children:[e.jsx("h3",{className:"fbb-h3",children:"Browse plans"}),e.jsxs("button",{type:"button",className:"fbb-more",onClick:()=>r(d(oe)),children:["Browse plans ",e.jsx(k,{name:"chevron-forward",size:13})]})]}),e.jsx("div",{className:"fbb-plans",children:x?Array.from({length:4},(g,b)=>e.jsx("div",{className:"fbb-skel"},b)):p.slice(0,4).map(g=>e.jsx("div",{style:{minWidth:0},children:e.jsx(Pe,{plan:g})},g.id))})]})]})]})]})}function T(r){return r.toLowerCase().trim().replace(/[\s-]+/g,"_")}function Xe(r,i){if(!i)return r;const d=T(i);return r.filter(c=>{var p;return(p=c.forYouTags)==null?void 0:p.some(x=>x&&T(x)===d)})}function Z({children:r,flush:i=!1}){return e.jsx("section",{style:{background:t.surface,border:"1px solid #dcdcdc",borderRadius:t.radiusCard,padding:i?"12px 0":12,display:"flex",flexDirection:"column",gap:i?4:11,overflow:"hidden"},children:r})}function M({title:r,sub:i,action:d,onAction:c,pad:p=!1}){return e.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:10,padding:p?"0 14px":0},children:[e.jsxs("div",{className:"fh-head",children:[e.jsx("h2",{children:r}),i?e.jsx("p",{children:i}):null]}),d?e.jsx("button",{type:"button",onClick:c,style:{display:"inline-flex",alignItems:"center",gap:4,border:`1px solid ${t.yellow}`,background:t.yellow,color:t.ink,fontSize:12.5,fontWeight:700,borderRadius:t.radiusPill,padding:"5px 12px",whiteSpace:"nowrap",cursor:"pointer",fontFamily:t.fontBody},children:d}):null]})}function Je(){return e.jsx("div",{"aria-hidden":!0,style:{height:108,borderRadius:t.radiusCard,border:"1px solid #dcdcdc",background:"linear-gradient(180deg,#e6e6e6 0 50px,#fff 50px 100%)",opacity:.75}})}const Ue={channel:"by text"};function ht(){var D,q;const r=ee(),{path:i,city:d}=te(),c=l.useCallback((a,o,s)=>i(`/family${me(fe(d,a,o,s))}`),[i,d]),p=xe(a=>a.email),{coords:x}=Te(),g=ge(p||void 0),b=d,A=ie(b),E=((q=(D=g.data)==null?void 0:D.user)==null?void 0:q.neighborhood)||"",N=Re(g.data),C=!!p&&!N&&g.isLoading,h=He({cityId:b,homeCityId:N,email:p||void 0,enabled:!!p&&!!N}
93),re=h.active?ne(b):Me(E,b),y=Ae(p||void 0,x),H=h.active&&!h.useVisitingItems,se=l.useMemo(()=>C?[]:h.useVisitingItems?h.items:H?[]:y.items,[C,h.useVisitingItems,h.items,H,y.items]),I=Ee(se,p||void 0,b,x),R=be({queryKey:["engagementExcludeIds",p??""],queryFn:()=>Be(),enabled:!!p,staleTime:5*6e4}),j=l.useMemo(()=>new Set(R.data||[]),[R.data]),u=l.useMemo(()=>j.size===0?I:I.filter(a=>{const o=ue(a),s=String(a.id||"").trim();return!(o&&j.has(o)||s&&j.has(s))}),[I,j]),z=Ve(),pe=we(),v=ye(),m=v.status!=="loggedOut",w=_e(u,d,p||void 0),S=l.useMemo(()=>{const o=(h.useVisitingItems?ve(h.items):h.active?["For You"]:y.tabs).filter(s=>s!=="For You");return[{id:"all",label:"For you",q:""},...o.map(s=>({id:T(s),label:ke(s),q:s}))]},[y.tabs,h.active,h.useVisitingItems,h.items]),[f,de]=l.useState("all"),F=l.useMemo(()=>{var o;if(f==="all")return u;const a=((o=S.find(s=>s.id===f))==null?void 0:o.q)||null;return Xe(u,a)},[u,f,S]),{propsFor:le}=je(u,{enabled:!!p}),he=a=>{const o=G(a);r(c(o.type,o.id,o.title),{state:{item:o}})},P=l.useRef(null),B=l.useRef(0),_=l.useRef(0),L=l.useRef("all"),O=l.useRef(!1);_.current=F.length,L.current=f;const $=l.useCallback(()=>{O.current||(O.current=!0,ze({maxPosition:B.current,totalItems:_.current,activeTag:L.current}))},[]);l.useEffect(()=>{const a=P.current;if(!a||typeof IntersectionObserver>"u")return;const o=new IntersectionObserver(s=>{for(const n of s){if(!n.isIntersecting)continue;const Y=Number(n.target.dataset.feedIndex||0);Y>B.current&&(B.current=Y)}},{threshold:.5});return Array.from(a.children).forEach(s=>o.observe(s)),()=>o.disconnect()},[F.length]),l.useEffect(()=>(window.addEventListener("pagehide",$),()=>{window.removeEventListener("pagehide",$),$()}),[$]);const ce=a=>a.map((o,s)=>{const n=G(o);return e.jsx("div",{"data-feed-index":s+1,style:{minWidth:0,maxWidth:"100%"},children:e.jsx(Se,{type:n.type,image:n.image,title:n.title,tags:n.tags,venue:n.venue,date:n.date,distance:n.distance,source:n.source,description:n.description,experienceKind:n.experience_kind,mpaaRating:n.mpaa_rating,duration:n.duration,href:c(n.type,n.id,n.title),linkState:{item:n},onDetails:()=>{Fe({position:s+1,itemId:String(n.id),itemType:n.type,itemTitle:n.title,activeTag:f}),he(o)},...le(o)})},`${n.type}-${n.id}-${s}`)}),W=C||!!p&&!h.active&&(y.isLoading||!y.isSuccess)&&u.length===0;return m?e.jsxs("div",{style:{background:t.bg,minHeight:"100vh"},children:[e.jsx(K,{}),e.jsx(Ne,{}),e.jsx("style",{children:Le()}),e.jsx("style",{children:` 94 .hv2{max-width:460px;margin:0 auto;padding:8px 10px 0; 95 display:flex;flex-direction:column;gap:8px} 96 .hv2-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px} 97 .hv2-greet{margin:2px 2px 0;font-family:${t.fontHead};font-size:17px; 98 font-weight:600;letter-spacing:-.2px;line-height:1.25} 99 .hv2-count{font-family:${t.fontBody};font-size:12px;font-weight:500; 100 color:${t.textMeta};margin-left:7px;white-space:nowrap} 101 102 /* The feed is its own panel inside the card: grey ground, tabs welded 103 to its top edge, and the item area scrolls on its own so the whole 104 feed lives here instead of six frozen cards. CTA stays outside it. */ 105 /* Tabs sit on the panel's top edge; the active one covers that border 106 with its own -1px overhang so it reads as one connected surface. */ 107 .hv2-feedwrap{display:flex;flex-direction:column;gap:0} 108 .hv2-tabstrip{display:flex;gap:3px;overflow-x:auto;padding:0; 109 margin:0;scrollbar-width:none} 110 .hv2-tabstrip::-webkit-scrollbar{display:none} 111 .hv2-tab{flex:0 0 auto;border:1px solid #dcdcdc;border-bottom:0; 112 background:#f5f5f5;color:#6c6c6c;font-size:11.5px;font-weight:500; 113 padding:5px 11px;border-radius:9px 9px 0 0;cursor:pointer; 114 font-family:${t.fontBody};white-space:nowrap;margin-bottom:-1px; 115 position:relative;line-height:1.25} 116 .hv2-tab.is-on{background:#ededed;color:${t.ink};font-weight:600;z-index:2} 117 /* The tabs sit ON this panel, so its top corners must be square or a 118 curve shows under the strip. It was already declared square here and 119 still rendered rounded on desktop, so something with equal-or-higher 120 specificity is winning â force it rather than leave a corner that 121 only appears at one breakpoint. */ 122 .hv2-feedpanel{background:#ededed;border:1px solid #dcdcdc; 123 border-radius:0 0 12px 12px;margin-top:0} 124 .hv2-feedwrap > .hv2-feedpanel{ 125 border-top-left-radius:0 !important; 126 border-top-right-radius:0 !important} 127 .hv2-scroll{max-height:250px;overflow-y:auto;-webkit-overflow-scrolling:touch; 128 padding:7px} 129 .hv2-grid{gap:7px} 130 131 /* Filter chips were page-scale (40px min-height, 36px wrap). The wrap 132 and the .pub-filter-chips descendant rule both need matching 133 specificity or the height wins and the padding never applies. */ 134 .hv2 .pub-filter-chips-wrap,.hv2 .pub-filter-chips{height:auto !important; 135 min-height:0 !important} 136 .hv2 .pub-filter-chips .pub-filter-chip,.hv2 .pub-filter-chip{ 137 height:auto !important;min-height:0 !important;padding:5px 11px !important; 138 font-size:12px !important;line-height:1.2 !important} 139 140 141 @media (max-width:767px){
142 /* Squeeze ContentCard for the fold â headline + engagement buttons only. 143 Measured on real cards: 406px raw â 122px here. Everything else goes: 144 description, tags, venue/date/time meta, More info, Share. 145 Scoped to .hv2-tight so the other 17 surfaces sharing ContentCard are 146 untouched. ContentCard uses inline styles, hence !important. 147 NOTE: the title is a flex item, so the browser blockifies 148 display:-webkit-box and -webkit-line-clamp silently stops working â 149 max-height is what actually caps it to two lines. */ 150 .hv2-tight .pub-card > div:first-child{height:50px !important} 151 .hv2-tight .pub-card > div:first-child img{height:50px !important} 152 .hv2-tight .pub-card > div:first-child .pub-card-badges{ 153 top:5px !important;left:5px !important;gap:3px !important; 154 max-width:calc(100% - 10px) !important} 155 .hv2-tight .pub-card > div:first-child .pub-card-badges span{ 156 font-size:8px !important;padding:2px 4px !important} 157 /* Title left (~70%), the two actions right, one row â saves the whole 158 stacked footer's height. Save is dropped; Like + Not-for-me stay. */ 159 .hv2-tight .pub-card-body{padding:6px 7px !important; 160 flex-direction:row !important;align-items:center !important; 161 gap:5px !important;flex:0 0 auto !important} 162 .hv2-tight .pub-card-desc{display:none !important} 163 .hv2-tight .pub-card-tags{display:none !important} 164 .hv2-tight .pub-card-meta{display:none !important} 165 .hv2-tight .pub-btn-details{display:none !important} 166 .hv2-tight .pub-btn-share{display:none !important} 167 .hv2-tight .pub-card .pub-card-title{font-size:11.5px !important; 168 font-weight:400 !important;line-height:1.2 !important;min-height:0 !important; 169 max-height:28px !important;overflow:hidden !important;margin:0 !important; 170 padding:0 !important;flex:1 1 70% !important;min-width:0 !important} 171 .hv2-tight .pub-card-foot{padding-top:0 !important;gap:3px !important; 172 margin-top:0 !important;width:auto !important;flex:0 0 auto !important; 173 justify-content:flex-end !important} 174 .hv2-tight .pub-card-foot button{width:20px !important;height:20px !important; 175 flex:0 0 20px !important;min-width:0 !important;padding:0 !important} 176 .hv2-tight .pub-card-foot svg{width:11px !important;height:11px !important} 177 .hv2-tight .pub-card-foot button[aria-label="Save"], 178 .hv2-tight .pub-card-foot button[aria-label="Saved"]{display:none !important} 179 /* 1px frame so white cards read against the grey page */ 180 .hv2-tight .pub-card{border:1px solid #dcdcdc !important;box-shadow:none !important} 181 } 182 183 /* Rows inside a white Area: kill their own page background/padding. */ 184 .hv2-rows .pub-pad-x{padding-left:0 !important;padding-right:0 !important} 185 /* CategoryTiles + InterestBrowse already live in the Explore box â 186 GenericHomepageBody ships its own copies, so hide the duplicates. */ 187 .hv2-rows .pub-cat-grid, 188 .hv2-rows section:has(.pub-interest-grid){display:none !important} 189 /* Row cards ship at 300px â only ~1.2 fit. Match the feed grid's card 190 width so 2.3 are visible and the row reads as more-to-come. */ 191 .hv2-rows .pub-news-grid{grid-template-columns:none !important; 192 grid-auto-flow:column !important;grid-auto-columns:154px !important; 193 gap:7px !important} 194 /* 5 â Ask Maya belongs in the input, not on the chip row below it. */ 195 .hv2 .ask-box-compact{position:relative} 196 /* 4 â What's Hot shipped at page scale: 12/16 padding, 20px numeral, 197 9/16 CTA. Every one of those margins comes back; the block ends up 198 ~30% shorter. */ 199 .hv2-rows .hot-list{gap:6px !important} 200 .hv2-rows .hot-item{padding:7px 9px !important;gap:8px !important; 201 border-radius:12px !important;box-shadow:none !important; 202 border:1px solid #dcdcdc !important} 203 .hv2-rows .hot-body{gap:4px !important} 204 .hv2-rows .hot-num{font-size:14px !important;line-height:1 !important} 205 .hv2-rows .hot-txt{font-size:12.5px !important;line-height:1.2 !important; 206 margin:0 !important} 207 /* The stock component's desc has margin-bottom, which â since hot-copy 208 has no padding â collapses straight through into hot-body's own gap, 209 doubling the space before the buttons. Zero it and cap at two lines. */ 210 .hv2-rows .hot-desc{font-size:11px !important;line-height:1.22 !important; 211 margin:0 !important;max-height:27px !important;overflow:hidden !important} 212 .hv2-rows .hot-foot{gap:5px !important;margin:0 !important} 213 .hv2-rows .hot-tag{font-size:9px !important;padding:2px 6px !important} 214 .hv2-rows .hot-cta{font-size:11px !important;padding:4px 10px !important; 215 box-shadow:none !important} 216 217 /* 5 â cards in a row sat at different heights because the scroller 218 centres its items. Top-align and stretch so every row lines up. */ 219 .hv2-rows .pub-card-scroll,.hv2-rows .pub-news-grid{ 220 align-items:stretch !important; 221 /* Both rails start flush left. NewsGrid ships margin-left:-16px to 222 cancel its own 16px padding; the scroller ships no such margin, 223 which is why every strip except Top News sat 16px in. */ 224 padding-left:0 !important;padding-right:0 !important; 225 margin-left:0 !important;margin-right:0 !important} 226 .hv2-rows .pub-card-scroll > *,.hv2-rows .pub-news-grid > *{ 227 align-self:stretch !important} 228 229 /* 6 â one constant rhythm around every separator: 10px, line, 10px. */ 230 .hv2-rows section{border-top:1px solid #e2e2e2 !important; 231 margin-top:10px !important;padding-top:10px !important; 232 padding-bottom:0 !important} 233 .hv2-rows section:first-of-type{border-top:0 !important;margin-top:0 !important; 234 padding-top:0 !important} 235 /* 3 â Browse Miami's heading is a bare h2, not a <section>, so the 236 section rule above skipped it and no line was drawn. */ 237 .hv2-rows > div > h2.pub-h2{border-top:1px solid #e2e2e2 !important; 238 margin-top:10px !important;padding-top:10px !important} 239 240 /* 9 â Share and More info are gone for good; the card itself opens the 241 item page. Only like / save / not-for-me remain. */ 242 .hv2-rows .pub-btn-share,.hv2-rows .pub-btn-details, 243 .hv2-tight .pub-btn-share,.hv2-tight .pub-btn-details{display:none !important} 244 245 /* 8 â measured: the AskBox root starts 15px above the input and the 246 input's right edge sits 17px inside the root. The Maya button is a 247 sibling of .ask-input-wrap, so it anchors to the root â these offsets 248 are what actually place it inside the field. Avatar is pinned to 20px 249 so the pill stays ~30px and centres in the 49px input. */ 250 .hv2 .ask-box-compact .ask-maya-btn{position:absolute !important; 251 top:25px !important;right:22px !important;z-index:3;height:auto !important; 252 min-height:0 !important;padding:4px 9px !important;font-size:11.5px !important; 253 gap:5px !important;margin:0 !important;transform:none !important} 254 .hv2 .ask-box-compact .ask-maya-btn img{width:20px !important;height:20px !important} 255 .hv2 .ask-box-compact .pub-ask-input{padding-right:104px !important} 256 257 /* 7 â category tiles: label and count were floating apart. */ 258 .hv2-browse .pub-cat-grid{gap:5px !important} 259 .hv2-browse .pub-cat-tile{padding:6px 8px !important;gap:5px !important} 260 .hv2-browse .pub-cat-tile > div{display:flex !important; 261 flex-direction:column !important;gap:0 !important;line-height:1.1 !important} 262 .hv2-browse .pub-cat-tile h3{margin:0 !important;line-height:1.15 !important} 263 .hv2-browse .pub-cat-tile > div > div{margin:0 !important;line-height:1.15 !important} 264 265 /* 6 + 9 â the rows shipped page-scale vertical rhythm; halve it. */ 266 .hv2-rows section,.hv2-rows > div{padding-top:4px !important; 267 padding-bottom:0 !important;margin-top:0 !important;margin-bottom:0 !important} 268 .hv2-rows .pub-section-head{margin-bottom:1px !important;padding-bottom:0 !important} 269 .hv2-rows h2,.hv2-rows h3{font-size:14px !important;margin:0 0 2px !important; 270 padding:0 !important;line-height:1.15 !important} 271 .hv2-rows .pub-card-scroll{padding-top:2px !important;padding-bottom:2px !important} 272 .hv2-rows hr,.hv2-rows .pub-divider{display:none !important} 273 /* One consistent rule between every strip â the stock pages draw a 274 divider on some rows and not others. */ 275 .hv2-rows > *,.hv2-rows > * > section,.hv2-rows > * > div{ 276 border-top:0} 277 .hv2-rows .pub-see-all{padding:5px 14px !important} 278 .hv2-rows .pub-row-origin,.hv2-rows [class*="origin"]{margin-bottom:1px !important; 279 font-size:9.5px !important;letter-spacing:.08em !important} 280 281 /* 8 â CardRow ships 300px cards; match the feed grid so 2.3 fit. */ 282 .hv2-rows .pub-card-scroll{gap:7px !important; 283 grid-template-columns:none !important;grid-auto-columns:154px !important} 284 .hv2-rows .pub-card-scroll > *{flex:0 0 154px !important;width:154px !important; 285 min-width:154px !important;max-width:154px !important} 286 287 288 /* Browse tiles inside the Explore box. Stock CategoryTiles + 289 InterestBrowse are page-scale (877px of Explore box); these 290 overrides bring them to 543px: category tiles become one-line rows, 291 interest taglines go, everything drops to caption sizes. */ 292 .hv2-browse .pub-pad-x{padding-left:0 !important;padding-right:0 !important} 293 .hv2-browse section{padding:0 !important} 294 .hv2-browse h2,.hv2-browse h3{font-size:13px !important; 295 padding:0 0 6px !important;margin:0 !important} 296 .hv2-browse .pub-cat-grid{gap:6px !important;padding-bottom:0 !important} 297 .hv2-browse .pub-cat-tile{flex-direction:row !important;align-items:center !important; 298 justify-content:flex-start !important;padding:7px 8px !important;gap:6px !important; 299 min-height:0 !important;border-radius:10px !important;box-shadow:none !important; 300 border:1px solid #dcdcdc !important} 301 .hv2-browse .pub-cat-tile > *{padding:0 !important} 302 .hv2-browse .pub-cat-tile > span{width:18px !important;height:18px !important; 303 flex:0 0 18px !important;background:none !important} 304 .hv2-browse .pub-cat-tile > span svg{width:13px !important;height:13px !important} 305 .hv2-browse .pub-cat-tile > div{text-align:left !important} 306 .hv2-browse .pub-cat-tile h3{font-size:11px !important;line-height:1.15 !important; 307 margin:0 !important} 308 .hv2-browse .pub-cat-tile > div > div{font-size:10px !important;line-height:1.1 !important} 309 /* All four interests on one row â they are four short labels. */ 310 .hv2-browse .pub-interest-tagline{display:none !important} 311 .hv2-browse .pub-interest-grid{grid-template-columns:repeat(4,1fr) !important; 312 display:grid !important;gap:5px !important} 313 .hv2-browse .pub-interest-card{padding:8px 4px !important;gap:4px !important; 314 border-radius:10px !important;min-height:0 !important;box-shadow:none !important; 315 border:1px solid #dcdcdc !important;align-items:center !important; 316 text-align:center !important} 317 .hv2-browse .pub-interest-image{width:16px !important;height:16px !important; 318 margin:0 !important} 319 .hv2-browse .pub-interest-image svg{width:16px !important;height:16px !important} 320 .hv2-browse .pub-interest-label{font-size:9.5px !important;line-height:1.1 !important; 321 text-align:center !important;
321white-space:normal !important; 322 overflow:visible !important;max-height:none !important} 323 .hv2-browse .pub-interest-card{min-height:52px !important; 324 justify-content:center !important} 325 326 /* One ladder on this page: the greeting and the two section 327 headlines are the big type; plan names and stop names sit under. */ 328 .fh-head h2{margin:0;font-family:${t.fontHead};font-size:22px;font-weight:700; 329 letter-spacing:-.4px;line-height:1.15;color:${t.ink}} 330 .fh-head p{margin:3px 0 0;font-size:13px;color:${t.textMeta}} 331 .fh-hello{margin:2px 2px 2px} 332 .fh-hello h1{margin:0;font-family:${t.fontHead};font-size:19px;font-weight:700; 333 letter-spacing:-.3px;line-height:1.2} 334 .fh-hello p{margin:2px 0 0;font-size:12.5px;color:${t.textMeta}} 335 .fh-now{display:flex;align-items:center;gap:11px;width:100%;background:${t.ink}; 336 border:0;border-radius:14px;padding:12px;cursor:pointer; 337 font-family:${t.fontBody};color:#fff;text-align:left} 338 .fh-now-img{flex:0 0 56px;height:56px;border-radius:11px;background:#3a3a3a center/cover no-repeat} 339 .fh-now-txt{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1} 340 .fh-now-txt > span{font-family:${t.fontHead};font-size:15px;font-weight:700; 341 line-height:1.2;letter-spacing:-.2px} 342 .fh-out{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:2px} 343 .fh-out h2{margin:0;font-family:${t.fontHead};font-size:21px;font-weight:700; 344 letter-spacing:-.3px;line-height:1.2} 345 .fh-out > p{margin:0;font-size:13.5px;line-height:1.45;color:${t.textMeta};max-width:52ch} 346 .fh-out-list{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-direction:column;gap:9px} 347 .fh-out-list li{display:flex;align-items:flex-start;gap:9px;font-size:13.5px; 348 line-height:1.35;color:${t.ink}} 349 .fh-out-cta{border:0;border-radius:999px;background:${t.yellow};color:${t.ink}; 350 padding:12px 22px;font-family:${t.fontHead};font-size:14.5px;font-weight:800; 351 cursor:pointer;align-self:stretch} 352 .fh-map{display:flex;flex-direction:column} 353 .fh-map > button{min-height:150px} 354 /* "0 near you" means nothing before we know where they are. */ 355 .hv2.is-out .fh-map > button > span:last-child{display:none} 356 .fh-planskel{min-height:260px;border-radius:14px;border:1px solid #e6e6e6; 357 background:linear-gradient(180deg,#f3f3f3 0 48px,#fafafa 48px 100%);opacity:.8} 358 .fh-planskel.is-side{background:#fff8e3;border-color:#f2e2b0} 359 .fh-waiting{display:flex;align-items:center;gap:10px;background:#fff8e3; 360 border:1px solid #f2e2b0;border-radius:13px;padding:12px} 361 .fh-waiting span{display:flex;flex-direction:column;gap:1px;min-width:0} 362 .fh-waiting b{font-family:${t.fontHead};font-size:14px;font-weight:700;line-height:1.25} 363 .fh-waiting em{font-style:normal;font-size:11.5px;color:#6b5200} 364 .fh-link{align-self:flex-start;display:inline-flex;align-items:center;gap:3px;border:0; 365 background:none;padding:0;font-size:12.5px;font-weight:700;color:${t.ink}; 366 cursor:pointer;font-family:${t.fontBody}} 367 .fh-now-txt em{font-style:normal;font-size:11.5px;color:#c7c7c7} 368 .fhc-toprow{display:flex;align-items:center;justify-content:space-between;gap:8px} 369 /* Desktop: two columns â the welcome box and plans on the left, the 370 feed on the right, instead of one phone-width column. */ 371 @media (min-width:768px){ 372 /* Desktop: one full-width page, stacked top to bottom â Welcome, 373 then the plans bar, then the feed as a real content grid â same 374 flow as every other desktop page on the site. The old 420px/1fr 375 two-column grid boxed the feed into a narrow scrolling widget 376 (mobile-app-dashboard shape) and left a wall of empty page 377 background under the short plans column: reported repeatedly as 378 "looks completely mobile" on desktop. */ 379 .hv2{max-width:1200px;display:flex;flex-direction:column;gap:20px; 380 padding:22px 24px 0} 381 .hv2.is-out{max-width:900px} 382 /* The map is the point of this block when there is no feed yet. */ 383 .hv2.is-out .fh-map > button{min-height:300px} 384 .hv2.is-out .fh-hello h1{font-size:30px} 385 .fh-out{gap:14px;padding:6px 2px} 386 .fh-out h2{font-size:26px} 387 .fh-out > p{font-size:15px} 388 .fh-out-list li{font-size:14.5px} 389 .fh-out-cta{align-self:flex-start;
389padding:13px 26px;font-size:15px} 390 .fh-hello h1{font-size:34px} 391 .fh-hello p{font-size:15px} 392 .fh-head h2{font-size:28px} 393 .fh-head p{font-size:14px} 394 /* Below the headlines: the plan's name, then the stop names. */ 395 .fh-tabbox .fw-glancename{font-size:20px} 396 .fh-tabbox .fw-gcopy b{font-size:17px} 397 /* Desktop cards are the site's real cards, not the fold-squeezed ones. */ 398 .hv2-tight .pub-card{border:1px solid #dcdcdc !important;box-shadow:none !important} 399 .hv2-tab{font-size:13px;padding:7px 14px} 400 .hv2 .fh-now{padding:14px;max-width:520px} 401 .hv2 .fh-now-img{flex:0 0 68px;height:68px} 402 .fhc-plancell{flex:0 0 168px;width:168px} 403 } 404 .fhc-concept{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em; 405 color:#6b5200;background:#fff3cc;border-radius:999px;padding:3px 8px} 406 .fhc-line{display:flex;align-items:center;gap:7px;width:100%;border:0;background:#f4f4f4; 407 border-radius:10px;padding:7px 9px;font-size:12.5px;text-align:left;cursor:pointer; 408 color:${t.ink};font-family:${t.fontBody}} 409 .fhc-line > span:nth-child(2){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} 410 .fhc-edit{font-size:12px;font-weight:700;text-decoration:underline} 411 .fhc-part{display:flex;flex-direction:column;gap:5px} 412 .fhc-hello{margin:2px 0 0;font-size:13px;color:${t.textMeta}} 413 .fhc-label{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:${t.textMeta}} 414 .fhc-talk{display:flex;gap:7px} 415 .fhc-talk-btn{flex:1;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:5px;height:38px;padding:0 4px;white-space:nowrap;border-radius:10px; 416 border:1px solid #dcdcdc;background:#fff;color:${t.ink};font-family:${t.fontBody};font-size:12.5px;font-weight:700; 417 text-decoration:none;cursor:pointer} 418 .fhc-talk-btn.is-yellow{background:${t.yellow};border-color:${t.yellow};flex:2} 419 .fhc-narrow{flex:1} 420 .fhc-plancell{flex:0 0 154px;width:154px;min-width:0} 421 /* A plan is not an experience: no item-type badge. */ 422 .fhc-planrow .pub-card-badges{display:none !important} 423 .fhc-gate{background:#f4f4f4;border-radius:12px;padding:14px;text-align:center} 424 .fhc-gate p{margin:0 0 10px;font-size:13px;color:#444;line-height:1.35} 425 .fhc-gate button{border:0;border-radius:999px;background:${t.yellow};padding:9px 18px;font-weight:800;font-size:13.5px;cursor:pointer;font-family:${t.fontBody}} 426 .fhc-talk-btn img{width:22px;height:22px;border-radius:50%;object-fit:cover} 427 .fhc-planrow{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;margin:0 -12px;padding:0 12px 2px} 428 .fhc-planrow::-webkit-scrollbar{display:none} 429 430 ${We()} 431 432 .fh-recs{display:flex;flex-direction:column;gap:12px} 433 .fh-recs .hv2-feedwrap{min-width:0} 434 /* FeedMiniMap is a fixed 442px tall; inside a card cell it takes the 435 cell's height instead, so it can never break the grid rhythm. */ 436 .fh-mapcell{min-width:0} 437 .fh-mapcell .hv2d-map{height:100% !important;min-height:220px} 438 @media (min-width:768px){ 439 /* Desktop: the site's real, full-size cards â three across, no inner scroll. */ 440 .fh-recs .hv2-scroll{max-height:none;overflow:visible;padding:12px} 441 .fh-recs .hv2-grid{grid-template-columns:repeat(3,minmax(0,1fr)) !important;gap:16px} 442 /* The map is one card, same as everything around it. */ 443 .fh-recs .fh-mapcell{grid-column:span 1} 444 } 445 446 `}),e.jsxs("div",{className:`hv2${m?"":" is-out"}`,children:[e.jsxs("header",{className:"fh-hello",children:[e.jsx("h1",{children:m?v.firstName?`Welcome, ${v.firstName}`:"Welcome":"Welcome to HelloCity"}),e.jsx("p",{children:m?"Your plans and your recommendations, made for your family.":`Family plans for ${A}, made for your kids.`})]}),e.jsx(Z,{children:m?!w.plans.length&&(w.pending||W)?e.jsxs(e.Fragment,{children:[e.jsx(M,{title:"Suggested upcoming plans",sub:"Loading your plansâ¦"}),e.jsxs("div",{className:"fh-plansrow","aria-busy":"true",children:[e.jsx("div",{className:"fh-planskel"}),e.jsx("div",{className:"fh-planskel is-side"})]})]}):w.plans.length?e.jsxs(e.Fragment,{children:[e.jsx(M,{title:"Suggested upcoming plans",sub:`${w.weekendLabel} · ${w.plans.length} ${w.plans.length===1?"plan":"plans"} picked for your family`,action:"See detailed plans â",onAction:()=>r(i(V))}),e.jsxs("div",{className:"fh-plansrow",children:[e.jsx(De,{plans:w.plans,onOpen:a=>r(i(`${V}/${a}`))}),e.jsx(qe,{onBuild:()=>r(i(Ce))})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"fh-waiting",children:[e.jsx(k,{name:"calendar-outline",size:18,color:t.ink}),e.jsxs("span",{children:[e.jsxs("b",{children:["Your next plan arrives ",Ye]}),e.jsx("em",{children:Ue.channel})]})]}),e.jsxs("button",{type:"button",className:"fh-link",onClick:()=>r(i(oe)),children:["Browse other plans ",e.jsx(k,{name:"chevron-forward",size:13})]})]}):e.jsx("div",{className:"fh-out",children:e.jsx("button",{type:"button",className:"fh-out-cta",onClick:()=>z.open({tab:"signup",source:"home_signup_cta"}),children:"Sign up to start getting plans"})})}),e.jsxs(Z,{children:[e.jsx(M,{title:"Recommendations you might like",sub:"The most relevant things near you right now",action:m?"See all â":void 0,onAction:()=>{Ie("home_feed_header","/feed"),r(i("/family/feed"))}}),m?e.jsx("div",{className:"fh-recs",children:e.jsxs("div",{className:"hv2-feedwrap",children:[e.jsx("div",{className:"hv2-tabstrip",role:"tablist",children:S.map(a=>e.jsx("button",{type:"button",role:"tab","aria-selected":f===a.id,className:`hv2-tab${f===a.id?" is-on":""}`,onClick:()=>de(a.id),children:a.label},a.id))}),e.jsx("div",{className:"hv2-feedpanel",children:e.jsxs("div",{className:`hv2-scroll hv2-grid${pe?" hv2-tight":""}`,ref:P,children:[f==="all"?e.jsx("div",{className:"fh-mapcell",children:e.jsx(ae,{items:u,cityLabel:A,center:m&&v.home?v.home:re,homeNeighborhood:v.area||E||null,onOpen:()=>r(i("/family/map"))})}):null,W?Array.from({length:4},(a,o)=>e.jsx(Je,{},o)):ce(F.slice(0,15))]})})]})}):e.jsxs("div",{className:"fhc-gate",children:[e.jsx("p",{children:"Your recommendations are picked for your family: events, places and experiences near you."}),e.jsx("button",{type:"button",onClick:()=>z.open({tab:"signup",source:"home_signup_cta"}),children:"Sign up to see your recommendations"})]})]})]}),e.jsx(Q,{}),e.jsx(X,{})]}):e.jsxs("div",{style:{background:t.bg,minHeight:"100vh"},children:[e.jsx(K,{}),e.jsx($e,{topNews:null,whatsHot:null,families:null,postInterestRows:null,heroOnly:!0,hideChips:!0,hideNote:!0,heroImageDesktop:"/images/family/banner-desktop.png",heroImageMobile:"/images/family/banner-mobile.jpg",heroTitle:"A perfect personalized family plan, ",heroAccent:"every week",heroCta:"Sign up for plans",onSignUp:()=>z.open({tab:"signup",source:"home_signup_cta"})}),e.jsx(Ke,{onStart:()=>z.open({tab:"signup",source:"home_signup_cta"})}),e.jsx(Qe,{}),e.jsx(Q,{}),e.jsx(X,{})]})}
446export{ht as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.