<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en" />

<meta property="og:image" content="https://w2.chabad.org/media/images/1381/iGvP13817197.png" itemprop="image" width="150" height="150" />
<meta property="og:image:width" content="150" />
<meta property="og:image:height" content="150" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<meta name="keywords" content="What,is,LCLA" />
<meta name="title" content="What is LCLA - Lubavitch Chinuch Los Angeles" />
<meta property="og:type" content="website" />
<meta name="scope-aids" content="7438793-7438801-7498964" />
<meta name="article-keywords" content="2170-2898" />
<meta name="scope-aid" content="7438793" />
<meta name="scope-aid" content="7438801" />
<meta name="scope-aid" content="7498964" />
<meta name="article-keyword" content="2170" />
<meta name="article-keyword" content="2898" />
<meta property="og:url" content="https://www.lclaschools.com/templates/articlecco_cdo/aid/7498964/jewish/What-is-LCLA.htm" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:site" content="@chabad" />
<meta property="og:title" content="What is LCLA - Lubavitch Chinuch Los Angeles" /><link rel="canonical" href="https://www.lclaschools.com/templates/articlecco_cdo/aid/7498964/jewish/What-is-LCLA.htm" />
<link rel="icon" type="image/png" href="https://www.lclaschools.com/media/images/1381/iGvP13817197.png" />
<link rel="Stylesheet" href="/css/fonts/font-awesome/font-awesome-5.css?v=2D6ABDDB" id="kfont-awesome" type="text/css"/>
<link rel="Stylesheet" href="/css/DefaultGrid.css?v=A13D74E8" id="kgrid" type="text/css"/>
<link rel="Stylesheet" href="/css/Elements.css?v=7A8278DB" id="k6" type="text/css"/>
<link rel="Stylesheet" href="/css/vendor/ds/tokens/sites.css?v=BD54F46B" id="ksites-ds-css" type="text/css"/>
<link rel="Stylesheet" href="/css/vendor/ds/tokens/sites-light.css?v=EDE7242E" id="ksites-light-ds-css" type="text/css"/>
<link rel="Stylesheet" href="/css/new/main.css?v=220E279D" id="k7" type="text/css"/>
<link rel="Stylesheet" href="/css/global.css?v=27BD2E9E" id="k3" type="text/css"/>
<link rel="Stylesheet" href="/css/global-print.css?v=40836E98" id="k5" type="text/css" media="print"/>
<link rel="Stylesheet" href="/css/cco/home/widget-styles.css?v=A8AC7A58" id="k6" type="text/css"/>
<link rel="Stylesheet" href="/css/sites6/default-theme.css?v=546A0139" id="k" type="text/css"/>
<link rel="Stylesheet" href="/css/old/global.css?v=43DDBA77" id="k2898" type="text/css"/>
<link rel="Stylesheet" href="/css/bootstrap/grid.css?v=F4390F2B" id="kbootstrap4-grid" type="text/css"/>
<link rel="Stylesheet" href="/css/Library/reader-comments.css?v=8AB57D79" id="kCommentsStylesheet" type="text/css"/>
<link rel="Stylesheet" href="/css/inline/BookInfo.css?v=3D052243" id="kBookInfoCss" type="text/css"/>
<!--[if lte IE 8]> <link rel="Stylesheet" href="/css/global-ie.css?v=807ACD6C" id="k4" type="text/css"/> <![endif]-->
<script>$q=[];$j=function(f){$q.push(f);}</script>
	
<title>
	What is LCLA - Lubavitch Chinuch Los Angeles
</title>
	



<script>
	window.dataLayer = window.dataLayer || [];
	dataLayer.push({"event":"datalayer-initialized","page":{"numberOfComments":0,"publicationDate":"2026-09-04","primaryArticleId":7498964,"title":"","author":"","authorId":0,"contentLevel1":"My Site","contentLevel2":"What is LCLA","siteName":"Lubavitch Chinuch Los Angeles"},"time":{"upcomingHoliday":"Chanukah","daysToUpcomingHoliday":33,"hebrewDate":"5787-08-22"}});
		dataLayer.push({ 'articleHierarchy': '-7438793-7438801-7498964-', 'keywords': '-k2898-k2170-', 'k': '-7438793-7438801-7498964--k2898-k2170-' });
	
</script>
<script>

(function(c,h,a,b,a,d){c[a]=c[a]||[];c[a].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=h.getElementsByTagName(b)[0],
j=h.createElement(b);j.async=true;
j.src='https://w6.chabad.org/mitzvah-tank.js';f.parentNode.insertBefore(j,f);
})(window,document,0,'script','dataLayer');</script>

	<!-- Start of StatCounter Code -->
	<script type="text/javascript">
	var sc_project = 13351204;var sc_partition = 83;var sc_invisible = 1;var sc_remove_link=1;var sc_security = "593f1fdf";var sc_https = 1;
	</script>
	<script type="text/javascript" src="https://secure.statcounter.com/counter/counter_xhtml.js" defer async></script>
	<noscript><img src="//c84.statcounter.com/counter.php?sc_project=13351204&amp;java=0&amp;security=593f1fdf&amp;invisible=1" border="0" /> </noscript>
	<!-- End of StatCounter Code -->


<style>
.widget-4.icon.custom{display:block!important;width:100%!important;box-sizing:border-box!important;margin:0!important;padding:34px 4% 38px!important;background:#f1f1f1!important}.widget-4.icon.custom .wrapper{max-width:1050px!important;margin:0 auto!important}.widget-4.icon.custom .widget_header{text-align:center!important;margin-bottom:24px!important}.widget-4.icon.custom .widget_content{display:flex!important;flex-wrap:wrap!important;justify-content:center!important;align-items:flex-start!important;gap:28px 0!important}.widget-4.icon.custom .item{float:none!important;display:flex!important;flex:0 0 25%!important;min-width:190px!important;box-sizing:border-box!important;flex-direction:column!important;align-items:center!important;text-align:center!important;margin:0!important;padding:0 12px!important}.widget-4.icon.custom .separator{display:none!important}.widget-4.icon.custom .icon{height:100px!important;display:flex!important;align-items:center!important;justify-content:center!important}.widget-4.icon.custom .icon img{width:90px!important;height:90px!important;object-fit:contain!important;filter:none!important;-webkit-filter:none!important}.widget-4.icon.custom .title{margin-top:12px!important;min-height:44px!important}.widget-4.promo_slider .cycle-directionNav{display:none!important}#lcla-happening-carousel{width:100%;height:430px;border:0;display:block}#lcla-school-footer{background:#f4f4f4;text-align:center;padding:34px 20px 28px;color:#444;font-family:Arial,sans-serif}#lcla-school-footer .lcla-title{font-size:30px;font-weight:700;color:#f5aa17;margin-bottom:18px}#lcla-school-footer .schools{display:flex;justify-content:center;max-width:900px;margin:auto;flex-wrap:wrap}#lcla-school-footer .school{flex:1 1 320px;padding:4px 30px;box-sizing:border-box}#lcla-school-footer .school+.school{border-left:1px solid #aaa}#lcla-school-footer h3{color:#3978a8;margin:0 0 8px;font-size:21px}#lcla-school-footer p{margin:4px 0;line-height:1.5}#lcla-school-footer a{color:#3978a8;text-decoration:none}#lcla-school-footer .affiliates{margin-top:24px;font-size:13px;letter-spacing:1px}#lcla-school-footer .affiliate-links{margin-top:10px;display:flex;justify-content:center;gap:24px;flex-wrap:wrap;font-weight:700}@media(max-width:850px){.widget-4.icon.custom .item{flex-basis:33.333%!important}}@media(max-width:700px){#lcla-school-footer .school+.school{border-left:0;border-top:1px solid #aaa;margin-top:18px;padding-top:20px}}@media(max-width:600px){.widget-4.icon.custom .item{flex-basis:50%!important;min-width:0!important}}
</style>
<script>(function(){function r(){var h=[].slice.call(document.querySelectorAll('h5')).find(function(x){return /Happening at LCLA/i.test(x.textContent||'')});if(h){var w=h.closest('.widget-1'),c=w&&w.querySelector('.widget_content');if(c&&!document.getElementById('lcla-happening-carousel')){var f=document.createElement('iframe');f.id='lcla-happening-carousel';f.title='Happening at LCLA video carousel';f.loading='lazy';f.allow='autoplay; fullscreen';f.src='https://my.walls.io/w47ge?token=6447df73f185d1ecf2b7ab98000c60d68b1ccdd8&nobackground=1&show_header=0&show_post_info=1&accessibility=1&layout=carousel';var m=c.querySelector('.readMore');c.insertBefore(f,m||null)}}if(!document.getElementById('lcla-school-footer')){var e=document.createElement('section');e.id='lcla-school-footer';e.setAttribute('aria-label','LCLA school contact information');e.innerHTML='<div class="lcla-title">LCLA</div><div class="schools"><div class="school"><h3>Bais Chaya Mushka</h3><p>9051 West Pico Boulevard</p><p>Los Angeles, California 90035</p><p><a href="tel:+13108598840">310-859-8840</a></p></div><div class="school"><h3>Cheder Menachem</h3><p>1606 South La Cienega Boulevard</p><p>Los Angeles, California 90035</p><p><a href="tel:+13106231470">310-623-1470</a></p></div></div><div class="affiliates">AFFILIATED WITH<div class="affiliate-links"><a href="https://www.bjela.org/" target="_blank" rel="noopener">Builders of Jewish Education</a><a href="https://www.jewishla.org/" target="_blank" rel="noopener">Jewish Federation Los Angeles</a></div></div>';var o=document.querySelector('#footer,.footer,footer');(o&&o.parentNode?o.parentNode:document.body).insertBefore(e,o||null)}}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',r);else r();setTimeout(r,1200)})();</script></head>
<body class="lang_en dir_ltr cco_body sites-article">

	


	
	<div id="PrintCreditHeader" class="show_for_print">
Printed from<b>lclaschools.com</b>
</div>
	<div id="header">
		<div class="wrapper header-wrapper">
			
			


<div id="header_container" class="header_container">
	<div class="clearfix links">
		<img src="https://w2.chabad.org/images/global/spacer.gif" width="15" height="8" class="baruch_hashem" />
		<div class="float_right">
			
			
				<div class="topBarLink cco_topbar_link ask_the_rabbi_link">
					<a href="/asktherabbi/default_cdo/jewish/Ask-the-Rabbi.htm">Ask the Rabbi</a>
				</div>
				
			
			
				<div class="topBarLink cco_topbar_link contact_link">
					<a href="/tools/feedback.asp">Contact</a>
				</div>
			
			
		</div>
		<div class="float_left">
			
				<div class="topBarLink cco_topbar_link home_link">
					<a href="/">Home</a>
				</div>
				
			
			
			
			
		</div>
	</div>
	<div class="break_floats"></div>
</div>

			<div class="clearfix branding-search">
				<div id="header_branding" class="no_outline  logo">
					<div class="g260 no_margin cco_search_header float_right">
						

<div class="co_search_form margin05">
	<form name="MainSearchForm" id="MainSearchForm" method="get" action="/search/results.asp" class="clearfix" onsubmit="return Co.Forms.Validation.Validate(this, null, {markAsSubmitted:false});">
		<div class="co_global_submit"><button type="submit" class="button" value=" "><span> </span></button></div>
		

<div class="co_global_input_container clearfix">
	<input id="topAreaTopSearch_search" required="true" autocomplete="nope" placeholder="Search" value="" class="co_global_input co_search js-search-field active js-mirrored-input" onblur="this.form.className = this.form.className.replace(/\sactive/gi, &#39;&#39;);" name="searchWord" onfocus="this.form.className+=&#39; active&#39;;" type="text" display_name="Search Field" min_length="3"></input>
</div>

			
		
		
	
		<div id="topAreaTopSearch_search_wrapper" class="co_field_options" style="display:none;">
			<div class="co_absolute_wraper" id="co_absolute_wraper" style="">
				<div class="inner">
					<div id="topAreaTopSearch_search_container" class="co_field_options_suggestions"></div>
					<div class="break_floats"></div>
					
				</div>
			</div>
		</div>
	</form>
</div>
					</div>
					
						<div class="float_left site-logo-wrapper"><a href="/"><img src="https://w2.chabad.org/media/images/1381/iGvP13817197.png" width="100" height="100" border="0"  /></a></div>
					
					<a href="/default.asp" title="Lubavitch Chinuch Los Angeles" class="site_title">Lubavitch Chinuch Los Angeles<span class="site_subtitle clearfix"> </span></a>
				</div>
			</div>
			
			
			<button type='button' class='cs-mobile-menu-open js-mobile-menu-open'><i class='fa fa-bars'></i></button>
			<div class="site-nav-wrapper">
				<script>
var primaryNavigationVersion = "639291762829008689";
</script>
<div id="co_menu_container_wrapper" class="co_menu_container_wrapper " data-list-name="primary navigation"> 
<div class="co_menu_container clearfix" id="co_menu_container">
<a class="menu_logo" href="/"></a>
<table cellpadding="0" cellspacing="0" border="0" class="main_menu_container first global">
<tr id="tabContentMain" tab="Main" style="display:table-row;">
<td class="co_menu_item home" data-menu-level="1"><a href="/default.asp"><img class="co_menu_home_image" src="https://w2.chabad.org/images/global/spacer.gif" width="28" height="60" border="0" onmouseover="this.className += ' hover';" onmouseout="this.className=this.className.replace(/\s?hover/gi, '');" /></a></td>
<td class="co_menu_item_divider"><img src="https://w2.chabad.org/images/global/spacer.gif" width="2" height="1" border="0" /></td>
<td class="co_menu_item" aid="7543269" data-menu-level="1" onmouseover="this.className += ' hover';" onmouseout="this.className = this.className.replace(/\shover/gi, '');" >
<div class="co_menu_content"><div class="co_submenu_container" style="width:auto;display:none;clip:rect(auto auto 0px auto);">
<div class="wrapper">
<div class="column_wrapper clearfix" style="height:100%;">
</div>
<div class="break_floats"></div></div></div></div><span class="parent"><div><a href="/templates/articlecco_cdo/aid/7543269/jewish/Our-Videos.htm" class="parent">Our<br />Videos</a></div></span><a href="/templates/articlecco_cdo/aid/7543269/jewish/Our-Videos.htm" class="bg_extension js-parent-menu-link" data-aid="7543269"></a></td>
<td class="co_menu_item_divider"><img src="https://w2.chabad.org/images/global/spacer.gif" width="2" height="1" border="0" /></td>
<td class="co_menu_item" aid="7498850" data-menu-level="1" onmouseover="this.className += ' hover';" onmouseout="this.className = this.className.replace(/\shover/gi, '');" >
<div class="co_menu_content"><div class="co_submenu_container" style="width:auto;display:none;clip:rect(auto auto 0px auto);">
<div class="wrapper">
<div class="column_wrapper clearfix" style="height:100%;">
</div>
<div class="break_floats"></div></div></div></div><span class="parent"><div><a href="/7498964" class="parent">What&nbsp;is<br />LCLA</a></div></span><a href="/7498964" class="bg_extension js-parent-menu-link" data-aid="7498850"></a></td>
<td class="co_menu_item_divider"><img src="https://w2.chabad.org/images/global/spacer.gif" width="2" height="1" border="0" /></td>
<td class="co_menu_item arrow multi_level" aid="7498868" data-menu-level="1" onmouseover='Co.MainNavigation.Show(event, this);' onmouseout='Co.MainNavigation.Hide(event, this);' >
<div class="co_menu_content"><div class="co_submenu_container" style="width:auto;display:none;clip:rect(auto auto 0px auto);">
<div class="wrapper">
<div class="column_wrapper clearfix" style="height:100%;">
<div class="co_column">
<a href="https://www.lclaschools.com/7501766" class="item empty" id="menu_item3-1" data-menu-level="2" data-aid="7498880">
<img src="https://w2.chabad.org/images/global/spacer.gif" width="5" height="10" alt="" border="0" class="arrow off" />
<span>School Calendars</span>
</a>
<a href="https://chedermenachem.geniuseducation.com/#/parent" class="item empty" id="menu_item3-2" data-menu-level="2" data-aid="7498879">
<img src="https://w2.chabad.org/images/global/spacer.gif" width="5" height="10" alt="" border="0" class="arrow off" />
<span>Cheder Parent Portal</span>
</a>
<a href="https://bcm.geniuseducation.com/#/parent" class="item empty" id="menu_item3-3" data-menu-level="2" data-aid="7498881">
<img src="https://w2.chabad.org/images/global/spacer.gif" width="5" height="10" alt="" border="0" class="arrow off" />
<span>BCM Parent Portal</span>
</a>
</div>
<div id="menu_child3-1" class="menu_child empty selected" style="width:174px;">
<table cellpadding="0" cellspacing="0" border="0" style="height:100%;">
<tr class="wrapper clearfix">
<td class="co_column"><div class="column_left_wrapper">
<a href="" class="child_item default" data-menu-level="3" data-aid="0"><span></span></a>
</div></td>
</tr>
</table>
</div>
<div id="menu_child3-2" class="menu_child empty" style="width:174px;">
<table cellpadding="0" cellspacing="0" border="0" style="height:100%;">
<tr class="wrapper clearfix">
<td class="co_column"><div class="column_left_wrapper">
<a href="" class="child_item default" data-menu-level="3" data-aid="0"><span></span></a>
</div></td>
</tr>
</table>
</div>
<div id="menu_child3-3" class="menu_child empty" style="width:174px;">
<table cellpadding="0" cellspacing="0" border="0" style="height:100%;">
<tr class="wrapper clearfix">
<td class="co_column"><div class="column_left_wrapper">
<a href="" class="child_item default" data-menu-level="3" data-aid="0"><span></span></a>
</div></td>
</tr>
</table>
</div>
</div>
<div class="break_floats"></div></div></div></div><span class="parent"><img src="https://w2.chabad.org/images/global/spacer.gif" width="12" height="6" border="0" vspace="2" /><div><a href="/7498967" class="parent">Parents</a></div></span><a href="/7498967" class="bg_extension js-parent-menu-link" data-aid="7498868"></a></td>
<td class="co_menu_item_divider"><img src="https://w2.chabad.org/images/global/spacer.gif" width="2" height="1" border="0" /></td>
<td class="co_menu_item arrow multi_level" aid="7498870" data-menu-level="1" onmouseover='Co.MainNavigation.Show(event, this);' onmouseout='Co.MainNavigation.Hide(event, this);' >
<div class="co_menu_content"><div class="co_submenu_container" style="width:auto;display:none;clip:rect(auto auto 0px auto);">
<div class="wrapper">
<div class="column_wrapper clearfix" style="height:100%;">
<div class="co_column">
<a href="https://www.chedermenachem.com/templates/blog/default_cdo/aid/5952071/jewish/Building-Chinuch-Up.htm" class="item empty" id="menu_item4-1" data-menu-level="2" data-aid="7498883">
<img src="https://w2.chabad.org/images/global/spacer.gif" width="5" height="10" alt="" border="0" class="arrow off" />
<span>Blog</span>
</a>
<a href="https://buildingchinuch.com" class="item empty" id="menu_item4-2" data-menu-level="2" data-aid="7498884">
<img src="https://w2.chabad.org/images/global/spacer.gif" width="5" height="10" alt="" border="0" class="arrow off" />
<span>Building Chinuch Campaign</span>
</a>
</div>
<div id="menu_child4-1" class="menu_child empty selected" style="width:174px;">
<table cellpadding="0" cellspacing="0" border="0" style="height:100%;">
<tr class="wrapper clearfix">
<td class="co_column"><div class="column_left_wrapper">
<a href="" class="child_item default" data-menu-level="3" data-aid="0"><span></span></a>
</div></td>
</tr>
</table>
</div>
<div id="menu_child4-2" class="menu_child empty" style="width:174px;">
<table cellpadding="0" cellspacing="0" border="0" style="height:100%;">
<tr class="wrapper clearfix">
<td class="co_column"><div class="column_left_wrapper">
<a href="" class="child_item default" data-menu-level="3" data-aid="0"><span></span></a>
</div></td>
</tr>
</table>
</div>
</div>
<div class="break_floats"></div></div></div></div><span class="parent"><img src="https://w2.chabad.org/images/global/spacer.gif" width="12" height="6" border="0" vspace="2" /><div><a href="https://buildingchinuch.com" class="parent">Building<br />Chinuch</a></div></span><a href="https://buildingchinuch.com" class="bg_extension js-parent-menu-link" data-aid="7498870"></a></td>
<td class="co_menu_item_divider"><img src="https://w2.chabad.org/images/global/spacer.gif" width="2" height="1" border="0" /></td>
<td class="co_menu_item arrow multi_level" aid="7498875" data-menu-level="1" onmouseover='Co.MainNavigation.Show(event, this);' onmouseout='Co.MainNavigation.Hide(event, this);' >
<div class="co_menu_content"><div class="co_submenu_container" style="width:auto;display:none;clip:rect(auto auto 0px auto);">
<div class="wrapper">
<div class="column_wrapper clearfix" style="height:100%;">
<div class="co_column">
<a href="/templates/articlecco_cdo/aid/7502716/jewish/Prospective-Family-Form-202728.htm" class="item empty" id="menu_item5-1" data-menu-level="2" data-aid="7502716">
<img src="https://w2.chabad.org/images/global/spacer.gif" width="5" height="10" alt="" border="0" class="arrow off" />
<span>Prospective Family Form 2027–28</span>
</a>
</div>
<div id="menu_child5-1" class="menu_child empty selected" style="width:174px;">
<table cellpadding="0" cellspacing="0" border="0" style="height:100%;">
<tr class="wrapper clearfix">
<td class="co_column"><div class="column_left_wrapper">
<a href="" class="child_item default" data-menu-level="3" data-aid="0"><span></span></a>
</div></td>
</tr>
</table>
</div>
</div>
<div class="break_floats"></div></div></div></div><span class="parent"><img src="https://w2.chabad.org/images/global/spacer.gif" width="12" height="6" border="0" vspace="2" /><div><a href="/7499001" class="parent">Admissions</a></div></span><a href="/7499001" class="bg_extension js-parent-menu-link" data-aid="7498875"></a></td>
<td class="co_menu_item_divider"><img src="https://w2.chabad.org/images/global/spacer.gif" width="2" height="1" border="0" /></td>
<td class="co_menu_item donate_link" aid="0" data-menu-level="1" onmouseover="this.className += ' hover';" onmouseout="this.className = this.className.replace(/\shover/gi, '');" >
<div class="co_menu_content"><div class="co_submenu_container" style="width:auto;display:none;clip:rect(auto auto 0px auto);">
<div class="wrapper">
<div class="column_wrapper clearfix" style="height:100%;">
</div>
<div class="break_floats"></div></div></div></div><span class="parent"><div><a href="/4970020" class="parent">Donate</a></div></span><a href="/4970020" class="bg_extension js-parent-menu-link" data-aid="0"></a></td>
</tr>
</table>
</div>
</div>
<!-- END CACHE -->
				<div class="mobile-menu-bottom-links">
					
					<a href="/search">Search</a>
					
						<a href="/tools/feedback.asp">Contact</a>
					
				</div>
			</div>
		</div>
	</div>
	<div id="content">
		<div id="BodyContainer" class="wrapper">
			<div class="body_wrapper  no-hero-image clearfix">
				
	<div class="co_content_container clearfix local_content" id="co_content_container">
		<div class="clearfix">
			
			
			
			<div class="clearfix bh mobile-only align_right">ב"ה</div>
			
				<div class="master-content-wrapper g960" >
					

<header class="article-header cf ">
	
	
			<h1 class="article-header__title js-article-title js-page-title">What is LCLA</h1>
		
			<div>
				
			</div>
		
</header>
				</div>
			
			<div class="body_wrapper clearfix co_body">
				<div class="g700" id="co_body_container">
					
					<div id="ContentBody">
						
						
							<div class="content-area-parent no_margin">
								
	<div id="cco_body">
		<div class="content g700 no_margin no_overflow" id="co_content_container">
			
			
	

	<article class="content js-content" itemscope itemtype="http://schema.org/Article">
	



<meta itemprop="mainEntityOfPage headline name" content="" />

<meta itemprop="image" content="" />


<meta itemprop="uploadDate" content="2026-09-04T16:43:00" />
<span itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
	<meta itemprop="name" content="Lubavitch Chinuch Los Angeles" />
	<meta itemprop="brand" content="Lubavitch Chinuch Los Angeles" />
	<span itemprop="logo" itemscope itemtype="http://schema.org/ImageObject">
		<meta itemprop="url" content="https://w2.chabad.org/media/images/1381/iGvP13817197.png" />
		<meta itemprop="height" content="150" />
		<meta itemprop="width" content="150" />
	</span>
</span>
<meta itemprop="datePublished" content="2026-09-04T16:43:00" />
			<div itemprop="articleBody">
				<co:body xmlns:co="www1.chabadonline.com/alpha1" xmlns:ext="urn:xslt-extensions">
  <div class="co_body article-body cf">
<div style="max-width:960px;margin:0 auto;padding:20px 12px;font-family:Arial,sans-serif;color:#263238;line-height:1.7;">
<h1 style="text-align:center;color:#173b57;margin-bottom:18px;">What is LCLA?</h1>

<p style="font-size:18px;text-align:center;max-width:850px;margin:0 auto 36px;">Lubavitch Chinuch Los Angeles (LCLA) is the umbrella organization uniting Cheder Menachem and Bais Chaya Mushka—two beloved schools sharing one sacred mission: to provide every child with an outstanding Torah, Chassidic, and general education in a warm and nurturing environment. In 2019, the board of Cheder Menachem accepted responsibility for Bais Chaya Mushka, beginning a thoughtful process of bringing the schools together. Over the following years, their leadership, administration, resources, and vision became increasingly integrated. In 2026, this partnership entered its next chapter with the creation of the LCLA identity, allowing both schools to preserve their unique character while working as one stronger organization. By streamlining resources, expanding capabilities, coordinating fundraising, and sharing expertise, LCLA is better positioned to serve our students, support our families, strengthen our educators, and build a vibrant future for Chabad chinuch in Los Angeles.</p>

<div style="display:flex;flex-wrap:wrap;gap:28px;justify-content:center;">
<div style="flex:1 1 360px;max-width:430px;text-align:center;border:1px solid #d9e2e8;border-radius:12px;padding:28px;box-shadow:0 3px 14px rgba(0,0,0,.08);"><section><img alt="Cheder Menachem logo" src="https://lh3.googleusercontent.com/d/110D1gIyOVz3os46FX3GM9i_gfbs10bnh=w800" style="width:240px;height:180px;object-fit:contain;margin-bottom:14px;">
</section><section><h2 style="color:#173b57;margin:5px 0 14px;">Cheder Menachem</h2>

<p style="margin:5px 0;">1606 South La Cienega Boulevard<br>
Los Angeles, CA 90035</p>

<p style="margin:5px 0;">
<a href="mailto:office@chedermenachem.com">office@chedermenachem.com</a></p>

<p style="margin:5px 0;">
<a href="tel:3106231470">310-623-1470</a></p>
</section></div>

<div style="flex:1 1 360px;max-width:430px;text-align:center;border:1px solid #d9e2e8;border-radius:12px;padding:28px;box-shadow:0 3px 14px rgba(0,0,0,.08);"><img alt="Bais Chaya Mushka logo" src="https://lh3.googleusercontent.com/d/190E_Bdm6i3tKc_eHJv8bVoykPnr8vmHE=w800" style="width:240px;height:180px;object-fit:contain;margin-bottom:14px;">
<h2 style="color:#173b57;margin:5px 0 14px;">Bais Chaya Mushka</h2>

<p style="margin:5px 0;">9051 W. Pico Boulevard<br>
Los Angeles, CA 90035</p>

<p style="margin:5px 0;">
<a href="mailto:office@bcmla.org">office@bcmla.org</a></p>

<p style="margin:5px 0;">
<a href="tel:3108598840">310-859-8840</a></p>
</div>
</div>
</div>

</div>
</co:body>
			</div>
			

			<div class="break_floats"></div>
			
	<div class="break_floats"></div>
	

<div class="content-footer">
	
	
	
	
	
	
</div>
	</article>

		</div>
	</div>
</div>
						
						<div class="break_floats"></div>
						
					</div>
				</div>
				
				
					<div class="ads g260" id="co_ads_container">
						
	



<div class="sidebar-local-navigation cf" id="">

<meta class="js-desktop-local-nav" data-base-class="co_local_menu" />

	<div class="co_local_menu local_content js-local-nav" data-list-name="local navigation">
		
			
			&nbsp;
			
	<div id="LocalNavigationQuickLinks" class="clearfix secondary_navigation local-navigation-quick-links container padding">
		<div class="header small_bottom_padding">
			<div>Quick Links</div>
		</div>

		
				<div class="item ">
					<a href="/tools/feedback.asp"><span><span>Contact</span></span></a>
				</div>
			
				<div class="item ">
					<a href="/4970020"><span><span>Donate</span></span></a>
				</div>
			
	</div>

		
	</div>
</div>


	

					</div>
				
				
			</div>
			
			
		</div>
		
		<aside class="page-tools-sidebar js-page-tools-sidebar hide_for_print">
<div class="page-tools js-page-tools-menu">
<div class="page-tools__section page-tools__section--share">
<a class="page-tools__tool js-share-popup page-tools__tool--facebook" data-share-url="https://www.facebook.com/dialog/share?app_id=188669250943&amp;display=popup&amp;href=https%3a%2f%2fwww.lclaschools.com%2ftemplates%2farticlecco_cdo%2faid%2f7498964%2fjewish%2fWhat-is-LCLA.htm%23utm_medium%3dpage_tools%26utm_content%3ddesktop%26utm_source%3dFB">
				<i class="fa fa-facebook"></i>
			</a>
<a class="page-tools__tool js-share-popup page-tools__tool--twitter" data-share-url="https://twitter.com/intent/tweet?text=What+is+LCLA+-+Lubavitch+Chinuch+Los+Angeles&amp;url=https%3a%2f%2fwww.lclaschools.com%2ftemplates%2farticlecco_cdo%2faid%2f7498964%2fjewish%2fWhat-is-LCLA.htm%23utm_medium%3dpage_tools%26utm_content%3ddesktop%26utm_source%3dtwitter&amp;via=Chabad">
				<i class="fa fa-twitter"></i>
			</a>
<a class="page-tools__tool js-share-popup page-tools__tool--whatsapp d-lg-none js-share-whatsapp" data-share-url="whatsapp://send?text=What+is+LCLA+-+Lubavitch+Chinuch+Los+Angeles https%3a%2f%2fwww.lclaschools.com%2ftemplates%2farticlecco_cdo%2faid%2f7498964%2fjewish%2fWhat-is-LCLA.htm%23utm_medium%3dpage_tools%26utm_content%3ddesktop%26utm_source%3dwhatsapp">
				<i class="fa fa-whatsapp">
					<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" fill="#128c7e" width="1em" height="1em"><path d="M25 2C12.318 2 2 12.318 2 25c0 3.96 1.023 7.854 2.963 11.29L2.037 46.73c-.096.343-.003.711.245.966.191.197.451.304.718.304.08 0 .161-.01.24-.029l10.896-2.699C17.463 47.058 21.21 48 25 48c12.682 0 23-10.318 23-23S37.682 2 25 2zm11.57 31.116c-.492 1.362-2.852 2.605-3.986 2.772-1.018.149-2.306.213-3.72-.231-.857-.27-1.957-.628-3.366-1.229-5.923-2.526-9.791-8.415-10.087-8.804-.295-.389-2.411-3.161-2.411-6.03s1.525-4.28 2.067-4.864c.542-.584 1.181-.73 1.575-.73s.787.005 1.132.021c.363.018.85-.137 1.329 1.001.492 1.168 1.673 4.037 1.819 4.33.148.292.246.633.05 1.022s-.294.632-.59.973-.62.76-.886 1.022c-.296.291-.603.606-.259 1.19s1.529 2.493 3.285 4.039c2.255 1.986 4.158 2.602 4.748 2.894.59.292.935.243 1.279-.146.344-.39 1.476-1.703 1.869-2.286s.787-.487 1.329-.292c.542.194 3.445 1.604 4.035 1.896.59.292.984.438 1.132.681.148.242.148 1.41-.344 2.771z"/></svg>
				</i>
			</a>
<a class="page-tools__tool js-share-popup page-tools__tool--pinterest d-none d-lg-block" data-share-url="http://pinterest.com/pin/create/button/?url=https%3a%2f%2fwww.lclaschools.com%2ftemplates%2farticlecco_cdo%2faid%2f7498964%2fjewish%2fWhat-is-LCLA.htm%23utm_medium%3dpage_tools%26utm_content%3ddesktop%26utm_source%3dpinterest&amp;description=What+is+LCLA+-+Lubavitch+Chinuch+Los+Angeles">
				<i class="fa fa-pinterest"></i>
			</a>
<a class="page-tools__tool" onclick="showEmailLayer(this);">
<i class="fa fa-envelope"></i>
</a>
</div>
<div class="page-tools__section page-tools__section--other js-page-tool-other">
<div class="page-tools__tool popover-parent d-lg-block">
<div class="popover popover--right align_left nowrap">
<div class="popover__content">
<label class="bold bottom_margin block">
Print Options:
</label>
<form class="vcenter" name="print-form" onsubmit="coPrint(event, 7438801);return false;">
<div>
<label><input type="checkbox" name="print-green"><span title="Save paper and ink">Print without images <i class="fa fa-leaf text-green"></i></span></label>
</div>
<br/>
<div class="center">
<button class="co-button page-tools__print-button">Print</button>
</div>
</form>
</div>
</div>
<i class="fa fa-print"></i>
</div>
</div>
</div>
<div class="js-fab-wrapper fab-wrapper">
<div class="fab">
<i class="fab-icon"></i>
</div>
</div>
</aside>
<!-- END CACHE -->
	</div>

				<div class="break_floats"></div>
			</div>
		</div>
	</div>
	<div id="footer">
		
	

		<div class="wrapper body_container">
			
				<div class="g960 footer_family_text bottom_padding">
					
		<div class="footer_container footer_text copyright_text">
			<div class="bottom_padding clear_float">
				<img class="footer_hr" src="https://w2.chabad.org/images/global/spacer.gif" vspace="12" width="100%" height="1" /><br />
				
				<div class="footer_inner_container clearfix">
					

					



	<div class="footer3">
		<span class="footer-title" >Lubavitch Chinuch Los Angeles</span>
		<div class="footer-address">
			<span class="footer-street"> </span>
			<span class="footer-city-state">,  </span>
		</div>
			
	</div>
	<img src="https://w2.chabad.org/images/global/spacer.gif" width="1" height="6" border="0" /><br />



Powered by <a href="https://www.chabad.org/" target="_new" class="">Chabad.org</a> &copy; 1993-2026 <a href="/4026210" target="_blank" class="privacy-link">Privacy Policy</a>




					
				</div>
			</div>
		</div>
	
				</div>
			
		</div>
	</div>

	
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/os/jquery-latest.min.js?v=278824AF"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/co/dist/CoLib.js?v=6777A16C"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/WebComponents/bundles/magen-cdo-global.js?v=C73B7DD6"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/templates/sites6.js?v=E04072E1"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/custom/primarynavigation.js?v=76ABCD73"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/modules/pagetools.js?v=930B07AB"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/custom/BetaFeedback.js?v=2A22CA16"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/custom/multimedia/infolayer.js?v=ED1B8531"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/article/comments/reply-form-controller.js?v=A9327DC7"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/custom/commentsloader.js?v=AD6AAB79"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/custom/subscribeprompt.js?v=86D84DC2"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/custom/deprecated.js?v=D506A83E"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/OverrideJSDocumentWrite.js?v=9A0227AA"></script><script>$j = $j.fn ? $j : jQuery;$j(()=>{$q.forEach(f=>{try{f.call(window);}catch(ex){console.error(ex);}});})</script>
	

<script  language="javascript" type="text/javascript"> Co.Settings      = {CacheClassName:'js-cache-default',MosadName:'Lubavitch Chinuch Los Angeles'}; Co.ArticleId     = '7498964';Co.SectionId     = 7498964;Co.PartnerSiteId = 0;Co.SiteId        = 12751;Co.IsMobilePage  = false;Co.IsResponsive  = false;Co.DbDomain      = 'lclaschools.com';Co.LanguageCode  = '';Co.LoginStatus   = 'None';</script>

    
<!--
  VIDEO WALL — HOMEPAGE  (portrait tiles, latest N only)
  ======================================================
  Paste into the homepage's Custom Code slot.
  Same script body as video-wall-page.html — only the CFG block differs.

  SET BEFORE GOING LIVE:
    CFG.endpoint  -> your Apps Script /exec URL
    CFG.allUrl    -> the URL of your "all videos" page (or '' to hide the button)
-->

<style type="text/css">/*<![CDATA[*/

.vw-wall{--vw-accent:#1573be;--vw-ink:#181c14;--vw-muted:#6b7280;--vw-line:#e5e7eb;
  display:block !important;width:100% !important;max-width:1240px !important;
  margin:0 auto 48px !important;padding:40px 16px 0 !important;box-sizing:border-box !important;
  font-family:inherit !important}
.vw-wall *{box-sizing:border-box !important}

.vw-head{text-align:center !important;margin:0 0 26px !important}
.vw-head h2{margin:0 0 8px !important;padding:0 !important;font-size:clamp(26px,4vw,40px) !important;
  line-height:1.15 !important;font-weight:700 !important;color:var(--vw-ink) !important}
.vw-head p{margin:0 !important;padding:0 !important;font-size:16px !important;color:var(--vw-muted) !important}

/* Editable heading pasted into the page body (archive page). Styled to match
   .vw-head, but it is ordinary page content the client can edit in CKEditor. */
.vw-intro{max-width:1240px !important;margin:0 auto !important;padding:40px 16px 0 !important;
  text-align:center !important;box-sizing:border-box !important}
.vw-intro h2{margin:0 0 8px !important;padding:0 !important;font-size:clamp(26px,4vw,40px) !important;
  line-height:1.15 !important;font-weight:700 !important;color:#181c14 !important}
.vw-intro p{margin:0 !important;padding:0 !important;font-size:16px !important;color:#6b7280 !important}
.vw-intro + .vw-wall,.vw-intro ~ .vw-wall{padding-top:22px !important}

/* ---- tools (archive page only; inert on the homepage) ---- */
.vw-tools{display:flex !important;flex-wrap:wrap !important;gap:12px !important;
  align-items:center !important;justify-content:center !important;margin:0 0 24px !important}
.vw-search{flex:0 1 340px !important;min-width:200px !important;padding:11px 16px !important;
  font-size:15px !important;font-family:inherit !important;border:1px solid var(--vw-line) !important;
  border-radius:999px !important;outline:none !important;background:#fff !important;
  color:var(--vw-ink) !important}
.vw-search:focus{border-color:var(--vw-accent) !important;box-shadow:0 0 0 3px rgba(0,0,0,.06) !important}
.vw-chips{display:flex !important;flex-wrap:wrap !important;gap:7px !important;justify-content:center !important}
.vw-chip{padding:7px 14px !important;border:1px solid var(--vw-line) !important;border-radius:999px !important;
  background:#fff !important;color:var(--vw-muted) !important;font-size:13px !important;
  font-weight:600 !important;font-family:inherit !important;cursor:pointer !important}
.vw-chip.vw-on{background:var(--vw-accent) !important;border-color:var(--vw-accent) !important;color:#fff !important}
.vw-count{width:100% !important;text-align:center !important;font-size:13px !important;
  color:var(--vw-muted) !important}

/* ---- portrait grid ---- */
.vw-grid{display:grid !important;gap:26px 18px !important;
  grid-template-columns:repeat(var(--vw-cols,4),minmax(0,1fr)) !important;align-items:start !important}
@media(max-width:1000px){.vw-grid{grid-template-columns:repeat(3,minmax(0,1fr)) !important}}
@media(max-width:700px){.vw-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important;gap:20px 12px !important}
  .vw-wall{padding:28px 14px 0 !important}}

.vw-card{margin:0 !important;padding:0 !important;background:none !important;border:0 !important}

/* 9:16 — every video is portrait */
.vw-frame{position:relative !important;width:100% !important;aspect-ratio:9/16 !important;
  border-radius:14px !important;background:#0d1117 !important;
  box-shadow:0 2px 14px rgba(0,0,0,.10) !important}

.vw-stage{position:absolute !important;inset:0 !important;display:block !important;width:100% !important;
  height:100% !important;margin:0 !important;padding:0 !important;border:0 !important;cursor:pointer !important;
  background:#0d1117 !important;border-radius:14px !important;overflow:hidden !important;
  -webkit-appearance:none !important;appearance:none !important;
  transition:transform .22s ease,box-shadow .22s ease !important}
.vw-card:hover .vw-stage:not(.vw-open){transform:translateY(-3px) !important;
  box-shadow:0 12px 30px rgba(0,0,0,.2) !important}
.vw-stage:focus-visible{outline:3px solid var(--vw-accent) !important;outline-offset:3px !important}

.vw-thumb{position:absolute !important;inset:0 !important;width:100% !important;height:100% !important;
  object-fit:cover !important;display:block !important;margin:0 !important;padding:0 !important;
  border:0 !important;border-radius:0 !important;transition:opacity .25s ease !important}
.vw-stage.vw-playing .vw-thumb{opacity:0 !important}

.vw-stage iframe{position:absolute !important;inset:0 !important;width:100% !important;height:100% !important;
  border:0 !important;display:block !important;background:#0d1117 !important}
/* a hover preview must not eat the click */
.vw-stage:not(.vw-open) iframe{pointer-events:none !important}
.vw-stage.vw-open iframe{pointer-events:auto !important}

/* Letterboxed upload: the file is 16:9 with the portrait footage pillarboxed
   in the middle. In the grid we zoom the player so the centre strip fills the
   9:16 tile, which crops the baked-in black bars off. Only in the grid —
   cropping the expanded player would cut its controls in half. */
.vw-stage.vw-fill:not(.vw-open) iframe{left:50% !important;top:0 !important;
  width:316% !important;height:100% !important;transform:translateX(-50%) !important}
.vw-stage.vw-fill:not(.vw-open) .vw-thumb{object-fit:cover !important}

.vw-play{position:absolute !important;left:50% !important;top:50% !important;
  transform:translate(-50%,-50%) !important;width:54px !important;height:54px !important;
  border-radius:50% !important;background:rgba(0,0,0,.55) !important;display:flex !important;
  align-items:center !important;justify-content:center !important;pointer-events:none !important;
  transition:opacity .2s ease,background .2s ease !important}
.vw-card:hover .vw-play{background:var(--vw-accent) !important}
.vw-stage.vw-playing .vw-play{opacity:0 !important}
.vw-play svg{width:19px !important;height:19px !important;margin-left:3px !important;fill:#fff !important}

.vw-dur{position:absolute !important;right:8px !important;bottom:8px !important;z-index:2 !important;
  background:rgba(0,0,0,.78) !important;color:#fff !important;font-size:11.5px !important;
  line-height:1 !important;padding:4px 7px !important;border-radius:5px !important;
  pointer-events:none !important;transition:opacity .2s ease !important}
.vw-stage.vw-playing .vw-dur{opacity:0 !important}

.vw-hint{position:absolute !important;left:8px !important;bottom:8px !important;z-index:3 !important;
  background:rgba(0,0,0,.74) !important;color:#fff !important;font-size:11.5px !important;
  font-weight:600 !important;line-height:1 !important;padding:6px 10px !important;
  border-radius:999px !important;opacity:0 !important;pointer-events:none !important;
  transition:opacity .2s ease !important}
.vw-stage.vw-playing:not(.vw-open) .vw-hint{opacity:1 !important}

.vw-meta{padding:12px 2px 0 !important}
.vw-date{display:block !important;font-size:11.5px !important;letter-spacing:.09em !important;
  text-transform:uppercase !important;color:var(--vw-accent) !important;font-weight:700 !important;
  margin:0 0 5px !important}
.vw-title{margin:0 0 5px !important;padding:0 !important;font-size:16px !important;line-height:1.3 !important;
  font-weight:700 !important;color:var(--vw-ink) !important}
.vw-desc{margin:0 !important;padding:0 !important;font-size:13.5px !important;line-height:1.5 !important;
  color:var(--vw-muted) !important;display:-webkit-box !important;-webkit-line-clamp:2 !important;
  -webkit-box-orient:vertical !important;overflow:hidden !important}
.vw-tags{margin:9px 0 0 !important;padding:0 !important;list-style:none !important;
  display:flex !important;flex-wrap:wrap !important;gap:5px !important}
.vw-tags li{margin:0 !important;padding:3px 8px !important;font-size:11px !important;font-weight:600 !important;
  border-radius:999px !important;background:rgba(0,0,0,.05) !important;color:var(--vw-muted) !important}

/* ---- expanded: portrait video + text ---- */
.vw-backdrop{position:fixed !important;inset:0 !important;z-index:2147482990 !important;
  background:rgba(8,10,14,.93) !important;opacity:0 !important;transition:opacity .2s ease !important}
.vw-backdrop.vw-in{opacity:1 !important}

.vw-modal{position:fixed !important;inset:0 !important;z-index:2147482995 !important;
  display:flex !important;align-items:center !important;justify-content:center !important;
  padding:24px 20px !important;pointer-events:none !important;box-sizing:border-box !important}
.vw-modal *{box-sizing:border-box !important}
.vw-modal-inner{display:flex !important;gap:22px !important;align-items:stretch !important;
  justify-content:center !important;max-width:100% !important;max-height:100% !important}

/* sized by HEIGHT because the video is portrait */
.vw-slot{flex:0 0 auto !important;height:min(82vh,780px) !important;aspect-ratio:9/16 !important;
  width:auto !important;border-radius:12px !important;background:#0d1117 !important}
/* a genuinely 16:9 source opens in a 16:9 slot so its controls stay intact */
.vw-slot.vw-wide{aspect-ratio:16/9 !important;height:auto !important;
  width:min(1120px,92vw) !important}
.vw-slot.vw-free{aspect-ratio:auto !important;height:auto !important;max-height:82vh !important;
  background:none !important;pointer-events:auto !important}
.vw-slot.vw-free img{max-height:82vh !important;max-width:100% !important;width:auto !important;
  height:auto !important;border-radius:10px !important;display:block !important;
  box-shadow:0 30px 90px rgba(0,0,0,.55) !important}

.vw-panel{flex:0 1 400px !important;min-width:0 !important;pointer-events:auto !important;
  background:#fff !important;border-radius:12px !important;padding:24px !important;
  overflow-y:auto !important;-webkit-overflow-scrolling:touch !important;
  box-shadow:0 30px 90px rgba(0,0,0,.45) !important}
.vw-panel .vw-date{font-size:12px !important;color:var(--vw-accent,#1573be) !important}
.vw-panel h3{margin:0 0 12px !important;padding:0 !important;font-size:21px !important;
  line-height:1.25 !important;font-weight:700 !important;color:#181c14 !important}
.vw-panel p{margin:0 !important;padding:0 !important;font-size:15px !important;line-height:1.62 !important;
  color:#4b5563 !important;white-space:pre-line !important}
.vw-panel .vw-tags{margin:14px 0 0 !important}

.vw-stage.vw-open{position:fixed !important;z-index:2147483000 !important;inset:auto !important;
  aspect-ratio:auto !important;cursor:default !important;border-radius:12px !important;
  box-shadow:0 30px 90px rgba(0,0,0,.6) !important;transform:none !important;
  animation:vwPop .2s ease !important}
@keyframes vwPop{from{opacity:0}to{opacity:1}}

.vw-close{position:fixed !important;z-index:2147483010 !important;top:16px !important;right:18px !important;
  width:44px !important;height:44px !important;border-radius:50% !important;border:0 !important;
  cursor:pointer !important;background:rgba(255,255,255,.16) !important;color:#fff !important;
  font-size:26px !important;line-height:1 !important;display:flex !important;align-items:center !important;
  justify-content:center !important;padding:0 !important}
.vw-close:hover{background:rgba(255,255,255,.3) !important}

@media(max-width:860px){
  .vw-modal{padding:10px !important;align-items:flex-start !important}
  .vw-modal-inner{flex-direction:column !important;align-items:center !important;
    gap:10px !important;width:100% !important;margin-top:4vh !important}
  .vw-slot{height:min(60vh,520px) !important}
  .vw-panel{flex:none !important;width:100% !important;max-height:26vh !important;padding:15px !important}
  .vw-panel h3{font-size:18px !important}
}

/* ---- buttons / states ---- */
.vw-all,.vw-more{display:block !important;width:max-content !important;margin:34px auto 0 !important;
  padding:13px 34px !important;border:0 !important;border-radius:999px !important;cursor:pointer !important;
  background:var(--vw-accent) !important;color:#fff !important;font-size:15px !important;
  font-weight:700 !important;font-family:inherit !important;text-decoration:none !important;
  text-align:center !important}
.vw-all:hover,.vw-more:hover{filter:brightness(1.08) !important;color:#fff !important}

.vw-skel{border-radius:14px !important;aspect-ratio:9/16 !important;
  background:linear-gradient(90deg,#eceff3 25%,#f6f8fa 37%,#eceff3 63%) !important;
  background-size:400% 100% !important;animation:vwShim 1.3s ease infinite !important}
@keyframes vwShim{0%{background-position:100% 0}100%{background-position:0 0}}
.vw-empty{grid-column:1/-1 !important;text-align:center !important;color:var(--vw-muted) !important;
  padding:46px 0 !important}

.vw-loading{display:flex !important;align-items:center !important;justify-content:center !important;
  gap:10px !important;margin:0 0 20px !important;font-size:14px !important;
  color:var(--vw-muted) !important;text-align:center !important}
.vw-spin{width:15px !important;height:15px !important;flex:0 0 auto !important;
  border:2px solid rgba(0,0,0,.14) !important;border-top-color:var(--vw-accent) !important;
  border-radius:50% !important;animation:vwSpin .8s linear infinite !important}
@keyframes vwSpin{to{transform:rotate(360deg)}}
.vw-error{grid-column:1/-1 !important;text-align:center !important;padding:40px 0 !important;
  color:var(--vw-muted) !important;font-size:14.5px !important}
.vw-sentinel{grid-column:1/-1 !important;height:1px !important}

body.vw-locked{overflow:hidden !important}

@media(prefers-reduced-motion:reduce){
  .vw-stage,.vw-thumb,.vw-backdrop{transition:none !important;animation:none !important}
  .vw-skel,.vw-spin{animation:none !important}
}
/*]]>*/</style>


<script type="text/javascript">//<![CDATA[
(function () {
  'use strict';

  /* ============ CONFIG — homepage ============ */
  var CFG = {
    endpoint:  'https://script.google.com/macros/s/AKfycbxPxaU22GBH3mgy7s9TVdpdu8ZEuV5GY51_cV3sb2V3FL2RpYU0r22-0mz1xtWDoXc/exec',
    mode:      'home',          // 'home' = newest N only | 'page' = full archive

    // THIS SCRIPT LIVES IN THE GLOBAL FOOTER, so it loads on every page.
    // runOn limits where it actually renders. '/' means the site root exactly;
    // anything else matches if it appears anywhere in the path.
    // Empty array = run everywhere.
    runOn:     ['/', '/default'],

    // How many tiles the homepage shows now comes from the Settings tab
    // (homeCount, or pageSize). This is only the fallback before it loads.
    homeCount: 8,
    allUrl:    'https://www.lclaschools.com/templates/articlecco_cdo/aid/7543269',
    mountInto: '.vw-mount',     // preferred: paste <div class="vw-mount">.</div> where you want it
    mount:     ['#BodyContainer > div > div.g960 > div > div.g960.g960.g960.g960.g960.g960.g960.g960.no_margin.g960.no_margin > div > div:nth-child(2)'],
    placement: 'before',
    fallback:  '#BodyContainer',
    cacheKey:  'vwWall_home_v4',
    cacheMins: 30,
    hoverDelay: 350
  };
  /* =========================================== */

  // Wrong page for this copy of the script — do nothing at all.
  if (!pathAllowed()) return;

  // Belt and braces: never render two walls on one page. The in-page script
  // runs before the global footer one, so the page-specific copy wins.
  if (window.__vwWallMounted || window['__vwLoaded_' + CFG.mode]) return;
  window['__vwLoaded_' + CFG.mode] = true;

  function pathAllowed() {
    var list = [].concat(CFG.runOn || []);
    if (!list.length) return true;
    var path = location.pathname.replace(/\/+$/, '') || '/';
    for (var i = 0; i < list.length; i++) {
      var r = String(list[i] || '');
      if (!r) continue;
      if (r === '/') { if (path === '/') return true; }
      else if (path.indexOf(r) > -1) return true;
    }
    return false;
  }

  var S = {}, ALL = [], VIEW = [], shown = 0, total = 0;
  var rootEl = null, gridEl = null, countEl = null, sentinel = null, observer = null;
  var query = '', activeTag = '';
  var openStage = null, backdrop = null, closeBtn = null, modalEl = null, slotEl = null;
  var hoverTimer = null, searchTimer = null;

  var TOUCH = window.matchMedia('(hover: none)').matches ||
              ('ontouchstart' in window && window.innerWidth < 1024);
  var REDUCED = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
  var SAVEDATA = !!(navigator.connection && navigator.connection.saveData);
  var CAN_PREVIEW = !TOUCH && !REDUCED && !SAVEDATA;

  /* ---------------- boot ------------------------------------------ */

  var tries = 0;
  (function wait() {
    var m = resolveMount();
    if (m) return init(m);
    if (++tries <= 60) return setTimeout(wait, 150);

    // Nothing matched after ~9s. Rather than render nothing, drop the wall at
    // the end of the page body so it is at least visible and stylable.
    var fb = document.querySelector(CFG.fallback);
    if (fb) {
      if (window.console) console.warn('[video wall] no mount matched; appended to ' + CFG.fallback);
      init({ el: fb, how: 'append' });
    } else if (window.console) {
      console.warn('[video wall] no mount found and no fallback container.');
    }
  })();

  /* Mount order:
     1. a placeholder you paste into the page:  <div class="vw-mount">.</div>
        (the "." stops the CMS stripping the empty div; the script removes it)
     2. any selector in CFG.mount, in order
     3. appended to CFG.fallback                                             */
  function resolveMount() {
    if (CFG.mountInto) {
      var ph = document.querySelector(CFG.mountInto);
      if (ph && ph.parentNode) return { el: ph, how: 'replace' };
    }
    var sels = [].concat(CFG.mount || []);
    for (var i = 0; i < sels.length; i++) {
      if (!sels[i]) continue;
      var t;
      try { t = document.querySelector(sels[i]); } catch (e) { continue; }
      if (t && t.parentNode) return { el: t, how: CFG.placement || 'before' };
    }
    return null;
  }

  function init(m) {
    var target = m.el;
    rootEl = document.createElement('section');
    rootEl.className = 'vw-wall';
    rootEl.setAttribute('aria-label', 'Video wall');
    rootEl.innerHTML =
      // showHeading:false means the page supplies its own editable heading
      (CFG.showHeading === false ? '' : '<div class="vw-head"><h2></h2><p></p></div>') +
      (CFG.mode === 'page'
        ? '<div class="vw-tools">' +
            '<input class="vw-search" type="search" placeholder="Search videos\u2026" aria-label="Search videos">' +
            '<div class="vw-chips"></div><span class="vw-count"></span>' +
          '</div>'
        : '') +
      '<div class="vw-loading"><span class="vw-spin"></span><span>Loading videos…</span></div>' +
      '<div class="vw-grid" role="list"></div>';
    window.__vwWallMounted = true;

    if (m.how === 'replace') {
      target.parentNode.insertBefore(rootEl, target);
      target.parentNode.removeChild(target);
    } else if (m.how === 'append') {
      target.appendChild(rootEl);
    } else if (m.how === 'after' && target.nextSibling) {
      target.parentNode.insertBefore(rootEl, target.nextSibling);
    } else {
      target.parentNode.insertBefore(rootEl, target);
    }

    gridEl = rootEl.querySelector('.vw-grid');
    countEl = rootEl.querySelector('.vw-count');

    var skeletons = CFG.mode === 'home' ? Math.min(CFG.homeCount || 4, 4) : 4;
    for (var i = 0; i < skeletons; i++) {
      var sk = document.createElement('div');
      sk.className = 'vw-skel';
      gridEl.appendChild(sk);
    }

    var search = rootEl.querySelector('.vw-search');
    if (search) {
      search.addEventListener('input', function () {
        clearTimeout(searchTimer);
        searchTimer = setTimeout(function () {
          query = search.value.trim().toLowerCase();
          applyFilter();
        }, 160);
      });
    }

    var cached = readCache();
    if (cached) paint(cached);

    // mode=home lets the Settings tab decide the count, server side
    var url = CFG.endpoint + (CFG.mode === 'home' ? '?mode=home' : '');
    fetch(url, { cache: 'no-store' })
      .then(function (r) { return r.json(); })
      .then(function (d) {
        if (!d || !d.items) throw new Error('bad payload');
        writeCache(d);
        paint(d);
      })
      .catch(function () {
        stopLoading();
        if (!cached && gridEl) {
          gridEl.innerHTML = '<p class="vw-error">Videos couldn’t load just now. ' +
                             'Please refresh the page.</p>';
        }
      });

    document.addEventListener('keydown', function (e) {
      if (e.key === 'Escape' && modalEl) closeAll();
    });
  }

  /* ---------------- render ---------------------------------------- */

  function stopLoading() {
    var el = rootEl && rootEl.querySelector('.vw-loading');
    if (el && el.parentNode) el.parentNode.removeChild(el);
  }

  // How many the homepage shows. pageSize is the documented Settings key;
  // homeCount is only a legacy alias. CFG is the fallback before settings load.
  function homeLimit() {
    return Number(S.pageSize) || Number(S.homeCount) || Number(CFG.homeCount) || 8;
  }

  function paint(data) {
    S = data.settings || {};
    ALL = data.items || [];
    total = data.total || ALL.length;
    stopLoading();

    if (S.accent) rootEl.style.setProperty('--vw-accent', S.accent);
    rootEl.style.setProperty('--vw-cols', String(S.columns || 4));

    var h2 = rootEl.querySelector('.vw-head h2');
    var p  = rootEl.querySelector('.vw-head p');
    if (h2) {
      h2.textContent = S.title || '';
      h2.style.display = S.title ? '' : 'none';
    }
    if (p) {
      p.textContent = S.subtitle || '';
      p.style.display = S.subtitle ? '' : 'none';
    }

    if (CFG.mode === 'page') buildChips();
    applyFilter();
    if (CFG.mode === 'home') addAllButton();
  }

  function buildChips() {
    var box = rootEl.querySelector('.vw-chips');
    if (!box) return;
    var seen = {}, tags = [];
    ALL.forEach(function (it) {
      (it.tags || []).forEach(function (t) {
        var k = t.toLowerCase();
        if (!seen[k]) { seen[k] = 1; tags.push(t); }
      });
    });
    if (!tags.length) return;
    box.innerHTML = '';
    tags.sort();
    tags.unshift('All');
    tags.forEach(function (t) {
      var b = document.createElement('button');
      b.type = 'button';
      b.className = 'vw-chip' + ((t === 'All' && !activeTag) ? ' vw-on' : '');
      b.textContent = t;
      b.addEventListener('click', function () {
        activeTag = (t === 'All') ? '' : t.toLowerCase();
        Array.prototype.forEach.call(box.children, function (c) { c.classList.remove('vw-on'); });
        b.classList.add('vw-on');
        applyFilter();
      });
      box.appendChild(b);
    });
  }

  function applyFilter() {
    VIEW = ALL.filter(function (it) {
      if (activeTag) {
        var has = (it.tags || []).some(function (t) { return t.toLowerCase() === activeTag; });
        if (!has) return false;
      }
      if (!query) return true;
      var hay = (it.title + ' ' + it.description + ' ' + (it.tags || []).join(' ') + ' ' +
                 it.date + ' ' + it.dateRaw).toLowerCase();
      return hay.indexOf(query) > -1;
    });

    shown = 0;
    gridEl.innerHTML = '';
    if (observer) { observer.disconnect(); observer = null; }

    if (!VIEW.length) {
      gridEl.innerHTML = '<p class="vw-empty">' +
        (query || activeTag ? 'No videos match that.' : 'Nothing here just yet \u2014 check back soon.') +
        '</p>';
      updateCount();
      return;
    }

    appendBatch();
    if (CFG.mode === 'page') watchSentinel();
    updateCount();
  }

  function appendBatch() {
    // The archive's scroll batch is its own setting — pageSize is the
    // homepage count and must not shrink the archive's loading chunk.
    var size = CFG.mode === 'home' ? homeLimit() : (Number(S.batch) || 24);
    var end = Math.min(shown + size, VIEW.length);
    var frag = document.createDocumentFragment();
    for (; shown < end; shown++) frag.appendChild(buildCard(VIEW[shown]));
    if (sentinel && sentinel.parentNode) gridEl.insertBefore(frag, sentinel);
    else gridEl.appendChild(frag);
    updateCount();
  }

  function watchSentinel() {
    sentinel = document.createElement('div');
    sentinel.className = 'vw-sentinel';
    gridEl.appendChild(sentinel);

    if (!('IntersectionObserver' in window)) {
      var btn = document.createElement('button');
      btn.type = 'button';
      btn.className = 'vw-more';
      btn.textContent = 'Show more';
      btn.addEventListener('click', function () {
        appendBatch();
        if (shown >= VIEW.length) btn.parentNode.removeChild(btn);
      });
      rootEl.appendChild(btn);
      return;
    }

    observer = new IntersectionObserver(function (entries) {
      if (entries[0].isIntersecting && shown < VIEW.length) appendBatch();
    }, { rootMargin: '600px 0px' });
    observer.observe(sentinel);
  }

  function updateCount() {
    if (!countEl) return;
    countEl.textContent = VIEW.length
      ? 'Showing ' + Math.min(shown, VIEW.length) + ' of ' + VIEW.length +
        (VIEW.length !== total ? ' (' + total + ' in total)' : '')
      : '';
  }

  function addAllButton() {
    var url = CFG.allUrl || S.allUrl;
    if (!url || rootEl.querySelector('.vw-all')) return;
    if (!total) return;                       // nothing published: no button
    var a = document.createElement('a');
    a.className = 'vw-all';
    a.href = url;
    a.textContent = S.allLabel || 'View all videos';
    rootEl.appendChild(a);
  }

  function buildCard(item) {
    var card = document.createElement('article');
    card.className = 'vw-card';
    card.setAttribute('role', 'listitem');

    var frame = document.createElement('div');
    frame.className = 'vw-frame';

    var stage = document.createElement('button');
    stage.type = 'button';
    stage.className = 'vw-stage';
    stage.setAttribute('aria-label',
      (item.type === 'photo' ? 'View photo: ' : 'Play video: ') + (item.title || 'untitled'));
    stage._item = item;

    // Vimeo reports the file's real shape. If it's landscape but the footage
    // is portrait with baked-in bars, zoom the tile to crop them.
    if (item.w && item.h && (item.w / item.h) > 1.2) {
      stage.classList.add('vw-fill');
      item._wide = true;
    }

    if (item.thumb) {
      var img = document.createElement('img');
      img.className = 'vw-thumb';
      img.src = item.thumb;
      img.alt = '';
      img.loading = 'lazy';
      img.decoding = 'async';
      img.addEventListener('error', function () {
        if (item.provider === 'youtube' && img.src.indexOf('maxresdefault') > -1) {
          img.src = 'https://i.ytimg.com/vi/' + item.videoId + '/hqdefault.jpg';
        }
      });
      stage.appendChild(img);
    }

    if (item.type !== 'photo') {
      var play = document.createElement('span');
      play.className = 'vw-play';
      play.innerHTML = '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M8 5v14l11-7z"/></svg>';
      stage.appendChild(play);

      if (item.duration > 0) {
        var d = document.createElement('span');
        d.className = 'vw-dur';
        d.textContent = fmtDuration(item.duration);
        stage.appendChild(d);
      }

      var hint = document.createElement('span');
      hint.className = 'vw-hint';
      hint.textContent = 'Click to watch';
      stage.appendChild(hint);
    }

    stage.addEventListener('click', function (e) { e.preventDefault(); openItem(stage); });

    if (CAN_PREVIEW && item.type !== 'photo' && S.hoverPreview !== false) {
      stage.addEventListener('mouseenter', function () {
        clearTimeout(hoverTimer);
        hoverTimer = setTimeout(function () { preview(stage); }, CFG.hoverDelay);
      });
      stage.addEventListener('mouseleave', function () {
        clearTimeout(hoverTimer);
        if (stage !== openStage) teardown(stage);
      });
    }

    frame.appendChild(stage);
    card.appendChild(frame);

    var meta = document.createElement('div');
    meta.className = 'vw-meta';

    var dateTxt = fmtDate(item.date) || item.dateRaw;
    if (dateTxt) {
      var t = document.createElement('time');
      t.className = 'vw-date';
      if (item.date) t.setAttribute('datetime', item.date);
      t.textContent = dateTxt;
      meta.appendChild(t);
    }
    if (item.title) {
      var h3 = document.createElement('h3');
      h3.className = 'vw-title';
      h3.textContent = item.title;
      meta.appendChild(h3);
    }
    if (item.description && S.showDescriptions !== false) {
      var pd = document.createElement('p');
      pd.className = 'vw-desc';
      pd.textContent = item.description;
      meta.appendChild(pd);
    }
    if (item.tags && item.tags.length) {
      var ul = document.createElement('ul');
      ul.className = 'vw-tags';
      item.tags.forEach(function (tg) {
        var li = document.createElement('li');
        li.textContent = tg;
        ul.appendChild(li);
      });
      meta.appendChild(ul);
    }

    card.appendChild(meta);
    return card;
  }

  /* ---------------- player ---------------------------------------- */

  function makeIframe(item, muted) {
    var src;
    if (item.provider === 'vimeo') {
      src = 'https://player.vimeo.com/video/' + item.videoId +
            '?autoplay=1&muted=' + (muted ? 1 : 0) +
            '&title=0&byline=0&portrait=0&dnt=1&playsinline=1&controls=1' +
            (item.hash ? '&h=' + item.hash : '');
    } else {
      src = 'https://www.youtube-nocookie.com/embed/' + item.videoId +
            '?autoplay=1&mute=' + (muted ? 1 : 0) +
            '&enablejsapi=1&playsinline=1&rel=0&origin=' + encodeURIComponent(location.origin);
    }
    var f = document.createElement('iframe');
    f.src = src;
    f.setAttribute('allow', 'autoplay; fullscreen; picture-in-picture; encrypted-media');
    f.setAttribute('allowfullscreen', '');
    f.setAttribute('referrerpolicy', 'strict-origin-when-cross-origin');
    f.title = item.title || 'Video';
    f._provider = item.provider;
    return f;
  }

  function preview(stage) {
    if (stage.querySelector('iframe')) return;
    stage.appendChild(makeIframe(stage._item, true));
    stage.classList.add('vw-playing');
  }

  function teardown(stage) {
    var f = stage.querySelector('iframe');
    if (f) f.parentNode.removeChild(f);
    stage.classList.remove('vw-playing');
  }

  // position:fixed silently breaks inside a transformed ancestor — probe first.
  var fixedOK = null;
  function fixedWorks(el) {
    if (fixedOK !== null) return fixedOK;
    var probe = document.createElement('div');
    probe.style.cssText = 'position:fixed;top:0;left:0;width:1px;height:1px;opacity:0;pointer-events:none;';
    el.appendChild(probe);
    var r = probe.getBoundingClientRect();
    probe.parentNode.removeChild(probe);
    fixedOK = Math.abs(r.top) < 2 && Math.abs(r.left) < 2;
    return fixedOK;
  }

  function openItem(stage) {
    var item = stage._item;
    showBackdrop();
    buildModal(item);
    showChrome();

    if (item.type === 'photo') {
      slotEl.classList.add('vw-free');
      var pic = document.createElement('img');
      pic.src = item.thumb;
      pic.alt = item.title || '';
      slotEl.appendChild(pic);
      return;
    }

    if (fixedWorks(stage.parentNode)) {
      // Reuse the hover iframe. Reparenting reloads it; going fixed does not.
      var f = stage.querySelector('iframe');
      if (!f) {
        f = makeIframe(item, false);
        stage.appendChild(f);
        stage.classList.add('vw-playing');
      } else {
        unmute(f);
        if (S.restartOnOpen !== false) seekZero(f);
      }
      stage.classList.add('vw-open');
      openStage = stage;
    } else {
      teardown(stage);
      var shell = document.createElement('div');
      shell.className = 'vw-stage vw-open vw-playing';
      shell.appendChild(makeIframe(item, false));
      document.body.appendChild(shell);
      openStage = shell;
      openStage._detached = true;
    }

    positionStage();
    window.addEventListener('resize', positionStage);
    window.addEventListener('orientationchange', positionStage);
  }

  /* Park the player exactly over the empty slot. Inline styles need
     'important' because .vw-stage pins inset/width/height for its grid state. */
  function positionStage() {
    if (!openStage || !slotEl) return;
    var r = slotEl.getBoundingClientRect();
    openStage.style.setProperty('left', r.left + 'px', 'important');
    openStage.style.setProperty('top', r.top + 'px', 'important');
    openStage.style.setProperty('width', r.width + 'px', 'important');
    openStage.style.setProperty('height', r.height + 'px', 'important');
  }

  function buildModal(item) {
    modalEl = document.createElement('div');
    modalEl.className = 'vw-modal';
    if (S.accent) modalEl.style.setProperty('--vw-accent', S.accent);

    var inner = document.createElement('div');
    inner.className = 'vw-modal-inner';

    slotEl = document.createElement('div');
    slotEl.className = 'vw-slot' + (item._wide ? ' vw-wide' : '');
    inner.appendChild(slotEl);

    var dateTxt = fmtDate(item.date) || item.dateRaw;
    if (item.title || item.description || dateTxt) {
      var panel = document.createElement('div');
      panel.className = 'vw-panel';
      if (dateTxt) {
        var t = document.createElement('time');
        t.className = 'vw-date';
        if (item.date) t.setAttribute('datetime', item.date);
        t.textContent = dateTxt;
        panel.appendChild(t);
      }
      if (item.title) {
        var h = document.createElement('h3');
        h.textContent = item.title;
        panel.appendChild(h);
      }
      if (item.description) {
        var p = document.createElement('p');
        p.textContent = item.description;
        panel.appendChild(p);
      }
      if (item.tags && item.tags.length) {
        var ul = document.createElement('ul');
        ul.className = 'vw-tags';
        item.tags.forEach(function (tg) {
          var li = document.createElement('li');
          li.textContent = tg;
          ul.appendChild(li);
        });
        panel.appendChild(ul);
      }
      inner.appendChild(panel);
    }

    modalEl.appendChild(inner);
    document.body.appendChild(modalEl);
  }

  function unmute(f) {
    var send = function () {
      try {
        if (f._provider === 'vimeo') {
          f.contentWindow.postMessage(
            JSON.stringify({ method: 'setVolume', value: 1 }), 'https://player.vimeo.com');
        } else {
          f.contentWindow.postMessage(
            JSON.stringify({ event: 'command', func: 'unMute', args: [] }), '*');
          f.contentWindow.postMessage(
            JSON.stringify({ event: 'command', func: 'setVolume', args: [100] }), '*');
        }
      } catch (e) {}
    };
    send(); setTimeout(send, 250); setTimeout(send, 800);
  }

  function seekZero(f) {
    setTimeout(function () {
      try {
        if (f._provider === 'vimeo') {
          f.contentWindow.postMessage(
            JSON.stringify({ method: 'setCurrentTime', value: 0 }), 'https://player.vimeo.com');
        } else {
          f.contentWindow.postMessage(
            JSON.stringify({ event: 'command', func: 'seekTo', args: [0, true] }), '*');
        }
      } catch (e) {}
    }, 200);
  }

  function showBackdrop() {
    document.body.classList.add('vw-locked');
    backdrop = document.createElement('div');
    backdrop.className = 'vw-backdrop';
    backdrop.addEventListener('click', closeAll);
    document.body.appendChild(backdrop);
    requestAnimationFrame(function () { backdrop.classList.add('vw-in'); });
  }

  function showChrome() {
    closeBtn = document.createElement('button');
    closeBtn.type = 'button';
    closeBtn.className = 'vw-close';
    closeBtn.setAttribute('aria-label', 'Close');
    closeBtn.innerHTML = '×';
    closeBtn.addEventListener('click', closeAll);
    document.body.appendChild(closeBtn);
    closeBtn.focus();
  }

  function closeAll() {
    window.removeEventListener('resize', positionStage);
    window.removeEventListener('orientationchange', positionStage);

    if (openStage) {
      if (openStage._detached) {
        openStage.parentNode.removeChild(openStage);
      } else {
        openStage.classList.remove('vw-open');
        openStage.removeAttribute('style');
        teardown(openStage);
      }
      openStage = null;
    }
    [modalEl, closeBtn, backdrop].forEach(function (el) {
      if (el && el.parentNode) el.parentNode.removeChild(el);
    });
    modalEl = slotEl = closeBtn = backdrop = null;
    document.body.classList.remove('vw-locked');
  }

  /* ---------------- helpers --------------------------------------- */

  function fmtDate(iso) {
    if (!iso) return '';
    var parts = iso.split('-');
    if (parts.length !== 3) return '';
    var d = new Date(Number(parts[0]), Number(parts[1]) - 1, Number(parts[2]));
    if (isNaN(d)) return '';
    return d.toLocaleDateString(undefined, { day: 'numeric', month: 'short', year: 'numeric' });
  }

  function fmtDuration(sec) {
    sec = Math.round(sec);
    var h = Math.floor(sec / 3600), m = Math.floor((sec % 3600) / 60), s = sec % 60;
    var pad = function (n) { return n < 10 ? '0' + n : String(n); };
    return h ? h + ':' + pad(m) + ':' + pad(s) : m + ':' + pad(s);
  }

  function readCache() {
    try {
      var raw = localStorage.getItem(CFG.cacheKey);
      if (!raw) return null;
      var o = JSON.parse(raw);
      if (Date.now() - o.at > CFG.cacheMins * 60000) return null;
      return o.data;
    } catch (e) { return null; }
  }

  function writeCache(data) {
    try { localStorage.setItem(CFG.cacheKey, JSON.stringify({ at: Date.now(), data: data })); }
    catch (e) {}
  }
})();
//]]></script>
</body>
</html>