1<!DOCTYPE html> 2<html lang="en" data-theme="light"> 3<head> 4 <meta charset="UTF-8"> 5<!-- This site is hosted on Netlify. Anyone can build and deploy a site 6 like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=e4ed2b9b-f798-4d56-94fd-afb7781bf538 7 Netlify hosting facts for this site: static/SSR served via Netlify Edge. --> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 <title>AIS Industry Feed â Academy of Intrinsic Studies</title> 10 <meta name="description" content="Curated news feed for the psychedelic therapy and facilitator training industry. Powered by Academy of Intrinsic Studies."> 11 <link rel="preconnect" href="https://fonts.googleapis.com"> 12 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 13 <link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300..700;1,9..40,300..700&family=Instrument+Serif:ital@0;1&display=swap" rel="stylesheet"> 14 <link rel="stylesheet" href="style.css"> 15</head> 16<body> 17 <!-- Header --> 18 <header class="site-header"> 19 <div class="header-inner"> 20 <div class="logo-area"> 21 <svg class="logo-icon" width="36" height="36" viewBox="0 0 36 36" fill="none" aria-label="Academy of Intrinsic Studies logo"> 22 <circle cx="18" cy="18" r="16" stroke="currentColor" stroke-width="1.5"/> 23 <circle cx="18" cy="18" r="10" stroke="currentColor" stroke-width="1.2" opacity="0.6"/> 24 <circle cx="18" cy="18" r="4" fill="currentColor" opacity="0.8"/> 25 <path d="M18 2 L18 8 M18 28 L18 34 M2 18 L8 18 M28 18 L34 18" stroke="currentColor" stroke-width="1" opacity="0.3"/> 26 </svg> 27 <div class="logo-text"> 28 <span class="logo-title">AIS Industry Feed</span> 29 <span class="logo-subtitle">Academy of Intrinsic Studies</span> 30 </div> 31 </div> 32 <div class="header-actions"> 33 <button class="filter-toggle" id="filterToggle" aria-label="Toggle filters"> 34 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 6h16M6 12h12M8 18h8"/></svg> 35 <span>Filters</span> 36 </button> 37 <button data-theme-toggle aria-label="Switch to dark mode"> 38 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg> 39 </button> 40 </div> 41 </div> 42 </header> 43 44 <!-- Category Filter Bar --> 45 <div class="filter-bar" id="filterBar"> 46 <div class="filter-inner"> 47 <button class="filter-chip active" data-category="all">All</button> 48 <button class="filter-chip" data-category="industry">Industry News</button> 49 <button class="filter-chip" data-category="research">Research & Science</button> 50 <button class="filter-chip" data-category="regulatory">Regulatory & Policy</button> 51 <button class="filter-chip" data-category="training">Training & Practice</button> 52 <button class="filter-chip" data-category="business">Business & Investment</button> 53 <button class="filter-chip" data-category="community">Community & Culture</button> 54 </div> 55 </div> 56 57 <!-- Main Content --> 58 <main class="main-content"> 59 <!-- Status Bar --> 60 <div class="status-bar" id="statusBar"> 61 <div class="status-text"> 62 <span class="loading-spinner" id="loadingSpinner"></span> 63 <span id="statusText">Loading feeds...</span> 64 </div> 65 <button class="refresh-btn" id="refreshBtn" title="Refresh feeds"> 66 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 4v6h-6M1 20v-6h6"/><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/></svg> 67 </button> 68 </div> 69 70 <!-- Feed Grid --> 71 <div class="feed-grid" id="feedGrid"> 72 <!-- Cards injected by JS --> 73 </div> 74 75 <!-- Empty State --> 76 <div class="empty-state" id="emptyState" style="display:none;"> 77 <p>No articles found for this category. Try selecting a different filter.</p> 78 </div> 79 </main> 80 81 <!-- Feed Sources Panel --> 82 <aside class="sources-panel" id="sourcesPanel"> 83 <div class="sources-inner"> 84 <h2 class="sources-title">Feed Sources</h2> 85 <p class="sources-desc">Curated RSS feeds for the legal psychedelic industry, organized by category. Use the OPML file below to import all feeds into your preferred reader.</p> 86 <a href="ais-feeds.opml" download class="opml-btn">
87 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg> 88 Download OPML File 89 </a> 90 <div class="sources-list" id="sourcesList"> 91 <!-- Populated by JS --> 92 </div> 93 </div> 94 </aside> 95 96 <!-- Footer --> 97 <footer class="site-footer"> 98 <div class="footer-inner"> 99 <p>Academy of Intrinsic Studies — Pioneering Psilocybin Facilitator Training in Oregon & Colorado</p> 100 <p class="footer-links"> 101 <a href="https://www.intrinsicstudies.com" target="_blank" rel="noopener">intrinsicstudies.com</a> 102 <span class="footer-sep">·</span> 103 <a href="mailto:[email protected]">Contact</a> 104 </p> 105 </div> 106 </footer> 107 108
108<script src="app.js"></script>
vendor: 1 bytes, line 108
108
109<script data-pplx-inline-edit> 110(function(){ 111 if(window===window.top)return; 112 function inlineAll(orig,clone){ 113 if(orig.nodeType!==1)return; 114 try{ 115 var cs=getComputedStyle(orig); 116 var t=''; 117 for(var i=0;i<cs.length;i++){t+=cs[i]+':'+cs.getPropertyValue(cs[i])+';';} 118 clone.style.cssText=t; 119 }catch(e){} 120 var oc=orig.children,cc=clone.children; 121 for(var j=0;j<oc.length&&j<cc.length;j++){inlineAll(oc[j],cc[j]);} 122 } 123 function stripExternal(clone){ 124 var imgs=clone.querySelectorAll('img'); 125 for(var i=0;i<imgs.length;i++){ 126 var s=imgs[i].getAttribute('src'); 127 if(s&&!s.startsWith('data:'))imgs[i].removeAttribute('src'); 128 } 129 var all=clone.querySelectorAll('*'); 130 for(var i=0;i<all.length;i++){ 131 var st=all[i].style.cssText; 132 if(st&&st.indexOf('url(')>=0){ 133 all[i].style.cssText=st.replace(/url\(["']?(?!data:)[^)"']*["']?\)/gi,'none'); 134 } 135 } 136 } 137 window.addEventListener('message',function(e){ 138 if(!e.data||e.data.type!=='INLINE_EDIT_CAPTURE_REQUEST')return; 139 var scrollX=window.scrollX||window.pageXOffset||0; 140 var scrollY=window.scrollY||window.pageYOffset||0; 141 var w=window.innerWidth,h=window.innerHeight; 142 try{ 143 var clone=document.documentElement.cloneNode(true); 144 var rm=clone.querySelectorAll('script,link[rel="stylesheet"],style'); 145 for(var i=0;i<rm.length;i++){rm[i].remove();} 146 inlineAll(document.documentElement,clone); 147 stripExternal(clone); 148 var html=new XMLSerializer().serializeToString(clone); 149 var svg='<svg xmlns="http://www.w3.org/2000/svg" width="'+w+'" height="'+h+'">' 150 +'<foreignObject width="100%" height="100%">' 151 +'<div xmlns="http://www.w3.org/1999/xhtml" style="width:'+w+'px;height:'+h+'px;overflow:hidden">' 152 +'<div style="transform:translate(-'+scrollX+'px,-'+scrollY+'px);transform-origin:top left">' 153 +html+'</div></div></foreignObject></svg>'; 154 var svgUrl='data:image/svg+xml;charset=utf-8,'+encodeURIComponent(svg); 155 var img=new Image(); 156 img.onload=function(){ 157 var c=document.createElement('canvas');c.width=w;c.height=h; 158 c.getContext('2d').drawImage(img,0,0); 159 window.parent.postMessage({type:'INLINE_EDIT_SCREENSHOT_RESULT',dataUrl:c.toDataURL('image/png'),scrollX:scrollX,scrollY:scrollY},'*'); 160 }; 161 img.onerror=function(){ 162 window.parent.postMessage({type:'INLINE_EDIT_SCREENSHOT_RESULT',dataUrl:null,scrollX:scrollX,scrollY:scrollY},'*'); 163 }; 164 img.src=svgUrl; 165 }catch(err){ 166 window.parent.postMessage({type:'INLINE_EDIT_SCREENSHOT_RESULT',dataUrl:null,scrollX:scrollX,scrollY:scrollY},'*'); 167 } 168 }); 169})(); 170</script>
170</body> 171</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.