<!DOCTYPE html>
  	<html lang="en" dir="ltr">
  <head>
    						<!-- Matomo -->
<script type="text/javascript">
    var _paq = window._paq = window._paq || [];
        _paq.push(['trackPageView']);
        _paq.push(['enableLinkTracking']);

    (function() {
        var u="//analytics.studiodr.pl/";
        _paq.push(['setTrackerUrl', u+'matomo.php']);
        _paq.push(['setSiteId', 'vGgjmLkZ8weQDkzMED0Kdyo4l']);
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
    })();
</script>
<!-- End Matomo Code -->
		    	
            
    <title>Technical update</title>
<meta name="description" content="">
<meta name="og:description" content="">
<meta property="og:title" content="Technical update">
<meta property="og:description" content="">
<meta property="og:site_name" content="My GrowPoint">
<meta property="og:locale" content="en">
<meta property="og:image" content="https://omhub-sandbox.growpoint.io/get-document/image/4f3ebb1dc01e9661bc523aab7a0523c1?filter=og1200x630">
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Technical update"/>
<meta name="twitter:description" content=""/>
<meta name="twitter:image" content="https://omhub-sandbox.growpoint.io/get-document/image/4f3ebb1dc01e9661bc523aab7a0523c1?filter=og1200x630"/><meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="apple-mobile-web-app-title" content="My GrowPoint">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, shrink-to-fit=no, viewport-fit=cover">
<meta name="theme-color" content="#333" />
<link rel="icon" type="image/png" href="https://omhub-sandbox.growpoint.io/media/cache/favicon/d30da7f1-60c0-4c7d-aa92-1159814f1367.webp">
<link rel="preload" as="font" crossorigin type="font/woff2" href="/static/other/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0">
<link rel="stylesheet" href="/static/other/font-awesome/css/font-awesome.min.css?v=5.1.0.1">




  
  



      
   
        

  







  
  <style>

    
          
        
              
                    
          
  
        
  @font-face {
    font-family: Source Sans Pro;
    font-weight: 400;
    font-display: swap;
    src: url('/static/fonts/source-sans-pro/latin/source-sans-pro-regular.woff2') format('woff2');
  }

        
          
        
              
                    
          
  
        
  @font-face {
    font-family: Source Sans Pro;
    font-weight: 600;
    font-display: swap;
    src: url('/static/fonts/source-sans-pro/latin/source-sans-pro-semibold.woff2') format('woff2');
  }

        
          
        
              
                    
          
  
        
  @font-face {
    font-family: Source Sans Pro;
    font-weight: 700;
    font-display: swap;
    src: url('/static/fonts/source-sans-pro/latin/source-sans-pro-bold.woff2') format('woff2');
  }

        
      
    
          
        
              
                    
          
  
        
  @font-face {
    font-family: Source Serif Pro;
    font-weight: 400;
    font-display: swap;
    src: url('/static/fonts/source-serif-pro/latin/source-serif-pro-regular.woff2') format('woff2');
  }

        
      
    
  </style>




<style>
  :root {
          --font-family: Source Sans Pro, sans-serif;
        --font-weight-regular: 400;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;
          --font-scale: 1;
              --font-headline-scale: 1;
                          --content-font-family: Source Serif Pro, serif;
            --content-font-weight: 400;
      }
    </style>

          <link crossorigin rel="stylesheet" href="/build/assets/app-4D_io-wl.css">
      <link crossorigin rel="stylesheet" href="/build/assets/style-app-Cj2Cq-_h.css">
                
        <style>

    </style>

            
        
<style>

      .primary-bg {
      background-color: #53aa7a;
    }
    .primary-color {
      color: #53aa7a;
    }
    .overlay-bg {
      background-color: #494e8f;
    }
  
  :root {
          --color-primary: #53aa7a;
          
                
    --border-radius-big: 0.2rem;
    --border-radius: 0.2rem;
    --header-background-color: #222222;
    --header-link-color: white;
    --header-height-mobile-proportion: 1;
    --header-height-desktop-proportion: 1;
    --header-logo-height-proportion: 0.8;



    


  }
</style>    
      </head>
  <body class="page-loading is-content-font--big ">
  	

      <div class="article">
      <div class="p-center p-center--xs">
        <div class="p-box">
          <h3 class="article__main__title  article__main__title--followed-big">Technical update</h3>
          <p>We are currently working on this website. It won&#039;t take long, so please come back soon.</p>
        </div>  
      </div>    
    </div>

    
    
      <div class="system-box__container js-system-box">

				
	</div>

  
  <div class="overlay" id="overlay">
	<div class="overlay__bg"></div>
	<div class="overlay__container  js-overlay-container">
		<div class="overlay__content  js-overlay-content"></div>
	</div>
</div>
  <div class="system-message" id="system-message">
	<div class="system-message__bg"></div>
	<div class="system-message__container  js-system-message-container">
		<div class="system-message__content  js-system-message-content"></div>
	</div>
</div>

  <div class="js-system-message-general  hide">
  <div class="popup  popup--medium  js-system-message-area">

    <div class="popup__close  popup__close--gray  js-system-message-close">
      <span class="fa fa-times  popup__close__icon"></span>
    </div>

    <div class="popup__section  popup__section--medium-vertical">
      <h4 class="ui-small-bottom-margin">Oops! Something went wrong!</h4>
      <p>Hmmm, weird - it seems like your request encountered some obstacles, please refresh the page or check later. If the problem repeats <a href="/info/contact">let us know</a></p>
    </div>
    
    <div class="popup__section  popup__section--small-vertical popup__footer">
      <div class="p-cluster">
        
    
    
  

	

<div class="button button--style--full button--color--primary p-cluster p-cluster--condensed no-light-mode js-system-message-refresh" >
      



	<span class="icon icon--size--big button__icon fa fa-refresh"></span>
          <span class="button__label">Refresh the page</span>
  </div>        
  
      
  



<a href="/" class="button button--style--full button--color--white p-cluster p-cluster--condensed" >
          <span class="button__label">Go to front page</span>
  </a>      </div>
    </div>

  </div>
</div>
  
  	  	
  








<script type="application/json" id="project-config">
  {"token":"24635638.R8j-MmdcxyQigQYJN2kfEMZg4bDWrDKtFSUFNIB3X_c.cb7TVjID8RRW-2NlRCtRfqcEtYeV70ueInNNRLkVGrovgpFxCDiUR1PZYQ","userLoggedIn":false,"pwaEnabled":false,"pushEnabled":false,"vapidPublicKey":"BF1YBFWUNwsZnGcPaqQGpKN0x5FlfHz5eAm30PmebyPhSk3ZySpJv9GuO6874gOumv0_0YElCiWSWsniRx0F8gM","cookieManagementEnabled":false,"headerHeightMobile":"1","headerHeightDesktop":"1","vendorScriptsPath":"\/generic\/assets\/js\/vendor","refTaggerEnabled":"false","privateNotesEnabled":true,"dateFormat":"d\/m\/Y","dateTimeFormat":"d\/m\/Y H:i","hourCycle":"24","zoomEnabled":0,"rtl":false,"release":"5.1.0.1","sentryEnvironment":"omhub-sandbox.growpoint.io","translations":{"slideUnsavedMessagesNotification":"It looks like you have unsent messages in the previous slide... Please remember to send them.","backToPreviousSlide":"Back to previous slide","conversationCourseTitle":"Conversation with coach","thirdPartyContentTitle":"%service_name% content","thirdPartyContentDescription":"This content is hosted by a third party (%service_address%). By showing the external content you accept the %service_terms_link% of %service_address%.","thirdPartyContentTermsAndConditionLinkTitle":"terms and conditions","thirdPartyContentButton":"Load once","thirdPartyAcceptAll":"    or   <a class=\"ui-pointer\" data-controller=\"accept-cookies\" data-action=\"click->accept-cookies#accept\">\n    accept all cookies\n  <\/a>\n and don't ask me again\n","hoursAbbr":"h","minAbbr":"min","chatEditing":"Editing","chatEditMinRemaining":"%d% min remaining"}}
</script>

<div>
  <div id="var-t1" class="element-measure--t1"></div>
</div>

<template id="project-config-template-icon">
  



	<svg class="icon icon--size--[[size]] [[class]] icon--symbol icon--name--[[name]] icon--weight--[[weight]]" [[attributes]]>
		<use xlink:href="/build/icons/[[icon_set]].svg?v=5.1.0.1#[[name]]"></use>
	</svg>
</template>

<template id="project-config-template-confirm-dialog">
  <dialog class="confirm-dialog u-bg--white ui-radius" data-confirm-dialog><div class="p-stack p-stack--small p-box p-box--condensed p-box--no-border"><div class="ui-weight-semibold">[[title]]</div><div class="color--gray-mid ui-small u-hide-if-empty">[[description]]</div></div><div class="p-box p-box--condensed p-box--no-border u-bg--almost-white p-cluster p-cluster--stretched p-cluster--double-spaced p-cluster--no-wrap ui-small"><div><div class="p-cluster p-cluster--condensed p-cluster--no-wrap"><input type="checkbox" id="confirm-dialog-dont-ask" data-confirm-dialog-element="dontAskAgain"/><label for="confirm-dialog-dont-ask" class="color--gray-mid">Don&#039;t ask me again</label></div></div><div class="p-cluster p-cluster--end"><button class="button button--style--text button--color--primary p-cluster p-cluster--condensed no-light-mode" data-confirm-dialog-element="reject"><span class="button__label">Cancel</span></button><button class="button button--style--full button--color--primary p-cluster p-cluster--condensed no-light-mode" data-confirm-dialog-element="accept"><span class="icon icon--size--big button__icon fa fa-check-circle"></span><span class="button__label">Confirm</span></button></div></div></dialog></template>

  
  <script src="/bundles/fosjsrouting/js/router.min.js?v=5.1.0.1"></script>
      <script src="/js/routing?callback=fos.Router.setData"></script>
  
  <script src="/generic/assets/js/vendor/vendor.min.js?v=5.1.0.1"></script>
  <script src="/generic/assets/js/scripts.min.js?v=5.1.0.1"></script>

  

      <script crossorigin type="module" src="/build/assets/app-Bel3k2PO.js"></script>
    
  
  <input type="hidden" id="t" value="8445680d67e0c.TBrAMZi-HA-sDXrM6Oak-JVhs3rSz3oU8OLog5cyqss.emztVc3hKj_Ydx-gm6TqlvQF502RjAMnx7Sg865Q74YkUK9y99pPbN1VHQ"/>

  	<style id="explore-god-layout">
/* ===== ExploreGod GrowPoint styles =====
   To undo everything: delete this whole block. */

/* ---------- Brand colors: change these to recolor every course ---------- */
:root {
  --eg-heading: #494e8f;  /* indigo: slide titles and headings */
  --eg-accent:  #007a7a;  /* teal: bold text */
}

/* ---------- Text colors (all screen sizes) ---------- */
.slide__title-area__title { color: var(--eg-heading); }
:is(.rich-text--slide, .p-columns > *) > :is(h2, h3, h4) { color: var(--eg-heading); }
.rich-text--slide > :not(.widget) :is(strong, b) { color: var(--eg-accent); }

/* ---------- Layout (desktop only; phones and tablets untouched) ---------- */
@media (min-width: 1025px) {
  .p-center:has(> .course-layout) { max-inline-size: 1480px; }
  .course-layout { gap: 2rem; }
  .course-layout__sidebar { width: 230px; }
  .course-layout__main { max-width: 960px; width: auto; flex: 1 1 auto; min-width: 0; }
  .course-layout__background {
    width: calc((100% - min(100% - 2 * var(--t1), 1480px)) / 2 + var(--t1) + 230px + 1rem);
  }
  .course-layout__custom-background { background-position: center 20%; }
}

/* ---------- Text-on-background blocks (use inside Raw HTML blocks) ---------- */
.eg-hero, .eg-panel, .eg-split {
  box-sizing: border-box; border-radius: 14px; overflow: hidden; margin: 1.5rem 0;
  font-family: inherit; line-height: 1.5;
}
.eg-hero *, .eg-panel *, .eg-split * { box-sizing: border-box; }
.eg-hero :is(h2,h3,p,strong,b), .eg-panel :is(h2,h3,p,strong,b) { color: inherit !important; }
.eg-hero h2, .eg-panel h2, .eg-split h2 { margin: 0 0 .5rem; font-size: clamp(1.5rem, 3vw, 2.1rem); line-height: 1.2; }
.eg-hero p, .eg-panel p, .eg-split p { margin: 0 0 .75rem; font-size: 1.2rem; }
.eg-hero p:last-child, .eg-panel p:last-child, .eg-split p:last-child { margin-bottom: 0; }
.eg-kicker { display: block; font-size: .8rem !important; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; opacity: .9; margin-bottom: .5rem !important; }

/* Photo with text on top */
.eg-hero {
  position: relative; display: flex; align-items: flex-end; min-height: 340px; padding: 2rem;
  color: #fff; background: var(--img) center / cover no-repeat, var(--eg-heading);
}
.eg-hero::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.75), rgba(0,0,0,.15) 70%);
}
.eg-hero > * { position: relative; max-width: 640px; }
.eg-hero--center { align-items: center; justify-content: center; text-align: center; }
.eg-hero--center::before { background: rgba(0,0,0,.5); }
.eg-hero--tall { min-height: 480px; }
.eg-hero--short { min-height: 220px; }

/* Solid color panels */
.eg-panel { padding: 2rem; color: #fff; background: var(--eg-heading); }
.eg-panel--accent { background: var(--eg-accent); }
.eg-panel--gradient { background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); }
.eg-panel--soft { color: #1f2933; background: #eef4f4; border-left: 6px solid var(--eg-accent); }
.eg-panel--soft h2 { color: var(--eg-heading) !important; }
.eg-panel--center { text-align: center; }

/* Image on one side, text on the other (stacks on phones) */
.eg-split { display: grid; grid-template-columns: 1fr 1fr; background: #f6f7f9; }
.eg-split > img { width: 100%; height: 100%; min-height: 260px; object-fit: cover; display: block; margin: 0; border-radius: 0; }
.eg-split > div { padding: 2rem; align-self: center; }
.eg-split h2 { color: var(--eg-heading); }
.eg-split .eg-kicker { color: var(--eg-accent); }
.eg-split--flip > img { order: 2; }
@media (max-width: 700px) {
  .eg-split { grid-template-columns: 1fr; }
  .eg-split--flip > img { order: 0; }
  .eg-split > img { min-height: 200px; max-height: 260px; }
  .eg-hero, .eg-panel, .eg-split > div { padding: 1.4rem; }
  .eg-hero { min-height: 260px; }
}
/* ---------- List styles ----------
   Defaults for GrowPoint List blocks: bullets = brand dots (pulsing), numbers = gradient squares.
   Other styles by class in Raw HTML blocks: eg-ul--check, --arrow, --cross, --diamond, --dash,
   --star, --box, --cards, --line; eg-ol--circle, --ring, --big, --steps, --line */
:is([class*="eg-ul--"],[class*="eg-ol--"],:is(.rich-text--slide, .p-columns > *) > ul, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ul,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) { list-style:none; padding-left:0; padding-inline-start:0; margin:1.2rem 0; }
:is([class*="eg-ul--"],[class*="eg-ol--"],:is(.rich-text--slide, .p-columns > *) > ul, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ul,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li { position:relative; padding-left:2.4rem; margin:0 0 .85rem; line-height:1.55; }
:is([class*="eg-ul--"],[class*="eg-ol--"],:is(.rich-text--slide, .p-columns > *) > ul, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ul,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li::marker { content:none; }
:is([class*="eg-ul--"],[class*="eg-ol--"],:is(.rich-text--slide, .p-columns > *) > ul, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ul,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li::before { position:absolute; left:0; box-sizing:border-box; font-family:system-ui,-apple-system,"Segoe UI",sans-serif; }

/* B1 Brand dots */
:is(.eg-ul--dots,:is(.rich-text--slide, .p-columns > *) > ul, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ul) > li::before { content:""; top:.6em; left:.35rem; width:.6rem; height:.6rem; border-radius:50%; background:var(--eg-accent); box-shadow:0 0 0 4px rgba(0,122,122,.15); }
/* B2 Checkmarks */
.eg-ul--check > li::before { content:"\2713"; top:.15em; width:1.5rem; height:1.5rem; border-radius:50%; background:var(--eg-accent); color:#fff; font-size:.85rem; font-weight:700; display:flex; align-items:center; justify-content:center; line-height:1; }
/* B3 Arrows */
.eg-ul--arrow > li::before { content:"\2192"; top:0; color:var(--eg-heading); font-weight:700; font-size:1.2em; line-height:1.3; }
/* B4 Crosses */
.eg-ul--cross > li::before { content:""; top:.3em; left:.3rem; width:.9rem; height:1.1rem;
  background:linear-gradient(var(--eg-heading),var(--eg-heading)) center 0/ .22rem 100% no-repeat,
             linear-gradient(var(--eg-heading),var(--eg-heading)) 0 30%/ 100% .22rem no-repeat; }
/* B5 Diamonds */
.eg-ul--diamond > li::before { content:""; top:.5em; left:.3rem; width:.7rem; height:.7rem; transform:rotate(45deg); background:linear-gradient(135deg,var(--eg-heading),var(--eg-accent)); border-radius:2px; }
/* B6 Minimal dashes */
.eg-ul--dash > li::before { content:""; top:.78em; left:0; width:1.3rem; height:2px; background:var(--eg-accent); }
/* B7 Sparkles */
.eg-ul--star > li::before { content:"\2726"; top:0; left:.2rem; color:var(--eg-accent); font-size:1.15em; line-height:1.35; }
/* B8 Checklist boxes */
.eg-ul--box > li::before { content:""; top:.25em; width:1.25rem; height:1.25rem; border:2px solid var(--eg-heading); border-radius:5px; }
/* B9 Cards */
.eg-ul--cards > li { padding:.9rem 1.1rem .9rem 1.3rem; background:#f2f6f6; border-radius:10px; border-left:5px solid var(--eg-accent); }
.eg-ul--cards > li::before { content:none; }
/* B10 Connected dots */
.eg-ul--line > li { margin:0; padding-bottom:1.1rem; }
.eg-ul--line > li::before { content:""; top:.45em; left:.3rem; width:.85rem; height:.85rem; border-radius:50%; border:3px solid var(--eg-accent); background:#fff; z-index:1; }
.eg-ul--line > li::after { content:""; position:absolute; left:.68rem; top:1.2em; bottom:-.3em; width:2px; background:rgba(0,122,122,.3); }
.eg-ul--line > li:last-child::after { display:none; }

/* N1 Number circles */
.eg-ol--circle { counter-reset:eg; }
.eg-ol--circle > li { counter-increment:eg; }
.eg-ol--circle > li::before { content:counter(eg); top:.05em; width:1.7rem; height:1.7rem; border-radius:50%; background:var(--eg-heading); color:#fff; font-weight:700; font-size:.9rem; display:flex; align-items:center; justify-content:center; line-height:1; }
/* N2 Outlined circles */
.eg-ol--ring { counter-reset:eg; }
.eg-ol--ring > li { counter-increment:eg; }
.eg-ol--ring > li::before { content:counter(eg); top:.05em; width:1.7rem; height:1.7rem; border-radius:50%; border:2px solid var(--eg-accent); color:var(--eg-accent); font-weight:700; font-size:.9rem; display:flex; align-items:center; justify-content:center; line-height:1; }
/* N3 Big editorial numbers */
.eg-ol--big { counter-reset:eg; }
.eg-ol--big > li { counter-increment:eg; padding-left:4rem; min-height:2.8rem; margin-bottom:1.2rem; }
.eg-ol--big > li::before { content:counter(eg, decimal-leading-zero); top:-.15em; font-size:2.4rem; font-weight:800; line-height:1; color:rgba(73,78,143,.25); }
/* N4 Gradient squares */
:is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) { counter-reset:eg; }
:is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li { counter-increment:eg; }
:is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li::before { content:counter(eg); top:.05em; width:1.7rem; height:1.7rem; border-radius:6px; background:linear-gradient(135deg,var(--eg-heading),var(--eg-accent)); color:#fff; font-weight:700; font-size:.9rem; display:flex; align-items:center; justify-content:center; line-height:1; }
/* N5 Step cards */
.eg-ol--steps { counter-reset:eg; }
.eg-ol--steps > li { counter-increment:eg; padding:2.4rem 1.2rem 1rem; background:#fff; border:1px solid #dfe5e8; border-radius:12px; box-shadow:0 2px 8px rgba(0,0,0,.05); }
.eg-ol--steps > li::before { content:"STEP " counter(eg); top:.9rem; left:1.2rem; font-size:.75rem; font-weight:800; letter-spacing:.14em; color:var(--eg-accent); }
/* N6 Connected timeline */
.eg-ol--line { counter-reset:eg; }
.eg-ol--line > li { counter-increment:eg; margin:0; padding-bottom:1.2rem; }
.eg-ol--line > li::before { content:counter(eg); top:0; width:1.7rem; height:1.7rem; border-radius:50%; background:var(--eg-accent); color:#fff; font-weight:700; font-size:.9rem; display:flex; align-items:center; justify-content:center; line-height:1; z-index:1; }
.eg-ol--line > li::after { content:""; position:absolute; left:.8rem; top:1.7rem; bottom:0; width:2px; background:rgba(0,122,122,.3); }
.eg-ol--line > li:last-child::after { display:none; }
/* Hide GrowPoint's built-in "1." numbers so only the styled ones show */
.rich-text--slide :is(ul,ol) > li > span::before { content:none !important; }
/* Nested lists sit closer to their parent item */
:is([class*="eg-ul--"],[class*="eg-ol--"],:is(.rich-text--slide, .p-columns > *) > ul,:is(.rich-text--slide, .p-columns > *) > ol) li > :is(ul,ol) { margin:.6rem 0 0; }
/* Soft pulse on brand dots */
@media (prefers-reduced-motion: no-preference) {
  :is(.eg-ul--dots,:is(.rich-text--slide, .p-columns > *) > ul, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ul) > li::before { animation: egDotPulse 2.6s ease-in-out infinite; }
  :is(.eg-ul--dots,:is(.rich-text--slide, .p-columns > *) > ul, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ul) > li:nth-child(2n)::before { animation-delay: .4s; }
  :is(.eg-ul--dots,:is(.rich-text--slide, .p-columns > *) > ul, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ul) > li:nth-child(3n)::before { animation-delay: .8s; }
}
@keyframes egDotPulse {
  0%, 100% { box-shadow: 0 0 0 3px rgba(0,122,122,.22); }
  50%      { box-shadow: 0 0 0 7px rgba(0,122,122,.06); }
}

/* ---------- Accordion styles ----------
   Default for every accordion: timeline. To use a different style on one accordion, put a
   Raw HTML block DIRECTLY ABOVE it containing (pick one):
     <div class="eg-acc-style" data-style="cards"></div>
   Styles: timeline, cards, gradient, tint, numbered, plain (GrowPoint's original look) */
.rich-text--slide .raw-html:has(.eg-acc-style) { display:none; }
/* shared: custom chevron replaces the icon font arrow */
.accordion:is(.eg-acc--cards,.eg-acc--timeline,.eg-acc--gradient,.eg-acc--tint,.eg-acc--numbered) .accordion__item__header { cursor:pointer; }
.accordion:is(.eg-acc--cards,.eg-acc--timeline,.eg-acc--gradient,.eg-acc--tint,.eg-acc--numbered) .accordion__item__header__arrow { flex:none; position:relative; width:2rem; height:2rem; border-radius:50%; font-size:0 !important; display:inline-flex; align-items:center; justify-content:center; transition:transform .3s ease, background .3s ease; }
.accordion:is(.eg-acc--cards,.eg-acc--timeline,.eg-acc--gradient,.eg-acc--tint,.eg-acc--numbered) .accordion__item__header__arrow::before { content:"" !important; width:.5rem; height:.5rem; border-right:2.5px solid currentColor; border-bottom:2.5px solid currentColor; transform:translateY(-2px) rotate(45deg); }
.accordion:is(.eg-acc--cards,.eg-acc--timeline,.eg-acc--gradient,.eg-acc--tint,.eg-acc--numbered) .accordion__item[data-collapse-open-value="true"] .accordion__item__header__arrow { transform:rotate(180deg); }
/* A1 Cards */
.accordion.eg-acc--cards { display:flex; flex-direction:column; gap:.8rem; }
.accordion.eg-acc--cards .accordion__item { border:1px solid #e3e8ec !important; border-radius:14px; background:#fff; box-shadow:0 2px 10px rgba(0,0,0,.05); overflow:hidden; transition:box-shadow .3s, border-color .3s; border-left:5px solid transparent !important; }
.accordion.eg-acc--cards .accordion__item:hover { box-shadow:0 6px 20px rgba(0,0,0,.08); }
.accordion.eg-acc--cards .accordion__item__header { padding:1rem 1.2rem !important; }
.accordion.eg-acc--cards .accordion__item__header strong { color:var(--eg-heading) !important; font-size:1.2rem; }
.accordion.eg-acc--cards .accordion__item__header__arrow { background:#eef4f4; color:var(--eg-accent); }
.accordion.eg-acc--cards .accordion__item[data-collapse-open-value="true"] { border-left-color:var(--eg-accent) !important; box-shadow:0 8px 24px rgba(0,122,122,.12); }
.accordion.eg-acc--cards .accordion__item[data-collapse-open-value="true"] .accordion__item__header__arrow { background:var(--eg-accent); color:#fff; }
.accordion.eg-acc--cards .accordion__item[data-collapse-open-value="true"] .accordion__item__content { padding:0 1.2rem 1.1rem; }
/* A2 Timeline */
.accordion.eg-acc--timeline { position:relative; padding-left:2.2rem; }
.accordion.eg-acc--timeline::before { content:""; position:absolute; left:.6rem; top:1.4rem; bottom:1.4rem; width:3px; border-radius:3px; background:linear-gradient(var(--eg-heading),var(--eg-accent)); opacity:.35; }
.accordion.eg-acc--timeline .accordion__item { position:relative; border-bottom:none !important; }
.accordion.eg-acc--timeline .accordion__item::before { content:""; position:absolute; left:-2.05rem; top:1.15rem; width:1.05rem; height:1.05rem; border-radius:50%; background:#fff; border:3px solid var(--eg-accent); box-sizing:border-box; transition:background .3s, transform .3s; }
.accordion.eg-acc--timeline .accordion__item[data-collapse-open-value="true"]::before { background:var(--eg-accent); transform:scale(1.25); box-shadow:0 0 0 6px rgba(0,122,122,.15); }
.accordion.eg-acc--timeline .accordion__item__header { padding:.8rem 0 !important; }
.accordion.eg-acc--timeline .accordion__item__header strong { color:var(--eg-heading) !important; font-size:1.35rem; font-weight:800; }
.accordion.eg-acc--timeline .accordion__item__header__arrow { color:var(--eg-accent); }
.accordion.eg-acc--timeline .accordion__item[data-collapse-open-value="true"] .accordion__item__content { padding:.2rem 0 1rem; }
/* A3 Gradient headers */
.accordion.eg-acc--gradient { display:flex; flex-direction:column; gap:.6rem; }
.accordion.eg-acc--gradient .accordion__item { border:none !important; border-radius:12px; overflow:hidden; background:#f3f6f8; }
.accordion.eg-acc--gradient .accordion__item__header { padding:.95rem 1.2rem !important; background:linear-gradient(120deg,var(--eg-heading),var(--eg-accent)); transition:filter .2s; }
.accordion.eg-acc--gradient .accordion__item__header:hover { filter:brightness(1.08); }
.accordion.eg-acc--gradient .accordion__item__header strong { color:#fff !important; font-size:1.15rem; }
.accordion.eg-acc--gradient .accordion__item__header__arrow { background:rgba(255,255,255,.18); color:#fff; }
.accordion.eg-acc--gradient .accordion__item[data-collapse-open-value="true"] .accordion__item__content { padding:1rem 1.2rem 1.1rem; }
/* A4 Soft tint */
.accordion.eg-acc--tint { display:flex; flex-direction:column; gap:.5rem; }
.accordion.eg-acc--tint .accordion__item { border:none !important; border-radius:12px; background:#f1f6f6; transition:background .3s; }
.accordion.eg-acc--tint .accordion__item:hover { background:#e7f0f0; }
.accordion.eg-acc--tint .accordion__item__header { padding:.9rem 1.2rem !important; }
.accordion.eg-acc--tint .accordion__item__header strong { color:var(--eg-accent) !important; font-size:1.15rem; }
.accordion.eg-acc--tint .accordion__item__header__arrow { color:var(--eg-accent); }
.accordion.eg-acc--tint .accordion__item[data-collapse-open-value="true"] { background:#fff; box-shadow:inset 0 0 0 2px rgba(0,122,122,.35); }
.accordion.eg-acc--tint .accordion__item[data-collapse-open-value="true"] .accordion__item__header strong { color:var(--eg-heading) !important; }
.accordion.eg-acc--tint .accordion__item[data-collapse-open-value="true"] .accordion__item__content { padding:0 1.2rem 1.1rem; }
/* A5 Numbered */
.accordion.eg-acc--numbered { counter-reset:egacc; }
.accordion.eg-acc--numbered .accordion__item { counter-increment:egacc; border-bottom:1px solid #e3e8ec !important; }
.accordion.eg-acc--numbered .accordion__item__header { padding:1rem 0 !important; gap:1rem; }
.accordion.eg-acc--numbered .accordion__item__header strong { flex:1; display:flex; align-items:center; gap:1rem; color:var(--eg-heading) !important; font-size:1.2rem; }
.accordion.eg-acc--numbered .accordion__item__header strong::before { content:counter(egacc, decimal-leading-zero); flex:none; width:2.6rem; height:2.6rem; border-radius:10px; display:inline-flex; align-items:center; justify-content:center; font-size:.95rem; font-weight:800; color:#fff; background:linear-gradient(135deg,var(--eg-heading),var(--eg-accent)); font-family:system-ui,-apple-system,"Segoe UI",sans-serif; }
.accordion.eg-acc--numbered .accordion__item__header__arrow { color:var(--eg-heading); background:#f0f1f7; }
.accordion.eg-acc--numbered .accordion__item[data-collapse-open-value="true"] .accordion__item__content { padding:0 0 1.1rem 3.6rem; }

/* ---------- Text size, alignment and color for normal Text/List blocks ----------
   Put a Raw HTML block DIRECTLY ABOVE a Text or List block containing, e.g.:
     <div class="eg-text" data-size="large"></div>
   data-size:  xsmall, small, large, xlarge, huge, lead (large + softer, for intros)
   data-align: left, center, right             (optional)
   data-color: heading, accent, muted          (optional)
   data-blocks: 2  -> also apply to the next 2 blocks, etc. (optional, default 1) */
.rich-text--slide .raw-html:has(.eg-text) { display:none; }
.rich-text--slide .eg-sized { font-size: calc(var(--eg-base, 1.3rem) * var(--eg-scale, 1)) !important; }
.rich-text--slide .eg-sized * { font-size: inherit !important; }
.rich-text--slide .eg-sized:is(h1,h2,h3,h4) { line-height: 1.2 !important; }
.rich-text--slide .eg-sized[data-eg-size="xsmall"] { --eg-scale: .78; }
.rich-text--slide .eg-sized[data-eg-size="small"]  { --eg-scale: .88; }
.rich-text--slide .eg-sized[data-eg-size="large"]  { --eg-scale: 1.22; line-height: 1.55; }
.rich-text--slide .eg-sized[data-eg-size="xlarge"] { --eg-scale: 1.5;  line-height: 1.4; }
.rich-text--slide .eg-sized[data-eg-size="huge"]   { --eg-scale: 2;    line-height: 1.2; font-weight: 700; }
.rich-text--slide .eg-sized[data-eg-size="lead"]   { --eg-scale: 1.3;  line-height: 1.5; color: #4a5560; font-weight: 300; }
.rich-text--slide [data-eg-align="left"]   { text-align: left !important; }
.rich-text--slide [data-eg-align="center"] { text-align: center !important; }
.rich-text--slide [data-eg-align="right"]  { text-align: right !important; }
.rich-text--slide [data-eg-color="heading"] { color: var(--eg-heading) !important; }
.rich-text--slide [data-eg-color="accent"]  { color: var(--eg-accent) !important; }
.rich-text--slide [data-eg-color="muted"]   { color: #6b7580 !important; }

/* ---------- Scroll animations (paired with the script below) ----------
   Tuning knobs: change these three numbers to adjust every scroll animation. */
:root {
  --eg-speed: 1.4s;      /* how long each fade/slide takes */
  --eg-distance: 90px;   /* how far blocks travel as they come in */
  --eg-stagger: 200ms;   /* gap between blocks that arrive together */
}
.rich-text--slide { overflow-x: clip; }
@media (prefers-reduced-motion: no-preference) {
  .eg-anim .eg-r {
    opacity: 0;
    transition: opacity calc(var(--eg-speed) * .9) ease-out,
                transform var(--eg-speed) cubic-bezier(.16,1,.3,1),
                filter var(--eg-speed) ease-out;
    transition-delay: var(--eg-delay, 0ms);
  }
  .eg-anim .eg-r--up    { transform: translateY(var(--eg-distance)); }
  .eg-anim .eg-r--left  { transform: translateX(calc(var(--eg-distance) * -1.5)); }
  .eg-anim .eg-r--right { transform: translateX(calc(var(--eg-distance) * 1.5)); }
  .eg-anim .eg-r--zoom  { transform: scale(.8); filter: blur(4px); }
  .eg-anim .eg-r--blur  { filter: blur(18px); transform: translateY(calc(var(--eg-distance) * .4)); }
  .eg-anim .eg-r--tilt  { transform: perspective(900px) rotateX(32deg) translateY(var(--eg-distance)); transform-origin: 50% 0; }
  .eg-anim .eg-r--fade  { transform: none; }
  .eg-anim .eg-r.eg-in  { opacity: 1; transform: none; filter: none; }
}
@media (prefers-reduced-motion: no-preference) and (max-width: 700px) {
  :root { --eg-distance: 60px; }  /* a bit less travel on phones */
}
@media print { .eg-anim .eg-r { opacity: 1 !important; transform: none !important; filter: none !important; } }
/* ---------- Flowing wave on numbered-list squares ----------
   The gradient drifts back and forth, and each number is slightly out of step with the one above,
   so the color ripples down the list like a wave. Speed: change 3.5s. */
:is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li::before {
  background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent), #4fb3b0, var(--eg-accent), var(--eg-heading));
  background-size: 300% 300%;
}
@media (prefers-reduced-motion: no-preference) {
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li::before { animation: egWave 3.5s ease-in-out infinite alternate; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(1)::before { animation-delay: -0.00s; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(2)::before { animation-delay: -0.35s; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(3)::before { animation-delay: -0.70s; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(4)::before { animation-delay: -1.05s; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(5)::before { animation-delay: -1.40s; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(6)::before { animation-delay: -1.75s; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(7)::before { animation-delay: -2.10s; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(8)::before { animation-delay: -2.45s; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(9)::before { animation-delay: -2.80s; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(10)::before { animation-delay: -3.15s; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(11)::before { animation-delay: -3.50s; }
  :is(.eg-ol--square,:is(.rich-text--slide, .p-columns > *) > ol, :is(.rich-text--slide, .p-columns > *) > :is(ul,ol) ol) > li:nth-child(12)::before { animation-delay: -3.85s; }
}
@keyframes egWave {
  0%   { background-position: 0% 50%; }
  100% { background-position: 100% 50%; }
}
</style>

<script id="explore-god-accordions">
/* Accordion styles and text markers: work for everyone, including reduced-motion users */
(function () {

  // Read a setting from data-NAME="x" or from a class like "eg-NAME-x" (in case an editor strips data- attributes)
  function opt(m, name) {
    var v = m.getAttribute('data-' + name);
    if (v) return v;
    var re = new RegExp('^eg-' + name + '-(.+)$');
    for (var i = 0; i < m.classList.length; i++) { var r = m.classList[i].match(re); if (r) return r[1]; }
    return null;
  }

  // Accordion styles: default timeline; a marker block right above an accordion picks another
  function styleAccordions() {
    document.querySelectorAll('.rich-text--slide .accordion:not([data-eg-acc])').forEach(function (acc) {
      var prev = acc.previousElementSibling;
      var marker = prev && prev.querySelector && prev.querySelector('.eg-acc-style');
      var style = (marker && opt(marker, 'style')) || 'timeline';
      acc.setAttribute('data-eg-acc', style);
      if (style !== 'plain') acc.classList.add('eg-acc--' + style);
    });
  }

  // Text size/align/color markers: apply to the block(s) right after the marker
  function styleText() {
    document.querySelectorAll('.rich-text--slide .raw-html .eg-text:not([data-eg-done])').forEach(function (m) {
      m.setAttribute('data-eg-done', '1');
      var block = m.closest('.raw-html');
      var n = parseInt(opt(m, 'blocks') || '1', 10) || 1;
      var el = block.nextElementSibling;
      while (el && n > 0) {
        if (el.classList.contains('raw-html') && el.querySelector('.eg-text')) break;
        var size = opt(m, 'size'), align = opt(m, 'align'), color = opt(m, 'color');
        if (size) {
          el.style.setProperty('--eg-base', getComputedStyle(el).fontSize);
          el.setAttribute('data-eg-size', size);
          el.classList.add('eg-sized');
        }
        if (align) el.setAttribute('data-eg-align', align);
        if (color) el.setAttribute('data-eg-color', color);
        el = el.nextElementSibling; n--;
      }
    });
  }
  function run() { styleAccordions(); styleText(); }
  var t;
  new MutationObserver(function () { clearTimeout(t); t = setTimeout(run, 60); })
    .observe(document.body, { childList: true, subtree: true });
  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', run); else run();
})();
</script>

<script id="explore-god-scroll">
/* ---------- Scroll animations: blocks animate in as they scroll into view ----------
   Automatic by block type. To choose one yourself in a Raw HTML block, add
   data-reveal="up|left|right|zoom|blur|tilt|fade|none" to its outer element. */
(function () {
  if (!('IntersectionObserver' in window)) return;
  if (window.matchMedia && matchMedia('(prefers-reduced-motion: reduce)').matches) return;
  document.documentElement.classList.add('eg-anim');

  var io = new IntersectionObserver(function (entries) {
    var n = 0;
    entries.forEach(function (e) {
      if (!e.isIntersecting) return;
      e.target.style.setProperty('--eg-delay', 'calc(var(--eg-stagger) * ' + (n++) + ')');
      e.target.classList.add('eg-in');
      io.unobserve(e.target);
    });
  }, { threshold: 0, rootMargin: '0px 0px 60px 0px' });
  // ^ When animations start. 60px = start just before a block reaches the bottom of the screen.
  //   Bigger number (e.g. 150px) = even sooner; negative (e.g. -60px) = later.

  var side = 0;
  function pick(el) {
    var t = (el.matches('.raw-html') && el.firstElementChild) ? el.firstElementChild
          : (el.children.length === 1 && el.tagName === 'DIV') ? el.firstElementChild : el;
    var chosen = el.getAttribute('data-reveal') || (t && t.getAttribute && t.getAttribute('data-reveal'));
    if (chosen) return chosen;
    if (t.matches('.eg-hero')) return 'zoom';
    if (t.matches('.eg-panel--soft')) return 'blur';
    if (t.matches('.eg-panel, .eg-split')) return (side++ % 2) ? 'right' : 'left';
    if (t.matches('h2, h3, h4')) return 'up';
    if (t.matches('img, figure, video, iframe') || (t.querySelector && t.querySelector('img, video, iframe'))) return 'tilt';
    if (t.matches('ul, ol, table')) return (side++ % 2) ? 'right' : 'left';
    if (t.matches('blockquote')) return 'blur';
    return 'up';
  }

  function scan() {
    document.querySelectorAll('.rich-text--slide').forEach(function (rt) {
      Array.prototype.forEach.call(rt.children, function (el) {
        if (el.classList.contains('eg-r') || el.matches('.widget, script, style, br, .eg-norev')) return;
        var kind = pick(el);
        if (kind === 'none') return;
        el.classList.add('eg-r', 'eg-r--' + kind);
        io.observe(el);
      });
    });
  }

  // Anything the learner has already scrolled past (fast scroll, jump links) shows immediately
  var ticking = false;
  window.addEventListener('scroll', function () {
    if (ticking) return; ticking = true;
    requestAnimationFrame(function () {
      ticking = false;
      document.querySelectorAll('.eg-r:not(.eg-in)').forEach(function (el) {
        if (el.getBoundingClientRect().bottom < 0) { el.classList.add('eg-in'); io.unobserve(el); }
      });
    });
  }, { passive: true });

  var timer;
  new MutationObserver(function () { clearTimeout(timer); timer = setTimeout(scan, 60); })
    .observe(document.body, { childList: true, subtree: true });
  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', scan); else scan();
})();
</script>

<style id="explore-god-components">
/* ================= ExploreGod course components (v3) =================
   Everything below styles GrowPoint's normal blocks automatically, plus a few
   simple Raw HTML components (stat cards, quiz, banners) whose text is easy to edit. */

/* ---------- Polish for normal blocks (automatic) ---------- */
/* Section headings get a short gradient accent bar */
:is(.rich-text--slide, .p-columns > *) > h2 { position: relative; padding-bottom: .45rem; margin-top: 2.2rem !important; }
:is(.rich-text--slide, .p-columns > *) > h2::after { content: ""; position: absolute; left: 0; bottom: 0; width: 56px; height: 4px; border-radius: 4px; background: linear-gradient(90deg, var(--eg-heading), var(--eg-accent)); }
/* Divider (Delimiter block) */
.rich-text--slide > .u-border-bottom { border: 0 !important; height: 2px; margin: 2.2rem auto !important; width: 70%; background: linear-gradient(90deg, transparent, rgba(0,122,122,.45), transparent); position: relative; }
.rich-text--slide > .u-border-bottom::after { content: ""; position: absolute; left: 50%; top: 50%; width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%; background: var(--eg-accent); box-shadow: 0 0 0 5px #fff, 0 0 0 7px rgba(0,122,122,.25); }
/* Photos in normal Image blocks and Columns */
.rich-text--slide img:not(.raw-html img):not(.accordion img) { border-radius: 14px; box-shadow: 0 8px 24px rgba(20,30,60,.14); }
/* Quote block */
.rich-text--slide .quote { position: relative; padding: 1.4rem 1.5rem 1.2rem 1.8rem !important; border-radius: 14px; background: linear-gradient(135deg, #f4f6fb, #eef7f6); border-left: 5px solid var(--eg-accent) !important; }
.rich-text--slide .quote::before { content: "\201C"; position: absolute; top: -.35rem; right: 1rem; font: 700 5rem/1 Georgia, serif; color: var(--eg-heading); opacity: .15; }
.rich-text--slide .quote p { font-style: italic; }
.rich-text--slide .quote > span { font-weight: 700; color: var(--eg-heading) !important; letter-spacing: .04em; }
.rich-text--slide .quote > span::before { content: "— "; }
/* "Note:" paragraphs become soft callouts (added by the script below) */
.rich-text--slide .eg-note { position: relative; padding: .9rem 1.1rem .9rem 3rem !important; border-radius: 12px; background: #eef6f6; border: 1px solid #d6ebea; font-size: .95em !important; }
.rich-text--slide .eg-note::before { content: "i"; position: absolute; left: 1rem; top: .95rem; width: 1.35rem; height: 1.35rem; border-radius: 50%; background: var(--eg-accent); color: #fff; font: 700 .85rem/1.35rem Georgia, serif; text-align: center; }

/* ---------- Banner (photo with text) upgrades ----------
   On any eg-hero block: style="--img:url('...'); --shade:.6"  (0 = no darkening, 1 = black)
   Add class eg-hero--left for left-aligned text with a left-to-right fade. */
.eg-hero::before { background: linear-gradient(to top, rgba(10,20,40,calc(var(--shade,.55) + .2)), rgba(10,20,40,calc(var(--shade,.55) * .45)) 75%) !important; }
.eg-hero--center::before { background: rgba(10,20,40,var(--shade,.6)) !important; }
.eg-hero--left { align-items: center !important; justify-content: flex-start !important; text-align: left !important; }
.eg-hero--left::before { background: linear-gradient(90deg, rgba(10,20,40,calc(var(--shade,.6) + .25)) 0%, rgba(10,20,40,var(--shade,.6)) 50%, rgba(10,20,40,calc(var(--shade,.6) * .4)) 100%) !important; }
.eg-hero h2 { text-shadow: 0 2px 10px rgba(0,0,0,.45); }
.eg-hero .eg-hi { color: #ffd98a !important; }
.eg-hero--big h2 { font-size: clamp(2rem, 5vw, 3.2rem) !important; line-height: 1.1 !important; }

/* ---------- Stat cards: <div class="eg-stats"> with images inside ---------- */
.eg-stats { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 18px; margin: 1.5rem 0; }
.eg-stats img { display: block; width: 100%; height: auto; border-radius: 14px; box-shadow: 0 6px 18px rgba(20,30,60,.12); transition: transform .35s cubic-bezier(.3,1.4,.5,1), box-shadow .35s; }
.eg-stats img:hover { transform: translateY(-6px) scale(1.03); box-shadow: 0 16px 32px rgba(20,30,60,.22); }
@media (max-width: 800px) { .eg-stats { grid-template-columns: repeat(2, minmax(0,1fr)); } }

/* ---------- Quiz: <div class="eg-quiz" data-answer="..."> (built by the script below) ---------- */
.eg-quiz { max-width: 720px; margin: 1.8rem auto; padding: 1.8rem 1.6rem; border-radius: 18px; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 10px 30px rgba(20,30,60,.08); text-align: center; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; }
.eg-quiz * { box-sizing: border-box; }
.eg-quiz .eg-quiz-kicker { display: inline-block; margin: 0 0 .7rem; padding: .25rem .7rem; border-radius: 999px; background: #eef6f6; color: var(--eg-accent); font-size: .75rem !important; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.eg-quiz .eg-quiz-q { margin: 0 0 1.3rem !important; font-size: 1.35rem !important; line-height: 1.4 !important; font-weight: 700; }
.eg-quiz .eg-quiz-q b, .eg-quiz .eg-quiz-q strong { color: var(--eg-heading) !important; }
.eg-quiz ul.eg-quiz-opts { list-style: none !important; margin: 0 !important; padding: 0 !important; display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 14px; }
.eg-quiz ul.eg-quiz-opts li { margin: 0 !important; padding: 1.3rem .5rem !important; border-radius: 16px; background: #eef1fa; color: var(--eg-heading); font-size: 2.1rem !important; font-weight: 800; line-height: 1.1 !important; cursor: pointer; border: 2px solid transparent; user-select: none; position: relative;
  transition: transform .18s ease, background .18s, color .18s, box-shadow .18s, border-color .18s, opacity .3s; }
.eg-quiz ul.eg-quiz-opts li::before { content: none !important; }
.eg-quiz ul.eg-quiz-opts li:hover { transform: scale(1.05); background: #dfe4f5; box-shadow: 0 8px 18px rgba(73,78,143,.18); }
.eg-quiz ul.eg-quiz-opts li:active { transform: scale(.97); }
.eg-quiz ul.eg-quiz-opts li:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 3px; }
.eg-quiz ul.eg-quiz-opts li.is-sel { background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); color: #fff; transform: scale(1.05); box-shadow: 0 10px 22px rgba(73,78,143,.3); }
.eg-quiz ul.eg-quiz-opts li.is-right { background: #e6f4ea; color: #1e6b41; border-color: #2e8b57; animation: egqPulse .6s ease; transform: scale(1.05); }
.eg-quiz ul.eg-quiz-opts li.is-wrong { background: #fdecec; color: #9b2c22; border-color: #c0392b; animation: egqShake .4s ease; }
.eg-quiz.is-done ul.eg-quiz-opts li { cursor: default; }
.eg-quiz.is-done ul.eg-quiz-opts li:not(.is-right):not(.is-wrong) { opacity: .4; transform: none; box-shadow: none; }
.eg-quiz .eg-quiz-btn { all: unset; box-sizing: border-box; display: inline-block; margin-top: 1.5rem; padding: .8rem 2.2rem; border-radius: 999px; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); color: #fff; font-weight: 800; letter-spacing: .03em; cursor: pointer; transition: transform .18s, box-shadow .18s, filter .18s; }
.eg-quiz .eg-quiz-btn:hover { transform: translateY(-2px) scale(1.04); box-shadow: 0 8px 18px rgba(73,78,143,.3); filter: brightness(1.08); }
.eg-quiz .eg-quiz-btn:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 3px; }
.eg-quiz.is-done .eg-quiz-btn { display: none; }
.eg-quiz .eg-quiz-warn { min-height: 1.3em; margin: .6rem 0 0 !important; color: #9b2c22; font-size: .9rem !important; }
.eg-quiz .eg-quiz-fb { display: none; margin: 1.4rem auto 0; padding: 1.1rem 1.3rem; border-radius: 12px; background: #f4f6fb; text-align: left; opacity: 0; transform: translateY(8px); transition: opacity .35s, transform .35s; }
.eg-quiz.is-done .eg-quiz-fb { display: block; }
.eg-quiz .eg-quiz-fb.show { opacity: 1; transform: none; }
.eg-quiz .eg-quiz-fb p { margin: 0 0 .6rem !important; font-size: 1rem !important; line-height: 1.55 !important; }
.eg-quiz .eg-quiz-fb p:last-child { margin-bottom: 0 !important; }
.eg-quiz .eg-quiz-result { font-size: 1.15rem !important; font-weight: 800; }
@keyframes egqPulse { 0% { transform: scale(1); } 40% { transform: scale(1.1); } 100% { transform: scale(1.05); } }
@keyframes egqShake { 0%,100% { transform: translateX(0); } 25% { transform: translateX(-6px); } 75% { transform: translateX(6px); } }
@media (max-width: 520px) { .eg-quiz ul.eg-quiz-opts { grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; } .eg-quiz ul.eg-quiz-opts li { font-size: 1.5rem !important; } }

/* ================= v2 additions ================= */
/* Sub-headings (Heading level 3) */
:is(.rich-text--slide, .p-columns > *) > h3 { position: relative; padding-left: 1rem; margin-top: 2rem !important; color: var(--eg-heading) !important; }
:is(.rich-text--slide, .p-columns > *) > h3::before { content: ""; position: absolute; left: 0; top: .15em; bottom: .15em; width: 5px; border-radius: 5px; background: linear-gradient(var(--eg-heading), var(--eg-accent)); }
/* Blank paragraphs left over from the import are hidden (script marks them) */
.rich-text--slide .eg-empty { display: none !important; }

/* ---------- Columns (image + text) become tidy cards ---------- */
.rich-text--slide > .p-columns { align-items: center !important; }
.rich-text--slide > .p-columns:has(img):not(:has(.quote)) { gap: 2.2rem !important; padding: 1.8rem; border-radius: 20px; background: linear-gradient(135deg, #f7f8fc, #f1f7f7); border: 1px solid #e4eaf0; margin: 1.6rem 0 !important; }
.rich-text--slide > .p-columns > * { gap: .9rem !important; }
.rich-text--slide > .p-columns img { width: auto !important; max-width: 100% !important; max-height: 340px; height: auto !important; margin: 0 auto; }
.rich-text--slide > .p-columns p.rich-text__font { font-size: 1.08rem !important; line-height: 1.65 !important; margin: 0 !important; }
.rich-text--slide > .p-columns .eg-note { font-size: .92rem !important; }
/* Short ALL-CAPS lines in columns become small labels (script marks them) */
.rich-text--slide .eg-eyebrow { font-size: .85rem !important; letter-spacing: .16em; text-transform: uppercase; color: var(--eg-accent) !important; display: flex; align-items: center; gap: .6rem; }
.rich-text--slide .eg-eyebrow::before { content: ""; width: 26px; height: 3px; border-radius: 3px; background: linear-gradient(90deg, var(--eg-heading), var(--eg-accent)); }
.rich-text--slide .eg-eyebrow b { color: inherit !important; }

/* ---------- Columns with a photo + Quote block become a feature quote ---------- */
.rich-text--slide > .p-columns:has(.quote) { gap: 2.2rem !important; padding: 2.2rem 2.4rem; border-radius: 22px; margin: 1.8rem 0 !important; background: radial-gradient(circle at 12% 20%, rgba(255,255,255,.12), transparent 45%), linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); box-shadow: 0 14px 34px rgba(40,50,110,.25); }
.rich-text--slide > .p-columns:has(.quote) > :has(img) { flex: 0 0 190px !important; align-items: center; }
.rich-text--slide > .p-columns:has(.quote) img { width: 190px !important; height: 190px !important; aspect-ratio: 1 !important; object-fit: cover; object-position: center 25%; border-radius: 50% !important; border: 5px solid rgba(255,255,255,.92); box-shadow: 0 10px 26px rgba(0,0,0,.25) !important; }
.rich-text--slide > .p-columns:has(.quote) .quote { background: none !important; border: 0 !important; padding: .4rem 0 0 !important; box-shadow: none !important; }
.rich-text--slide > .p-columns:has(.quote) .quote::before { color: #fff; opacity: .22; top: -1.6rem; right: auto; left: -.3rem; font-size: 6rem; }
.rich-text--slide > .p-columns:has(.quote) .quote p { color: #fff !important; font-size: 1.4rem !important; line-height: 1.55 !important; }
.rich-text--slide > .p-columns:has(.quote) .quote p b, .rich-text--slide > .p-columns:has(.quote) .quote p strong { color: #ffd98a !important; }
.rich-text--slide > .p-columns:has(.quote) .quote > span { color: rgba(255,255,255,.88) !important; text-transform: uppercase; font-size: .85rem; letter-spacing: .14em; }
@media (max-width: 700px) {
  .rich-text--slide > .p-columns:has(img) { padding: 1.3rem !important; }
  .rich-text--slide > .p-columns:has(.quote) { text-align: center; }
  .rich-text--slide > .p-columns:has(.quote) > :has(img) { flex-basis: 100% !important; }
  .rich-text--slide > .p-columns:has(.quote) img { width: 150px !important; height: 150px !important; margin: 0 auto; }
}

/* ---------- Click-to-enlarge photos ---------- */
.rich-text--slide img.eg-zoomable { cursor: zoom-in; transition: transform .3s ease, box-shadow .3s ease; }
.rich-text--slide img.eg-zoomable:hover { transform: scale(1.015); }
.eg-lightbox { position: fixed; inset: 0; z-index: 99999; display: flex; align-items: center; justify-content: center; padding: 4vmin; background: rgba(10,16,32,.86); backdrop-filter: blur(4px); cursor: zoom-out; opacity: 0; transition: opacity .25s ease; }
.eg-lightbox.show { opacity: 1; }
.eg-lightbox img { max-width: 100%; max-height: 100%; border-radius: 14px; box-shadow: 0 20px 60px rgba(0,0,0,.5); transform: scale(.94); transition: transform .3s cubic-bezier(.3,1.3,.5,1); background: #fff; }
.eg-lightbox.show img { transform: none; }
.eg-lightbox span { position: absolute; top: 18px; right: 24px; color: #fff; font: 700 2rem/1 system-ui, sans-serif; opacity: .8; }

/* ---------- Big-number banner: <ul class="eg-bigstats"> inside an eg-hero ---------- */
.eg-hero.eg-hero--stats { min-height: 360px; }
.eg-hero.eg-hero--stats > * { max-width: 100% !important; width: 100%; }
.eg-hero .eg-bigstats { list-style: none !important; margin: 1.2rem 0 0 !important; padding: 0 !important; display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 1rem; }
.eg-hero .eg-bigstats li { margin: 0 !important; padding: 1.3rem 1rem 1.2rem !important; border-radius: 16px; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.22); backdrop-filter: blur(3px); font-size: 1.05rem !important; line-height: 1.35 !important; font-weight: 600; letter-spacing: .02em; color: rgba(255,255,255,.92) !important; transition: transform .3s ease, background .3s ease; }
.eg-hero .eg-bigstats li::before { content: none !important; }
.eg-hero .eg-bigstats:has(> li:nth-child(4)) li { padding: 1.2rem .7rem 1.1rem !important; font-size: .95rem !important; }
.eg-hero .eg-bigstats:has(> li:nth-child(4)) strong { font-size: clamp(1.45rem, 2.6vw, 1.85rem) !important; white-space: nowrap; }
.eg-hero .eg-bigstats li:hover { transform: translateY(-4px); background: rgba(255,255,255,.16); }
.eg-hero .eg-bigstats strong { display: block; margin-bottom: .35rem; font-size: clamp(2rem, 4.2vw, 2.9rem) !important; line-height: 1 !important; font-weight: 800; color: #ffd98a !important; text-shadow: 0 2px 12px rgba(0,0,0,.35); font-variant-numeric: tabular-nums; }
.eg-hero .eg-pill { display: inline-block; margin: 1.4rem 0 0 !important; padding: .5rem 1.3rem; border-radius: 999px; background: #ffd98a; color: #1d2a3a !important; font-weight: 800 !important; font-size: .95rem !important; letter-spacing: .12em; text-transform: uppercase; box-shadow: 0 6px 18px rgba(0,0,0,.25); }
.eg-hero--stats .eg-kicker { font-size: .95rem !important; color: #fff; }

/* Quiz: optional small word under each answer, e.g. data-unit="languages" */
.eg-quiz ul.eg-quiz-opts li small { display: block; margin-top: .35rem; font-size: .8rem; font-weight: 600; letter-spacing: .06em; opacity: .75; }

/* ---------- Flip cards: <div class="eg-flip"> with one <div> per card (built by the script) ---------- */
.eg-flip { margin: 1.4rem 0; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; }
.eg-flip * { box-sizing: border-box; }
.eg-flip > div[data-icon], .eg-flip > div:not([class]) { display: none; }
.eg-flip .egf-top { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: .8rem; font-size: .9rem; color: #5b6570; }
.eg-flip .egf-count { font-weight: 800; color: var(--eg-accent); }
.eg-flip .egf-bar { height: 6px; border-radius: 6px; background: #e8eef2; margin-bottom: 1rem; overflow: hidden; }
.eg-flip .egf-bar i { display: block; height: 100%; width: 0; border-radius: 6px; background: linear-gradient(90deg, var(--eg-heading), var(--eg-accent)); transition: width .5s cubic-bezier(.3,1.2,.5,1); }
.eg-flip .egf-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 1rem; }
@media (min-width: 641px) { .eg-flip .egf-grid:has(> :nth-child(3):last-child) { grid-template-columns: repeat(3, minmax(0,1fr)); } }
.eg-flip button.egf-card { all: unset; display: block; cursor: pointer; perspective: 1000px; border-radius: 18px; }
.eg-flip button.egf-card:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 3px; }
.eg-flip .egf-inner { display: grid; transform-style: preserve-3d; transition: transform .9s cubic-bezier(.34,1.56,.64,1); }
.eg-flip button.egf-card, .eg-flip .egf-inner { height: 100%; }
.eg-flip .egf-card.is-flipped .egf-inner { transform: rotateY(180deg); }
.eg-flip .egf-face { grid-area: 1/1; min-height: 240px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 1.6rem 1.5rem; border-radius: 18px; backface-visibility: hidden; -webkit-backface-visibility: hidden; }
.eg-flip .egf-front { background: #fff; color: var(--eg-heading); border: 1px solid #e3e8ec; box-shadow: 0 6px 18px rgba(0,0,0,.06); transition: box-shadow .3s, border-color .3s, transform .3s; }
.eg-flip .egf-card:hover .egf-front { border-color: var(--eg-accent); box-shadow: 0 12px 28px rgba(0,122,122,.16); }
.eg-flip .egf-card.is-seen .egf-front::after { content: "\2713"; position: absolute; top: 14px; right: 14px; width: 24px; height: 24px; border-radius: 50%; background: var(--eg-accent); color: #fff; font-size: .8rem; font-weight: 800; display: flex; align-items: center; justify-content: center; }
.eg-flip .egf-front { position: relative; }
.eg-flip .egf-front svg { width: 64px; height: 64px; padding: 15px; margin-bottom: .8rem; border-radius: 50%; color: #fff; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.eg-flip .egf-term { font-size: 1.6rem; font-weight: 800; line-height: 1.15; }
.eg-flip .egf-sub { margin-top: .25rem; font-size: 1rem; color: #6b7580; }
.eg-flip .egf-tap { margin-top: 1rem; font-size: .75rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--eg-accent); }
.eg-flip .egf-back { transform: rotateY(180deg); color: #fff; background: linear-gradient(145deg, var(--eg-heading), var(--eg-accent)); box-shadow: 0 12px 28px rgba(73,78,143,.3); }
.eg-flip .egf-bterm { font-size: .75rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: #ffd98a; margin-bottom: .7rem; }
.eg-flip .egf-back p { margin: 0 0 .5rem !important; color: #fff !important; font-family: Georgia, "Source Serif Pro", serif; font-size: 1.1rem !important; line-height: 1.55 !important; }
.eg-flip .egf-back p:last-child { margin-bottom: 0 !important; }
.eg-flip .egf-back b, .eg-flip .egf-back strong { font-family: system-ui,-apple-system,sans-serif; color: #fff !important; text-decoration: underline; text-decoration-color: rgba(255,217,138,.85); text-decoration-thickness: 2px; text-underline-offset: 4px; }
.eg-flip .egf-done { min-height: 1.4em; margin: .9rem 0 0 !important; text-align: center; font-weight: 800; color: var(--eg-accent); opacity: 0; transform: translateY(6px); transition: opacity .4s, transform .4s; }
.eg-flip .egf-done.show { opacity: 1; transform: none; }
@media (max-width: 640px) { .eg-flip .egf-grid { grid-template-columns: 1fr; } .eg-flip .egf-face { min-height: 200px; } }
@media (prefers-reduced-motion: reduce) { .eg-flip .egf-inner { transition: none; } }

/* ================= v3 additions: activities ================= */
/* Shared card look for activities */
:is(.eg-sort, .eg-order, .eg-chat, .eg-steps) { max-width: 820px; margin: 1.8rem auto; padding: 1.8rem 1.6rem; border-radius: 18px; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 10px 30px rgba(20,30,60,.08); font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; }
:is(.eg-sort, .eg-order, .eg-chat, .eg-steps, .eg-points) * { box-sizing: border-box; }
.eg-act-kicker, .eg-quiz .eg-quiz-kicker { display: inline-block; margin: 0 0 .7rem !important; padding: .25rem .75rem; border-radius: 999px; background: #eef6f6; color: var(--eg-accent) !important; font-size: .75rem !important; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
:is(.eg-sort, .eg-order, .eg-chat) { text-align: center; }
.eg-act-hint, .eg-quiz .eg-quiz-hint { margin: 0 0 1.2rem !important; color: #5b6570 !important; font-size: .95rem !important; }
.eg-act-q { margin: 0 0 1rem; }
.eg-act-q p { margin: 0 0 .5rem !important; font-size: 1.1rem !important; line-height: 1.5 !important; }
.eg-act-btn { all: unset; box-sizing: border-box; display: inline-block; padding: .75rem 2rem; border-radius: 999px; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); color: #fff; font-weight: 800; letter-spacing: .03em; cursor: pointer; transition: transform .18s, box-shadow .18s, filter .18s; }
.eg-act-btn:hover { transform: translateY(-2px) scale(1.03); box-shadow: 0 8px 18px rgba(73,78,143,.3); filter: brightness(1.08); }
.eg-act-btn:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 3px; }
.eg-act-btn.is-ghost { background: #fff; color: var(--eg-heading); box-shadow: inset 0 0 0 2px #d6dbee; }
.eg-act-btn[disabled] { opacity: .4; pointer-events: none; }
.eg-act-status { min-height: 1.4em; margin: 1rem 0 0 !important; font-weight: 800; font-size: 1.05rem !important; }
.eg-act-status.good { color: #1e6b41; } .eg-act-status.bad { color: #9b2c22; }
.eg-act-count { font-size: .85rem; font-weight: 800; color: var(--eg-accent); }
.eg-act-bar { height: 6px; border-radius: 6px; background: #e8eef2; margin: .5rem 0 1.2rem; overflow: hidden; }
.eg-act-bar i { display: block; height: 100%; width: 0; border-radius: 6px; background: linear-gradient(90deg, var(--eg-heading), var(--eg-accent)); transition: width .5s cubic-bezier(.3,1.2,.5,1); }
@keyframes egPop { 0% { transform: scale(.96); opacity: 0; } 100% { transform: none; opacity: 1; } }

/* ---------- Quiz upgrades: long answers become a list; several right answers = select all ---------- */
.eg-quiz.eg-quiz--list { max-width: 780px; }
.eg-quiz.eg-quiz--list ul.eg-quiz-opts { grid-template-columns: 1fr; gap: 10px; }
.eg-quiz.eg-quiz--list ul.eg-quiz-opts li { text-align: left; font-size: 1.02rem !important; font-weight: 600; line-height: 1.45 !important; padding: .95rem 1.1rem .95rem 3.3rem !important; border-radius: 12px; background: #f4f6fb; color: #1d2a3a; }
.eg-quiz.eg-quiz--list ul.eg-quiz-opts li::after { content: ""; position: absolute; left: 1.1rem; top: 50%; width: 1.3rem; height: 1.3rem; margin-top: -.65rem; border-radius: 50%; border: 2px solid #b8c0dc; background: #fff; transition: all .18s; }
.eg-quiz.eg-quiz--list.eg-quiz--multi ul.eg-quiz-opts li::after { border-radius: 6px; }
.eg-quiz.eg-quiz--list ul.eg-quiz-opts li:hover { transform: translateX(4px); background: #eaeef8; }
.eg-quiz.eg-quiz--list ul.eg-quiz-opts li.is-sel { background: #eef1fa; color: #1d2a3a; transform: none; box-shadow: inset 0 0 0 2px var(--eg-heading); }
.eg-quiz.eg-quiz--list ul.eg-quiz-opts li.is-sel::after { border-color: transparent; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); box-shadow: inset 0 0 0 3px #fff; }
.eg-quiz.eg-quiz--list.eg-quiz--multi ul.eg-quiz-opts li.is-sel::after { content: "\2713"; color: #fff; font-size: .8rem; font-weight: 800; display: flex; align-items: center; justify-content: center; box-shadow: none; }
.eg-quiz.eg-quiz--list ul.eg-quiz-opts li.is-right { transform: none; animation: none; }
.eg-quiz.eg-quiz--list ul.eg-quiz-opts li.is-right::after { content: "\2713"; border-color: #2e8b57; background: #2e8b57; color: #fff; font-size: .8rem; font-weight: 800; display: flex; align-items: center; justify-content: center; }
.eg-quiz.eg-quiz--list ul.eg-quiz-opts li.is-wrong::after { content: "\2715"; border-color: #c0392b; background: #c0392b; color: #fff; font-size: .75rem; font-weight: 800; display: flex; align-items: center; justify-content: center; }
.eg-quiz ul.eg-quiz-opts li.is-missed { border: 2px dashed #2e8b57 !important; opacity: 1 !important; background: #f3faf5; }
.eg-quiz .eg-quiz-retry { display: none; margin-top: 1rem; }
.eg-quiz.is-done .eg-quiz-retry { display: inline-block; }

/* ---------- Sort it out: <div class="eg-sort" data-piles="A | B"> with <p data-pile="A"> cards ---------- */
.eg-sort .egs-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; text-align: left; }
.eg-sort .egs-card { padding: 1rem 1.1rem; border-radius: 14px; background: #f4f6fb; border: 2px solid transparent; transition: background .3s, border-color .3s; animation: egPop .4s ease both; }
.eg-sort .egs-card > p { margin: 0 0 .75rem !important; font-size: 1.05rem !important; line-height: 1.5 !important; font-weight: 600; }
.eg-sort .egs-piles { display: flex; flex-wrap: wrap; gap: 8px; }
.eg-sort .egs-piles button { all: unset; box-sizing: border-box; cursor: pointer; padding: .5rem 1rem; border-radius: 999px; background: #fff; box-shadow: inset 0 0 0 2px #d6dbee; color: var(--eg-heading); font-weight: 700; font-size: .92rem; transition: all .18s; }
.eg-sort .egs-piles button:hover { box-shadow: inset 0 0 0 2px var(--eg-heading); transform: translateY(-1px); }
.eg-sort .egs-piles button:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 2px; }
.eg-sort .egs-piles button.is-wrong { background: #fdecec; color: #9b2c22; box-shadow: inset 0 0 0 2px #c0392b; animation: egqShake .4s ease; }
.eg-sort .egs-card.is-done { background: #eef8f1; border-color: #2e8b57; }
.eg-sort .egs-card.is-done .egs-piles button { display: none; }
.eg-sort .egs-card.is-done .egs-piles::before { content: "\2713  " attr(data-answer); color: #1e6b41; font-weight: 800; font-size: .92rem; }
.eg-sort .egs-msg { display: block; min-height: 1.2em; margin-top: .45rem; font-size: .88rem; font-weight: 700; color: #9b2c22; }

/* ---------- Put in order: <div class="eg-order"> with an <ol> in the correct order ---------- */
.eg-order .ego-list { list-style: none !important; margin: 0 0 1.2rem !important; padding: 0 !important; display: grid; gap: 10px; text-align: left; }
.eg-order .ego-list li { position: relative; display: flex; align-items: center; gap: .8rem; margin: 0 !important; padding: .8rem .8rem .8rem 1rem !important; border-radius: 12px; background: #f4f6fb; border: 2px solid transparent; font-size: 1rem !important; line-height: 1.45 !important; font-weight: 600; cursor: grab; transition: background .2s, border-color .2s, transform .2s, box-shadow .2s; }
.eg-order .ego-list li::before { content: none !important; }
.eg-order .ego-list li:hover { background: #eaeef8; }
.eg-order .ego-list li.is-drag { opacity: .5; }
.eg-order .ego-list li.is-over { box-shadow: 0 -3px 0 var(--eg-accent); }
.eg-order .ego-num { flex: none; width: 2rem; height: 2rem; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 800; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); }
.eg-order .ego-txt { flex: 1; }
.eg-order .ego-mv { flex: none; display: flex; flex-direction: column; gap: 2px; }
.eg-order .ego-mv button { all: unset; cursor: pointer; width: 1.9rem; height: 1.3rem; border-radius: 6px; background: #fff; color: var(--eg-heading); display: flex; align-items: center; justify-content: center; font-size: .7rem; box-shadow: inset 0 0 0 1px #d6dbee; }
.eg-order .ego-mv button:hover { background: var(--eg-heading); color: #fff; }
.eg-order .ego-list li.is-right { background: #eef8f1; border-color: #2e8b57; }
.eg-order .ego-list li.is-wrong { background: #fdecec; border-color: #c0392b; }
.eg-order.is-solved .ego-mv { visibility: hidden; }
.eg-order.is-solved .ego-list li { cursor: default; }

/* ---------- Chat scenario: <div class="eg-chat"> with <div class="eg-chat-step"> sections ---------- */
.eg-chat .egc-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: .6rem; }
.eg-chat .egc-phone { text-align: left; border-radius: 16px; background: #f4f6fb; padding: 1.1rem; display: flex; flex-direction: column; gap: 10px; max-height: 460px; overflow-y: auto; border: 1px solid #e3e8ef; }
.eg-chat .egc-b { max-width: 82%; padding: .75rem 1rem; border-radius: 16px; font-size: .98rem; line-height: 1.5; animation: egPop .35s ease both; }
.eg-chat .egc-b p { margin: 0 !important; font-size: inherit !important; color: inherit !important; }
.eg-chat .egc-b.them { align-self: flex-start; background: #2f6fd6; color: #fff; border-bottom-left-radius: 4px; }
.eg-chat .egc-b.me { align-self: flex-end; background: #fff; color: #1d2a3a; border: 1px solid #dfe4ee; border-bottom-right-radius: 4px; }
.eg-chat .egc-who { display: block; font-size: .7rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; opacity: .7; margin-bottom: .25rem; }
.eg-chat .egc-tok { display: inline-block; padding: 0 .45rem; border-radius: 6px; background: rgba(0,122,122,.12); color: var(--eg-accent); font-weight: 700; font-size: .9em; }
.eg-chat .egc-b.them .egc-tok { background: rgba(255,255,255,.2); color: #fff; }
.eg-chat .egc-ask { margin: 1.2rem 0 .6rem !important; font-weight: 800; color: var(--eg-heading); text-align: left; }
.eg-chat .egc-opts { display: grid; gap: 10px; text-align: left; }
.eg-chat .egc-opt { all: unset; box-sizing: border-box; cursor: pointer; display: block; padding: .9rem 1rem; border-radius: 14px; background: #fff; box-shadow: inset 0 0 0 2px #dfe4ee; font-size: .95rem; line-height: 1.5; color: #1d2a3a; transition: box-shadow .18s, transform .18s, background .18s; }
.eg-chat .egc-opt:hover { box-shadow: inset 0 0 0 2px var(--eg-heading); transform: translateY(-2px); }
.eg-chat .egc-opt:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 2px; }
.eg-chat .egc-opt.is-wrong { background: #fdecec; box-shadow: inset 0 0 0 2px #c0392b; }
.eg-chat .egc-opt[disabled] { opacity: .45; pointer-events: none; }
.eg-chat .egc-fb { margin-top: 1rem; padding: 1rem 1.1rem; border-radius: 12px; text-align: left; animation: egPop .35s ease both; }
.eg-chat .egc-fb.good { background: #eef8f1; border: 1px solid #b9e0c6; }
.eg-chat .egc-fb.bad { background: #fdf1f0; border: 1px solid #f1c4bf; }
.eg-chat .egc-fb strong { display: block; margin-bottom: .3rem; font-size: 1.05rem; }
.eg-chat .egc-fb.good strong { color: #1e6b41; } .eg-chat .egc-fb.bad strong { color: #9b2c22; }
.eg-chat .egc-fb p { margin: 0 !important; font-size: .95rem !important; line-height: 1.55 !important; }
.eg-chat .egc-nav { margin-top: 1rem; }
.eg-chat .eg-chat-step { display: none; }

/* ---------- Step-by-step: <div class="eg-steps"> with one <div> per step ---------- */
.eg-steps .egp-dots { display: flex; gap: 6px; margin-bottom: 1.2rem; }
.eg-steps .egp-dot { all: unset; flex: 1; cursor: pointer; height: 8px; border-radius: 8px; background: #e3e8ef; transition: background .3s; }
.eg-steps .egp-dot.is-seen { background: rgba(0,122,122,.35); }
.eg-steps .egp-dot.is-on { background: linear-gradient(90deg, var(--eg-heading), var(--eg-accent)); }
.eg-steps .egp-dot:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 3px; }
.eg-steps .egp-pane { display: grid; grid-template-columns: 1.1fr 1fr; gap: 1.6rem; align-items: center; animation: egPop .45s ease both; }
.eg-steps .egp-pane.no-img { grid-template-columns: 1fr; }
.eg-steps .egp-pane img { display: block; width: 100%; height: auto; border-radius: 14px; box-shadow: 0 8px 24px rgba(20,30,60,.14); cursor: zoom-in; }
.eg-steps .egp-lbl { display: inline-block; margin-bottom: .4rem; font-size: .75rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--eg-accent); }
.eg-steps .egp-title { margin: 0 0 .6rem; font-size: 1.5rem; font-weight: 800; line-height: 1.2; color: var(--eg-heading); }
.eg-steps .egp-body p { margin: 0 0 .6rem !important; font-size: 1.02rem !important; line-height: 1.6 !important; }
.eg-steps .egp-body ul, .eg-steps .egp-body ol { margin: 0 0 .6rem 1.2rem !important; padding: 0 !important; }
.eg-steps .egp-nav { display: flex; justify-content: space-between; align-items: center; margin-top: 1.4rem; gap: 1rem; }
.eg-steps .egp-count { font-size: .85rem; font-weight: 800; color: #5b6570; }
.eg-steps > div:not([class]) { display: none; }
@media (max-width: 700px) { .eg-steps .egp-pane { grid-template-columns: 1fr; } }

/* ---------- Numbered key points: <div class="eg-points"> with an <ol> ---------- */
.eg-points { margin: 1.8rem 0; }
.eg-points ol { list-style: none !important; counter-reset: egpt; margin: 0 !important; padding: 0 !important; display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; }
.eg-points ol li { counter-increment: egpt; position: relative; margin: 0 !important; padding: 1.1rem 1.2rem 1.1rem 4.2rem !important; border-radius: 16px; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 4px 14px rgba(20,30,60,.06); font-size: 1rem !important; line-height: 1.5 !important; color: #3a4556; transition: transform .25s, box-shadow .25s; }
.eg-points ol li:hover { transform: translateY(-3px); box-shadow: 0 12px 26px rgba(20,30,60,.12); }
.eg-points ol li::before { content: counter(egpt) !important; position: absolute; left: 1.1rem; top: 1.1rem; width: 2.2rem; height: 2.2rem; border-radius: 10px; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 800; font-family: system-ui,-apple-system,sans-serif; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); }
.eg-points ol li strong, .eg-points ol li b:first-child { display: block; margin-bottom: .2rem; font-size: 1.1rem; color: var(--eg-heading) !important; }
@media (max-width: 700px) { .eg-points ol { grid-template-columns: 1fr; } }

/* ---------- Callouts: <div class="eg-callout"> (add eg-callout--warn for an important warning) ---------- */
.eg-callout { position: relative; margin: 1.6rem 0; padding: 1.1rem 1.3rem 1.1rem 3.6rem; border-radius: 14px; background: #eef6f6; border: 1px solid #cfe6e5; }
.eg-callout::before { content: "i"; position: absolute; left: 1.2rem; top: 1.15rem; width: 1.6rem; height: 1.6rem; border-radius: 50%; background: var(--eg-accent); color: #fff; font: 700 1rem/1.6rem Georgia, serif; text-align: center; }
.eg-callout p { margin: 0 0 .4rem !important; font-size: 1.05rem !important; line-height: 1.55 !important; }
.eg-callout p:last-child { margin-bottom: 0 !important; }
.eg-callout a { color: var(--eg-accent) !important; font-weight: 700; }
.eg-callout--warn { background: #fff6e6; border-color: #f3d9a4; }
.eg-callout--warn::before { content: "!"; background: #d98a00; font-family: system-ui, sans-serif; font-weight: 900; }

.eg-flip .eg-flip-title { margin: 0 0 1rem !important; text-align: center; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; font-size: 1.4rem !important; font-weight: 800; color: var(--eg-heading) !important; }
@media (max-width: 600px) { :is(.eg-sort, .eg-order, .eg-chat, .eg-steps, .eg-quiz) { padding: 1.3rem 1rem !important; } }
/* ---------- Scripture / quote banners: blockquote inside eg-hero ---------- */
.eg-hero blockquote { position: relative !important; min-height: 0 !important; margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; box-shadow: none !important; overflow: visible !important; color: #fff !important; quotes: none; }
.eg-hero blockquote::after { content: none !important; display: none !important; }
.eg-hero blockquote::before { content: "\201C" !important; position: static !important; display: block !important; width: auto !important; height: 2.6rem !important; margin: 0 auto !important; padding: 0 !important; background: none !important; border: 0 !important; box-shadow: none !important; font: 700 4.5rem/1 Georgia, serif !important; color: #ffd98a !important; opacity: .85; }
.eg-hero blockquote p { color: #fff !important; }
.eg-hero.eg-hero--quote > div { max-width: 760px; }
.eg-hero.eg-hero--quote blockquote p, .eg-hero.eg-hero--quote > div > p:not(.eg-src) { font-family: Georgia, "Source Serif Pro", serif; font-style: italic; font-size: clamp(1.2rem, 2.3vw, 1.55rem) !important; line-height: 1.5 !important; }
.eg-hero :is(blockquote, p) :is(b, strong) { color: #ffd98a !important; }
.eg-hero .eg-src { margin-top: 1rem !important; font-family: system-ui,-apple-system,sans-serif !important; font-style: normal !important; font-size: .85rem !important; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; opacity: .9; }
.eg-hero .eg-src :is(b, strong) { color: inherit !important; }
/* Bold words inside headings get a gold highlighter swipe (e.g. <b>Why</b> We Do It) */
:is(.rich-text--slide, .p-columns > *) > :is(h2,h3) .eg-hl { position: relative; display: inline-block; padding: 0 .12em; margin-right: .18em; font-weight: inherit; color: inherit !important; }
:is(.rich-text--slide, .p-columns > *) > :is(h2,h3) .eg-hl svg { position: absolute; left: -16%; top: -22%; width: 132%; height: 144%; overflow: visible; pointer-events: none; }
:is(.rich-text--slide, .p-columns > *) > :is(h2,h3) .eg-hl svg path { fill: none; stroke: #c8962e; stroke-width: 2.6; stroke-linecap: round; stroke-dasharray: 400; stroke-dashoffset: 0; transition: stroke-dashoffset 1.1s ease .35s; }
.eg-anim :is(h2,h3).eg-r:not(.eg-in) .eg-hl svg path { stroke-dashoffset: 400; }
:is(.rich-text--slide, .p-columns > *) > :is(h2,h3) .eg-hl.is-first { margin-left: .5em; }
:is(.rich-text--slide, .p-columns > *) > h2.eg-hl-bar::after { left: var(--eg-bar-left, 0); width: var(--eg-bar-w, 56px); }
/* ---------- Journey road: <div class="eg-journey"> with an <ol> of steps in the correct order ---------- */
.eg-journey { max-width: 860px; margin: 1.8rem auto; padding: 1.8rem 1.6rem; border-radius: 18px; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 10px 30px rgba(20,30,60,.08); font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; text-align: center; overflow: hidden; }
.eg-journey * { box-sizing: border-box; }
.eg-journey > ol { display: none !important; }
.eg-journey .eg-act-q { margin: 0 0 .3rem !important; font-size: 1.25rem !important; font-weight: 800; color: #1d2a3a; }
.eg-journey .egj-stage { position: relative; margin: .4rem 0 0; }
.eg-journey .egj-stage svg { display: block; width: 100%; height: auto; overflow: visible; }
.eg-journey .egj-road { fill: none; stroke: #e3e6ee; stroke-width: 26; stroke-linecap: round; }
.eg-journey .egj-paint { fill: none; stroke-width: 26; stroke-linecap: round; }
.eg-journey .egj-lane { fill: none; stroke: #fff; stroke-width: 3; stroke-dasharray: 14 12; }
.eg-journey .egj-flag circle { fill: #fff; stroke: #cdd4e4; stroke-width: 3; transition: fill .3s, stroke .3s; }
.eg-journey .egj-flag text { font: 800 18px system-ui, sans-serif; fill: #9aa3b5; text-anchor: middle; dominant-baseline: central; }
.eg-journey .egj-flag.is-done circle { fill: var(--eg-accent); stroke: #fff; }
.eg-journey .egj-flag.is-done text { fill: #fff; }
.eg-journey .egj-flag.is-next circle { stroke: #c8962e; stroke-width: 4; }
.eg-journey .egj-trav { filter: drop-shadow(0 4px 6px rgba(0,0,0,.25)); }
.eg-journey .egj-end { position: absolute; font-size: .7rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: #5b6570; }
.eg-journey .egj-caps { display: grid; gap: 10px; margin-top: .5rem; min-height: 4.2em; }
.eg-journey .egj-cap { transform: translateY(8px); opacity: 0; padding: .45rem .5rem; border-radius: 10px; background: #fff; border: 1px solid #dfe5ee; box-shadow: 0 6px 16px rgba(20,30,60,.10); font-size: .84rem; font-weight: 700; line-height: 1.3; color: #1d2a3a; transition: opacity .45s ease, transform .45s ease; }
.eg-journey .egj-cap b { display: block; margin-bottom: 2px; font-size: .66rem; letter-spacing: .12em; text-transform: uppercase; color: var(--eg-accent); }
.eg-journey .egj-cap.is-shown { opacity: 1; transform: none; }
.eg-journey .egj-ask { margin: 1rem 0 .6rem !important; font-weight: 800; color: var(--eg-heading); text-align: left; }
.eg-journey .egj-opts { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; text-align: left; }
.eg-journey .egj-opts button { all: unset; box-sizing: border-box; padding: .85rem 1rem; border-radius: 14px; background: #f4f6fb; font-weight: 600; font-size: .98rem; line-height: 1.45; color: #1d2a3a; cursor: pointer; transition: transform .15s, background .15s, box-shadow .15s; }
.eg-journey .egj-opts button:hover { background: #eaeef8; transform: translateY(-2px); box-shadow: 0 6px 14px rgba(20,30,60,.08); }
.eg-journey .egj-opts button:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 2px; }
.eg-journey .egj-opts button.is-wrong { background: #fdecec; box-shadow: inset 0 0 0 2px #c0392b; animation: egqShake .4s ease; }
.eg-journey .egj-confetti { position: absolute; width: 8px; height: 12px; border-radius: 2px; pointer-events: none; animation: egjConf 1.1s ease-out forwards; }
@keyframes egjConf { 0% { transform: translate(0,0) rotate(0); opacity: 1; } 100% { transform: translate(var(--dx), var(--dy)) rotate(540deg); opacity: 0; } }
@media (max-width: 640px) {
  .eg-journey .egj-opts { grid-template-columns: 1fr; }
  .eg-journey .egj-caps { gap: 5px; }
  .eg-journey .egj-cap { font-size: .62rem; padding: .3rem .2rem; border-radius: 8px; }
  .eg-journey .egj-cap b { font-size: .55rem; letter-spacing: .06em; }
}
/* ---------- Slide title gets the same accent bar as section headings ---------- */
.slide__title-area__title { position: relative; padding-bottom: .5rem; }
.slide__title-area__title::after { content: ""; position: absolute; left: 0; bottom: 0; width: 64px; height: 4px; border-radius: 4px; background: linear-gradient(90deg, var(--eg-heading), var(--eg-accent)); }

/* ---------- Course roadmap: <div class="eg-roadmap"> with an <ol> of section names ---------- */
.eg-roadmap { margin: 2rem 0; padding: 1.6rem 1.4rem 1.4rem; border-radius: 18px; background: linear-gradient(135deg, #f7f8fc, #eef7f6); border: 1px solid #e4eaf0; text-align: center; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; }
.eg-roadmap .eg-act-kicker { margin-bottom: 1.2rem !important; background: #fff; }
.eg-roadmap ol { list-style: none !important; counter-reset: egrm; margin: 0 !important; padding: 0 !important; display: flex; }
.eg-roadmap li { counter-increment: egrm; position: relative; flex: 1; margin: 0 !important; padding: 0 .3rem !important; font-size: .9rem !important; font-weight: 700; line-height: 1.3 !important; color: #1d2a3a; }
.eg-roadmap li::before { content: counter(egrm) !important; position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; width: 2.6rem; height: 2.6rem; margin: 0 auto .6rem; border-radius: 50%; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); color: #fff; font-size: 1rem; font-weight: 800; box-shadow: 0 0 0 5px #fff, 0 6px 14px rgba(40,50,110,.25); transition: transform .5s cubic-bezier(.3,1.5,.5,1), opacity .4s; }
.eg-roadmap li::after { content: ""; position: absolute; top: 1.3rem; left: 50%; width: 100%; height: 4px; margin-top: -2px; background: linear-gradient(90deg, rgba(73,78,143,.35), rgba(0,122,122,.35)); transform-origin: left center; transition: transform .6s ease; }
.eg-roadmap li:last-child::after { display: none; }
.eg-roadmap li:nth-child(2)::before, .eg-roadmap li:nth-child(1)::after { transition-delay: .15s; }
.eg-roadmap li:nth-child(3)::before, .eg-roadmap li:nth-child(2)::after { transition-delay: .35s; }
.eg-roadmap li:nth-child(4)::before, .eg-roadmap li:nth-child(3)::after { transition-delay: .55s; }
.eg-roadmap li:nth-child(5)::before, .eg-roadmap li:nth-child(4)::after { transition-delay: .75s; }
.eg-roadmap li:nth-child(6)::before, .eg-roadmap li:nth-child(5)::after { transition-delay: .95s; }
.eg-anim .eg-r:not(.eg-in) .eg-roadmap li::before { transform: scale(0); opacity: 0; }
.eg-anim .eg-r:not(.eg-in) .eg-roadmap li::after { transform: scaleX(0); }
@media (max-width: 640px) {
  .eg-roadmap ol { flex-direction: column; gap: .9rem; text-align: left; }
  .eg-roadmap li { display: flex; align-items: center; gap: .8rem; padding: 0 !important; }
  .eg-roadmap li::before { margin: 0; flex: none; }
  .eg-roadmap li::after { top: 2.6rem; left: 1.3rem; width: 4px; height: .9rem; margin: 0 0 0 -2px; transform-origin: top center; }
  .eg-anim .eg-r:not(.eg-in) .eg-roadmap li::after { transform: scaleY(0); }
}

/* ---------- Call-to-action line: a paragraph starting "Click the Next button" (divider style) ---------- */
.rich-text--slide p.eg-cta { font-family: system-ui,-apple-system,"Segoe UI",sans-serif !important; display: flex !important; align-items: center; gap: 1rem; margin: 2rem 0 .6rem !important; color: var(--eg-heading) !important; font-size: .8rem !important; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; text-align: center; line-height: 1.4 !important; }
.rich-text--slide p.eg-cta * { color: inherit !important; font-weight: inherit !important; font-style: normal !important; }
.rich-text--slide p.eg-cta::before, .rich-text--slide p.eg-cta::after { content: ""; flex: 1; min-width: 1.5rem; height: 1px; background: #d9dfea; }
/* ---------- Title banner: the top image becomes a banner with the slide title on it when its alt text matches the slide title ---------- */
.eg-banner { position: relative; overflow: hidden; border-radius: 16px; background: #141b46; box-shadow: 0 12px 30px rgba(20,27,70,.18); }
.eg-banner img { display: block; width: 100% !important; aspect-ratio: 3 / 1 !important; height: auto !important; object-fit: cover; object-position: center 2%; margin: 0 !important; border-radius: 0 !important; }
.eg-banner::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(0deg, rgba(20,27,70,.92) 0%, rgba(22,30,85,.7) 45%, rgba(22,30,85,.5) 100%); pointer-events: none; }
.eg-banner__t { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; margin: 0; padding: 0 2.2rem 1.6rem; color: #fff; font-size: clamp(1.5rem, 4vw, 2.6rem); font-weight: 800; line-height: 1.1; text-shadow: 0 2px 12px rgba(0,0,0,.35); }
.eg-banner__t::after { content: ""; display: block; width: 64px; height: 4px; margin-top: .7rem; border-radius: 4px; background: linear-gradient(90deg, #fff, #c8962e); }
.eg-sr { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }
@media (max-width: 640px) { .eg-banner img { aspect-ratio: 2 / 1 !important; } .eg-banner__t { padding: 0 1.2rem 1.1rem; } }

/* ---------- Section intro: <div class="eg-section"> with a kicker, a lead paragraph, a label and an <ol> of lessons (<strong>Name</strong> description), shown as a timeline ---------- */
.eg-section { margin: .4rem 0 1.6rem; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; }
.eg-section .eg-act-kicker { margin: 0 0 .9rem !important; }
.eg-section .eg-section__lead { margin: 0 0 1.8rem !important; padding-left: 1.1rem; border-left: 4px solid var(--eg-accent); font-size: 1.22rem !important; line-height: 1.55 !important; color: #2a3444; }
.eg-section .eg-section__label { margin: 0 0 1.1rem !important; font-size: .78rem !important; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--eg-heading); }
.eg-section ol { position: relative; list-style: none !important; counter-reset: egsec; margin: 0 !important; padding: 0 0 0 3.6rem !important; }
.eg-section ol::before { content: ""; position: absolute; left: 1.15rem; top: .8rem; bottom: .8rem; width: 3px; margin-left: -1.5px; border-radius: 3px; background: linear-gradient(var(--eg-heading), var(--eg-accent)); }
.eg-section li { counter-increment: egsec; position: relative; margin: 0 !important; padding: 0 0 1.5rem !important; font-size: 1rem !important; line-height: 1.55 !important; color: #4a5566; transition: opacity .5s, translate .5s; }
.eg-section li:last-child { padding-bottom: 0 !important; }
.eg-section li::before { content: counter(egsec) !important; position: absolute; left: -3.6rem; top: -.15rem; width: 2.3rem; height: 2.3rem; display: flex; align-items: center; justify-content: center; border-radius: 50%; background: #fff; border: 3px solid var(--eg-accent); box-sizing: border-box; color: var(--eg-heading); font-size: .95rem; font-weight: 800; }
.eg-section li, .eg-section li * { font-family: system-ui,-apple-system,"Segoe UI",sans-serif; }
.eg-section li strong { display: block; margin-bottom: .3rem; font-size: 1.15rem; font-weight: 800; line-height: 1.3; color: var(--eg-heading) !important; }
.eg-section li:nth-child(2) { transition-delay: .12s; } .eg-section li:nth-child(3) { transition-delay: .24s; } .eg-section li:nth-child(4) { transition-delay: .36s; }
.eg-anim .eg-r:not(.eg-in) .eg-section li { opacity: 0; translate: 0 14px; }

/* ---------- Icon + text columns: when the left column holds only a small icon, it shrinks to fit and centers ---------- */
.p-columns.eg-cols-icon { align-items: center !important; }
.p-columns.eg-cols-icon > :first-child { flex: 0 0 132px !important; max-width: 132px; display: flex; justify-content: center; align-items: center; }
.p-columns.eg-cols-icon > :first-child img { width: 100px !important; max-width: 100%; height: auto !important; margin: 0 auto; pointer-events: none; box-shadow: none !important; }
@media (max-width: 640px) { .p-columns.eg-cols-icon > :first-child { flex-basis: auto !important; max-width: none; } }
/* ---------- PATH contact list mock-up: <div class="eg-pathlist"> with an <ul> of contacts (<li data-initials="SU"><b>Name</b><span>channel</span><em class="is-new|is-ongoing|is-disciple">Label</em><i>site</i></li>) ---------- */
.eg-pathlist { max-width: 560px; margin: 1.4rem auto 2rem; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; }
.eg-pathlist .eg-pathlist__cap { margin: 0 0 .6rem !important; text-align: center; font-size: .75rem !important; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #5b6570; }
.eg-pathlist ul { list-style: none !important; margin: 0 !important; padding: 0 !important; border-radius: 16px; overflow: hidden; background: #fff; border: 1px solid #dfe5ee; box-shadow: 0 14px 34px rgba(20,30,60,.12); }
.eg-pathlist li { position: relative; display: grid !important; grid-template-columns: 3.2rem auto 1fr; grid-template-rows: auto auto auto; column-gap: 1rem; row-gap: .35rem; align-items: center; margin: 0 !important; padding: 1.1rem 1.4rem !important; border-bottom: 1px solid #edf0f5; font-size: 1rem !important; line-height: 1.3 !important; color: #1d2a3a; }
.eg-pathlist li:first-child { background: #f1f2f4; }
.eg-pathlist li:last-child { border-bottom: 0; }
.eg-pathlist li::before { content: attr(data-initials) !important; grid-row: 1 / 4; display: flex; align-items: center; justify-content: center; width: 3.2rem; height: 3.2rem; border-radius: 50%; border: 1.5px solid #c9ced8; background: #fff; color: #6b7280; font-size: .9rem; font-weight: 600; position: static !important; animation: none !important; transform: none !important; }
.eg-pathlist li b { grid-column: 2 / 4; grid-row: 1; color: #1d2a3a !important; font-size: 1.12rem; font-weight: 800; color: #1d2a3a; }
.eg-pathlist li span { grid-column: 2; grid-row: 2; display: flex; align-items: center; gap: .6rem; font-size: .95rem; color: #4a5566; }
.eg-pathlist li em { grid-column: 3; grid-row: 2; justify-self: start; margin-left: .8rem; padding: .28rem .8rem; border-radius: 6px; font-style: normal; font-size: .95rem; font-weight: 800; color: #fff; box-shadow: 0 0 0 3px #fff, 0 0 0 5px #d93025; animation: egPlPulse 2.4s ease-in-out infinite; }
.eg-pathlist li em.is-new { background: #1fa463; }
.eg-pathlist li em.is-ongoing { background: #3b8fd9; }
.eg-pathlist li em.is-disciple { background: #f2b21b; color: #3b2a00; }
.eg-pathlist li i { grid-column: 2 / 4; grid-row: 3; justify-self: start; padding: .15rem .55rem; border-radius: 5px; background: #3b9be0; color: #fff; font-style: normal; font-size: .82rem; font-weight: 700; }
@keyframes egPlPulse { 0%,100% { box-shadow: 0 0 0 3px #fff, 0 0 0 5px rgba(217,48,37,.9); } 50% { box-shadow: 0 0 0 3px #fff, 0 0 0 9px rgba(217,48,37,.25); } }

/* ---------- Connect the pairs: <div class="eg-connect"> with kicker/q/hint and an <ol> of <li data-label="New" data-color="#1fa463" data-text="#fff">meaning</li> ---------- */
.eg-connect { max-width: 820px; margin: 1.8rem auto; padding: 1.8rem 1.6rem; border-radius: 18px; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 10px 30px rgba(20,30,60,.08); font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; }
.eg-connect * { box-sizing: border-box; }
.eg-connect > ol { display: none !important; }
.eg-connect .eg-act-q { margin: 0 0 .3rem !important; font-size: 1.25rem !important; font-weight: 800; color: #1d2a3a; }
.eg-connect .egc-board { position: relative; display: grid; grid-template-columns: 180px 1fr; gap: 12px 70px; }
.eg-connect .egc-board svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; }
.eg-connect .egc-col { display: grid; gap: 12px; }
.eg-connect .egc-col > button { all: unset; box-sizing: border-box; min-height: 64px; cursor: pointer; transition: transform .15s, box-shadow .15s, opacity .3s, border-color .3s; }
.eg-connect .egc-col > .egc-lbl { display: flex !important; align-items: center; justify-content: center; border-radius: 10px; font-weight: 800; font-size: 1.05rem; box-shadow: 0 4px 10px rgba(0,0,0,.08); }
.eg-connect .egc-col > .egc-lbl:hover { transform: translateY(-2px); }
.eg-connect .egc-col > .egc-lbl.is-sel { outline: 3px solid #c8962e; outline-offset: 3px; }
.eg-connect .egc-col > .egc-def { display: flex !important; align-items: center; padding: .6rem 1rem !important; border-radius: 12px; border: 2px solid #e3e8ef; background: #fff; font-size: .98rem; line-height: 1.4; color: #1d2a3a; text-align: left; }
.eg-connect .egc-col > .egc-def:hover { border-color: #c9d2e3; }
.eg-connect .egc-col > .is-done { opacity: .6; pointer-events: none; }
.eg-connect .egc-col > .egc-def.is-wrong { border-color: #c0392b; animation: egqShake .4s ease; }
.eg-connect .egc-path { fill: none; stroke-width: 4; stroke-linecap: round; transition: stroke-dashoffset .5s ease; }
@media (max-width: 640px) { .eg-connect .egc-board { grid-template-columns: 110px 1fr; gap: 10px 34px; } .eg-connect .egc-col > .egc-lbl { font-size: .9rem; } .eg-connect .egc-col > .egc-def { font-size: .88rem; } }

/* ---------- Scale track: <div class="eg-scale" data-max="10"> with an <ol> of stops (<li data-n="1" data-color="#6cb8e3"><b>Title</b> description</li>); listed stops are spaced evenly ---------- */
.eg-scale { margin: 1.8rem 0; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; user-select: none; }
.eg-scale > ol { display: none !important; }
.eg-scale .egsc-track { position: relative; height: 150px; margin: 0 40px; cursor: pointer; touch-action: pan-y; }
.eg-scale .egsc-bar, .eg-scale .egsc-fill { position: absolute; left: 0; top: 72px; height: 8px; border-radius: 8px; }
.eg-scale .egsc-bar { right: 0; background: #e3e6ee; }
.eg-scale .egsc-fill { width: 0; background: linear-gradient(90deg, #8fd0f0, #1a8fc2, #0d4f8f); transition: width .25s; }
.eg-scale .egsc-tick { position: absolute; top: 66px; width: 3px; height: 20px; margin-left: -1.5px; border-radius: 2px; background: #9aa3b5; }
.eg-scale .egsc-stop { position: absolute; top: 76px; width: 64px; height: 64px; margin: -32px 0 0 -32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 1.5rem; color: #fff; box-shadow: 0 6px 14px rgba(13,79,143,.3); transition: transform .25s; }
.eg-scale .egsc-stop.is-on { transform: scale(1.18); }
.eg-scale .egsc-pin { position: absolute; top: 20px; width: 30px; height: 30px; margin-left: -15px; border-radius: 50%; background: #c8962e; border: 3px solid #fff; box-shadow: 0 3px 8px rgba(0,0,0,.25); display: flex; align-items: center; justify-content: center; color: #fff; font-size: .8rem; font-weight: 800; transition: left .25s; }
.eg-scale .egsc-pin::after { content: ""; position: absolute; bottom: -9px; left: 50%; margin-left: -5px; border: 5px solid transparent; border-top-color: #c8962e; }
.eg-scale .egsc-read { min-height: 78px; margin: .3rem 40px 0; padding: .8rem 1.1rem; border-radius: 12px; background: #f3f7fb; border-left: 4px solid #1a8fc2; transition: opacity .2s; }
.eg-scale .egsc-read.is-empty { opacity: 0; }
.eg-scale .egsc-read b { display: block; font-size: 1.1rem; color: #0d4f8f; }
.eg-scale .egsc-read span { color: #5b6570; }
@media (max-width: 640px) { .eg-scale .egsc-track, .eg-scale .egsc-read { margin-left: 22px; margin-right: 22px; } .eg-scale .egsc-stop { width: 46px; height: 46px; margin: -23px 0 0 -23px; font-size: 1.1rem; } }

/* ---------- Engel climber: <div class="eg-engel" data-center="5"> with an <ol> of steps (<li data-verb="Reject" data-color="#3a8fd6">Atheist</li>); the step numbered data-center sits under the cross ---------- */
.eg-engel { margin: 1.8rem 0; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; user-select: none; }
.eg-engel > ol { display: none !important; }
.eg-engel .ege-line { position: relative; height: 84px; margin-bottom: 1.4rem; }
.eg-engel .ege-line::before { content: ""; position: absolute; left: 66px; right: 60px; top: 50%; height: 2px; background: #1d2a3a; }
.eg-engel .ege-line::after { content: ""; position: absolute; right: 52px; top: 50%; margin-top: -6px; border: 6px solid transparent; border-left: 10px solid #1d2a3a; }
.eg-engel .ege-dot { position: absolute; left: 62px; top: 50%; width: 10px; height: 10px; margin-top: -5px; border-radius: 50%; background: #1d2a3a; }
.eg-engel .ege-end { position: absolute; top: 50%; width: 52px; height: 52px; margin-top: -26px; border-radius: 50%; border: 2px solid #1d2a3a; background: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 1.3rem; box-shadow: 4px 4px 0 #e9edf3; }
.eg-engel .ege-cross { position: absolute; top: 50%; width: 84px; height: 84px; margin: -42px 0 0 -42px; background: #fff; }
.eg-engel .ege-cross svg { width: 100%; height: 100%; display: block; }
.eg-engel .ege-cross .ege-rays { transform-origin: 50% 50%; animation: egeRays 3.5s ease-in-out infinite; }
@keyframes egeRays { 0%,100% { opacity: .55; transform: scale(.94); } 50% { opacity: 1; transform: scale(1.04); } }
.eg-engel .ege-stairs { position: relative; height: 280px; }
.eg-engel .ege-blk { position: absolute; bottom: 0; border-radius: 8px 8px 3px 3px; cursor: pointer; transition: filter .2s; }
.eg-engel .ege-blk:hover { filter: brightness(1.1); }
.eg-engel .ege-blk b { position: absolute; top: -24px; left: -8px; right: -8px; text-align: center; font-size: .72rem; font-weight: 800; letter-spacing: .02em; color: #1d2a3a; white-space: nowrap; }
.eg-engel .ege-blk.is-gold b { color: #b8861f; }
.eg-engel .ege-me { position: absolute; width: 34px; height: 34px; margin-left: -17px; border-radius: 50%; background: #c8962e; border: 3px solid #fff; box-shadow: 0 4px 10px rgba(0,0,0,.3); display: flex; align-items: center; justify-content: center; transition: left .45s cubic-bezier(.3,1.4,.5,1), bottom .45s cubic-bezier(.3,1.4,.5,1); pointer-events: none; }
.eg-engel .ege-me svg { width: 18px; height: 18px; }
.eg-engel .ege-panel { margin-top: 1rem; padding: .9rem 1.2rem; border-radius: 12px; background: #f3f5fa; display: flex; gap: 1rem; align-items: center; }
.eg-engel .ege-panel .ege-n { flex: none; width: 3rem; height: 3rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 1.3rem; color: #fff; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); }
.eg-engel .ege-panel .ege-n.is-gold { background: linear-gradient(135deg, #f5c34a, #e0a415); color: #3b2a00; }
.eg-engel .ege-panel b { display: block; font-size: 1.15rem; color: var(--eg-heading); }
.eg-engel .ege-panel span { color: #5b6570; }
@media (max-width: 640px) { .eg-engel .ege-stairs { height: 220px; } .eg-engel .ege-blk b { font-size: .5rem; } .eg-engel .ege-end { width: 36px; height: 36px; margin-top: -18px; font-size: .9rem; } .eg-engel .ege-line::before { left: 40px; right: 40px; } .eg-engel .ege-line::after { right: 32px; } .eg-engel .ege-dot { left: 36px; } .eg-engel .ege-cross { width: 60px; height: 60px; margin: -30px 0 0 -30px; } }
/* ---------- Circles on a line: <div class="eg-circles"> with an <ol> of <li data-color="#1aa6d6" data-icon="question|x|maybe|check|refresh|sprout"><b>Title</b> detail</li> ---------- */
.eg-circles { margin: 1.8rem 0; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; user-select: none; }
.eg-circles > ol { display: none !important; }
.eg-circles .egci-row { position: relative; display: grid; grid-template-columns: repeat(var(--n, 6), 1fr); gap: 10px; padding: 26px 0 8px; }
.eg-circles .egci-row::before { content: ""; position: absolute; left: 8%; right: 8%; top: calc(26px + 48px); height: 4px; margin-top: -2px; border-radius: 4px; background: #d5dbe6; }
.eg-circles .egci-item { all: unset; position: relative; display: flex; flex-direction: column; align-items: center; gap: .6rem; cursor: pointer; text-align: center; }
.eg-circles .egci-dot { position: relative; width: 96px; height: 96px; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 8px 18px rgba(20,30,60,.18), inset 0 -6px 0 rgba(0,0,0,.08); border: 4px solid #fff; transition: transform .3s cubic-bezier(.3,1.5,.5,1), box-shadow .3s; }
.eg-circles .egci-dot svg { width: 44px; height: 44px; }
.eg-circles .egci-name { font-size: .92rem; font-weight: 800; line-height: 1.25; color: #1d2a3a; max-width: 120px; transition: color .2s; }
.eg-circles .egci-item:hover .egci-dot, .eg-circles .egci-item.is-on .egci-dot { transform: translateY(-8px) scale(1.1); box-shadow: 0 16px 26px rgba(20,30,60,.25); }
.eg-circles .egci-item.is-on .egci-name { color: var(--eg-heading); }
.eg-circles .egci-item:focus-visible .egci-dot { outline: 3px solid var(--eg-accent); outline-offset: 4px; }
.eg-circles .egci-panel { display: flex; align-items: center; gap: 1rem; margin-top: 1rem; padding: 1rem 1.2rem; border-radius: 14px; background: #f3f5fa; border-left: 5px solid var(--c, #494e8f); min-height: 76px; transition: border-color .3s; }
.eg-circles .egci-panel .egci-mini { flex: none; width: 3rem; height: 3rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--c, #494e8f); }
.eg-circles .egci-panel .egci-mini svg { width: 24px; height: 24px; }
.eg-circles .egci-panel small { display: block; font-size: .7rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #5b6570; }
.eg-circles .egci-panel b { display: block; font-size: 1.2rem; color: #1d2a3a; }
.eg-circles .egci-panel span { color: #4a5566; }
@media (max-width: 700px) {
  .eg-circles .egci-row { grid-template-columns: repeat(3, 1fr); row-gap: 1.4rem; }
  .eg-circles .egci-row::before { display: none; }
  .eg-circles .egci-dot { width: 72px; height: 72px; } .eg-circles .egci-dot svg { width: 32px; height: 32px; }
  .eg-circles .egci-name { font-size: .8rem; }
}
/* ---------- Tabs with illustration + next-step card: <div class="eg-tabs" data-route-label="Next step"> with <section data-tab="Name" data-icon="life|shield|id|block|handoff" data-color="#494e8f"> text… <ul class="egt-route"><li data-to="Destination" data-note="detail">Who</li></ul></section> ---------- */
.eg-tabs { margin: 1.8rem 0; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; }
.eg-tabs * { box-sizing: border-box; }
.eg-tabs > section { display: none !important; }
.eg-tabs .egt-bar { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
.eg-tabs .egt-tab { all: unset; box-sizing: border-box; display: inline-flex; align-items: center; gap: .5rem; padding: .5rem 1rem .5rem .6rem; border: 2px solid #e3e8ef; border-radius: 999px; background: #fff; font-weight: 800; font-size: 1rem; color: #1d2a3a; cursor: pointer; transition: background .2s, color .2s, border-color .2s, transform .15s; }
.eg-tabs .egt-tab:hover { transform: translateY(-2px); }
.eg-tabs .egt-tab:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 3px; }
.eg-tabs .egt-tab .egt-ic { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.eg-tabs .egt-tab.is-on { color: #fff; border-color: transparent; }
.eg-tabs .egt-panel { display: grid; grid-template-columns: 240px 1fr; gap: 26px; align-items: start; animation: egtIn .4s ease; }
@keyframes egtIn { from { opacity: 0; transform: translateY(10px); } }
@keyframes egtPop { 0% { transform: scale(.6); opacity: 0; } 70% { transform: scale(1.06); } 100% { transform: scale(1); opacity: 1; } }
.eg-tabs .egt-scene { position: relative; height: 230px; border-radius: 18px; overflow: hidden; display: flex; align-items: center; justify-content: center; }
.eg-tabs .egt-scene i { position: absolute; border-radius: 50%; opacity: .18; }
.eg-tabs .egt-ring { position: relative; width: 130px; height: 130px; border-radius: 50%; background: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 12px 28px rgba(20,30,60,.18); animation: egtPop .55s cubic-bezier(.3,1.4,.5,1); }
.eg-tabs .egt-ring svg { width: 72px; height: 72px; }
.eg-tabs .egt-text h3 { margin: 0 0 .6rem !important; font-size: 1.35rem !important; font-weight: 800; }
.eg-tabs .egt-text h3::after { display: none !important; }
.eg-tabs .egt-text p { margin: 0 0 .75rem !important; font-size: 1.02rem !important; line-height: 1.6 !important; }
.eg-tabs .egt-card { margin-top: 1rem; border: 2px solid var(--c); border-radius: 14px; overflow: hidden; }
.eg-tabs .egt-card-hd { display: flex; align-items: center; gap: .5rem; padding: .45rem .9rem; background: var(--c); color: #fff; font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.eg-tabs .egt-card-hd svg { width: 16px; height: 16px; }
.eg-tabs .egt-card-bd { padding: .8rem 1rem; background: #fff; display: grid; gap: 8px; }
.eg-tabs .egt-route { display: grid; grid-template-columns: 210px 46px auto; align-items: center; justify-content: start; gap: 10px; }
.eg-tabs .egt-who, .eg-tabs .egt-to { display: flex; align-items: center; gap: .55rem; padding: .45rem .8rem; border-radius: 10px; font-weight: 800; font-size: .95rem; line-height: 1.25; animation: egtPop .45s cubic-bezier(.3,1.4,.5,1) both; }
.eg-tabs .egt-who { background: #fff; border: 2px solid #e3e8ef; }
.eg-tabs .egt-who .egt-av { flex: none; width: 28px; height: 28px; border-radius: 50%; background: #eef1f6; display: flex; align-items: center; justify-content: center; }
.eg-tabs .egt-who .egt-av svg { width: 16px; height: 16px; }
.eg-tabs .egt-to { justify-self: start; background: var(--c); border: 2px solid var(--c); color: #fff; animation-delay: .24s; }
.eg-tabs .egt-to small { display: block; font-size: .68rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: rgba(255,255,255,.88); }
.eg-tabs .egt-arrow { position: relative; width: 46px; height: 14px; animation: egtPop .45s .12s both; }
.eg-tabs .egt-arrow::before { content: ""; position: absolute; left: 0; right: 8px; top: 6px; height: 2px; background: repeating-linear-gradient(90deg, #9aa3b5 0 6px, transparent 6px 10px); }
.eg-tabs .egt-arrow::after { content: ""; position: absolute; right: 0; top: 1px; border: 6px solid transparent; border-left: 9px solid #9aa3b5; }
.eg-tabs .egt-arrow b { position: absolute; top: 3px; left: 0; width: 8px; height: 8px; border-radius: 50%; background: var(--c); animation: egtTravel 1.6s ease-in-out infinite; }
@keyframes egtTravel { 0% { left: 0; opacity: 0; } 15%, 85% { opacity: 1; } 100% { left: 34px; opacity: 0; } }
@media (max-width: 700px) {
  .eg-tabs .egt-panel { grid-template-columns: 1fr; gap: 16px; }
  .eg-tabs .egt-scene { height: 150px; } .eg-tabs .egt-ring { width: 96px; height: 96px; } .eg-tabs .egt-ring svg { width: 52px; height: 52px; }
  .eg-tabs .egt-route { grid-template-columns: 1fr 30px 1fr; }
  .eg-tabs .egt-tab { font-size: .9rem; }
}
/* ---------- Stamp game: <div class="eg-stampgame" data-left="Keep" data-right="Reassign" data-lives="3"> kicker/q/hint + <ol><li data-answer="Reassign" data-why="…">situation</li></ol> ---------- */
.eg-stampgame { max-width: 820px; margin: 1.8rem auto; padding: 1.8rem 1.6rem; border-radius: 18px; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 10px 30px rgba(20,30,60,.08); font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; text-align: center; user-select: none; overflow: hidden; position: relative; }
.eg-stampgame * { box-sizing: border-box; }
.eg-stampgame > ol { display: none !important; }
.eg-stampgame .eg-act-q { margin: 0 0 .3rem !important; font-size: 1.25rem !important; font-weight: 800; }
.eg-stampgame .egsg-play { position: relative; max-width: 580px; margin: 0 auto; }
.eg-stampgame .eg-act-hint { line-height: 1.7 !important; }
.eg-stampgame .egsg-chip { display: inline-block; padding: .05rem .55rem; border-radius: 6px; color: #fff; font-weight: 800; font-size: .92em; letter-spacing: .02em; line-height: 1.5; }
.eg-stampgame .egsg-chip.is-keep { background: #007a7a; } .eg-stampgame .egsg-chip.is-re { background: #c28a1e; }
.eg-stampgame .egsg-hud { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 10px; margin: .4rem 0 .6rem; font-weight: 800; color: #5b6570; }
.eg-stampgame .egsg-lives { justify-self: start; text-align: left; }
.eg-stampgame .egsg-lives small { display: block; margin-bottom: 4px; font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; color: #5b6570; }
.eg-stampgame .egsg-hearts { display: flex; gap: 6px; }
.eg-stampgame .egsg-hearts svg { width: 40px; height: 36px; display: block; filter: drop-shadow(0 3px 0 rgba(0,0,0,.12)); }
.eg-stampgame .egsg-hearts svg.is-losing { animation: egsgBlink .9s steps(1) both; }
.eg-stampgame .egsg-hearts.is-low svg:first-child { animation: egsgBeat .9s ease-in-out infinite; }
@keyframes egsgBlink { 0%, 30%, 60% { opacity: 1; transform: scale(1.15); } 15%, 45%, 75% { opacity: 0; } 100% { opacity: 1; transform: scale(1); } }
@keyframes egsgBeat { 0%, 100% { transform: scale(1); } 15% { transform: scale(1.18); } 30% { transform: scale(1); } 45% { transform: scale(1.1); } }
@media (max-width: 600px) { .eg-stampgame .egsg-hearts svg { width: 34px; height: 30px; } }
.eg-stampgame .egsg-hearts.is-hit { animation: egsgShake .4s; }
.eg-stampgame .egsg-pts { justify-self: end; text-align: right; font-size: 1.05rem; color: #1d2a3a; }
.eg-stampgame .egsg-pts small { display: block; font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; color: #5b6570; }
.eg-stampgame .egsg-meter { display: flex; align-items: center; gap: 10px; padding: .35rem .8rem .35rem .5rem; border-radius: 14px; background: #f4f5fb; border: 1px solid #e3e6f2; }
.eg-stampgame .egsg-bottle { width: 62px; height: 82px; display: block; }
.eg-stampgame .egsg-bottle .egsg-ink { transition: y .45s cubic-bezier(.3,1.3,.5,1), height .45s cubic-bezier(.3,1.3,.5,1); }
.eg-stampgame .egsg-meter-txt { text-align: left; line-height: 1.1; }
.eg-stampgame .egsg-meter-txt small { display: block; font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; color: #5b6570; }
.eg-stampgame .egsg-mult { display: inline-block; margin-top: 3px; padding: .15rem .55rem; border-radius: 999px; background: #494e8f; color: #fff; font-size: .95rem; font-weight: 900; }
.eg-stampgame .egsg-mult.is-x2 { background: #007a7a; } .eg-stampgame .egsg-mult.is-x3 { background: linear-gradient(135deg,#c8962e,#e8b12a); }
.eg-stampgame .egsg-mult.is-bump { animation: egsgPop .45s cubic-bezier(.3,1.5,.5,1); }
.eg-stampgame .egsg-desk { position: relative; padding: 18px 0 6px; }
.eg-stampgame .egsg-card { position: relative; margin: 0 auto; border-radius: 16px; background: #fffdf7; border: 1px solid #eadfca; box-shadow: 0 14px 30px rgba(60,40,10,.12); padding: 1.4rem 1.5rem; min-height: 170px; display: flex; flex-direction: column; justify-content: center; text-align: left; background-image: repeating-linear-gradient(0deg, transparent 0 27px, #f1e9da 27px 28px); transition: transform .5s cubic-bezier(.3,.9,.4,1), opacity .5s; animation: egsgPop .4s both; }
.eg-stampgame .egsg-card small { font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #9a8566; }
.eg-stampgame .egsg-card p { margin: .5rem 0 0 !important; font-size: 1.2rem !important; font-weight: 700; line-height: 1.4 !important; color: #1d2a3a; }
.eg-stampgame .egsg-card.is-thud { animation: egsgThud .25s; }
.eg-stampgame .egsg-card.is-outL { transform: translate(-130%, 40px) rotate(-14deg); opacity: 0; } .eg-stampgame .egsg-card.is-outR { transform: translate(130%, 40px) rotate(14deg); opacity: 0; }
.eg-stampgame .egsg-ink-mark { position: absolute; right: 16px; bottom: 14px; padding: .3rem .8rem; border: 4px solid; border-radius: 10px; font-weight: 900; font-size: 1.15rem; letter-spacing: .08em; text-transform: uppercase; transform: rotate(-9deg); opacity: .88; mix-blend-mode: multiply; animation: egsgInk .2s both; }
.eg-stampgame .egsg-press { position: absolute; left: 50%; top: -10px; width: 90px; height: 110px; margin-left: -45px; z-index: 3; pointer-events: none; animation: egsgPress .45s ease-in both; }
.eg-stampgame .egsg-pile { display: flex; justify-content: center; height: 8px; margin-top: -4px; }
.eg-stampgame .egsg-pile i { width: 46px; height: 6px; margin: 0 -18px; border-radius: 3px; background: #eadfca; border: 1px solid #d9ccb0; }
.eg-stampgame .egsg-tools { display: flex; justify-content: center; gap: 28px; margin-top: 16px; }
.eg-stampgame .egsg-tool { all: unset; display: flex; flex-direction: column; align-items: center; gap: 4px; cursor: pointer; font-weight: 800; font-size: 1rem; color: #1d2a3a; transition: transform .15s; }
.eg-stampgame .egsg-tool:hover { transform: translateY(-4px) rotate(-3deg); }
.eg-stampgame .egsg-tool:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 4px; border-radius: 8px; }
.eg-stampgame .egsg-tool svg { width: 84px; height: 100px; filter: drop-shadow(0 8px 10px rgba(0,0,0,.2)); transition: filter .2s; }
.eg-stampgame .egsg-tool > span { display: inline-block; margin-top: 4px; padding: .35rem 1.1rem; border-radius: 999px; color: #fff; font-size: 1rem; font-weight: 800; box-shadow: 0 4px 10px rgba(0,0,0,.15); }
.eg-stampgame .egsg-tool.is-keep > span { background: #007a7a; } .eg-stampgame .egsg-tool.is-re > span { background: #c28a1e; }
.eg-stampgame .egsg-tool:hover svg { filter: drop-shadow(0 14px 14px rgba(0,0,0,.28)); }
.eg-stampgame .egsg-tools { gap: 44px; }
.eg-stampgame .egsg-tools.is-idle .egsg-tool { animation: egsgWiggle 2.6s ease-in-out infinite; }
.eg-stampgame .egsg-tools.is-idle .egsg-tool.is-re { animation-delay: .35s; }
.eg-stampgame .egsg-tools.is-idle .egsg-tool:hover { animation: none; }
@keyframes egsgWiggle { 0%, 60%, 100% { transform: translateY(0) rotate(0); } 68% { transform: translateY(-8px) rotate(-6deg); } 76% { transform: translateY(-8px) rotate(5deg); } 84% { transform: translateY(-3px) rotate(-2deg); } }
.eg-stampgame .egsg-toast { min-height: 3em; margin: 12px 0 0 !important; font-weight: 700; line-height: 1.45 !important; font-size: .98rem !important; }
.eg-stampgame .egsg-toast.is-good { color: #1e6b41; } .eg-stampgame .egsg-toast.is-bad { color: #9b2c22; }
.eg-stampgame .egsg-flash { position: absolute; left: 50%; top: 42%; z-index: 4; padding: .45rem 1rem; border-radius: 999px; background: #1d2a3a; color: #fff; font-weight: 900; white-space: nowrap; pointer-events: none; animation: egsgFlash 1.4s ease forwards; }
.eg-stampgame .egsg-end { padding: 1.4rem; border-radius: 18px; background: linear-gradient(135deg,#f5f6fc,#eef8f7); animation: egsgPop .5s both; }
.eg-stampgame .egsg-end b { display: block; font-size: 1.5rem; color: var(--eg-heading); }
.eg-stampgame .egsg-stars { font-size: 2rem; letter-spacing: .2em; color: #e0a415; margin: .3rem 0; } .eg-stampgame .egsg-stars .off { color: #d6dbe6; }
.eg-stampgame .egsg-conf { position: absolute; width: 8px; height: 12px; border-radius: 2px; pointer-events: none; z-index: 5; animation: egsgConf 1.1s ease-out forwards; }
@keyframes egsgPop { 0% { transform: scale(.6); opacity: 0; } 70% { transform: scale(1.06); } 100% { transform: scale(1); opacity: 1; } }
@keyframes egsgShake { 20% { transform: translateX(-8px); } 40% { transform: translateX(7px); } 60% { transform: translateX(-5px); } 80% { transform: translateX(3px); } }
@keyframes egsgThud { 40% { transform: scale(.97) translateY(3px); } }
@keyframes egsgInk { from { transform: rotate(-9deg) scale(1.6); opacity: 0; } }
@keyframes egsgPress { 0% { transform: translateY(-80px) rotate(-10deg); opacity: 0; } 45% { transform: translateY(60px) rotate(0); opacity: 1; } 60% { transform: translateY(56px); } 100% { transform: translateY(-90px); opacity: 0; } }
@keyframes egsgFlash { 0% { opacity: 0; transform: translate(-50%, 10px) scale(.8); } 15% { opacity: 1; transform: translate(-50%, 0) scale(1.08); } 25% { transform: translate(-50%, 0) scale(1); } 80% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, -24px); } }
@keyframes egsgConf { to { transform: translate(var(--dx), var(--dy)) rotate(540deg); opacity: 0; } }
@media (max-width: 600px) {
  .eg-stampgame { padding: 1.3rem 1rem; }
  .eg-stampgame .egsg-hud { grid-template-columns: 1fr 1fr; } .eg-stampgame .egsg-meter { grid-column: 1 / -1; grid-row: 2; justify-self: center; }
  .eg-stampgame .egsg-card p { font-size: 1.05rem !important; }
}

/* ---------- Picture + text callout: <div class="eg-figure-note"><div class="egfn-img" style="background-image:url('/resources/ID')"></div><div class="egfn-txt"><p>…</p></div></div> ---------- */
.eg-figure-note { display: grid; grid-template-columns: 260px 1fr; gap: 1.5rem; align-items: center; margin: 1.4rem 0; padding: 1.2rem 1.4rem; border-radius: 16px; background: #f5f7fb; border: 1px solid #e6eaf2; }
.eg-figure-note .egfn-img { aspect-ratio: 2.2 / 1; border-radius: 12px; background-color: #fff; background-repeat: no-repeat; background-size: 118% auto; background-position: 38% 45%; box-shadow: 0 8px 20px rgba(20,30,60,.12); border: 1px solid #e3e8ef; }
.eg-figure-note .egfn-txt p { margin: 0 0 .7rem !important; line-height: 1.6 !important; }
.eg-figure-note .egfn-txt p:last-child { margin-bottom: 0 !important; }
@media (max-width: 640px) { .eg-figure-note { grid-template-columns: 1fr; } .eg-figure-note .egfn-img { max-width: 300px; width: 100%; margin: 0 auto; } }
/* ---------- Message quiz: <div class="eg-msgquiz" data-choices="Close|Reply|Reassign"> kicker/q/hint + <ol><li data-answer="Close" data-why="…">message text</li></ol> ---------- */
.eg-msgquiz { max-width: 820px; margin: 1.8rem auto; padding: 1.8rem 1.6rem; border-radius: 18px; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 10px 30px rgba(20,30,60,.08); font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; text-align: center; }
.eg-msgquiz * { box-sizing: border-box; }
.eg-msgquiz > ol { display: none !important; }
.eg-msgquiz .eg-act-q { margin: 0 0 .3rem !important; font-size: 1.25rem !important; font-weight: 800; }
.eg-msgquiz .egmq-dots { display: flex; justify-content: center; gap: 6px; margin: .4rem 0 1rem; }
.eg-msgquiz .egmq-dots i { width: 10px; height: 10px; border-radius: 50%; background: #dfe4ee; transition: background .3s; }
.eg-msgquiz .egmq-dots i.is-cur { background: var(--eg-heading); } .eg-msgquiz .egmq-dots i.is-ok { background: #1e8a52; } .eg-msgquiz .egmq-dots i.is-no { background: #c0392b; }
.eg-msgquiz .egmq-path { max-width: 520px; margin: 0 auto; padding: 1.1rem 1.2rem 1.2rem; border-radius: 12px; background: #fff; border: 1px solid #e3e8ef; text-align: left; font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; animation: egmqIn .4s cubic-bezier(.3,1.3,.5,1) both; }
.eg-msgquiz .egmq-lbl { display: block; margin-bottom: .5rem; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; font-size: .68rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #5b6570; }
.eg-msgquiz .egmq-bubble { padding: .9rem 1.1rem; border-radius: 10px; background: #cbeafd; color: #000; font-size: 1.15rem; line-height: 1.45; }
.eg-msgquiz .egmq-time { margin: .35rem 0 .45rem; color: #243447; font-size: .9rem; }
.eg-msgquiz .egmq-vp { display: inline-block; padding: .45rem 1.4rem; border-radius: 8px; background: #56b1e5; color: #fff; font-weight: 700; font-size: .85rem; letter-spacing: .02em; opacity: .85; pointer-events: none; }
.eg-msgquiz .egmq-btns { display: flex; justify-content: center; flex-wrap: wrap; gap: 10px; margin-top: 1.2rem; }
.eg-msgquiz .egmq-btn { all: unset; box-sizing: border-box; display: inline-flex; align-items: center; gap: .45rem; padding: .6rem 1.2rem; border: 2px solid #dfe4ee; border-radius: 999px; background: #fff; font-weight: 800; font-size: 1rem; color: #1d2a3a; cursor: pointer; transition: transform .15s, border-color .15s, background .2s, color .2s; }
.eg-msgquiz .egmq-btn svg { width: 18px; height: 18px; }
.eg-msgquiz .egmq-btn:hover { transform: translateY(-2px); border-color: var(--eg-heading); }
.eg-msgquiz .egmq-btn:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 3px; }
.eg-msgquiz .egmq-btn.is-right { background: #1e8a52; border-color: #1e8a52; color: #fff; }
.eg-msgquiz .egmq-btn.is-wrong { border-color: #c0392b; animation: egqShake .4s ease; }
.eg-msgquiz .egmq-next { margin-top: 1rem; }
.eg-msgquiz .egmq-end { padding: 1.2rem; border-radius: 16px; background: linear-gradient(135deg,#f5f6fc,#eef8f7); animation: egmqIn .45s both; }
.eg-msgquiz .egmq-end b { display: block; font-size: 1.35rem; color: var(--eg-heading); margin-bottom: .3rem; }
@keyframes egmqIn { from { opacity: 0; transform: translateY(10px) scale(.97); } }

/* ---------- Side note for a specific audience: <div class="eg-aside"><span class="eg-aside__tag">For Guides</span><p>…</p></div> ---------- */
.eg-aside { display: flex; align-items: flex-start; gap: .9rem; max-width: 640px; margin: 1.2rem 0 1.4rem; padding: .85rem 1.1rem; border-radius: 12px; background: #fff8ea; border: 1px solid #f1e0b8; border-left: 5px solid #c28a1e; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; }
.eg-aside .eg-aside__tag { flex: none; margin-top: .15rem; padding: .2rem .6rem; border-radius: 999px; background: #c28a1e; color: #fff; font-size: .68rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; white-space: nowrap; }
.eg-aside p { margin: 0 !important; font-size: .95rem !important; line-height: 1.55 !important; color: #3b3320; }
@media (max-width: 560px) { .eg-aside { flex-direction: column; gap: .5rem; } }
/* ---------- Open-ended practice (doors, then conversations): <div class="eg-convo" data-doors="5" data-convos="5"> kicker/q/hint + <p class="egcv-start">Contact opener</p> + <ol class="egcv-open"><li data-reply="…">question</li></ol> + <ol class="egcv-closed"><li data-reply="Yes.">question</li></ol> ---------- */
.eg-convo { max-width: 820px; margin: 1.8rem auto; padding: 1.8rem 1.6rem; border-radius: 18px; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 10px 30px rgba(20,30,60,.08); font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; text-align: center; position: relative; }
.eg-convo * { box-sizing: border-box; }
.eg-convo > ol, .eg-convo > .egcv-start, .eg-convo > .egcv-chats, .egcv-sounds { display: none !important; }
.eg-convo .eg-act-q { margin: 0 0 .3rem !important; font-size: 1.25rem !important; font-weight: 800; }
.eg-convo .eg-act-hint { line-height: 1.7 !important; }
.eg-convo .egcv-play { max-width: 620px; margin: 0 auto; }
.eg-convo .egcv-hud { display: flex; justify-content: space-between; align-items: center; margin: .2rem 0 .8rem; font-weight: 800; font-size: .88rem; color: #5b6570; }
.eg-convo .egcv-part { padding: .2rem .7rem; border-radius: 999px; background: #eef1fb; color: var(--eg-heading); }
/* PATH-style messages */
.eg-convo .egcv-me, .eg-convo .egcv-them { display: flex; flex-direction: column; text-align: left; font-family: Lato, "Helvetica Neue", Arial, sans-serif; animation: egcvIn .35s cubic-bezier(.3,1.3,.5,1) both; }
.eg-convo .egcv-me { align-items: flex-end; }
.eg-convo .egcv-them { align-items: flex-start; }
.eg-convo .egcv-who { font-size: .95rem; color: #2c3e50; margin-bottom: 3px; }
.eg-convo .egcv-row { display: flex; align-items: center; gap: 10px; max-width: 100%; }
.eg-convo .egcv-keb { flex: none; display: flex; flex-direction: column; gap: 3px; } .eg-convo .egcv-keb i { width: 6px; height: 6px; border-radius: 50%; border: 1.6px solid #2c3e50; }
.eg-convo .egcv-bub { padding: .65rem 1rem; border-radius: 6px; color: #000; font-size: 1.05rem; line-height: 1.4; }
.eg-convo .egcv-me .egcv-bub { background: #e1e1e1; }
.eg-convo .egcv-them .egcv-bub { background: #cbeafd; max-width: 92%; }
.eg-convo .egcv-ts { margin-top: 3px; font-size: .85rem; color: #2c3e50; }
.eg-convo .egcv-typing { display: inline-flex; gap: 4px; padding: .75rem 1rem; border-radius: 6px; background: #cbeafd; }
.eg-convo .egcv-typing i { width: 7px; height: 7px; border-radius: 50%; background: #4a6a85; animation: egcvBlink 1.2s infinite; } .eg-convo .egcv-typing i:nth-child(2) { animation-delay: .2s; } .eg-convo .egcv-typing i:nth-child(3) { animation-delay: .4s; }
/* Doors */
.eg-convo .egcv-msg { min-height: 110px; display: flex; align-items: center; justify-content: center; }
.eg-convo .egcv-doors { display: flex; justify-content: center; gap: 56px; margin-top: 20px; }
.eg-convo .egcv-door { all: unset; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 22px; font-weight: 800; font-size: 1.05rem; color: #1d2a3a; transition: transform .15s; }
.eg-convo .egcv-door:hover { transform: translateY(-4px); }
.eg-convo .egcv-door:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 6px; border-radius: 8px; }
.eg-convo .egcv-scene { position: relative; display: block; width: 120px; height: 176px; }
.eg-convo .egcv-floor { position: absolute; left: -30px; right: -30px; bottom: 0; height: 3px; background: #cfc6b8; border-radius: 2px; }
.eg-convo .egcv-frame { position: absolute; left: 10px; right: 10px; top: 0; bottom: 3px; border-radius: 6px 6px 0 0; background: #8a6541; box-shadow: inset 0 0 0 3px #6f4f31, 0 8px 18px rgba(0,0,0,.18); }
.eg-convo .egcv-hole { position: absolute; left: 10px; right: 10px; top: 10px; bottom: 0; background: #2b2420; perspective: 520px; }
.eg-convo .is-open .egcv-hole { background: radial-gradient(ellipse at 50% 85%, #fff7d6 0%, #ffd97a 45%, #e7a93a 100%); }
.eg-convo .egcv-spill { position: absolute; left: 0; right: 0; bottom: -34px; height: 34px; background: linear-gradient(#ffe7a0cc, #ffe7a000); clip-path: polygon(0 0, 100% 0, 125% 100%, -25% 100%); transition: opacity .4s, transform .5s; }
.eg-convo .is-closed .egcv-spill { display: none; }
.eg-convo .egcv-leaf { position: absolute; inset: 0; transform-origin: left center; transition: transform .7s cubic-bezier(.3,1.25,.5,1); background: linear-gradient(90deg, #3f447e, #555ba0); border-radius: 2px; box-shadow: inset -3px 0 0 rgba(0,0,0,.25); }
.eg-convo .egcv-leaf::before, .eg-convo .egcv-leaf::after { content: ""; position: absolute; left: 14%; right: 14%; border-radius: 3px; box-shadow: inset 0 0 0 2px rgba(255,255,255,.18), inset 2px 2px 0 rgba(0,0,0,.18); background: rgba(255,255,255,.05); }
.eg-convo .egcv-leaf::before { top: 8%; height: 36%; } .eg-convo .egcv-leaf::after { top: 52%; height: 40%; }
.eg-convo .egcv-knob { position: absolute; right: 9%; top: 50%; width: 10px; height: 10px; margin-top: -5px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #ffe9a6, #c8962e); box-shadow: 0 1px 2px rgba(0,0,0,.4); }
.eg-convo .is-open .egcv-leaf { background: linear-gradient(90deg, #0f6e68, #1a948b); transform: rotateY(-58deg); }
.eg-convo .is-open.is-swing .egcv-leaf { transform: rotateY(-76deg); transition-duration: .5s; }
.eg-convo .is-open.is-swing .egcv-spill { transform: scaleX(1.15); }
.eg-convo .is-closed .egcv-leaf { transform: rotateY(0); }
.eg-convo .is-closed.is-slam .egcv-leaf { animation: egcvSlam .45s cubic-bezier(.5,0,.6,1); }
.eg-convo .is-closed.is-slam .egcv-frame { animation: egcvThud .3s .2s; }
.eg-convo .egcv-door.is-miss .egcv-scene { animation: egqShake .4s ease; }
.eg-convo .egcv-door.is-hit .egcv-scene { filter: drop-shadow(0 0 14px rgba(30,138,82,.45)); }
/* Intermission */
.eg-convo .egcv-inter { padding: 1.8rem 1.4rem; border-radius: 18px; background: linear-gradient(135deg, #f3f4fc, #eaf6f5); animation: egcvIn .5s both; }
.eg-convo .egcv-inter .egcv-big { display: block; font-size: 1.6rem; font-weight: 900; color: var(--eg-heading); margin: .3rem 0 .4rem; }
.eg-convo .egcv-inter small { display: inline-block; padding: .2rem .7rem; border-radius: 999px; background: #fff; color: var(--eg-accent); font-weight: 800; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; }
.eg-convo .egcv-inter p { margin: .2rem 0 !important; color: #3b4658; line-height: 1.6 !important; }
/* Conversations */
.eg-convo .egcv-meter { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; font-weight: 800; font-size: .85rem; color: #5b6570; }
.eg-convo .egcv-bar { flex: 1; height: 14px; border-radius: 14px; background: #e6eaf2; overflow: hidden; }
.eg-convo .egcv-bar i { display: block; height: 100%; width: 20%; background: linear-gradient(90deg, #e0a415, #1e8a52); transition: width .6s cubic-bezier(.3,1.3,.5,1); }
.eg-convo .egcv-thread { display: flex; flex-direction: column; gap: 12px; min-height: 180px; max-height: 380px; overflow: auto; padding: 14px; border-radius: 14px; background: #fff; border: 1px solid #e3e8ef; }
.eg-convo .egcv-pick { margin-top: 14px; }
.eg-convo .egcv-pick b { display: block; font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; color: #5b6570; margin-bottom: 8px; }
.eg-convo .egcv-drafts { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.eg-convo .egcv-draft { all: unset; box-sizing: border-box; cursor: pointer; border: 2px dashed #c9d1e0; background: #fafbfd; border-radius: 12px; padding: .75rem .95rem; font-weight: 700; line-height: 1.35; text-align: left; transition: transform .15s, border-color .15s; }
.eg-convo .egcv-draft:hover { border-style: solid; border-color: var(--eg-heading); transform: translateY(-2px); }
.eg-convo .egcv-draft small { display: block; margin-top: .4rem; font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--eg-heading); }
.eg-convo .egcv-end { padding: 1.4rem; border-radius: 18px; background: linear-gradient(135deg, #f5f6fc, #eef8f7); animation: egcvIn .5s both; }
.eg-convo .egcv-end b { display: block; font-size: 1.4rem; color: var(--eg-heading); margin-bottom: .3rem; }
@keyframes egcvIn { from { opacity: 0; transform: translateY(10px) scale(.97); } }
@keyframes egcvBlink { 0%, 80%, 100% { opacity: .25; } 40% { opacity: 1; } }
@keyframes egcvSlam { 0% { transform: rotateY(-50deg); } 70% { transform: rotateY(2deg); } 100% { transform: rotateY(0); } }
@keyframes egcvThud { 30% { transform: translateY(2px); } 60% { transform: translateY(-1px); } }
@media (max-width: 600px) { .eg-convo { padding: 1.3rem 1rem; } .eg-convo .egcv-doors { gap: 26px; } .eg-convo .egcv-drafts { grid-template-columns: 1fr; } }
/* ---------- Growth wheel: <div class="eg-wheel" data-center="Spiritual Growth Tool" data-hint="Select a circle to read more."><ul><li data-icon="cross|dove|church|bible|prayer|share" data-title="Salvation" data-color="#494e8f">Short description…</li></ul></div> ---------- */
.eg-wheel { margin: 1.6rem auto 2rem; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; text-align: center; }
.eg-wheel * { box-sizing: border-box; }
.eg-wheel > ul { display: none !important; }
.eg-wheel .egw-stage { position: relative; width: min(460px, 100%); aspect-ratio: 1; margin: 0 auto; container-type: inline-size; }
.eg-wheel .egw-lines { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.eg-wheel .egw-lines line { stroke: #e1e5ef; stroke-width: .5; stroke-dasharray: 1.2 1.2; transition: stroke .3s, stroke-width .3s; }
.eg-wheel .egw-lines line.is-hot { stroke: var(--c); stroke-width: .9; stroke-dasharray: none; }
.eg-wheel .egw-ring { position: absolute; inset: 12%; border-radius: 50%; border: 3px dashed #d6dbe8; animation: egwSpin 60s linear infinite; }
.eg-wheel .egw-hub { position: absolute; inset: 34%; border-radius: 50%; background: linear-gradient(135deg, #494e8f, #007a7a); color: #fff; display: flex; align-items: center; justify-content: center; padding: 6%; font-weight: 800; font-size: clamp(.78rem, 3.6cqw, 1.05rem); line-height: 1.2; box-shadow: 0 10px 26px rgba(40,50,110,.28); animation: egwGlow 3.2s ease-in-out infinite; }
.eg-wheel .egw-sp { all: unset; box-sizing: border-box; position: absolute; width: 24%; display: flex; flex-direction: column; align-items: center; gap: .35rem; transform: translate(-50%, -32%); cursor: pointer; opacity: 0; -webkit-tap-highlight-color: transparent; }
.eg-wheel.is-in .egw-sp { animation: egwPop .6s cubic-bezier(.3,1.5,.5,1) both; animation-delay: calc(var(--i) * 90ms + 150ms); }
.eg-wheel .egw-float { display: block; animation: egwBob 3.6s ease-in-out infinite; animation-delay: calc(var(--i) * -.6s); }
.eg-wheel .egw-dot { position: relative; display: block; width: clamp(48px, 15cqw, 68px); height: clamp(48px, 15cqw, 68px); padding: 22%; border-radius: 50%; background: #fff; color: var(--c); border: 3px solid var(--c); box-shadow: 0 6px 14px rgba(20,30,60,.12); transition: transform .3s cubic-bezier(.3,1.6,.5,1), background .25s, color .25s, box-shadow .3s; }
.eg-wheel .egw-dot svg { width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; transition: transform .4s; }
.eg-wheel .egw-dot::after { content: ""; position: absolute; inset: -3px; border-radius: 50%; border: 3px solid var(--c); opacity: 0; pointer-events: none; }
.eg-wheel .egw-lbl { font-weight: 800; font-size: clamp(.8rem, 3.4cqw, 1rem); white-space: nowrap; transition: color .25s, transform .3s; }
.eg-wheel .egw-sp.is-seen .egw-dot::before { content: "✓"; position: absolute; right: -6px; top: -6px; width: 20px; height: 20px; border-radius: 50%; background: #1e8a52; color: #fff; font-size: 12px; font-weight: 900; line-height: 20px; text-align: center; box-shadow: 0 0 0 2px #fff; animation: egwPop .4s cubic-bezier(.3,1.6,.5,1) both; }
.eg-wheel .egw-sp:hover .egw-dot, .eg-wheel .egw-sp:focus-visible .egw-dot { transform: scale(1.16); background: var(--c); color: #fff; box-shadow: 0 10px 22px rgba(20,30,60,.22); }
.eg-wheel .egw-sp:hover .egw-dot svg, .eg-wheel .egw-sp:focus-visible .egw-dot svg { animation: egwWiggle .6s ease; }
.eg-wheel .egw-sp:hover .egw-dot::after, .eg-wheel .egw-sp:focus-visible .egw-dot::after { animation: egwRipple 1.1s ease-out infinite; }
.eg-wheel .egw-sp:hover .egw-lbl, .eg-wheel .egw-sp:focus-visible .egw-lbl { color: var(--c); transform: translateY(3px); }
.eg-wheel .egw-sp:focus-visible { outline: none; }
.eg-wheel .egw-sp:focus-visible .egw-dot { outline: 3px solid #007a7a; outline-offset: 4px; }
.eg-wheel .egw-card { position: absolute; inset: 9%; z-index: 3; border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 12% 13%; background: radial-gradient(circle at 30% 25%, rgba(255,255,255,.18), transparent 55%), var(--c); color: #fff; box-shadow: 0 18px 40px rgba(20,30,60,.3); cursor: pointer; transform: scale(.15); opacity: 0; visibility: hidden; transition: transform .5s cubic-bezier(.3,1.25,.5,1), opacity .3s, visibility 0s .5s; }
.eg-wheel .egw-card.is-open { transform: scale(1); opacity: 1; visibility: visible; transition: transform .5s cubic-bezier(.3,1.25,.5,1), opacity .25s, visibility 0s; }
.eg-wheel .egw-card > * { opacity: 0; transform: translateY(8px); transition: opacity .25s, transform .3s; }
.eg-wheel .egw-card.is-open > * { opacity: 1; transform: none; transition-delay: .22s; }
.eg-wheel .egw-card.is-open > .egw-ct { transition-delay: .3s; } .eg-wheel .egw-card.is-open > .egw-cx { transition-delay: .38s; }
.eg-wheel .egw-ci { width: clamp(40px, 13cqw, 60px); height: clamp(40px, 13cqw, 60px); padding: 11px; border-radius: 50%; background: rgba(255,255,255,.18); margin-bottom: .5rem; }
.eg-wheel .egw-ci svg { width: 100%; height: 100%; fill: none; stroke: #fff; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.eg-wheel .egw-ct { font-weight: 800; font-size: clamp(1.05rem, 5.4cqw, 1.5rem); margin-bottom: .35rem; }
.eg-wheel .egw-cx { font-size: clamp(.82rem, 3.9cqw, 1.08rem); line-height: 1.45; font-weight: 500; }
.eg-wheel .egw-close { all: unset; position: absolute; top: 9%; right: 21%; width: 34px; height: 34px; border-radius: 50%; background: rgba(255,255,255,.2); color: #fff; font-size: 20px; line-height: 34px; text-align: center; cursor: pointer; }
.eg-wheel .egw-close:hover { background: rgba(255,255,255,.35); }
.eg-wheel .egw-close:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
.eg-wheel .egw-hint { margin: .6rem 0 0; color: #5b6570; font-size: .92rem; font-weight: 700; min-height: 1.4em; }
.eg-wheel .egw-hint.is-done { color: #1e8a52; }
@keyframes egwSpin { to { transform: rotate(360deg); } }
@keyframes egwGlow { 50% { box-shadow: 0 10px 26px rgba(40,50,110,.28), 0 0 0 10px rgba(73,78,143,.08); } }
@keyframes egwPop { from { opacity: 0; transform: translate(-50%, -32%) scale(.3); } to { opacity: 1; transform: translate(-50%, -32%) scale(1); } }
@keyframes egwBob { 50% { transform: translateY(-4px); } }
@keyframes egwWiggle { 25% { transform: rotate(-12deg); } 60% { transform: rotate(9deg); } }
@keyframes egwRipple { from { opacity: .6; transform: scale(1); } to { opacity: 0; transform: scale(1.45); } }
@media (prefers-reduced-motion: reduce) { .eg-wheel .egw-ring, .eg-wheel .egw-hub, .eg-wheel .egw-float { animation: none; } }
.eg-wheel .egw-stage.is-open .egw-sp { opacity: .0 !important; pointer-events: none; transition: opacity .3s; }
.eg-wheel .egw-stage .egw-sp { transition: opacity .35s .1s; }
/* ---------- Highlighter check: <div class="eg-marker"> kicker/q/hint + <ul class="eg-quiz-opts"><li data-correct data-why="…">text</li></ul> (optional data-check / data-retry button labels) ---------- */
.eg-marker { max-width: 780px; margin: 1.8rem auto; padding: 1.8rem 1.6rem 2rem; border-radius: 18px; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 10px 30px rgba(20,30,60,.08); text-align: center; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; }
.eg-marker * { box-sizing: border-box; }
.eg-marker .eg-quiz-kicker { display: inline-block; margin: 0 0 .7rem !important; padding: .25rem .7rem; border-radius: 999px; background: #eef6f6; color: var(--eg-accent); font-size: .75rem !important; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.eg-marker .eg-quiz-q { margin: 0 0 .4rem !important; font-size: 1.35rem !important; line-height: 1.4 !important; font-weight: 700; }
.eg-marker .eg-quiz-q b, .eg-marker .eg-quiz-q strong { color: var(--eg-heading) !important; }
.eg-marker .eg-quiz-hint { margin: 0 0 1.3rem !important; color: #5b6570; font-size: 1rem !important; }
.eg-marker .egm-pad { position: relative; margin: 0 auto; padding: 2.1rem 1rem 1.2rem 0; text-align: left; border-radius: 6px; background-color: #fffdf6; background-image: linear-gradient(90deg, transparent 3.1rem, #f2a3a3 3.1rem, #f2a3a3 3.25rem, transparent 3.25rem), repeating-linear-gradient(transparent 0 2.05rem, #dbe6f5 2.05rem 2.15rem); box-shadow: 0 1px 0 #e6dfcc, 0 10px 24px rgba(60,50,20,.12); transform: rotate(-.4deg); }
.eg-marker .egm-pad::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1.3rem; border-radius: 6px 6px 0 0; background: radial-gradient(circle at 50% 60%, #e9e4d6 0 .28rem, transparent .32rem) 0 0/1.6rem 1.3rem repeat-x, #494e8f; opacity: .92; }
.eg-marker ul.eg-quiz-opts { list-style: none !important; margin: 0 !important; padding: 0 !important; }
.eg-marker ul.eg-quiz-opts li { position: relative; margin: 0 !important; padding: .55rem 3.4rem .55rem 4rem !important; cursor: pointer; font-size: 1.08rem !important; font-weight: 600; line-height: 1.55 !important; color: #23314a; border-radius: 6px; transition: background .2s; outline: none; }
.eg-marker ul.eg-quiz-opts li::before { content: none !important; }
.eg-marker ul.eg-quiz-opts li::after { content: ""; position: absolute; left: 1.05rem; top: .78rem; width: 1.25rem; height: 1.25rem; border-radius: 4px; border: 2px dashed #c3cbdb; transition: border-color .2s, background .2s; }
.eg-marker ul.eg-quiz-opts li:hover::after { border-color: #e0b400; }
.eg-marker ul.eg-quiz-opts li.is-sel::after { border: 0; background: no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.5 3.5l6 6L10 20H4v-6z' fill='%23ffe14d' stroke='%232b2238' stroke-width='1.6' stroke-linejoin='round'/%3E%3Cpath d='M4 14l6 6' stroke='%232b2238' stroke-width='1.6'/%3E%3Cpath d='M4 20h2' stroke='%23ffcf00' stroke-width='3'/%3E%3C/svg%3E"); animation: egmPop .3s cubic-bezier(.3,1.6,.5,1); }
.eg-marker ul.eg-quiz-opts li:focus-visible { box-shadow: 0 0 0 3px var(--eg-accent); }
.eg-marker .egm-t { padding: .05em .15em; background-image: linear-gradient(100deg, rgba(255,226,64,0) 0, rgba(255,226,64,.9) 1.2%, rgba(255,214,40,.75) 97%, rgba(255,226,64,0) 100%); background-repeat: no-repeat; background-position: 0 70%; background-size: 0% 78%; -webkit-box-decoration-break: clone; box-decoration-break: clone; border-radius: .25em .5em .35em .45em; transition: background-size .45s ease; }
.eg-marker li:hover .egm-t { background-size: 6% 78%; }
.eg-marker li.is-sel .egm-t { background-size: 100% 78%; }
.eg-marker .egm-mark { position: absolute; right: .7rem; top: .35rem; width: 2.1rem; height: 2.1rem; pointer-events: none; }
.eg-marker .egm-mark path { fill: none; stroke-width: 3.2; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 60; stroke-dashoffset: 60; animation: egmDraw .45s ease forwards; animation-delay: var(--d, 0s); }
.eg-marker .egm-why { display: block; margin-top: .25rem; font-size: .92rem; font-weight: 600; font-style: italic; line-height: 1.45; opacity: 0; animation: egmFade .4s ease forwards; animation-delay: var(--d, 0s); }
.eg-marker li.is-right .egm-why, .eg-marker li.is-skip .egm-why { color: #1e6b41; }
.eg-marker li.is-wrong .egm-why, .eg-marker li.is-missed .egm-why { color: #a8322a; }
.eg-marker li.is-right .egm-mark path, .eg-marker li.is-skip .egm-mark path { stroke: #1e8a52; }
.eg-marker li.is-skip .egm-t { color: #6b7686; }
.eg-marker li.is-wrong .egm-mark path, .eg-marker li.is-missed .egm-mark path { stroke: #c0392b; }
.eg-marker li.is-wrong .egm-t { text-decoration: line-through; text-decoration-color: rgba(192,57,43,.7); text-decoration-thickness: 2px; }
.eg-marker li.is-missed .egm-t { box-shadow: 0 0 0 2px rgba(192,57,43,.55); border-radius: 40% 30% 45% 35% / 60% 50% 60% 45%; }
.eg-marker.is-done ul.eg-quiz-opts li { cursor: default; }
.eg-marker .egm-score { position: absolute; right: .6rem; top: -1.4rem; z-index: 2; display: flex; align-items: center; justify-content: center; width: 4.6rem; height: 4.6rem; border-radius: 50%; border: 4px solid #c0392b; color: #c0392b; background: rgba(255,255,255,.85); font-size: 1.35rem; font-weight: 900; transform: rotate(-12deg); animation: egmStamp .45s cubic-bezier(.3,1.5,.5,1) both; }
.eg-marker .egm-score.is-perfect { border-color: #1e8a52; color: #1e8a52; }
.eg-marker .egm-btn { all: unset; box-sizing: border-box; display: inline-flex; align-items: center; gap: .5rem; margin-top: 1.5rem; padding: .8rem 2rem; border-radius: 999px; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); color: #fff; font-weight: 800; font-size: 1rem; cursor: pointer; transition: transform .15s, box-shadow .15s, filter .15s; }
.eg-marker .egm-btn:hover { transform: translateY(-2px) scale(1.03); box-shadow: 0 8px 18px rgba(73,78,143,.3); filter: brightness(1.08); }
.eg-marker .egm-btn:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 3px; }
.eg-marker .egm-btn.is-ghost { background: none; color: var(--eg-heading); box-shadow: inset 0 0 0 2px var(--eg-heading); }
.eg-marker .egm-status { min-height: 1.4em; margin: .9rem 0 0 !important; font-weight: 700; font-size: 1.02rem !important; line-height: 1.45 !important; }
.eg-marker .egm-status.good { color: #1e6b41; } .eg-marker .egm-status.bad { color: #a8322a; }
@keyframes egmDraw { to { stroke-dashoffset: 0; } }
@keyframes egmFade { to { opacity: 1; } }
@keyframes egmPop { from { transform: scale(.3) rotate(-30deg); } }
@keyframes egmStamp { from { transform: rotate(-12deg) scale(2.2); opacity: 0; } }
@media (max-width: 560px) { .eg-marker { padding: 1.4rem .8rem 1.6rem; } .eg-marker ul.eg-quiz-opts li { padding: .55rem 2.8rem .55rem 3.3rem !important; font-size: 1rem !important; } .eg-marker ul.eg-quiz-opts li::after { left: .7rem; } .eg-marker .egm-pad { background-image: linear-gradient(90deg, transparent 2.5rem, #f2a3a3 2.5rem, #f2a3a3 2.65rem, transparent 2.65rem), repeating-linear-gradient(transparent 0 2.05rem, #dbe6f5 2.05rem 2.15rem); } }
/* ---------- Pinboard check: <div class="eg-pinboard"> kicker/q/hint + <ul class="eg-quiz-opts"><li data-correct data-why="…">text</li></ul> ---------- */
.eg-pinboard { max-width: 860px; margin: 1.8rem auto; padding: 1.8rem 1.4rem 2rem; border-radius: 18px; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 10px 30px rgba(20,30,60,.08); text-align: center; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; }
.eg-pinboard * { box-sizing: border-box; }
.eg-pinboard .eg-quiz-kicker { display: inline-block; margin: 0 0 .7rem !important; padding: .25rem .7rem; border-radius: 999px; background: #eef6f6; color: var(--eg-accent); font-size: .75rem !important; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.eg-pinboard .eg-quiz-q { margin: 0 0 .4rem !important; font-size: 1.35rem !important; line-height: 1.4 !important; font-weight: 700; }
.eg-pinboard .eg-quiz-q b, .eg-pinboard .eg-quiz-q strong { color: var(--eg-heading) !important; }
.eg-pinboard .eg-quiz-hint { margin: 0 0 1.2rem !important; color: #5b6570; font-size: 1rem !important; }
.eg-pinboard .egp-cork { padding: 22px 16px; border-radius: 10px; background: radial-gradient(circle at 20% 30%, rgba(0,0,0,.08) 0 1px, transparent 2px) 0 0/9px 11px, radial-gradient(circle at 70% 60%, rgba(255,255,255,.12) 0 1px, transparent 2px) 0 0/13px 7px, #c8955c; box-shadow: inset 0 0 0 10px #8a5a2b, inset 0 0 0 13px #6b4420, inset 0 6px 18px rgba(0,0,0,.25); }
.eg-pinboard ul.eg-quiz-opts { list-style: none !important; margin: 0 !important; padding: 10px !important; display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px 14px; }
.eg-pinboard ul.eg-quiz-opts li { position: relative; margin: 0 !important; min-height: 130px; padding: 1.4rem .75rem .85rem !important; text-align: left; font-weight: 700; font-size: .95rem !important; line-height: 1.35 !important; color: #2b2a22; background: var(--c); box-shadow: 2px 6px 10px rgba(0,0,0,.25); transform: rotate(var(--r)); transition: transform .25s, box-shadow .25s; cursor: pointer; outline: none; }
.eg-pinboard ul.eg-quiz-opts li::before { content: none !important; }
.eg-pinboard ul.eg-quiz-opts li::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 14px; background: linear-gradient(transparent, rgba(0,0,0,.06)); pointer-events: none; }
.eg-pinboard ul.eg-quiz-opts li:hover { transform: rotate(0) translateY(-3px) scale(1.03); box-shadow: 3px 10px 16px rgba(0,0,0,.3); }
.eg-pinboard ul.eg-quiz-opts li:focus-visible { box-shadow: 0 0 0 3px #fff, 0 0 0 6px var(--eg-accent); }
.eg-pinboard ul.eg-quiz-opts li.is-on { transform: rotate(0) scale(1.03); box-shadow: 3px 12px 18px rgba(0,0,0,.32); }
.eg-pinboard .egp-pin { position: absolute; left: 50%; top: -12px; width: 26px; height: 30px; margin-left: -13px; animation: egpDrop .3s cubic-bezier(.3,1.5,.5,1) both; }
.eg-pinboard.is-done ul.eg-quiz-opts li { cursor: default; }
.eg-pinboard.is-done ul.eg-quiz-opts li:hover { transform: rotate(var(--r)); box-shadow: 2px 6px 10px rgba(0,0,0,.25); }
.eg-pinboard ul.eg-quiz-opts li.is-fall { animation: egpFall .9s cubic-bezier(.5,0,.8,.6) forwards; }
.eg-pinboard ul.eg-quiz-opts li.is-missed { box-shadow: 0 0 0 3px #c0392b, 2px 6px 10px rgba(0,0,0,.25); animation: egqShake .45s ease; }
.eg-pinboard .egp-badge { position: absolute; right: -8px; top: -10px; width: 28px; height: 28px; border-radius: 50%; color: #fff; font-weight: 900; font-size: .95rem; display: flex; align-items: center; justify-content: center; box-shadow: 0 0 0 3px #fff; animation: egpPop .35s both; }
.eg-pinboard .egp-badge.g { background: #1e8a52; } .eg-pinboard .egp-badge.b { background: #c0392b; }
.eg-pinboard .egp-why { display: block; margin-top: .45rem; font-size: .85rem; font-weight: 700; line-height: 1.35; animation: egpFade .4s both; }
.eg-pinboard .egp-why.g { color: #1e6b41; } .eg-pinboard .egp-why.b { color: #a8322a; }
.eg-pinboard .egp-btn { all: unset; box-sizing: border-box; display: inline-flex; align-items: center; gap: .5rem; margin-top: 1.4rem; padding: .8rem 2rem; border-radius: 999px; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); color: #fff; font-weight: 800; font-size: 1rem; cursor: pointer; transition: transform .15s, box-shadow .15s, filter .15s; }
.eg-pinboard .egp-btn:hover { transform: translateY(-2px) scale(1.03); box-shadow: 0 8px 18px rgba(73,78,143,.3); filter: brightness(1.08); }
.eg-pinboard .egp-btn:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 3px; }
.eg-pinboard .egp-btn.is-ghost { background: none; color: var(--eg-heading); box-shadow: inset 0 0 0 2px var(--eg-heading); }
.eg-pinboard .egp-status { min-height: 1.4em; margin: .9rem 0 0 !important; font-weight: 700; font-size: 1.02rem !important; line-height: 1.45 !important; }
.eg-pinboard .egp-status.good { color: #1e6b41; } .eg-pinboard .egp-status.bad { color: #a8322a; }
@keyframes egpDrop { from { transform: translateY(-30px) scale(1.6); opacity: 0; } }
@keyframes egpFall { 30% { transform: rotate(-10deg) translateY(3px); } 100% { transform: rotate(7deg) translateY(10px); opacity: .8; } }
@keyframes egpPop { 0% { transform: scale(.3); opacity: 0; } 70% { transform: scale(1.15); } 100% { transform: scale(1); opacity: 1; } }
@keyframes egpFade { from { opacity: 0; transform: translateY(4px); } }
@media (max-width: 760px) { .eg-pinboard ul.eg-quiz-opts { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 420px) { .eg-pinboard ul.eg-quiz-opts { grid-template-columns: 1fr; } .eg-pinboard ul.eg-quiz-opts li { min-height: 0; } }
/* numbered flip variant: <div class="eg-flip" data-numbered> */
.eg-flip[data-numbered] .egf-grid { display: flex; flex-wrap: wrap; justify-content: center; }
.eg-flip[data-numbered] button.egf-card { width: calc(25% - .75rem); min-width: 170px; }
.eg-flip[data-numbered] .egf-face { min-height: 285px; padding: 1.2rem 1rem; }
.eg-flip[data-numbered] .egf-back { line-height: 1.4; }
.eg-flip[data-numbered] .egf-front { background: linear-gradient(150deg, var(--eg-heading), var(--eg-accent)); color: #fff; border: 0; box-shadow: 0 8px 20px rgba(40,50,110,.22); }
.eg-flip[data-numbered] .egf-card:hover .egf-front { box-shadow: 0 14px 28px rgba(40,50,110,.3); filter: brightness(1.07); }
.eg-flip[data-numbered] .egf-front svg { width: 48px; height: 48px; padding: 11px; margin: .7rem 0 .5rem; background: rgba(255,255,255,.18); }
.eg-flip[data-numbered] .egf-num { font-size: 3.4rem; font-weight: 900; line-height: 1; }
.eg-flip[data-numbered] .egf-sub { font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; opacity: .8; color: #fff; }
.eg-flip[data-numbered] .egf-card.is-seen .egf-front::after { background: #fff; color: var(--eg-accent); }
.eg-flip[data-numbered] .egf-back, .eg-flip[data-numbered] .egf-back p { font-size: .92rem !important; }
@media (max-width: 760px) { .eg-flip[data-numbered] button.egf-card { width: calc(50% - .5rem); min-width: 0; } }
/* ---------- Practice conversations: <div class="eg-convo-practice"> <ol data-practices><li data-icon><b>Title</b> description</li></ol> + <div data-contact data-role> with <p data-time> Contact messages and <div data-turn="message|action" data-q data-time|data-note><p data-bp="2,1" data-why>option</p></div> ---------- */
.eg-convo-practice { margin: 1.8rem 0; font-family: system-ui,-apple-system,"Segoe UI",sans-serif; color: #1d2a3a; }
.eg-convo-practice * { box-sizing: border-box; }
.eg-convo-practice > :not(.egrp-act) { display: none !important; }
.eg-convo-practice .egrp-act { position: relative; display: grid; grid-template-columns: 64px minmax(0,1.15fr) minmax(0,1fr); gap: 18px; align-items: start; padding: 1.2rem; border-radius: 18px; background: #fff; border: 1px solid #e3e8ef; box-shadow: 0 10px 30px rgba(20,30,60,.08); }
.eg-convo-practice svg { fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.eg-convo-practice .egrp-rail { display: flex; flex-direction: column; gap: 9px; align-items: center; padding-top: 4px; }
.eg-convo-practice .egrp-lab { font-size: .58rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: #5b6570; text-align: center; line-height: 1.3; }
.eg-convo-practice .egrp-bdg { position: relative; width: 52px; height: 52px; border-radius: 16px; border: 2px dashed #c9d0de; background: #f6f7fb; color: #a8b0c2; display: flex; align-items: center; justify-content: center; transition: background .3s, color .3s, border-color .3s; outline: none; }
.eg-convo-practice .egrp-bdg svg { width: 26px; height: 26px; }
.eg-convo-practice .egrp-bdg.is-on { border: 0; color: #fff; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); animation: egrpPop .5s cubic-bezier(.3,1.5,.5,1), egrpGlow .9s .1s; }
.eg-convo-practice .egrp-tip { position: absolute; z-index: 30; left: 62px; top: 50%; transform: translateY(-50%); width: 240px; padding: .6rem .75rem; border-radius: 10px; background: #1d2a3a; color: #fff; font-size: .82rem; line-height: 1.4; text-align: left; opacity: 0; pointer-events: none; transition: opacity .15s; }
.eg-convo-practice .egrp-tip b { display: block; color: #7fe0d6; margin-bottom: .15rem; }
.eg-convo-practice .egrp-bdg:hover .egrp-tip, .eg-convo-practice .egrp-bdg:focus .egrp-tip { opacity: 1; }
.eg-convo-practice .egrp-count { font-weight: 800; color: var(--eg-accent); font-size: .8rem; }
.eg-convo-practice .egrp-toast { position: absolute; z-index: 25; left: 80px; padding: .35rem .7rem; border-radius: 999px; background: var(--eg-accent); color: #fff; font-weight: 800; font-size: .82rem; white-space: nowrap; animation: egrpToast 1.8s forwards; pointer-events: none; }
.egrp-fly { position: fixed; z-index: 9999; width: 40px; height: 40px; border-radius: 12px; color: #fff; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); display: flex; align-items: center; justify-content: center; pointer-events: none; transition: left .6s cubic-bezier(.5,0,.3,1), top .6s cubic-bezier(.5,0,.3,1), transform .6s; box-shadow: 0 8px 18px rgba(40,50,110,.35); }
.egrp-fly svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.eg-convo-practice .egrp-path { height: 560px; display: flex; flex-direction: column; border: 1px solid #dfe3ea; border-radius: 8px; background: #fff; overflow: hidden; font-family: Lato, "Helvetica Neue", Arial, sans-serif; }
.eg-convo-practice .egrp-hd { display: flex; align-items: center; justify-content: space-between; padding: .7rem 1rem; border-bottom: 1px solid #e6e9ef; background: #f8f9fb; }
.eg-convo-practice .egrp-hd b { font-size: 1rem; color: #243447; } .eg-convo-practice .egrp-hd small { display: block; color: #6b7686; font-size: .8rem; }
.eg-convo-practice .egrp-vp { padding: .4rem 1rem; border-radius: 6px; background: #56b1e5; color: #fff; font-weight: 700; font-size: .75rem; letter-spacing: .03em; text-transform: uppercase; font-family: Arial, sans-serif; }
.eg-convo-practice .egrp-thread { flex: 1; overflow-y: auto; padding: 1rem 1rem 1.2rem; scroll-behavior: smooth; }
.eg-convo-practice .egrp-mc, .eg-convo-practice .egrp-mo { margin: 0 0 1.1rem; animation: egrpIn .35s both; }
.eg-convo-practice .egrp-mc .egrp-bb { width: 88%; padding: .85rem 1.1rem; border-radius: 10px; background: #cbeafd; color: #000; font-family: Arial, "Helvetica Neue", sans-serif; font-size: .98rem; line-height: 1.45; }
.eg-convo-practice .egrp-mc .egrp-ts { width: 88%; margin-top: .3rem; color: #243447; font-size: .82rem; }
.eg-convo-practice .egrp-me { text-align: right; color: #243447; font-size: .9rem; margin-bottom: .2rem; }
.eg-convo-practice .egrp-row { display: flex; align-items: center; gap: .5rem; }
.eg-convo-practice .egrp-kb { flex: none; display: flex; flex-direction: column; gap: 3px; padding: 0 4px; } .eg-convo-practice .egrp-kb i { width: 5px; height: 5px; border-radius: 50%; border: 1.5px solid #243447; }
.eg-convo-practice .egrp-mo .egrp-bb { flex: 1; padding: .85rem 1.1rem; border-radius: 6px; background: #e2e2e2; color: #000; font-size: .98rem; line-height: 1.45; }
.eg-convo-practice .egrp-mo .egrp-ts { text-align: right; margin-top: .3rem; color: #243447; font-size: .82rem; }
.eg-convo-practice .egrp-sys { margin: 0 0 1.1rem; text-align: center; color: #6b7686; font-size: .82rem; font-style: italic; animation: egrpIn .35s both; }
.eg-convo-practice .egrp-sys span { display: inline-block; padding: .25rem .8rem; border-radius: 999px; background: #f1f3f7; }
.eg-convo-practice .egrp-conv { font-size: .72rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--eg-accent); }
.eg-convo-practice .egrp-coach h3 { margin: .3rem 0 .7rem !important; color: var(--eg-heading) !important; font-size: 1.15rem !important; line-height: 1.35 !important; }
.eg-convo-practice .egrp-coach h3::after { display: none !important; }
.eg-convo-practice .egrp-ch { display: flex; flex-direction: column; gap: 9px; }
.eg-convo-practice .egrp-ch button { all: unset; box-sizing: border-box; display: block; text-align: left; padding: .75rem .9rem; border-radius: 12px; border: 2px solid #dfe4ee; background: #fff; line-height: 1.42; font-weight: 600; font-size: .95rem; color: #1d2a3a; cursor: pointer; transition: border-color .15s, transform .15s, opacity .2s; animation: egrpIn .3s both; }
.eg-convo-practice .egrp-ch button:hover { border-color: var(--eg-heading); transform: translateX(3px); }
.eg-convo-practice .egrp-ch button:focus-visible { outline: 3px solid var(--eg-accent); outline-offset: 2px; }
.eg-convo-practice .egrp-ch button.is-no { border-color: #b3261e; background: #fdf0ef; animation: egqShake .4s; }
.eg-convo-practice .egrp-ch button.is-ok { border-color: #1e7a48; background: #e8f5ee; }
.eg-convo-practice .egrp-k { display: block; font-size: .68rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: #5b6570; margin-bottom: .2rem; }
.eg-convo-practice .egrp-fb { margin: .7rem 0 0 !important; font-weight: 700; line-height: 1.45 !important; font-size: .98rem !important; }
.eg-convo-practice .egrp-fb.good { color: #1e7a48; } .eg-convo-practice .egrp-fb.bad { color: #b3261e; }
.eg-convo-practice .egrp-go { all: unset; box-sizing: border-box; display: inline-block; padding: .65rem 1.5rem; margin-top: .9rem; border-radius: 999px; font-weight: 800; color: #fff; background: linear-gradient(135deg, var(--eg-heading), var(--eg-accent)); cursor: pointer; }
.eg-convo-practice .egrp-go:hover { filter: brightness(1.08); transform: translateY(-1px); }
.eg-convo-practice .egrp-end { text-align: center; padding: 1rem .5rem; }
.eg-convo-practice .egrp-endrow { display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; margin: .8rem 0; }
.eg-convo-practice .egrp-endrow .egrp-tip { left: 50%; top: auto; bottom: 60px; transform: translateX(-50%); }
.eg-convo-practice .egrp-tries { margin: .4rem 0 0 !important; color: #5b6570; font-weight: 700; font-size: .9rem !important; }
.eg-convo-practice .egrp-close { margin: .4rem 0 0 !important; font-size: .98rem !important; }
@keyframes egrpIn { from { opacity: 0; transform: translateY(8px); } }
@keyframes egrpPop { 0% { transform: scale(.3); opacity: 0; } 65% { transform: scale(1.2); } 100% { transform: scale(1); opacity: 1; } }
@keyframes egrpGlow { 0% { box-shadow: 0 0 0 0 rgba(0,122,122,.6); } 100% { box-shadow: 0 0 0 18px rgba(0,122,122,0); } }
@keyframes egrpToast { 0% { opacity: 0; transform: translateX(-8px); } 12%, 75% { opacity: 1; transform: none; } 100% { opacity: 0; } }
@media (max-width: 900px) { .eg-convo-practice .egrp-act { grid-template-columns: 1fr; } .eg-convo-practice .egrp-rail { flex-direction: row; flex-wrap: wrap; justify-content: center; } .eg-convo-practice .egrp-rail .egrp-tip { left: 50%; top: auto; bottom: 60px; transform: translateX(-50%); } .eg-convo-practice .egrp-toast { display: none; } .eg-convo-practice .egrp-path { height: 440px; } }

.eg-convo-practice span[data-bp] { border-radius: 4px; transition: background .35s, box-shadow .35s; -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.eg-convo-practice .egrp-hl { background: rgba(245,195,74,.75); box-shadow: 0 0 0 2px rgba(245,195,74,.55), 0 0 16px rgba(245,195,74,.9); }
.eg-convo-practice .egrp-hl-done { background: rgba(245,195,74,.28); }
.eg-convo-practice .egrp-ch button.egrp-hl { box-shadow: 0 0 0 3px rgba(245,195,74,.8), 0 0 18px rgba(245,195,74,.9); }
.eg-convo-practice .egrp-ch button.egrp-hl-done { background: #fff8e6; }
.eg-convo-practice .egrp-bdg.is-glow { border: 0; color: #fff; background: linear-gradient(135deg, #c8962e, #f5c34a); transform: scale(1.12); box-shadow: 0 0 0 4px rgba(245,195,74,.45), 0 0 22px rgba(245,195,74,.95); animation: egrpPop .5s cubic-bezier(.3,1.5,.5,1); transition: transform .3s; }
.eg-convo-practice .egrp-toast { background: #c8962e; }

.eg-convo-practice .egrp-pop { position: absolute; z-index: 40; padding: .9rem 1rem 1rem; border-radius: 14px; background: #fff; border: 2px solid #f5c34a; box-shadow: 0 16px 36px rgba(29,42,58,.25); animation: egrpIn .25s both; text-align: left; }
.eg-convo-practice .egrp-pop.is-peek { pointer-events: none; }
.eg-convo-practice .egrp-ph { display: flex; align-items: center; gap: .6rem; margin-bottom: .45rem; }
.eg-convo-practice .egrp-pb { flex: none; width: 34px; height: 34px; border-radius: 10px; display: flex; align-items: center; justify-content: center; color: #fff; background: linear-gradient(135deg, #c8962e, #f5c34a); }
.eg-convo-practice .egrp-pb svg { width: 19px; height: 19px; }
.eg-convo-practice .egrp-ph b { display: block; color: #8a5a10; font-size: .92rem; line-height: 1.25; }
.eg-convo-practice .egrp-pq { margin: 0 0 .4rem !important; padding: .4rem .6rem; border-radius: 8px; background: rgba(245,195,74,.2); font-style: italic; font-size: .88rem !important; line-height: 1.4 !important; color: #3a3220; }
.eg-convo-practice .egrp-pn { margin: 0 !important; font-size: .92rem !important; line-height: 1.45 !important; color: #1d2a3a; }
.eg-convo-practice .egrp-pgo { margin-top: .7rem; padding: .5rem 1.3rem; font-size: .9rem; }
.eg-convo-practice .egrp-rev { cursor: help; }
.eg-convo-practice .egrp-rev:hover, .eg-convo-practice .egrp-rev:focus-visible { outline: none; background: rgba(245,195,74,.6); }
.eg-wwl-map { position: relative; margin: 1.5rem 0; border-radius: 14px; overflow: hidden; background: #f3f5f6; user-select: none; box-shadow: 0 4px 18px rgba(0,0,0,.08); }
.eg-wwl-map > ol { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); margin: 0 !important; }
.eg-wwl-map > svg { display: block; width: 100%; height: auto; }
.eg-wwl-map svg path { fill: #dde1e4; stroke: #fff; stroke-width: .5; }
.eg-wwl-map svg path.egwm-c { cursor: pointer; stroke-width: .6; transition: filter .25s; }
.eg-wwl-map svg path.egwm-x { fill: #c4161c; } .eg-wwl-map svg path.egwm-v { fill: #e5541f; } .eg-wwl-map svg path.egwm-h { fill: #f0a020; }
.eg-wwl-map svg path.egwm-c.is-hov { filter: drop-shadow(0 0 4px rgba(255,200,60,.95)) brightness(1.12); }
.eg-wwl-map .egwm-pin { cursor: pointer; transform-box: fill-box; transform-origin: bottom center; transition: transform .3s cubic-bezier(.3,1.6,.5,1); opacity: 0; }
.eg-wwl-map .egwm-pin path { fill: #2b2f33; stroke: #fff; stroke-width: 1; transition: fill .25s; }
.eg-wwl-map .egwm-pin.is-done { opacity: 1; }
.eg-wwl-map svg, .eg-wwl-map svg * { outline: none !important; -webkit-tap-highlight-color: transparent; }
.eg-wwl-map .egwm-pin text { fill: #fff; font: 800 6.5px system-ui, sans-serif; text-anchor: middle; dominant-baseline: central; pointer-events: none; transition: fill .25s; }
.eg-wwl-map .egwm-pin.is-in { animation: egwmDrop .5s cubic-bezier(.3,1.6,.5,1) both; }
.eg-wwl-map .egwm-pin.is-hov { transform: translateY(-4px) scale(1.7); opacity: 1; }
.eg-wwl-map .egwm-pin.is-hov path { fill: #f5c34a; } .eg-wwl-map .egwm-pin.is-hov text { fill: #2b2f33; }
@keyframes egwmDrop { from { transform: translateY(-30px); opacity: 0; } to { transform: none; opacity: 1; } }
.eg-wwl-map .egwm-legend { position: absolute; left: 12px; bottom: 10px; background: rgba(255,255,255,.92); border-radius: 10px; padding: .45rem .7rem; font: 700 .72rem/1 system-ui, sans-serif; color: #243447; display: flex; gap: .9rem; }
.eg-wwl-map .egwm-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: .35rem; vertical-align: -1px; }
.eg-wwl-map .egwm-src { position: absolute; right: 10px; bottom: 9px; font: .68rem system-ui, sans-serif; color: #5b6570; background: rgba(255,255,255,.88); padding: .25rem .5rem; border-radius: 6px; }
.eg-wwl-map .egwm-src a { color: var(--eg-accent, #007a7a); }
.eg-wwl-map .egwm-hint { position: absolute; left: 12px; top: 10px; font: 700 .75rem system-ui, sans-serif; color: #5b6570; background: rgba(255,255,255,.88); padding: .3rem .6rem; border-radius: 6px; transition: opacity .3s; }
.eg-wwl-map .egwm-tip { position: absolute; top: 12px; pointer-events: none; background: #fff; border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,.2); padding: .65rem .8rem; min-width: 200px; opacity: 0; transform: translateY(6px) scale(.96); transition: opacity .18s, transform .18s; font-family: system-ui, sans-serif; color: #243447; z-index: 2; }
.eg-wwl-map .egwm-tip.is-on { opacity: 1; transform: none; }
.eg-wwl-map .egwm-tr { display: flex; align-items: center; gap: .55rem; }
.eg-wwl-map .egwm-rk { flex: none; width: 34px; height: 34px; border-radius: 50%; color: #fff; font-weight: 800; display: grid; place-items: center; font-size: .95rem; }
.eg-wwl-map .egwm-tip b { display: block; font-size: 1rem; line-height: 1.15; }
.eg-wwl-map .egwm-tip small { font-size: .7rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.eg-wwl-map .egwm-bar { height: 7px; border-radius: 9px; background: #eceef2; margin: .55rem 0 .25rem; overflow: hidden; }
.eg-wwl-map .egwm-bar span { display: block; height: 100%; border-radius: 9px; }
.eg-wwl-map .egwm-sc { font-size: .78rem; color: #5b6570; }
@media (max-width: 600px) { .eg-wwl-map .egwm-legend { font-size: .6rem; gap: .5rem; } .eg-wwl-map .egwm-src { display: none; } .eg-wwl-map .egwm-tip { min-width: 170px; } }
.eg-top10 { margin: 1.5rem 0; }
.eg-top10 > [data-country] { display: none; }
.eg-top10 .egt-hint { margin: 0 0 .9rem; font-size: .9rem; font-weight: 700; color: #5b6570; text-align: center; }
.eg-top10 .egt-row { display: grid; grid-template-columns: repeat(5, 1fr); gap: 16px 10px; }
.eg-top10 .egt-b { all: unset; box-sizing: border-box; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: .45rem; text-align: center; font: 700 .85rem/1.2 system-ui, sans-serif; color: #243447; animation: egtPop .45s both; }
.eg-top10 .egt-b:focus-visible .egt-fl { box-shadow: 0 0 0 3px #fff, 0 0 0 6px var(--eg-accent, #007a7a); }
@keyframes egtPop { from { opacity: 0; transform: scale(.6); } }
.eg-top10 .egt-ball { position: relative; width: 72px; height: 72px; }
.eg-top10 .egt-fl { display: block; overflow: hidden; }
.eg-top10 .egt-fl svg, .eg-top10 .egt-fl img { display: block; width: 100%; height: 100%; object-fit: cover; }
.eg-top10 .egt-ball .egt-fl { width: 72px; height: 72px; border-radius: 50%; box-shadow: 0 0 0 3px #fff, 0 0 0 5px #dde1e4, 0 4px 10px rgba(0,0,0,.15); transition: transform .3s cubic-bezier(.3,1.6,.5,1), box-shadow .2s; }
.eg-top10 .egt-rk { position: absolute; right: -4px; top: -4px; width: 24px; height: 24px; border-radius: 50%; background: #c4161c; color: #fff; font-size: .72rem; font-weight: 800; display: grid; place-items: center; box-shadow: 0 0 0 2px #fff; }
.eg-top10 .egt-b:hover .egt-fl { transform: translateY(-4px) scale(1.06); }
.eg-top10 .egt-b.is-on .egt-fl { transform: translateY(-4px) scale(1.1); box-shadow: 0 0 0 3px #fff, 0 0 0 6px #f5c34a, 0 8px 16px rgba(0,0,0,.2); }
.eg-top10 .egt-drawer { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .45s ease; }
.eg-top10 .egt-drawer.is-open { grid-template-rows: 1fr; }
.eg-top10 .egt-drawer > div { overflow: hidden; }
.eg-top10 .egt-panel { margin-top: 18px; border-radius: 14px; background: #f7f8fa; padding: 18px; display: grid; grid-template-columns: 150px 1fr; gap: 18px; border-top: 4px solid #c4161c; animation: egtSwap .35s both; }
@keyframes egtSwap { from { opacity: 0; transform: translateY(8px); } }
.eg-top10 .egt-panel .egt-fl { width: 150px; height: 100px; border-radius: 10px; box-shadow: 0 4px 12px rgba(0,0,0,.15); }
.eg-top10 .egt-panel h3 { margin: 0 !important; font-size: 1.3rem !important; color: #243447; }
.eg-top10 .egt-st { display: flex; flex-wrap: wrap; gap: .3rem 1rem; margin: .45rem 0; font: .85rem system-ui, sans-serif; color: #5b6570; }
.eg-top10 .egt-st b { color: #243447; }
.eg-top10 .egt-bar { height: 7px; border-radius: 9px; background: #e3e6eb; overflow: hidden; margin: .35rem 0 .5rem; }
.eg-top10 .egt-bar i { display: block; height: 100%; width: 0; background: #c4161c; border-radius: 9px; transition: width .7s cubic-bezier(.2,.8,.2,1); }
.eg-top10 .egt-panel p { margin: 0 !important; line-height: 1.6; }
.eg-top10 .egt-more { display: inline-block; margin-top: .6rem; font-weight: 700; font-size: .9rem; color: var(--eg-accent, #007a7a); text-decoration: none; }
.eg-top10 .egt-more:hover { text-decoration: underline; }
.eg-top10 .egt-src { font-size: .75rem; color: #5b6570; margin: .9rem 0 0; }
.eg-swipe { margin: 1.5rem 0; padding: 18px; border-radius: 16px; background: #fff; box-shadow: 0 2px 12px rgba(0,0,0,.07); }
.eg-swipe > p[data-pile] { display: none; }
.eg-swipe .egsw-top { display: flex; justify-content: space-between; align-items: center; font: 800 .78rem system-ui, sans-serif; letter-spacing: .08em; text-transform: uppercase; color: #5b6570; margin-bottom: 12px; }
.eg-swipe .egsw-prog { flex: 1; height: 6px; border-radius: 9px; background: #e6e9ee; margin: 0 12px; overflow: hidden; }
.eg-swipe .egsw-prog i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--eg-heading, #494e8f), var(--eg-accent, #007a7a)); transition: width .4s; }
.eg-swipe .egsw-deck { position: relative; height: 230px; max-width: 460px; margin: 0 auto; }
.eg-swipe .egsw-card { position: absolute; inset: 0; background: #fff; border-radius: 18px; border: 2px solid #e3e6eb; box-shadow: 0 10px 26px rgba(0,0,0,.14); display: flex; align-items: center; justify-content: center; text-align: center; padding: 30px 26px; font: 700 1.15rem/1.4 system-ui, sans-serif; color: #243447; cursor: grab; touch-action: pan-y; user-select: none; transition: transform .35s cubic-bezier(.3,1.3,.5,1), opacity .35s; }
.eg-swipe .egsw-card:active { cursor: grabbing; }
.eg-swipe .egsw-card.is-under { transform: translateY(12px) scale(.95); opacity: .7; pointer-events: none; }
.eg-swipe .egsw-st { position: absolute; top: 14px; padding: .3rem .7rem; border: 3px solid; border-radius: 8px; font-weight: 900; letter-spacing: .08em; font-size: .85rem; opacity: 0; }
.eg-swipe .egsw-st.is-l { left: 14px; color: #c4161c; transform: rotate(-10deg); }
.eg-swipe .egsw-st.is-r { right: 14px; color: #1f8a4c; transform: rotate(10deg); }
.eg-swipe .egsw-card.is-shake { animation: egsShake .45s; }
@keyframes egsShake { 20%, 60% { transform: translateX(-8px); } 40%, 80% { transform: translateX(8px); } }
.eg-swipe .egsw-btns { display: flex; gap: 12px; justify-content: center; margin-top: 16px; flex-wrap: wrap; }
.eg-swipe .egsw-b { all: unset; box-sizing: border-box; cursor: pointer; padding: .75rem 1.3rem; border-radius: 999px; font: 800 .95rem system-ui, sans-serif; color: #fff; box-shadow: 0 4px 12px rgba(0,0,0,.15); transition: transform .15s, filter .15s; }
.eg-swipe .egsw-b:hover { transform: translateY(-2px); filter: brightness(1.08); }
.eg-swipe .egsw-b:focus-visible { outline: 3px solid #f5c34a; outline-offset: 2px; }
.eg-swipe .egsw-b.is-l { background: #c4161c; } .eg-swipe .egsw-b.is-r { background: #1f8a4c; }
.eg-swipe .egsw-b.is-go { background: linear-gradient(135deg, var(--eg-heading, #494e8f), var(--eg-accent, #007a7a)); }
.eg-swipe .egsw-hint { text-align: center; color: #5b6570; font-size: .85rem; margin: 10px 0 0 !important; }
.eg-swipe .egsw-fb { min-height: 3.2em; margin: 12px 0 0 !important; padding: .7rem .9rem; border-radius: 10px; line-height: 1.45; font-size: .95rem; opacity: 0; transform: translateY(6px); transition: .25s; }
.eg-swipe .egsw-fb.is-on { opacity: 1; transform: none; }
.eg-swipe .egsw-fb.is-ok { background: #e8f5ee; color: #14532d; } .eg-swipe .egsw-fb.is-no { background: #fdecec; color: #7f1d1d; }
.eg-swipe .egsw-fb b { display: block; margin-bottom: .15rem; }
.eg-swipe .egsw-end { text-align: center; }
.eg-swipe .egsw-sc { font-size: 2.4rem; font-weight: 900; color: var(--eg-accent, #007a7a); }
.eg-swipe .egsw-end h3 { margin: .2rem 0 !important; color: var(--eg-heading, #494e8f); }
.eg-swipe .egsw-tries { color: #5b6570; margin: .2rem 0 .8rem !important; }
.eg-swipe .egsw-rev { text-align: left; max-width: 660px; margin: 0 auto 14px; display: grid; gap: 6px; }
.eg-swipe .egsw-rev > div { display: flex; gap: .65rem; align-items: flex-start; padding: .55rem .75rem; border-radius: 9px; background: #f6f7f9; font-size: .9rem; line-height: 1.4; }
.eg-swipe .egsw-tag { flex: none; min-width: 92px; text-align: center; font-size: .66rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; padding: .22rem .45rem; border-radius: 6px; color: #fff; margin-top: 1px; }
.eg-swipe .egsw-rev small { display: block; color: #5b6570; margin-top: .15rem; }
.eg-medal { position: relative; overflow: hidden; margin: 1.5rem 0; border-radius: 18px; min-height: 430px; padding: 0 16px 46px; background: linear-gradient(160deg, #fff8e6, #fde9b8); display: flex; flex-direction: column; align-items: center; text-align: center; color: #243447; font-family: Poppins, system-ui, sans-serif; }
.eg-medal > canvas { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 3; }
.eg-medal .egm-medal { position: relative; width: 170px; height: 230px; flex: none; }
.eg-medal .egm-rib { position: absolute; top: 0; width: 46px; height: 120px; background: var(--eg-heading, #494e8f); transform-origin: top center; transform: scaleY(0); }
.eg-medal .egm-rib.is-l { left: 30px; transform: skewX(14deg) scaleY(0); }
.eg-medal .egm-rib.is-r { right: 30px; transform: skewX(-14deg) scaleY(0); }
.eg-medal.is-go .egm-rib.is-l { animation: egmRibL .45s ease-out forwards; }
.eg-medal.is-go .egm-rib.is-r { animation: egmRibR .45s ease-out forwards; }
@keyframes egmRibL { to { transform: skewX(14deg) scaleY(1); } }
@keyframes egmRibR { to { transform: skewX(-14deg) scaleY(1); } }
.eg-medal .egm-disc { position: absolute; left: 10px; top: 76px; width: 150px; height: 150px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #ffe9a3, #f5c34a 45%, #c8962e); box-shadow: 0 0 0 6px #fff4cf, 0 12px 26px rgba(160,110,20,.45); display: grid; place-items: center; overflow: hidden; transform: scale(0) rotate(-200deg); opacity: 0; }
.eg-medal.is-go .egm-disc { animation: egmDisc 1s cubic-bezier(.3,1.5,.5,1) .3s forwards; }
@keyframes egmDisc { to { transform: none; opacity: 1; } }
.eg-medal .egm-disc::after { content: ""; position: absolute; inset: -40%; background: linear-gradient(105deg, transparent 40%, rgba(255,255,255,.75) 50%, transparent 60%); transform: translateX(-100%); }
.eg-medal.is-go .egm-disc::after { animation: egmShine 2.6s ease-in-out 1.4s infinite; }
@keyframes egmShine { to { transform: translateX(100%); } }
.eg-medal .egm-disc svg { width: 76px; height: 76px; }
.eg-medal .egm-t1 { margin: 14px 0 0 !important; font-weight: 900 !important; font-size: clamp(1.8rem, 5vw, 2.6rem) !important; line-height: 1.1 !important; color: var(--eg-heading, #494e8f) !important; opacity: 0; transform: translateY(10px); transition: opacity .5s 1.1s, transform .5s 1.1s; }
.eg-medal .egm-t2 { margin: .4rem 0 0 !important; font-size: 1.05rem !important; opacity: 0; transition: opacity .5s 1.35s; }
.eg-medal .egm-t2 b, .eg-medal .egm-t2 strong { color: var(--eg-accent, #007a7a); }
.eg-medal .egm-pill { display: inline-block; margin-top: 12px; padding: .35rem .9rem; border-radius: 999px; background: var(--eg-heading, #494e8f); color: #fff; font: 800 .72rem system-ui, sans-serif; letter-spacing: .14em; opacity: 0; transform: scale(.6); transition: opacity .4s 1.6s, transform .4s cubic-bezier(.3,1.6,.5,1) 1.6s; }
.eg-medal.is-go .egm-t1, .eg-medal.is-go .egm-t2, .eg-medal.is-go .egm-pill { opacity: 1; transform: none; }
.eg-medal .egm-again { all: unset; cursor: pointer; position: absolute; right: 12px; bottom: 10px; z-index: 4; font: 700 .78rem system-ui, sans-serif; color: #243447; opacity: .75; padding: .35rem .7rem; border-radius: 999px; background: rgba(0,0,0,.06); }
.eg-medal .egm-again:hover { opacity: 1; }
.eg-impact { display: grid; grid-template-columns: 1.3fr 1fr; gap: 16px; margin: 1.5rem 0; font-family: "Source Sans 3", "Source Sans Pro", system-ui, sans-serif; }
.eg-impact > p, .eg-impact > ul { display: none !important; }
.eg-impact .egi-live { position: relative; overflow: hidden; border-radius: 18px; padding: 22px 24px; background: linear-gradient(150deg, #0f4c5c, var(--eg-accent, #007a7a)); color: #fff; box-shadow: 0 10px 26px rgba(0,80,90,.22); }
.eg-impact .egi-live::after { content: ""; position: absolute; right: -60px; bottom: -60px; width: 200px; height: 200px; border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.12), transparent 70%); pointer-events: none; }
.eg-impact .egi-dot { display: inline-flex; align-items: center; gap: .45rem; font-size: .74rem; font-weight: 800; letter-spacing: .14em; color: #bff3ee; }
.eg-impact .egi-dot i { width: 9px; height: 9px; border-radius: 50%; background: #5df2c6; animation: egiPulse 1.6s infinite; }
@keyframes egiPulse { 0% { box-shadow: 0 0 0 0 rgba(93,242,198,.7); } 70% { box-shadow: 0 0 0 10px rgba(93,242,198,0); } 100% { box-shadow: 0 0 0 0 rgba(93,242,198,0); } }
.eg-impact .egi-big { font-size: clamp(2.4rem, 6vw, 3.2rem); font-weight: 900; line-height: 1; margin: .7rem 0 .3rem; color: #f5c34a; font-variant-numeric: tabular-nums; }
.eg-impact .egi-sub { font-size: 1.05rem; line-height: 1.35; color: rgba(255,255,255,.92); }
.eg-impact .egi-foot { margin-top: 1rem; font-size: .85rem; color: rgba(255,255,255,.72); }
.eg-impact .egi-foot b { color: #fff; }
.eg-impact .egi-stack { display: grid; gap: 10px; align-content: center; }
.eg-impact .egi-s { display: flex; align-items: center; gap: 12px; border-radius: 14px; padding: 12px 14px; background: #f5f8fa; border: 1px solid #e3e9ef; opacity: 0; transform: translateX(14px); transition: opacity .5s, transform .5s cubic-bezier(.3,1.3,.5,1), box-shadow .3s; }
.eg-impact.is-in .egi-s { opacity: 1; transform: none; }
.eg-impact .egi-s:hover { box-shadow: 0 8px 18px rgba(20,40,60,.1); }
.eg-impact .egi-ic { flex: none; width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; color: var(--eg-accent, #007a7a); background: #e4f2f2; }
.eg-impact .egi-ic svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.eg-impact .egi-ov { display: block; font-size: .68rem; font-weight: 800; letter-spacing: .12em; color: var(--eg-accent, #007a7a); text-transform: uppercase; }
.eg-impact .egi-n { font-size: 1.5rem; font-weight: 900; color: var(--eg-heading, #494e8f); line-height: 1.05; white-space: nowrap; }
.eg-impact .egi-l { font-size: .95rem; color: #3d4a5a; line-height: 1.3; }
.eg-impact .egi-left { display: grid; gap: 12px; }
.eg-impact .egi-left .egi-live { padding: 18px 22px; }
.eg-impact .egi-daily { background: linear-gradient(150deg, #2d3170, var(--eg-heading, #494e8f)); box-shadow: 0 10px 26px rgba(45,49,112,.22); }
.eg-impact .egi-k { font-size: .72rem; font-weight: 800; letter-spacing: .14em; color: #d9dcff; text-transform: uppercase; }
.eg-impact .egi-left .egi-big { font-size: clamp(2rem, 5vw, 2.6rem); margin: .4rem 0 .25rem; }
.eg-impact .egi-left .egi-sub { font-size: 1rem; }
.eg-story { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: center; background: #f3f7f8; border: 1px solid #e1e9ec; border-radius: 18px; padding: 22px; margin: 1rem 0 1.75rem; }
.eg-story figure { margin: 0; }
.eg-story img { display: block; width: 100%; height: auto; margin: 0 !important; border-radius: 12px; box-shadow: 0 8px 20px rgba(20,40,60,.15); }
.eg-story figcaption { font-family: "Source Sans 3", "Source Sans Pro", system-ui, sans-serif; font-size: .8rem; color: #667; margin-top: 6px; }
.eg-story p { margin: 0 0 12px; line-height: 1.55; }
.eg-story p.eg-story-q { margin: 14px 0; padding: 4px 0 4px 16px; border-left: 4px solid var(--eg-accent, #007a7a); font-family: "Source Sans 3", "Source Sans Pro", system-ui, sans-serif; font-size: 1.3rem; font-weight: 700; font-style: normal; line-height: 1.3; color: var(--eg-heading, #494e8f); text-align: left; }
.eg-story p.eg-story-end { margin: 0; font-family: "Source Sans 3", "Source Sans Pro", system-ui, sans-serif; font-weight: 800; font-size: 1.05rem; color: var(--eg-accent, #007a7a); }
@media (max-width: 640px) { .eg-story { grid-template-columns: 1fr; } }
.eg-story figure { position: relative; }
.eg-story--feature { grid-template-columns: 1.1fr 1fr; }
.eg-story--feature figure { border-radius: 14px; overflow: hidden; box-shadow: 0 10px 24px rgba(20,40,60,.2); }
.eg-story--feature img { border-radius: 0; box-shadow: none; }
.eg-story-plate { position: absolute; left: 0; right: 0; bottom: 0; padding: 48px 18px 16px; background: linear-gradient(180deg, transparent, rgba(15,30,60,.6) 40%, rgba(15,30,60,.95)); color: #fff; font-family: "Source Sans 3", "Source Sans Pro", system-ui, sans-serif; }
.eg-story .eg-story-plate b { display: block; font-size: 1.5rem; font-weight: 800; color: #fff !important; -webkit-text-fill-color: #fff; line-height: 1.15; text-shadow: 0 2px 8px rgba(0,0,0,.4); }
.eg-story-plate span { font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; color: #f5c34a; font-weight: 700; }
@media (max-width: 640px) { .eg-story--feature { grid-template-columns: 1fr; } }
.eg-hero .eg-bigstats.eg-stars.eg-stars { grid-template-columns: repeat(5, minmax(0,1fr)); gap: .6rem; margin-top: 1.4rem !important; }
.eg-hero .eg-bigstats.eg-stars.eg-stars li { background: none; border: 0; backdrop-filter: none; padding: .5rem .2rem .6rem !important; font-size: .9rem !important; opacity: 0; transform: translateY(16px); transition: opacity .6s ease calc(var(--i, 0) * .28s), transform .7s cubic-bezier(.3,1.5,.5,1) calc(var(--i, 0) * .28s); }
.eg-hero .eg-bigstats.eg-stars.eg-stars.is-lit li { opacity: 1; transform: none; }
.eg-hero .eg-bigstats.eg-stars.eg-stars.is-done li { transition-delay: 0s; }
.eg-hero .eg-bigstats.eg-stars.eg-stars.is-done li:hover { transform: translateY(-6px); background: none; }
.eg-hero .eg-bigstats.eg-stars.eg-stars strong { font-size: clamp(1.3rem, 2.6vw, 1.8rem) !important; white-space: nowrap; margin: .2rem 0 .3rem; transition: transform .35s cubic-bezier(.3,1.6,.5,1), text-shadow .35s; }
.eg-hero .eg-bigstats.eg-stars.eg-stars li:hover strong { transform: scale(1.08); text-shadow: 0 0 18px rgba(255,217,138,.6); }
.eg-hero .eg-bigstats.eg-stars.eg-stars small { display: block; font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: rgba(255,255,255,.75); }
.eg-hero .eg-bigstats.eg-stars.eg-stars li:has(small) strong { color: #fff !important; }
.eg-stars .egs-star { position: relative; display: block; width: 60px; height: 60px; margin: 0 auto .45rem; }
.eg-stars .egs-star svg { display: block; width: 100%; height: 100%; overflow: visible; transition: transform .6s cubic-bezier(.3,1.7,.5,1); }
.eg-stars .egs-star path { fill: transparent; stroke: #f5c34a; stroke-width: 1.5; stroke-linejoin: round; transition: fill .5s ease, filter .5s ease; }
.eg-stars.is-lit .egs-star svg { animation: egsPop .8s cubic-bezier(.3,1.6,.5,1) both; animation-delay: calc(var(--i, 0) * .28s + .25s); }
.eg-stars.is-lit .egs-star path { fill: #f5c34a; filter: drop-shadow(0 0 8px rgba(245,195,74,.75)); transition-delay: calc(var(--i, 0) * .28s + .35s); }
.eg-stars.is-lit .egs-star { animation: egsBob 4s ease-in-out infinite; animation-delay: calc(var(--i, 0) * .28s + 1.05s); }
.eg-stars.is-done .egs-star svg { animation: none; }
.eg-stars.is-lit .egs-star path { animation: egsTw 3.2s ease-in-out infinite; animation-delay: calc(var(--i, 0) * .28s + 1.2s); }
.eg-stars.is-done .egs-star path { transition-delay: 0s; }
.eg-stars.is-done li:hover .egs-star svg { transform: scale(1.25) rotate(72deg); }
.eg-stars.is-done li:hover .egs-star path { fill: #ffe08f; animation: none; filter: drop-shadow(0 0 18px rgba(255,217,138,1)); }
.eg-stars .egs-spark { position: absolute; left: 50%; top: 50%; width: 5px; height: 5px; margin: -2.5px; border-radius: 50%; background: #fff1c6; box-shadow: 0 0 6px 1px #ffd98a; pointer-events: none; animation: egsSp .75s ease-out forwards; }
@keyframes egsPop { 0% { transform: scale(.3) rotate(-144deg); } 100% { transform: scale(1) rotate(0); } }
@keyframes egsBob { 50% { transform: translateY(-5px); } }
@keyframes egsTw { 50% { filter: drop-shadow(0 0 16px rgba(255,217,138,.95)) brightness(1.15); } }
@keyframes egsSp { from { transform: translate(0,0) scale(1); opacity: 1; } to { transform: translate(var(--x), var(--y)) scale(.2); opacity: 0; } }
@media (max-width: 620px) { .eg-hero .eg-bigstats.eg-stars.eg-stars { grid-template-columns: repeat(2, minmax(0,1fr)); row-gap: 1rem; } .eg-hero .eg-bigstats.eg-stars.eg-stars li:last-child { grid-column: 1 / -1; } }
@media (prefers-reduced-motion: reduce) { .eg-stars .egs-star, .eg-stars .egs-star svg, .eg-stars .egs-star path { animation: none !important; } .eg-hero .eg-bigstats.eg-stars.eg-stars li { transition: none; } }
.eg-side { display: grid; grid-template-columns: .9fr 1.1fr; gap: 28px; align-items: stretch; margin: 1.5rem 0; }
.eg-side > .eg-hero { margin: 0 !important; min-height: 300px; height: 100%; }
.eg-side .eg-hero h2 { font-size: clamp(1.7rem, 3.2vw, 2.4rem) !important; }
.eg-side > p { margin: 0 !important; align-self: center; font-family: "Source Serif Pro", Georgia, serif; font-size: 1.3rem; line-height: 1.7; color: #222; }
.eg-side > p b { color: var(--eg-accent, #007a7a); font-weight: 600; }
@media (max-width: 700px) { .eg-side { grid-template-columns: 1fr; } .eg-side > .eg-hero { min-height: 220px; } }
@media (max-width: 760px) { .eg-impact { grid-template-columns: 1fr; } }
@media (max-width: 700px) { .eg-top10 .egt-row { grid-template-columns: repeat(3, 1fr); } .eg-top10 .egt-panel { grid-template-columns: 1fr; } }
</style>

<script id="explore-god-components-js">
(function () {
  // "Note:" paragraphs -> callouts
  function notes() {
    document.querySelectorAll('.rich-text--slide p.rich-text__font:not([data-eg-note])').forEach(function (p) {
      p.setAttribute('data-eg-note', '1');
      if (/^\s*(please\s+)?note\s*:/i.test(p.textContent)) p.classList.add('eg-note');
      else if (/^\s*click the next button/i.test(p.textContent)) p.classList.add('eg-cta');
    });
  }
  // Sounds (quiet; shared by all quizzes)
  var ctx;
  function audio() { if (!ctx) { var A = window.AudioContext || window.webkitAudioContext; if (!A) return null; ctx = new A(); } if (ctx.state === 'suspended') ctx.resume(); return ctx; }
  function tone(f, s, d, v, type, f2) { var c = audio(); if (!c) return; var t = c.currentTime + s, o = c.createOscillator(), g = c.createGain(); o.type = type || 'sine'; o.frequency.setValueAtTime(f, t); if (f2) o.frequency.exponentialRampToValueAtTime(f2, t + d); g.gain.setValueAtTime(.0001, t); g.gain.exponentialRampToValueAtTime(v * .5, t + .01); g.gain.exponentialRampToValueAtTime(.0001, t + d); o.connect(g); g.connect(c.destination); o.start(t); o.stop(t + d + .02); }
  var snd = { hover: function () { if (ctx && ctx.state === 'running') tone(1200, 0, .05, .05); }, pick: function () { tone(500, 0, .1, .25, 'sine', 800); },
    right: function () { tone(523, 0, .2, .25); tone(659, .1, .2, .25); tone(784, .2, .4, .25); }, wrong: function () { tone(330, 0, .2, .2, 'triangle'); tone(247, .15, .35, .2, 'triangle'); } };
  // ---------- Quizzes (v3): one or several right answers, short tiles or long list ----------
  function quizzes() {
    document.querySelectorAll('.eg-quiz:not([data-ready])').forEach(function (q) {
      q.setAttribute('data-ready', '1');
      var sound = q.getAttribute('data-sound') !== 'off';
      var opts = [].slice.call(q.querySelectorAll('.eg-quiz-opts li'));
      var unit = q.getAttribute('data-unit');
      opts.forEach(function (li) { li.setAttribute('data-val', li.textContent.trim()); if (unit) { var s = document.createElement('small'); s.textContent = unit; li.appendChild(s); } });
      var answers = (q.getAttribute('data-answer') || '').split('|').map(function (a) { return a.trim().toLowerCase(); }).filter(Boolean);
      var marked = opts.filter(function (o) { return o.hasAttribute('data-correct'); });
      var right = marked.length ? marked : opts.filter(function (o) { return answers.indexOf(o.getAttribute('data-val').toLowerCase()) > -1; });
      var multi = right.length > 1 || q.getAttribute('data-multi') === 'yes';
      if (multi) q.classList.add('eg-quiz--multi');
      if ((multi || opts.some(function (o) { return o.getAttribute('data-val').length > 12; }) || q.getAttribute('data-layout') === 'list') && q.getAttribute('data-layout') !== 'tiles') q.classList.add('eg-quiz--list');
      var fb = q.querySelector('.eg-quiz-fb');
      var result = document.createElement('p'); result.className = 'eg-quiz-result'; if (fb) fb.insertBefore(result, fb.firstChild);
      var btn = document.createElement('button'); btn.type = 'button'; btn.className = 'eg-quiz-btn'; btn.textContent = 'Check answer';
      var warn = document.createElement('p'); warn.className = 'eg-quiz-warn';
      var retry = document.createElement('button'); retry.type = 'button'; retry.className = 'eg-act-btn is-ghost eg-quiz-retry'; retry.textContent = 'Try again';
      q.querySelector('.eg-quiz-opts').after(btn, warn);
      if (q.getAttribute('data-retry') !== 'off') q.appendChild(retry);
      var standalone = !fb;
      opts.forEach(function (li) {
        li.tabIndex = 0; li.setAttribute('role', multi ? 'checkbox' : 'radio');
        function pick() {
          if (q.classList.contains('is-done')) return;
          if (multi) li.classList.toggle('is-sel');
          else { opts.forEach(function (o) { o.classList.remove('is-sel'); }); li.classList.add('is-sel'); }
          warn.textContent = ''; if (sound) snd.pick();
        }
        li.addEventListener('click', pick);
        li.addEventListener('keydown', function (e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); pick(); } });
        li.addEventListener('mouseenter', function () { if (sound && !q.classList.contains('is-done')) snd.hover(); });
      });
      btn.addEventListener('click', function () {
        var sel = opts.filter(function (o) { return o.classList.contains('is-sel'); });
        if (!sel.length) { warn.textContent = multi ? 'Select at least one answer.' : 'Pick an answer first.'; return; }
        q.classList.add('is-done');
        var ok = sel.length === right.length && sel.every(function (o) { return right.indexOf(o) > -1; });
        opts.forEach(function (o) {
          o.removeAttribute('tabindex'); var on = o.classList.contains('is-sel'), c = right.indexOf(o) > -1;
          o.classList.remove('is-sel');
          if (c && on) o.classList.add('is-right');
          else if (c) o.classList.add(multi ? 'is-missed' : 'is-right');
          else if (on) o.classList.add('is-wrong');
        });
        if (ok) { result.textContent = 'Correct!'; result.style.color = '#1e6b41'; if (sound) snd.right(); }
        else {
          result.textContent = multi ? 'Not quite. The correct answers are marked in green.' : 'Not quite. The answer is ' + (right[0] ? right[0].getAttribute('data-val') : '') + '.';
          result.style.color = '#9b2c22'; if (sound) snd.wrong();
        }
        if (standalone) { warn.textContent = result.textContent; warn.style.color = result.style.color; }
        if (fb) requestAnimationFrame(function () { fb.classList.add('show'); });
      });
      retry.addEventListener('click', function () {
        q.classList.remove('is-done'); if (fb) fb.classList.remove('show'); warn.textContent = ''; warn.style.color = '';
        opts.forEach(function (o) { o.classList.remove('is-right', 'is-wrong', 'is-missed', 'is-sel'); o.tabIndex = 0; });
      });
    });
  }

  function el(tag, cls, html) { var e = document.createElement(tag); if (cls) e.className = cls; if (html != null) e.innerHTML = html; return e; }
  function button(cls, text) { var b = el('button', cls, text); b.type = 'button'; return b; }

  // ---------- Sort it out ----------
  function sorts() {
    document.querySelectorAll('.eg-sort:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var piles = (root.getAttribute('data-piles') || '').split('|').map(function (s) { return s.trim(); }).filter(Boolean);
      var items = [].slice.call(root.querySelectorAll(':scope > [data-pile]'));
      var n = items.length, done = 0;
      var count = el('span', 'eg-act-count', '0 of ' + n + ' sorted');
      var bar = el('div', 'eg-act-bar', '<i></i>');
      var list = el('div', 'egs-cards');
      var status = el('p', 'eg-act-status');
      items.forEach(function (it, k) {
        var ans = it.getAttribute('data-pile').trim();
        var card = el('div', 'egs-card'); card.style.animationDelay = (k * 60) + 'ms';
        var txt = el('p', null, it.innerHTML);
        var row = el('div', 'egs-piles'); row.setAttribute('data-answer', ans);
        var msg = el('span', 'egs-msg');
        piles.forEach(function (p) {
          var b = button(null, p);
          b.addEventListener('click', function () {
            if (card.classList.contains('is-done')) return;
            if (p.toLowerCase() === ans.toLowerCase()) {
              card.classList.add('is-done'); msg.textContent = ''; done++; snd.right();
              count.textContent = done + ' of ' + n + ' sorted'; bar.firstChild.style.width = (done / n * 100) + '%';
              if (done === n) { status.textContent = root.getAttribute('data-done') || 'Great job! Everything is sorted.'; status.className = 'eg-act-status good'; }
            } else {
              b.classList.remove('is-wrong'); void b.offsetWidth; b.classList.add('is-wrong'); snd.wrong();
              msg.textContent = 'Not quite. Try another option.';
            }
          });
          row.appendChild(b);
        });
        card.append(txt, row, msg); list.appendChild(card); it.style.display = 'none';
      });
      root.append(count, bar, list, status);
    });
  }

  // ---------- Put in order ----------
  function orders() {
    document.querySelectorAll('.eg-order:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var src = root.querySelector(':scope > ol'); if (!src) return;
      var correct = [].slice.call(src.children).map(function (li) { return li.innerHTML; });
      var order = correct.map(function (_, i) { return i; });
      for (var t = 0; t < 20; t++) { order.sort(function () { return Math.random() - .5; }); if (order.some(function (v, i) { return v !== i; })) break; }
      src.style.display = 'none';
      var list = el('ol', 'ego-list'), status = el('p', 'eg-act-status');
      var check = button('eg-act-btn', 'Check order');
      var dragging = null;
      function renum() { [].slice.call(list.children).forEach(function (li, i) { li.querySelector('.ego-num').textContent = i + 1; li.classList.remove('is-right', 'is-wrong'); }); status.textContent = ''; }
      order.forEach(function (idx) {
        var li = el('li'); li.draggable = true; li.setAttribute('data-k', idx);
        li.innerHTML = '<span class="ego-num"></span><span class="ego-txt">' + correct[idx] + '</span><span class="ego-mv"><button type="button" aria-label="Move up">&#9650;</button><button type="button" aria-label="Move down">&#9660;</button></span>';
        var mv = li.querySelectorAll('.ego-mv button');
        mv[0].addEventListener('click', function () { if (li.previousElementSibling) { list.insertBefore(li, li.previousElementSibling); renum(); snd.pick(); } });
        mv[1].addEventListener('click', function () { if (li.nextElementSibling) { list.insertBefore(li.nextElementSibling, li); renum(); snd.pick(); } });
        li.addEventListener('dragstart', function (e) { if (root.classList.contains('is-solved')) { e.preventDefault(); return; } dragging = li; li.classList.add('is-drag'); e.dataTransfer.effectAllowed = 'move'; try { e.dataTransfer.setData('text/plain', ''); } catch (x) {} });
        li.addEventListener('dragend', function () { li.classList.remove('is-drag'); [].slice.call(list.children).forEach(function (x) { x.classList.remove('is-over'); }); dragging = null; renum(); });
        li.addEventListener('dragover', function (e) { if (!dragging || dragging === li) return; e.preventDefault(); [].slice.call(list.children).forEach(function (x) { x.classList.remove('is-over'); }); li.classList.add('is-over'); });
        li.addEventListener('drop', function (e) { e.preventDefault(); if (dragging && dragging !== li) { list.insertBefore(dragging, li); snd.pick(); } });
        list.appendChild(li);
      });
      renum();
      check.addEventListener('click', function () {
        var ok = true;
        [].slice.call(list.children).forEach(function (li, i) { var r = +li.getAttribute('data-k') === i; li.classList.add(r ? 'is-right' : 'is-wrong'); if (!r) ok = false; });
        if (ok) { root.classList.add('is-solved'); check.style.display = 'none'; status.textContent = root.getAttribute('data-done') || 'Correct! That’s the right order.'; status.className = 'eg-act-status good'; snd.right(); }
        else { status.textContent = 'Not quite. Items in red are out of place. Rearrange them and check again.'; status.className = 'eg-act-status bad'; snd.wrong(); }
      });
      root.append(list, check, status);
    });
  }

  // ---------- Chat scenario ----------
  function tokens(html) { return html.replace(/\$([a-z_]+)/gi, '<span class="egc-tok">$1</span>'); }
  function chats() {
    document.querySelectorAll('.eg-chat:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var steps = [].slice.call(root.querySelectorAll(':scope > .eg-chat-step')), n = steps.length, cur = 0;
      var top = el('div', 'egc-top', '<span class="eg-act-count"></span>');
      var bar = el('div', 'eg-act-bar', '<i></i>');
      var stage = el('div', 'egc-stage');
      var me = root.getAttribute('data-me') || 'You', them = root.getAttribute('data-them') || 'Contact';
      function bubble(from, html) { var b = el('div', 'egc-b ' + (from === 'contact' ? 'them' : 'me'), '<span class="egc-who">' + (from === 'contact' ? them : me) + '</span>' + tokens(html)); return b; }
      function show(i) {
        cur = i; stage.innerHTML = '';
        top.firstChild.textContent = 'Conversation ' + (i + 1) + ' of ' + n;
        bar.firstChild.style.width = (i / n * 100) + '%';
        var s = steps[i], phone = el('div', 'egc-phone');
        [].slice.call(s.querySelectorAll(':scope > [data-from]')).forEach(function (m) { phone.appendChild(bubble(m.getAttribute('data-from'), m.innerHTML)); });
        var ask = el('p', 'egc-ask', root.getAttribute('data-ask') || 'Choose your reply:');
        var opts = el('div', 'egc-opts'), fbBox = el('div'), nav = el('div', 'egc-nav');
        [].slice.call(s.querySelectorAll(':scope > [data-reply]')).forEach(function (r) {
          var msg = r.querySelector('blockquote'), title = r.querySelector('h1,h2,h3,h4,h5,h6'), good = r.getAttribute('data-reply') === 'right';
          var fbText = [].slice.call(r.children).filter(function (c) { return c !== msg && c !== title; }).map(function (c) { return c.outerHTML; }).join('');
          var b = button('egc-opt', tokens(msg ? msg.innerHTML : ''));
          b.addEventListener('click', function () {
            fbBox.innerHTML = ''; nav.innerHTML = '';
            var box = el('div', 'egc-fb ' + (good ? 'good' : 'bad'), '<strong>' + (title ? title.innerHTML : (good ? 'Great choice!' : 'Not the best choice.')) + '</strong>' + fbText);
            fbBox.appendChild(box);
            if (good) {
              snd.right(); [].slice.call(opts.children).forEach(function (o) { o.disabled = true; });
              phone.appendChild(bubble('me', msg ? msg.innerHTML : '')); phone.scrollTop = phone.scrollHeight;
              var next = button('eg-act-btn', i < n - 1 ? 'Next conversation →' : 'Finish');
              next.addEventListener('click', function () { if (i < n - 1) show(i + 1); else finish(); });
              nav.appendChild(next);
            } else { snd.wrong(); b.classList.add('is-wrong'); b.disabled = true; }
          });
          opts.appendChild(b);
        });
        stage.append(phone, ask, opts, fbBox, nav);
      }
      function finish() {
        bar.firstChild.style.width = '100%'; top.firstChild.textContent = 'All ' + n + ' conversations complete';
        stage.innerHTML = ''; var p = el('p', 'eg-act-status good', root.getAttribute('data-done') || 'Well done! You chose the best reply every time.');
        var again = button('eg-act-btn is-ghost', 'Start over'); again.addEventListener('click', function () { show(0); });
        stage.append(p, again);
      }
      root.append(top, bar, stage);
      if (n) show(0);
    });
  }

  // ---------- Step-by-step ----------
  function stepsUI() {
    document.querySelectorAll('.eg-steps:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var steps = [].slice.call(root.children).filter(function (c) { return c.tagName === 'DIV' && !c.className; }), n = steps.length, cur = 0;
      var dots = el('div', 'egp-dots'), pane = el('div'), nav = el('div', 'egp-nav');
      var prev = button('eg-act-btn is-ghost', '← Back'), next = button('eg-act-btn', 'Next →'), count = el('span', 'egp-count');
      nav.append(prev, count, next);
      steps.forEach(function (s, i) {
        var d = button('egp-dot'); var l = s.querySelector('h5,h6'), h = s.querySelector('h1,h2,h3,h4');
        d.setAttribute('aria-label', (l ? l.textContent + ': ' : '') + (h ? h.textContent : 'Step ' + (i + 1)));
        d.addEventListener('click', function () { go(i); }); dots.appendChild(d);
      });
      function go(i) {
        cur = i; var s = steps[i];
        var l = s.querySelector('h5,h6'), h = s.querySelector('h1,h2,h3,h4'), img = s.querySelector('img');
        var body = [].slice.call(s.children).filter(function (c) { return c !== l && c !== h && c !== img && !(img && c.contains(img)); });
        pane.className = 'egp-pane' + (img ? '' : ' no-img'); pane.innerHTML = '';
        if (img) { var im = img.cloneNode(true); im.addEventListener('click', function () { lightbox(im); }); pane.appendChild(im); }
        var txt = el('div'); if (l) txt.appendChild(el('span', 'egp-lbl', l.innerHTML)); if (h) txt.appendChild(el('p', 'egp-title', h.innerHTML));
        var b = el('div', 'egp-body'); body.forEach(function (c) { b.appendChild(c.cloneNode(true)); }); txt.appendChild(b); pane.appendChild(txt);
        void pane.offsetWidth; pane.style.animation = 'none'; void pane.offsetWidth; pane.style.animation = '';
        [].slice.call(dots.children).forEach(function (d, k) { d.classList.toggle('is-on', k === i); if (k <= i) d.classList.add('is-seen'); });
        count.textContent = (i + 1) + ' of ' + n; prev.disabled = i === 0; next.textContent = i === n - 1 ? 'Start over ↺' : 'Next →';
      }
      prev.addEventListener('click', function () { if (cur > 0) { go(cur - 1); snd.pick(); } });
      next.addEventListener('click', function () { go(cur < n - 1 ? cur + 1 : 0); snd.pick(); });
      root.addEventListener('keydown', function (e) { if (e.key === 'ArrowRight' && cur < n - 1) go(cur + 1); if (e.key === 'ArrowLeft' && cur > 0) go(cur - 1); });
      root.append(dots, pane, nav);
      if (n) go(0);
    });
  }

  function lightbox(img) {
    var box = document.createElement('div'); box.className = 'eg-lightbox';
    var big = document.createElement('img'); big.src = img.currentSrc || img.src; big.alt = img.alt || '';
    var x = document.createElement('span'); x.textContent = '\u00d7';
    box.append(big, x); document.body.appendChild(box);
    requestAnimationFrame(function () { box.classList.add('show'); });
    function close() { box.classList.remove('show'); setTimeout(function () { box.remove(); }, 250); document.removeEventListener('keydown', esc); }
    function esc(e) { if (e.key === 'Escape') close(); }
    box.addEventListener('click', close); document.addEventListener('keydown', esc);
  }
  // v2: blank paragraphs, small ALL-CAPS labels, click-to-enlarge photos
  function tidy() {
    document.querySelectorAll('.rich-text--slide p.rich-text__font:not([data-eg-tidy])').forEach(function (p) {
      p.setAttribute('data-eg-tidy', '1');
      var t = p.textContent.replace(/ /g, ' ').trim();
      if (!t && !p.querySelector('img, iframe, video')) { p.classList.add('eg-empty'); return; }
      if (p.closest('.p-columns') && t.length < 40 && /[A-Z]/.test(t) && t === t.toUpperCase()) p.classList.add('eg-eyebrow');
    });
    document.querySelectorAll('.rich-text--slide img:not(.eg-zoomable)').forEach(function (img) {
      if (img.closest('.raw-html, a, .accordion, .eg-stats, .eg-banner, .eg-cols-icon')) return;
      img.classList.add('eg-zoomable');
      img.addEventListener('click', function () { lightbox(img); });
    });
  }
  // v2: numbers in eg-bigstats count up when they scroll into view
  function counters() {
    var els = document.querySelectorAll('.eg-bigstats strong:not([data-eg-count])');
    if (!els.length) return;
    var reduce = window.matchMedia && matchMedia('(prefers-reduced-motion: reduce)').matches;
    var io = 'IntersectionObserver' in window && !reduce ? new IntersectionObserver(function (es) { es.forEach(function (e) { if (e.isIntersecting) { io.unobserve(e.target); count(e.target); } }); }, { threshold: .4 }) : null;
    els.forEach(function (el) { el.setAttribute('data-eg-count', '1'); if (io) io.observe(el); });
    function count(el) {
      var m = el.textContent.match(/^(\D*)([\d,]+)(.*)$/); if (!m) return;
      var end = parseInt(m[2].replace(/,/g, ''), 10), start = null, dur = 1400, comma = m[2].indexOf(',') > -1;
      function f(ts) { if (!start) start = ts; var k = Math.min((ts - start) / dur, 1), v = Math.round(end * (1 - Math.pow(1 - k, 3)));
        el.textContent = m[1] + (comma ? v.toLocaleString() : v) + m[3]; if (k < 1) requestAnimationFrame(f); }
      requestAnimationFrame(f);
    }
  }
  // v2: flip cards
  var ICONS = {
    search: '<circle cx="10.5" cy="10.5" r="6.5"/><path d="M15.5 15.5 21 21"/>',
    chat: '<path d="M4 5h16v11H9l-5 4z"/>',
    heart: '<path d="M12 20s-7-4.4-7-10a4 4 0 0 1 7-2.6A4 4 0 0 1 19 10c0 5.6-7 10-7 10z"/>',
    compass: '<circle cx="12" cy="12" r="9"/><path d="m15.5 8.5-2 5-5 2 2-5z"/>',
    globe: '<circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18"/>',
    book: '<path d="M4 5a2 2 0 0 1 2-2h13v16H6a2 2 0 0 0-2 2z"/><path d="M4 19V5"/>',
    users: '<circle cx="9" cy="8" r="3.5"/><path d="M2.5 20a6.5 6.5 0 0 1 13 0"/><circle cx="17" cy="9" r="2.5"/><path d="M16 14.5a5 5 0 0 1 5.5 5"/>',
    star: '<path d="m12 3 2.7 5.6 6.1.9-4.4 4.3 1 6.1L12 17l-5.4 2.9 1-6.1-4.4-4.3 6.1-.9z"/>',
    cross: '<path d="M12 3v18M6 8h12"/>',
    pray: '<path d="M12 21V11M9 21l1-9 2-8 2 8 1 9"/>',
    clock: '<circle cx="12" cy="13" r="8"/><path d="M12 9v4l2.5 2M9 2h6"/>',
    ask: '<path d="M4 5h16v11H9l-5 4z"/><path d="M10 9a2 2 0 1 1 2.6 1.9c-.4.2-.6.5-.6.9V12M12 14.2v.1"/>',
    reply: '<path d="M9 14L4 9l5-5"/><path d="M4 9h10a6 6 0 0 1 6 6v4"/>',
    stairs: '<path d="M4 20h4v-4h4v-4h4V8h4"/><path d="M17 4h3v3"/>',
    megaphone: '<path d="M4 10v4h3l6 4V6L7 10z"/><path d="M16.5 9a4 4 0 0 1 0 6M19 6.5a7.5 7.5 0 0 1 0 11"/>',
    hands: '<path d="M12 21V9.5c0-2 .9-4.5 2.3-6.5.9 2.8 2.7 5 2.7 8.2V16l2.5 3M12 21V9.5c0-2-.9-4.5-2.3-6.5-.9 2.8-2.7 5-2.7 8.2V16L4.5 19"/>'
  };
  var ORDER = ['search', 'chat', 'heart', 'compass', 'globe', 'book', 'users', 'star'];
  function flips() {
    document.querySelectorAll('.eg-flip:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var src = [].slice.call(root.children).filter(function (c) { return c.tagName === 'DIV'; });
      var n = src.length, seen = 0;
      var top = document.createElement('div'); top.className = 'egf-top';
      top.innerHTML = '<span>' + (root.getAttribute('data-hint') || 'Tap each card to flip it') + '</span><span class="egf-count">0 of ' + n + ' explored</span>';
      var bar = document.createElement('div'); bar.className = 'egf-bar'; bar.innerHTML = '<i></i>';
      var grid = document.createElement('div'); grid.className = 'egf-grid';
      if (root.getAttribute('data-columns')) grid.style.gridTemplateColumns = 'repeat(' + root.getAttribute('data-columns') + ', minmax(0,1fr))';
      var done = document.createElement('p'); done.className = 'egf-done'; done.setAttribute('aria-live', 'polite');
      src.forEach(function (c, i) {
        var h = c.querySelector('h1,h2,h3,h4'), s = c.querySelector('h5,h6');
        var term = h ? h.innerHTML : 'Card ' + (i + 1), sub = s ? s.innerHTML : '';
        var icon = ICONS[c.getAttribute('data-icon')] || ICONS[ORDER[i % ORDER.length]];
        var back = document.createElement('span'); back.className = 'egf-face egf-back';
        back.innerHTML = '<span class="egf-bterm">' + (h ? h.textContent : '') + '</span>';
        [].slice.call(c.children).forEach(function (k) { if (k !== h && k !== s) back.appendChild(k.cloneNode(true)); });
        var b = document.createElement('button'); b.type = 'button'; b.className = 'egf-card'; b.setAttribute('aria-pressed', 'false');
        b.innerHTML = '<span class="egf-inner"><span class="egf-face egf-front"><svg viewBox="0 0 24 24" aria-hidden="true">' + icon + '</svg><span class="egf-term">' + term + '</span>' + (sub ? '<span class="egf-sub">' + sub + '</span>' : '') + '<span class="egf-tap">Tap to flip ⟲</span></span></span>';
        if (root.hasAttribute('data-numbered')) { var fr = b.querySelector('.egf-front'); fr.innerHTML = '<span class="egf-num">' + (i + 1) + '</span><svg viewBox="0 0 24 24" aria-hidden="true">' + icon + '</svg><span class="egf-sub">' + (root.getAttribute('data-front') || 'Click to flip') + '</span>'; }
        b.firstChild.appendChild(back);
        b.addEventListener('click', function () {
          var f = b.classList.toggle('is-flipped'); b.setAttribute('aria-pressed', f);
          if (!b.classList.contains('is-seen')) { b.classList.add('is-seen'); seen++;
            top.querySelector('.egf-count').textContent = seen + ' of ' + n + ' explored';
            bar.firstChild.style.width = (seen / n * 100) + '%';
            if (seen === n) { done.textContent = root.getAttribute('data-done') || 'Nice! You’ve explored them all.'; done.classList.add('show'); }
          }
        });
        grid.appendChild(b);
      });
      root.append(top, bar, grid, done);
    });
  }
  // Headings: wrap *word* in a gold highlighter (type *Why* We Do It in a Heading block)
  function highlights() {
    document.querySelectorAll('.rich-text--slide :is(h2,h3):not([data-eg-hl])').forEach(function (h) {
      h.setAttribute('data-eg-hl', '1');
      if (h.innerHTML.indexOf('*') < 0) return;
      h.innerHTML = h.innerHTML.replace(/\*([^*<>]+)\*/g, '<span class="eg-hl">$1<svg viewBox="0 0 100 60" preserveAspectRatio="none" aria-hidden="true"><path pathLength="400" d="M60 6 C 20 2, 2 16, 6 34 C 10 54, 70 58, 92 40 C 104 26, 88 6, 52 7"/></svg></span>');
      var f = h.querySelector('.eg-hl'); if (f && !h.textContent.slice(0, h.textContent.indexOf(f.textContent)).trim()) f.classList.add('is-first'); if (f && f.classList.contains('is-first')) { h.classList.add('eg-hl-bar'); var fit = function () { h.style.setProperty('--eg-bar-left', f.offsetLeft + 'px'); h.style.setProperty('--eg-bar-w', f.offsetWidth + 'px'); }; fit(); window.addEventListener('load', fit); window.addEventListener('resize', fit); if (document.fonts && document.fonts.ready) document.fonts.ready.then(fit); }
    });
  }
  // ---------- Journey road ----------
  function journeys() {
    var NS = 'http://www.w3.org/2000/svg';
    var PERSON = '<circle cx="12" cy="7" r="3.5"/><path d="M5 20a7 7 0 0 1 14 0"/>', CHAT = '<path d="M4 5h16v10H9l-5 4z"/>';
    var D = 'M 40 150 C 140 40, 230 40, 300 100 S 440 200, 520 130 S 660 30, 740 80 S 900 170, 960 120';
    document.querySelectorAll('.eg-journey:not([data-ready])').forEach(function (root, n) {
      root.setAttribute('data-ready', '1');
      var src = root.querySelector(':scope > ol'); if (!src) return;
      var items = [].slice.call(src.children).map(function (li) { return { html: li.innerHTML, label: li.getAttribute('data-label') || li.textContent }; });
      var gid = 'egjg' + n + Math.floor(Math.random() * 1e6);
      var stage = el('div', 'egj-stage');
      stage.innerHTML = '<svg viewBox="0 0 1000 220"><defs><linearGradient id="' + gid + '" x1="0" x2="1"><stop offset="0" stop-color="#494e8f"/><stop offset="1" stop-color="#007a7a"/></linearGradient></defs>' +
        '<path class="egj-road" d="' + D + '"/><path class="egj-paint" stroke="url(#' + gid + ')" d="' + D + '"/><path class="egj-lane" d="' + D + '"/><g class="egj-flags"></g>' +
        '<g class="egj-trav"><circle r="22" fill="#c8962e" stroke="#fff" stroke-width="4"/><g class="egj-ico" transform="translate(-12,-12)" fill="none" stroke="#fff" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"></g></g></svg>' +
        '<span class="egj-end" style="left:0;top:78%">' + (root.getAttribute('data-start') || 'Start') + '</span><span class="egj-end" style="right:0;top:78%">' + (root.getAttribute('data-end') || 'Finish') + '</span>';
      var caps = el('div', 'egj-caps'), ask = el('p', 'egj-ask'), opts = el('div', 'egj-opts'), status = el('p', 'eg-act-status'), again = button('eg-act-btn is-ghost', 'Start over');
      again.style.display = 'none';
      root.append(stage, caps, ask, opts, status, again);
      var road = stage.querySelector('.egj-road'), paint = stage.querySelector('.egj-paint'), trav = stage.querySelector('.egj-trav'), ico = stage.querySelector('.egj-ico'), flags = stage.querySelector('.egj-flags');
      var L = road.getTotalLength(), N = items.length, stops = items.map(function (_, i) { var tx = (i + .5) / N * 1000, lo = 0, hi = L; for (var s = 0; s < 30; s++) { var mid = (lo + hi) / 2; if (road.getPointAtLength(mid).x < tx) lo = mid; else hi = mid; } return lo; }), pos = 6, cur = 0, busy = false;
      paint.style.strokeDasharray = L;
      function at(l) { var p = road.getPointAtLength(l); trav.setAttribute('transform', 'translate(' + p.x + ',' + p.y + ')'); paint.style.strokeDashoffset = L - l; }
      function build() {
        flags.innerHTML = ''; caps.innerHTML = ''; caps.style.gridTemplateColumns = 'repeat(' + N + ', minmax(0,1fr))'; cur = 0; pos = 6; ico.innerHTML = PERSON; status.textContent = ''; status.className = 'eg-act-status'; again.style.display = 'none';
        stops.forEach(function (l, i) {
          var p = road.getPointAtLength(l), g = document.createElementNS(NS, 'g');
          g.setAttribute('class', 'egj-flag' + (i === 0 ? ' is-next' : '')); g.setAttribute('transform', 'translate(' + p.x + ',' + p.y + ')');
          g.innerHTML = '<circle r="19"/><text>' + (i + 1) + '</text>'; flags.appendChild(g);
          var c = el('div', 'egj-cap', '<b>Step ' + (i + 1) + '</b>' + items[i].label); caps.appendChild(c);
        });
        at(pos); render();
      }
      function render() {
        opts.innerHTML = '';
        if (cur === N) { ask.textContent = ''; status.className = 'eg-act-status good'; status.textContent = root.getAttribute('data-done') || 'Journey complete!'; again.style.display = ''; return; }
        ask.textContent = cur === 0 ? 'What happens first?' : 'What happens next?';
        var rest = items.slice(cur).map(function (it) { return it; }).sort(function () { return Math.random() - .5; });
        rest.forEach(function (it) {
          var b = button(null, it.html);
          b.addEventListener('click', function () {
            if (busy) return;
            if (it === items[cur]) { busy = true; status.textContent = ''; b.style.visibility = 'hidden'; snd.right(); drive(cur, function () { busy = false; cur++; render(); }); }
            else { b.classList.remove('is-wrong'); void b.offsetWidth; b.classList.add('is-wrong'); snd.wrong(); status.className = 'eg-act-status bad'; status.textContent = 'Not yet. That one happens later.'; }
          });
          opts.appendChild(b);
        });
      }
      function drive(k, done) {
        var last = k === N - 1, from = pos, to = last ? L : stops[k], t0 = performance.now(), dur = last ? 1800 : 1300;
        (function f(t) {
          var u = Math.min((t - t0) / dur, 1), e = u < .5 ? 2 * u * u : 1 - Math.pow(-2 * u + 2, 2) / 2;
          pos = from + (to - from) * e; at(pos);
          if (u < 1) return requestAnimationFrame(f);
          var fl = flags.children; fl[k].setAttribute('class', 'egj-flag is-done'); if (fl[k + 1]) fl[k + 1].setAttribute('class', 'egj-flag is-next');
          caps.children[k].classList.add('is-shown');
          if (k === N - 1) { ico.innerHTML = CHAT; burst(); }
          done();
        })(t0);
      }
      function burst() {
        var cs = ['#494e8f', '#007a7a', '#c8962e', '#ffd98a', '#2e8b57'];
        for (var k = 0; k < 28; k++) { var c = document.createElement('i'); c.className = 'egj-confetti'; c.style.left = '50%'; c.style.top = '40%'; c.style.background = cs[k % 5];
          c.style.setProperty('--dx', (Math.random() * 400 - 200) + 'px'); c.style.setProperty('--dy', (Math.random() * -180 - 20) + 'px'); c.style.animationDelay = (Math.random() * .2) + 's'; stage.appendChild(c); (function (c) { setTimeout(function () { c.remove(); }, 1500); })(c); }
      }
      again.addEventListener('click', build);
      build();
    });
  }
  // ---------- Title banner ----------
  function banners() {
    document.querySelectorAll('.rich-text--slide img:not([data-eg-banner])').forEach(function (img) {
      img.setAttribute('data-eg-banner', '1');
      var slide = img.closest('.slide') || document, t = slide.querySelector('.slide__title-area__title');
      if (!t || img.closest('.raw-html, a, .p-columns')) return;
      var name = t.textContent.replace(/\s+/g, ' ').trim();
      if (!name || (img.alt || '').replace(/\s+/g, ' ').trim().toLowerCase() !== name.toLowerCase()) return;
      var wrap = document.createElement('div'); wrap.className = 'eg-banner';
      img.parentNode.insertBefore(wrap, img); wrap.appendChild(img);
      var cap = document.createElement('div'); cap.className = 'eg-banner__t'; cap.setAttribute('aria-hidden', 'true'); cap.textContent = name; wrap.appendChild(cap);
      t.classList.add('eg-sr');
    });
  }
  // ---------- Icon columns: a small image alone in the first column becomes a centered icon ----------
  function iconCols() {
    document.querySelectorAll('.p-columns:not([data-eg-icon])').forEach(function (c) {
      var first = c.children[0], img = first && first.querySelector('img');
      if (!img || first.querySelectorAll('img').length !== 1 || first.textContent.trim()) { c.setAttribute('data-eg-icon', '0'); return; }
      function check() { if (!img.naturalWidth) return; c.setAttribute('data-eg-icon', '1'); if (img.naturalWidth <= 240) { c.classList.add('eg-cols-icon'); img.classList.remove('eg-zoomable'); } }
      c.setAttribute('data-eg-icon', 'wait');
      if (img.complete && img.naturalWidth) check(); else { img.loading = 'eager'; img.addEventListener('load', check, { once: true }); }
    });
  }
    // ---------- Connect the pairs ----------
  function connects() {
    document.querySelectorAll('.eg-connect:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var src = root.querySelector(':scope > ol'); if (!src) return;
      var items = [].slice.call(src.children).map(function (li, i) { return { i: i, label: li.getAttribute('data-label') || '', color: li.getAttribute('data-color') || '#494e8f', text: li.getAttribute('data-text') || '#fff', def: li.innerHTML }; });
      var board = el('div', 'egc-board'), status = el('p', 'eg-act-status'), again = button('eg-act-btn is-ghost', 'Try again');
      again.style.display = 'none'; again.style.marginTop = '1rem';
      root.append(board, status, again);
      function build() {
        board.innerHTML = ''; status.textContent = ''; status.className = 'eg-act-status'; again.style.display = 'none';
        var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'), L = el('div', 'egc-col'), R = el('div', 'egc-col'), sel = null, done = 0;
        board.append(svg, L, R);
        items.forEach(function (it) {
          var b = button('egc-lbl', it.label); b.style.background = it.color; b.style.color = it.text; b.dataset.i = it.i;
          b.addEventListener('click', function () { [].forEach.call(L.children, function (x) { x.classList.remove('is-sel'); }); b.classList.add('is-sel'); sel = it; status.textContent = ''; snd.pick(); });
          L.appendChild(b);
        });
        items.slice().sort(function () { return Math.random() - .5; }).forEach(function (it) {
          var d = button('egc-def', it.def);
          d.addEventListener('click', function () {
            if (!sel) { status.className = 'eg-act-status bad'; status.textContent = 'Tap a label on the left first.'; return; }
            if (sel !== it) { d.classList.remove('is-wrong'); void d.offsetWidth; d.classList.add('is-wrong'); snd.wrong(); status.className = 'eg-act-status bad'; status.textContent = 'Not that one. Try another meaning.'; return; }
            var lb = L.querySelector('[data-i="' + it.i + '"]'), a = lb.getBoundingClientRect(), z = d.getBoundingClientRect(), o = board.getBoundingClientRect();
            var x1 = a.right - o.left, y1 = a.top + a.height / 2 - o.top, x2 = z.left - o.left, y2 = z.top + z.height / 2 - o.top;
            var p = document.createElementNS('http://www.w3.org/2000/svg', 'path');
            p.setAttribute('class', 'egc-path'); p.setAttribute('stroke', it.color);
            p.setAttribute('d', 'M' + x1 + ' ' + y1 + ' C ' + (x1 + 35) + ' ' + y1 + ', ' + (x2 - 35) + ' ' + y2 + ', ' + x2 + ' ' + y2);
            svg.appendChild(p); var len = p.getTotalLength(); p.style.strokeDasharray = len; p.style.strokeDashoffset = len;
            requestAnimationFrame(function () { requestAnimationFrame(function () { p.style.strokeDashoffset = 0; }); });
            lb.classList.remove('is-sel'); lb.classList.add('is-done'); d.classList.add('is-done'); d.style.borderColor = it.color;
            sel = null; done++; snd.right();
            status.className = 'eg-act-status good';
            status.textContent = done === items.length ? (root.getAttribute('data-done') || 'All matched!') : 'Connected!';
            if (done === items.length) again.style.display = '';
          });
          R.appendChild(d);
        });
      }
      again.addEventListener('click', build);
      build();
      window.addEventListener('resize', function () { if (!board.querySelector('.is-done')) return; build(); });
    });
  }
  // ---------- Scale track ----------
  function scales() {
    document.querySelectorAll('.eg-scale:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var src = root.querySelector(':scope > ol'); if (!src) return;
      var stops = [].slice.call(src.children).map(function (li) { return { n: +li.getAttribute('data-n'), color: li.getAttribute('data-color') || '#1a8fc2', html: li.innerHTML }; }).sort(function (a, b) { return a.n - b.n; });
      if (stops.length < 2) return;
      var lo = stops[0].n, hi = +(root.getAttribute('data-max') || stops[stops.length - 1].n), seg = 100 / (stops.length - 1);
      function pos(n) { for (var k = 0; k < stops.length - 1; k++) { var a = stops[k], b = stops[k + 1]; if (n <= b.n) return (k + (n - a.n) / (b.n - a.n)) * seg; } return 100; }
      var track = el('div', 'egsc-track'), fill = el('div', 'egsc-fill'), pin = el('div', 'egsc-pin'), read = el('div', 'egsc-read is-empty');
      track.append(el('div', 'egsc-bar'), fill);
      for (var n = lo; n <= hi; n++) {
        var st = stops.filter(function (s) { return s.n === n; })[0];
        if (st) { var s = el('div', 'egsc-stop', String(n)); s.style.left = pos(n) + '%'; s.style.background = st.color; s.dataset.n = n; track.appendChild(s); }
        else { var t = el('div', 'egsc-tick'); t.style.left = pos(n) + '%'; track.appendChild(t); }
      }
      track.appendChild(pin); root.append(track, read);
      var cur = null;
      function set(n) {
        if (n === cur) return; cur = n;
        pin.style.left = pos(n) + '%'; pin.textContent = n; fill.style.width = pos(n) + '%';
        [].forEach.call(track.querySelectorAll('.egsc-stop'), function (s) { s.classList.toggle('is-on', +s.dataset.n === n); });
        var st = stops.filter(function (s) { return s.n === n; })[0];
        if (st) { read.innerHTML = '<b>' + n + ' · ' + (st.html.match(/<b>([\s\S]*?)<\/b>/) || ['', ''])[1] + '</b><span>' + st.html.replace(/<b>[\s\S]*?<\/b>\s*/, '') + '</span>'; read.classList.remove('is-empty'); }
        else read.classList.add('is-empty');
      }
      function at(x) { var r = track.getBoundingClientRect(), p = (x - r.left) / r.width * 100, best = lo, bd = 1e9; for (var n = lo; n <= hi; n++) { var d = Math.abs(pos(n) - p); if (d < bd) { bd = d; best = n; } } set(best); }
      track.addEventListener('mousemove', function (e) { at(e.clientX); });
      track.addEventListener('click', function (e) { at(e.clientX); });
      track.addEventListener('touchstart', function (e) { at(e.touches[0].clientX); }, { passive: true });
      track.addEventListener('touchmove', function (e) { at(e.touches[0].clientX); }, { passive: true });
      set(lo);
    });
  }
  // ---------- Engel climber ----------
  function engels() {
    var CROSS = '<svg viewBox="0 0 100 100" fill="none" stroke="#e8b12a" stroke-width="3.2" stroke-linecap="round"><g class="ege-rays"><path d="M50 8v8M50 84v8M8 50h8M84 50h8M20 20l6 6M74 74l6 6M80 20l-6 6M26 74l-6 6M34 12l2 7M64 12l-2 7M34 88l2-7M64 88l-2-7M12 34l7 2M12 66l7-2M88 34l-7 2M88 66l-7-2"/></g><path d="M44 22h12v14h12v12H56v30H44V48H32V36h12z" stroke-linejoin="round"/></svg>';
    var ME = '<svg viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2.4" stroke-linecap="round"><circle cx="12" cy="7" r="3.5"/><path d="M5 20a7 7 0 0 1 14 0"/></svg>';
    document.querySelectorAll('.eg-engel:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var src = root.querySelector(':scope > ol'); if (!src) return;
      var steps = [].slice.call(src.children).map(function (li) { return { verb: li.getAttribute('data-verb') || '', color: li.getAttribute('data-color') || '#2e8fd9', gold: li.hasAttribute('data-gold'), desc: li.innerHTML }; });
      var N = steps.length, c = +(root.getAttribute('data-center') || Math.ceil(N / 2));
      var w = Math.min(50 / (c - .5), 50 / (N - c + .5)), a = 50 - (c - .5) * w;
      var line = el('div', 'ege-line', '<span class="ege-dot"></span><span class="ege-end" style="left:0">1</span><span class="ege-end" style="right:0">' + N + '</span><span class="ege-cross" style="left:50%">' + CROSS + '</span>');
      var stairs = el('div', 'ege-stairs'), me = el('div', 'ege-me', ME), panel = el('div', 'ege-panel');
      steps.forEach(function (s, i) {
        var b = el('div', 'ege-blk' + (s.gold ? ' is-gold' : ''), '<b>' + s.verb + '</b>'), h = 12 + i * (66 / Math.max(1, N - 1));
        b.style.left = (a + i * w + .4) + '%'; b.style.width = (w - .8) + '%'; b.style.height = h + '%';
        b.style.background = s.gold ? 'linear-gradient(#f5c34a,#e0a415)' : s.color;
        function on() { me.style.left = (a + (i + .5) * w) + '%'; me.style.bottom = 'calc(' + h + '% + 30px)'; panel.innerHTML = '<span class="ege-n' + (s.gold ? ' is-gold' : '') + '">' + (i + 1) + '</span><div><b>' + s.verb + '</b><span>' + s.desc + '</span></div>'; }
        b.addEventListener('mouseenter', on); b.addEventListener('click', on);
        stairs.appendChild(b); if (i === 0) on();
      });
      stairs.appendChild(me); root.append(line, stairs, panel);
    });
  }
    // ---------- Circles on a line ----------
  function circlesUI() {
    var I = {
      question: '<path d="M9.2 9a3 3 0 1 1 4.3 2.7c-.9.5-1.5 1.2-1.5 2.3v.5"/><circle cx="12" cy="18.2" r=".6" fill="#fff"/>',
      x: '<path d="M7 7l10 10M17 7L7 17"/>',
      maybe: '<path d="M4 12c2-3 4-3 6 0s4 3 6 0 3-3 4-1"/>',
      check: '<path d="M5 12.5l4.5 4.5L19 7.5"/>',
      refresh: '<path d="M19 8a7.5 7.5 0 1 0 1 5"/><path d="M19 3.5V8h-4.5"/>',
      sprout: '<path d="M12 20v-8"/><path d="M12 12c0-4 3-6 7-6 0 4-3 6-7 6z"/><path d="M12 14c0-3-2.5-5-6-5 0 3 2.5 5 6 5z"/>',
      heart: '<path d="M12 20s-7-4.4-7-10a4 4 0 0 1 7-2.6A4 4 0 0 1 19 10c0 5.6-7 10-7 10z"/>'
    };
    function svg(k, c) { return '<svg viewBox="0 0 24 24" fill="none" stroke="' + (c || '#fff') + '" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">' + (I[k] || I.question) + '</svg>'; }
    document.querySelectorAll('.eg-circles:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var src = root.querySelector(':scope > ol'); if (!src) return;
      var items = [].slice.call(src.children).map(function (li) { var m = li.innerHTML.match(/<b>([\s\S]*?)<\/b>/); return { color: li.getAttribute('data-color') || '#494e8f', ink: li.getAttribute('data-ink') || '#fff', icon: li.getAttribute('data-icon') || 'question', short: li.getAttribute('data-short') || (m ? m[1] : li.textContent), title: m ? m[1] : li.textContent, rest: li.innerHTML.replace(/<b>[\s\S]*?<\/b>\s*/, '') }; });
      var row = el('div', 'egci-row'), panel = el('div', 'egci-panel');
      row.style.setProperty('--n', items.length);
      items.forEach(function (it, i) {
        var b = button('egci-item', '<span class="egci-dot" style="background:' + it.color + '">' + svg(it.icon, it.ink) + '</span><span class="egci-name">' + it.short + '</span>');
        function on() {
          [].forEach.call(row.children, function (x) { x.classList.remove('is-on'); }); b.classList.add('is-on');
          panel.style.setProperty('--c', it.color);
          panel.innerHTML = '<span class="egci-mini">' + svg(it.icon, it.ink) + '</span><div><small>' + (root.getAttribute('data-label') || '') + '</small><b>' + it.title + '</b>' + (it.rest ? '<span>' + it.rest + '</span>' : '') + '</div>';
        }
        b.addEventListener('mouseenter', on); b.addEventListener('click', on); b.addEventListener('focus', on);
        row.appendChild(b); if (i === 0) on();
      });
      root.append(row, panel);
    });
  }
    // ---------- Tabs with illustration + next-step card ----------
  function tabsUI() {
    var IC = {
      life: '<circle cx="12" cy="12" r="8.5"/><circle cx="12" cy="12" r="3.8"/><path d="M6 6l3.3 3.3M18 6l-3.3 3.3M6 18l3.3-3.3M18 18l-3.3-3.3"/>',
      shield: '<path d="M12 3l7.5 3v5.5c0 4.6-3.2 8.2-7.5 9.5-4.3-1.3-7.5-4.9-7.5-9.5V6z"/><path d="M8.5 12l2.5 2.5 4.5-5"/>',
      id: '<rect x="3" y="5.5" width="18" height="13" rx="2.5"/><circle cx="8.5" cy="11" r="2"/><path d="M5.8 16c.5-1.4 1.6-2.2 2.7-2.2s2.2.8 2.7 2.2"/><path d="M14 9.5h4M14 12.5h4"/>',
      block: '<path d="M4 5h16v11H9l-5 4z"/><circle cx="12" cy="10.5" r="3.2"/><path d="M9.8 12.7l4.4-4.4"/>',
      handoff: '<circle cx="7" cy="8" r="2.6"/><path d="M3 18a4 4 0 0 1 8 0"/><circle cx="17" cy="8" r="2.6"/><path d="M13 18a4 4 0 0 1 8 0"/><path d="M10 4.5h4M12.5 3l1.5 1.5-1.5 1.5"/>',
      person: '<circle cx="12" cy="8" r="3.5"/><path d="M5 20a7 7 0 0 1 14 0"/>',
      next: '<path d="M5 12h12M13 7l5 5-5 5"/>'
    };
    function svg(k, c) { return '<svg viewBox="0 0 24 24" fill="none" stroke="' + c + '" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round">' + (IC[k] || IC.handoff) + '</svg>'; }
    document.querySelectorAll('.eg-tabs:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var tabs = [].slice.call(root.querySelectorAll(':scope > section')).map(function (s) {
        var r = s.querySelector('.egt-route'), routes = r ? [].slice.call(r.children).map(function (li) { return { who: li.innerHTML, to: li.getAttribute('data-to') || '', note: li.getAttribute('data-note') || '' }; }) : [];
        var c = s.cloneNode(true), cr = c.querySelector('.egt-route'); if (cr) cr.remove();
        return { name: s.getAttribute('data-tab') || '', icon: s.getAttribute('data-icon') || 'handoff', color: s.getAttribute('data-color') || '#494e8f', html: c.innerHTML, routes: routes };
      });
      if (!tabs.length) return;
      var bar = el('div', 'egt-bar'), panel = el('div', 'egt-panel'), label = root.getAttribute('data-route-label') || 'Next step';
      bar.setAttribute('role', 'tablist');
      root.append(bar, panel);
      tabs.forEach(function (t, i) {
        var b = button('egt-tab', '<span class="egt-ic" style="background:' + t.color + '">' + svg(t.icon, '#fff').replace('<svg', '<svg width="16" height="16"') + '</span>' + t.name);
        b.setAttribute('role', 'tab');
        b.addEventListener('click', function (e) {
          [].forEach.call(bar.children, function (x) { x.classList.remove('is-on'); x.style.background = ''; x.setAttribute('aria-selected', 'false'); });
          b.classList.add('is-on'); b.style.background = t.color; b.setAttribute('aria-selected', 'true');
          panel.style.setProperty('--c', t.color);
          var card = t.routes.length ? '<div class="egt-card"><div class="egt-card-hd">' + svg('next', '#fff') + label + '</div><div class="egt-card-bd">' + t.routes.map(function (r) {
            return '<div class="egt-route"><div class="egt-who"><span class="egt-av">' + svg('person', '#5b6570') + '</span><span>' + r.who + '</span></div><span class="egt-arrow"><b></b></span><div class="egt-to"><div>' + r.to + (r.note ? '<small>' + r.note + '</small>' : '') + '</div></div></div>';
          }).join('') + '</div></div>' : '';
          panel.innerHTML = '<div class="egt-scene" style="background:linear-gradient(135deg,' + t.color + '22,' + t.color + '44)"><i style="width:180px;height:180px;left:-40px;top:-50px;background:' + t.color + '"></i><i style="width:120px;height:120px;right:-20px;bottom:-40px;background:' + t.color + '"></i><span class="egt-ring">' + svg(t.icon, t.color) + '</span></div><div class="egt-text"><h3 style="color:' + t.color + '">' + t.name + '</h3>' + t.html + card + '</div>';
          panel.style.animation = 'none'; void panel.offsetHeight; panel.style.animation = '';
          if (e && e.isTrusted) snd.pick();
        });
        bar.appendChild(b);
      });
      bar.children[0].click();
    });
  }
    // ---------- Stamp game (lives + ink multiplier) ----------
  function stampGames() {
    function stampSvg(c) { return '<svg viewBox="0 0 64 78"><rect x="24" y="2" width="16" height="30" rx="8" fill="#8a6a45"/><rect x="18" y="28" width="28" height="10" rx="3" fill="#6b4f33"/><rect x="6" y="38" width="52" height="16" rx="4" fill="' + c + '"/><rect x="4" y="54" width="56" height="8" rx="2" fill="#222"/></svg>'; }
    var HF = '<svg viewBox="0 0 9 8" shape-rendering="crispEdges"><path d="M0 2h1v1h-1zM0 3h1v1h-1zM1 1h1v1h-1zM1 4h1v1h-1zM2 0h1v1h-1zM2 5h1v1h-1zM3 0h1v1h-1zM3 6h1v1h-1zM4 1h1v1h-1zM4 7h1v1h-1zM5 0h1v1h-1zM5 6h1v1h-1zM6 0h1v1h-1zM6 5h1v1h-1zM7 1h1v1h-1zM7 4h1v1h-1zM8 2h1v1h-1zM8 3h1v1h-1z" fill="#1d1d2b"/><path d="M1 2h1v1h-1zM1 3h1v1h-1zM2 1h1v1h-1zM2 4h1v1h-1zM3 1h1v1h-1zM3 3h1v1h-1zM3 4h1v1h-1zM3 5h1v1h-1zM4 2h1v1h-1zM4 3h1v1h-1zM4 4h1v1h-1zM4 5h1v1h-1zM5 1h1v1h-1zM5 2h1v1h-1zM5 3h1v1h-1zM5 4h1v1h-1zM6 1h1v1h-1zM6 2h1v1h-1zM7 2h1v1h-1z" fill="#e8323c"/><path d="M4 6h1v1h-1zM5 5h1v1h-1zM6 3h1v1h-1zM6 4h1v1h-1zM7 3h1v1h-1z" fill="#b01f29"/><path d="M2 3h1v1h-1zM3 2h1v1h-1z" fill="#ff7a80"/><path d="M2 2h1v1h-1z" fill="#fff"/></svg>';
    var HE = '<svg viewBox="0 0 9 8" shape-rendering="crispEdges"><path d="M0 2h1v1h-1zM0 3h1v1h-1zM1 1h1v1h-1zM1 4h1v1h-1zM2 0h1v1h-1zM2 5h1v1h-1zM3 0h1v1h-1zM3 6h1v1h-1zM4 1h1v1h-1zM4 7h1v1h-1zM5 0h1v1h-1zM5 6h1v1h-1zM6 0h1v1h-1zM6 5h1v1h-1zM7 1h1v1h-1zM7 4h1v1h-1zM8 2h1v1h-1zM8 3h1v1h-1z" fill="#1d1d2b"/><path d="M1 2h1v1h-1zM1 3h1v1h-1zM2 1h1v1h-1zM2 2h1v1h-1zM2 3h1v1h-1zM2 4h1v1h-1zM3 1h1v1h-1zM3 2h1v1h-1zM3 3h1v1h-1zM3 4h1v1h-1zM3 5h1v1h-1zM4 2h1v1h-1zM4 3h1v1h-1zM4 4h1v1h-1zM4 5h1v1h-1zM5 1h1v1h-1zM5 2h1v1h-1zM5 3h1v1h-1zM5 4h1v1h-1zM6 1h1v1h-1zM6 2h1v1h-1zM7 2h1v1h-1z" fill="#c9cedb"/><path d="M4 6h1v1h-1zM5 5h1v1h-1zM6 3h1v1h-1zM6 4h1v1h-1zM7 3h1v1h-1z" fill="#aab1c2"/></svg>';
    function bottle(uid) {
      return '<svg class="egsg-bottle" viewBox="0 0 60 80"><defs><clipPath id="' + uid + '"><rect x="8" y="27" width="44" height="48" rx="10"/></clipPath></defs>' +
        '<rect x="21" y="2" width="18" height="11" rx="3" fill="#1d2a3a"/><rect x="24" y="13" width="12" height="10" fill="#dfe3f0" stroke="#8e96b8" stroke-width="2"/>' +
        '<rect x="8" y="27" width="44" height="48" rx="10" fill="#f7f8fd"/>' +
        '<g clip-path="url(#' + uid + ')"><rect class="egsg-ink" x="8" y="75" width="44" height="0" fill="#2c3170"/><rect class="egsg-ink2" x="8" y="75" width="44" height="3" fill="#6e74c4" opacity=".7"/></g>' +
        '<line x1="44" y1="59" x2="52" y2="59" stroke="#8e96b8" stroke-width="2"/><line x1="44" y1="43" x2="52" y2="43" stroke="#8e96b8" stroke-width="2"/>' +
        '<text x="40" y="62" font-size="9" font-weight="900" fill="#5b6570" text-anchor="end">×2</text><text x="40" y="46" font-size="9" font-weight="900" fill="#5b6570" text-anchor="end">×3</text>' +
        '<rect x="8" y="27" width="44" height="48" rx="10" fill="none" stroke="#8e96b8" stroke-width="2.5"/><path d="M14 34v30" stroke="#fff" stroke-width="3" stroke-linecap="round" opacity=".8"/></svg>';
    }
    function thud() { try { tone(120, 0, .18, .3, 'sine', 50); tone(900, 0, .03, .05, 'square'); } catch (e) {} }
    document.querySelectorAll('.eg-stampgame:not([data-ready])').forEach(function (root, n) {
      root.setAttribute('data-ready', '1');
      var src = root.querySelector(':scope > ol'); if (!src) return;
      var L = root.getAttribute('data-left') || 'Keep', Rt = root.getAttribute('data-right') || 'Reassign', LIVES = +(root.getAttribute('data-lives') || 3);
      var items = [].slice.call(src.children).map(function (li) { return { t: li.innerHTML, a: (li.getAttribute('data-answer') || '').trim().toLowerCase() === Rt.toLowerCase() ? 1 : 0, why: li.getAttribute('data-why') || '' }; });
      var play = el('div', 'egsg-play'); root.appendChild(play);
      var uid = 'egsgc' + n + Math.floor(Math.random() * 1e6);
      function go() {
        play.innerHTML = '';
        var hud = el('div', 'egsg-hud'), desk = el('div', 'egsg-desk'), pile = el('div', 'egsg-pile'), tools = el('div', 'egsg-tools is-idle'), toast = el('p', 'egsg-toast');
        hud.innerHTML = '<span class="egsg-lives"><small>Lives</small><span class="egsg-hearts"></span></span><span class="egsg-meter">' + bottle(uid) + '<span class="egsg-meter-txt"><small>Ink multiplier</small><span class="egsg-mult">×1 points</span></span></span><span class="egsg-pts"><small>Points</small><span>0</span></span>';
        var tl = button('egsg-tool is-keep', stampSvg('#007a7a') + '<span>' + L + '</span>'), tr = button('egsg-tool is-re', stampSvg('#c28a1e') + '<span>' + Rt + '</span>');
        tools.append(tl, tr); play.append(hud, desk, pile, tools, toast);
        var hearts = hud.querySelector('.egsg-hearts'), ink = hud.querySelector('.egsg-ink'), ink2 = hud.querySelector('.egsg-ink2'), multEl = hud.querySelector('.egsg-mult'), ptsEl = hud.querySelector('.egsg-pts span');
        var q = items.slice().sort(function () { return Math.random() - .5; }), i = 0, score = 0, lives = LIVES, streak = 0, pts = 0, busy = false;
        function mult() { return streak >= 4 ? 3 : streak >= 2 ? 2 : 1; }
        function drawHearts(losing) {
          var s = ''; for (var k = 0; k < LIVES; k++) s += k === losing ? HF.replace('<svg', '<svg class="is-losing"') : (k < lives ? HF : HE);
          hearts.innerHTML = s; hearts.classList.toggle('is-low', lives === 1);
          if (losing != null) setTimeout(function () { drawHearts(); }, 900);
        }
        function drawInk(bump) {
          var f = Math.min(streak, 4) / 4, hgt = 48 * f, y = 75 - hgt;
          ink.setAttribute('y', y); ink.setAttribute('height', hgt); ink2.setAttribute('y', y - 1.5); ink2.style.opacity = f ? .7 : 0;
          var m = mult(); multEl.textContent = '×' + m + ' points'; multEl.className = 'egsg-mult' + (m === 2 ? ' is-x2' : m === 3 ? ' is-x3' : '');
          if (bump) { void multEl.offsetWidth; multEl.classList.add('is-bump'); }
        }
        function drawPile() { var s = ''; for (var k = 0; k < Math.max(0, q.length - i - 1); k++) s += '<i></i>'; pile.innerHTML = s; }
        function flash(t) { var f = el('div', 'egsg-flash', t); play.appendChild(f); setTimeout(function () { f.remove(); }, 1500); }
        function confetti() { var cs = ['#494e8f', '#007a7a', '#c8962e', '#ffd98a', '#2e8b57']; for (var k = 0; k < 34; k++) { var c = el('i', 'egsg-conf'); c.style.left = '50%'; c.style.top = '35%'; c.style.background = cs[k % 5]; c.style.setProperty('--dx', (Math.random() * 460 - 230) + 'px'); c.style.setProperty('--dy', (Math.random() * -200 - 20) + 'px'); c.style.animationDelay = Math.random() * .2 + 's'; play.appendChild(c); (function (c) { setTimeout(function () { c.remove(); }, 1500); })(c); } }
        function end(win) {
          tools.remove(); pile.remove(); toast.textContent = ''; desk.innerHTML = '';
          var e;
          if (win) { var st = score === q.length ? 3 : score >= q.length - 2 ? 2 : 1; e = el('div', 'egsg-end', '<b>Desk cleared!</b><div class="egsg-stars">' + [1, 2, 3].map(function (x) { return '<span class="' + (x <= st ? '' : 'off') + '">★</span>'; }).join('') + '</div><div>' + pts + ' points · ' + lives + ' ' + (lives === 1 ? 'life' : 'lives') + ' left</div>'); snd.right(); if (st >= 2) confetti(); }
          else { e = el('div', 'egsg-end', '<b>Out of lives</b><div style="margin:.4rem 0">You cleared ' + i + ' of ' + q.length + ' cards. Review the tabs above and try again!</div>'); snd.wrong(); }
          var a = button('eg-act-btn', win ? 'Play again' : 'Try again'); a.style.marginTop = '1rem'; a.addEventListener('click', go); e.appendChild(a); desk.appendChild(e);
        }
        function deal() {
          if (i >= q.length) return end(true);
          desk.innerHTML = '<div class="egsg-card"><small>Situation</small><p>' + q[i].t + '</p></div>'; drawPile();
        }
        function pick(v) {
          if (busy || i >= q.length) return; busy = true;
          tools.classList.remove('is-idle');
          var s = q[i], ok = v === s.a, card = desk.querySelector('.egsg-card'), col = v ? '#b57c12' : '#007a7a';
          var pr = el('div', 'egsg-press', stampSvg(col)); desk.appendChild(pr);
          setTimeout(function () { thud(); card.classList.add('is-thud'); var m = el('span', 'egsg-ink-mark', v ? Rt : L); m.style.color = m.style.borderColor = col; card.appendChild(m); }, 200);
          setTimeout(function () {
            pr.remove();
            var gained = 0, levelUp = false, lostAt = null;
            if (ok) { var m0 = mult(); streak++; levelUp = mult() > m0; gained = 100 * mult(); pts += gained; score++; snd.right(); }
            else { if (streak >= 2) flash('Combo lost!'); streak = 0; lives--; lostAt = lives; snd.wrong(); hearts.classList.remove('is-hit'); void hearts.offsetWidth; hearts.classList.add('is-hit'); }
            drawHearts(lostAt); drawInk(levelUp); ptsEl.textContent = pts;
            if (levelUp) flash('Multiplier up! ×' + mult() + ' points');
            toast.className = 'egsg-toast ' + (ok ? 'is-good' : 'is-bad');
            toast.innerHTML = (ok ? '+' + gained + ' · ✓ Right! ' : '−1 ♥ · ✕ That one is <b>' + (s.a ? Rt : L) + '</b>. ') + s.why;
            setTimeout(function () { card.classList.add(s.a ? 'is-outR' : 'is-outL'); setTimeout(function () { i++; busy = false; if (lives <= 0) end(false); else deal(); }, 450); }, ok ? 800 : 2000);
          }, 520);
        }
        tl.addEventListener('click', function () { pick(0); }); tr.addEventListener('click', function () { pick(1); });
        drawHearts(); drawInk(false); deal();
      }
      go();
    });
  }
    // ---------- Message quiz (PATH-style message, course-style answer buttons) ----------
  function msgQuizzes() {
    var IC = { close: '<rect x="3" y="4" width="18" height="5" rx="1.2"/><path d="M5 9v10h14V9"/><path d="M10 13h4"/>', reply: '<path d="M4 5h16v11H9l-5 4z"/>', reassign: '<circle cx="7" cy="8" r="2.6"/><path d="M3 18a4 4 0 0 1 8 0"/><path d="M14 9h6M17.5 6.5 20 9l-2.5 2.5"/>' };
    function svg(k) { return '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">' + (IC[k] || IC.close) + '</svg>'; }
    function stamp(minsAgo) {
      var d = new Date(Date.now() - minsAgo * 60000), days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
      var n = d.getDate(), suf = (n % 10 === 1 && n !== 11) ? 'st' : (n % 10 === 2 && n !== 12) ? 'nd' : (n % 10 === 3 && n !== 13) ? 'rd' : 'th', h = d.getHours(), m = d.getMinutes();
      return days[d.getDay()] + ', ' + months[d.getMonth()] + ' ' + n + suf + ' ' + d.getFullYear() + ', ' + ((h % 12) || 12) + ':' + (m < 10 ? '0' : '') + m + ' ' + (h < 12 ? 'am' : 'pm');
    }
    document.querySelectorAll('.eg-msgquiz:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var src = root.querySelector(':scope > ol'); if (!src) return;
      var choices = (root.getAttribute('data-choices') || 'Close|Reply|Reassign').split('|').map(function (s) { return s.trim(); });
      var items = [].slice.call(src.children).map(function (li) { return { m: li.innerHTML, a: (li.getAttribute('data-answer') || '').trim().toLowerCase(), why: li.getAttribute('data-why') || '' }; });
      var play = el('div', 'egmq-play'); root.appendChild(play);
      function go() {
        play.innerHTML = '';
        var dots = el('div', 'egmq-dots'), box = el('div'), status = el('p', 'eg-act-status');
        play.append(dots, box, status);
        var q = items.slice().sort(function () { return Math.random() - .5; }), i = 0, score = 0;
        q.forEach(function () { dots.appendChild(el('i')); });
        function show() {
          [].forEach.call(dots.children, function (d, k) { if (k === i) d.classList.add('is-cur'); });
          status.textContent = ''; status.className = 'eg-act-status';
          if (i === q.length) {
            box.innerHTML = '<div class="egmq-end"><b>All done!</b>' + score + ' of ' + q.length + ' right on the first try.</div>';
            var a = button('eg-act-btn is-ghost', 'Try again'); a.style.marginTop = '1rem'; a.addEventListener('click', go); box.appendChild(a);
            if (score === q.length) snd.right(); return;
          }
          var s = q[i], miss = false, done = false;
          box.innerHTML = '<div class="egmq-path"><div class="egmq-bubble">' + s.m + '</div><div class="egmq-time">' + stamp(5 + Math.floor(Math.random() * 90)) + '</div><span class="egmq-vp" aria-hidden="true">VIEW PROFILE</span></div>';
          var bs = el('div', 'egmq-btns');
          choices.forEach(function (c) {
            var b = button('egmq-btn', svg(c.toLowerCase()) + c);
            b.addEventListener('click', function () {
              if (done) return;
              if (c.toLowerCase() !== s.a) { miss = true; b.classList.remove('is-wrong'); void b.offsetWidth; b.classList.add('is-wrong'); snd.wrong(); status.className = 'eg-act-status bad'; status.textContent = 'Not quite. Try again.'; return; }
              done = true; b.classList.add('is-right'); snd.right(); if (!miss) score++;
              dots.children[i].className = miss ? 'is-no' : 'is-ok';
              status.className = 'eg-act-status good'; status.textContent = '✓ ' + s.why;
              var n = button('eg-act-btn egmq-next', i === q.length - 1 ? 'Finish' : 'Next message →');
              n.addEventListener('click', function () { i++; show(); });
              box.appendChild(n);
            });
            bs.appendChild(b);
          });
          box.appendChild(bs);
        }
        show();
      }
      go();
    });
  }
    // ---------- Open-ended practice: doors, then conversations ----------
  function convoGames() {
    var sfx = {
      noise: function (c, dur) { var b = c.createBuffer(1, c.sampleRate * dur, c.sampleRate), d = b.getChannelData(0); for (var k = 0; k < d.length; k++) d[k] = Math.random() * 2 - 1; var s = c.createBufferSource(); s.buffer = b; return s; },
      creak: function () {
        var c = audio(); if (!c) return; var t = c.currentTime;
        var n = sfx.noise(c, .04), hp = c.createBiquadFilter(), g = c.createGain(); hp.type = 'highpass'; hp.frequency.value = 2500;
        g.gain.setValueAtTime(.25, t); g.gain.exponentialRampToValueAtTime(.001, t + .03); n.connect(hp).connect(g).connect(c.destination); n.start(t);
        var dur = .8, sr = c.sampleRate, b = c.createBuffer(1, Math.ceil(sr * dur), sr), d = b.getChannelData(0), pos = .07;
        while (pos < dur - .03) { var u = pos / dur, rate = 16 + 75 * Math.sin(Math.PI * Math.min(1, u * 1.1)) + Math.random() * 10, idx = Math.floor(pos * sr), amp = .55 + .45 * Math.random(); d[idx] = amp; d[idx + 1] = -amp * .5; pos += 1 / rate; }
        var src = c.createBufferSource(); src.buffer = b;
        var f1 = c.createBiquadFilter(); f1.type = 'bandpass'; f1.frequency.value = 620; f1.Q.value = 14;
        var f2 = c.createBiquadFilter(); f2.type = 'bandpass'; f2.frequency.value = 1350; f2.Q.value = 10;
        var g1 = c.createGain(); g1.gain.value = 28; var g2 = c.createGain(); g2.gain.value = 16;
        var env = c.createGain(); env.gain.setValueAtTime(.0001, t); env.gain.linearRampToValueAtTime(1, t + .12); env.gain.setValueAtTime(1, t + .6); env.gain.linearRampToValueAtTime(.0001, t + dur);
        src.connect(f1).connect(g1).connect(env); src.connect(f2).connect(g2).connect(env); env.connect(c.destination); src.start(t);
        var w = sfx.noise(c, .7), lp = c.createBiquadFilter(), wg = c.createGain(); lp.type = 'lowpass'; lp.frequency.value = 420;
        wg.gain.setValueAtTime(.0001, t + .1); wg.gain.exponentialRampToValueAtTime(.12, t + .35); wg.gain.exponentialRampToValueAtTime(.0001, t + .8); w.connect(lp).connect(wg).connect(c.destination); w.start(t + .1);
      },
      slam: function () {
        var c = audio(); if (!c) return; var t = c.currentTime + .18;
        var o = c.createOscillator(), g = c.createGain(); o.type = 'sine'; o.frequency.setValueAtTime(95, t); o.frequency.exponentialRampToValueAtTime(40, t + .25);
        g.gain.setValueAtTime(.0001, t); g.gain.exponentialRampToValueAtTime(.5, t + .01); g.gain.exponentialRampToValueAtTime(.0001, t + .32); o.connect(g).connect(c.destination); o.start(t); o.stop(t + .35);
        var n = sfx.noise(c, .2), lp = c.createBiquadFilter(), ng = c.createGain(); lp.type = 'lowpass'; lp.frequency.value = 1200;
        ng.gain.setValueAtTime(.0001, t); ng.gain.exponentialRampToValueAtTime(.35, t + .005); ng.gain.exponentialRampToValueAtTime(.0001, t + .15); n.connect(lp).connect(ng).connect(c.destination); n.start(t);
        tone(2400, .24, .03, .05, 'square'); tone(1800, .27, .03, .04, 'square');
      }
    };
    var clips = {};
    function clip(kind) {
      var h = document.querySelector('.egcv-sounds'), src = h && h.getAttribute('data-' + kind); if (!src) return false;
      var start = +(h.getAttribute('data-' + kind + '-start') || 0), a = clips[kind];
      if (!a) { a = clips[kind] = new Audio(src); a.preload = 'auto'; }
      try { a.pause(); a.currentTime = start; } catch (e) {}
      var p = a.play(); if (p && p.catch) p.catch(function () {});
      return true;
    }
    function stamp(mins) {
      var d = new Date(Date.now() - mins * 60000), D = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], M = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
      var n = d.getDate(), s = (n % 10 === 1 && n !== 11) ? 'st' : (n % 10 === 2 && n !== 12) ? 'nd' : (n % 10 === 3 && n !== 13) ? 'rd' : 'th', h = d.getHours(), m = d.getMinutes();
      return D[d.getDay()] + ', ' + M[d.getMonth()] + ' ' + n + s + ' ' + d.getFullYear() + ', ' + ((h % 12) || 12) + ':' + (m < 10 ? '0' : '') + m + ' ' + (h < 12 ? 'am' : 'pm');
    }
    function me(t, m) { return '<div class="egcv-me"><span class="egcv-who">Me</span><div class="egcv-row"><span class="egcv-keb"><i></i><i></i><i></i></span><div class="egcv-bub">' + t + '</div></div><span class="egcv-ts">' + stamp(m) + '</span></div>'; }
    function them(t, m) { return '<div class="egcv-them"><div class="egcv-bub">' + t + '</div><span class="egcv-ts">' + stamp(m) + '</span></div>'; }
    function shuffle(a) { a = a.slice(); for (var i = a.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)), x = a[i]; a[i] = a[j]; a[j] = x; } return a; }
    function door(open) { return button('egcv-door ' + (open ? 'is-open' : 'is-closed'), '<span class="egcv-scene"><span class="egcv-floor"></span><span class="egcv-frame"><span class="egcv-hole"><span class="egcv-spill"></span><span class="egcv-leaf"><span class="egcv-knob"></span></span></span></span></span>' + (open ? 'Open-ended' : 'Closed')); }
    document.querySelectorAll('.eg-convo:not([data-ready])').forEach(function (root) {
      root.setAttribute('data-ready', '1');
      var get = function (sel) { var ol = root.querySelector(':scope > ' + sel); return ol ? [].slice.call(ol.children).map(function (li) { return { q: li.innerHTML, r: li.getAttribute('data-reply') || '' }; }) : []; };
      var OPEN = get('.egcv-open'), CLOSED = get('.egcv-closed'), st0 = root.querySelector(':scope > .egcv-start');
      var CHATS = [].slice.call(root.querySelectorAll(':scope > .egcv-chats > div')).map(function (dv) { var o = dv.querySelector('[data-kind="open"]'), c = dv.querySelector('[data-kind="closed"]'); return o && c ? { them: dv.getAttribute('data-contact') || '', open: { q: o.innerHTML, r: o.getAttribute('data-reply') || '' }, closed: { q: c.innerHTML, r: c.getAttribute('data-reply') || '' } } : null; }).filter(Boolean);
      var opener = st0 ? st0.innerHTML : 'Thanks for the study you sent last week.';
      var ND = +(root.getAttribute('data-doors') || 5), NC = Math.min(+(root.getAttribute('data-convos') || 5), CHATS.length || CLOSED.length);
      if (!OPEN.length || !CLOSED.length) return;
      var play = el('div', 'egcv-play'); root.appendChild(play);
      var s1 = 0;
      function start() {
        play.innerHTML = ''; s1 = 0;
        var nClosed = Math.min(CLOSED.length, Math.max(2, Math.round(ND * .4))), pool = shuffle(shuffle(OPEN).slice(0, ND - nClosed).map(function (x) { return [x.q, 1]; }).concat(shuffle(CLOSED).slice(0, nClosed).map(function (x) { return [x.q, 0]; })));
        var hud = el('div', 'egcv-hud'), msg = el('div', 'egcv-msg'), doors = el('div', 'egcv-doors'), status = el('p', 'eg-act-status');
        var dO = door(true), dC = door(false); doors.append(dO, dC); play.append(hud, msg, doors, status);
        var i = 0, busy = false;
        function up() { hud.innerHTML = '<span class="egcv-part">Part 1 of 2</span><span>Question ' + Math.min(i + 1, pool.length) + ' of ' + pool.length + '</span><span>Score ' + s1 + '</span>'; }
        function show() { if (i >= pool.length) return intermission(pool.length); msg.innerHTML = me(pool[i][0], 3); up(); }
        function pick(v, d) {
          if (busy) return; busy = true;
          var ok = v === pool[i][1];
          if (v) { d.classList.add('is-swing'); if (!clip('open')) sfx.creak(); } else { d.classList.remove('is-slam'); void d.offsetWidth; d.classList.add('is-slam'); setTimeout(function () { if (!clip('close')) sfx.slam(); }, clips.close || document.querySelector('.egcv-sounds') ? 120 : 0); }
          d.classList.add(ok ? 'is-hit' : 'is-miss');
          setTimeout(function () { if (ok) snd.right(); else snd.wrong(); }, 450);
          if (ok) s1++;
          status.className = 'eg-act-status ' + (ok ? 'good' : 'bad');
          status.textContent = ok ? (v ? '✓ Open-ended: it invites a real answer.' : '✓ Closed: it can be answered with yes, no, or one word.') : (pool[i][1] ? '✕ That one is open-ended. It can’t be answered with just yes or no.' : '✕ That one is closed. It can be answered with yes, no, or one word.');
          up();
          setTimeout(function () { d.classList.remove('is-swing', 'is-hit', 'is-miss', 'is-slam'); status.textContent = ''; i++; busy = false; show(); }, ok ? 1300 : 2300);
        }
        dO.addEventListener('click', function () { pick(1, dO); }); dC.addEventListener('click', function () { pick(0, dC); });
        show();
      }
      function intermission(n) {
        play.innerHTML = '';
        var box = el('div', 'egcv-inter', '<small>Part 1 complete</small><span class="egcv-big">Let’s practice with real conversations!</span><p>You sorted ' + s1 + ' of ' + n + ' questions correctly.</p><p>Now read what your Contact wrote and choose which reply to send.<br>Open-ended questions keep the conversation going.</p>');
        var b = button('eg-act-btn', 'Start conversations →'); b.style.marginTop = '1.1rem'; b.addEventListener('click', convos); box.appendChild(b); play.appendChild(box); snd.right();
      }
      function convos() {
        play.innerHTML = '';
        var hud = el('div', 'egcv-hud'), meter = el('div', 'egcv-meter', '<span>Conversation</span><span class="egcv-bar"><i></i></span>'), th = el('div', 'egcv-thread'), pick = el('div', 'egcv-pick'), status = el('p', 'eg-act-status');
        play.append(hud, meter, th, status, pick);
        var opens = shuffle(OPEN), rounds = CHATS.length ? shuffle(CHATS).slice(0, NC) : shuffle(CLOSED).slice(0, NC).map(function (c, k) { return { them: opener, open: opens[k % opens.length], closed: c }; });
        var i = 0, lvl = 20, s2 = 0;
        function setM(v) { lvl = Math.max(5, Math.min(100, v)); meter.querySelector('i').style.width = lvl + '%'; }
        function up() { hud.innerHTML = '<span class="egcv-part">Part 2 of 2</span><span>Conversation ' + Math.min(i + 1, rounds.length) + ' of ' + rounds.length + '</span><span>Score ' + s2 + '</span>'; }
        function round() {
          pick.innerHTML = ''; status.textContent = ''; status.className = 'eg-act-status'; up();
          if (i >= rounds.length) {
            th.style.display = 'none';
            pick.innerHTML = '<div class="egcv-end"><b>' + (s2 === rounds.length ? 'Great conversations!' : 'Conversations complete') + '</b>Part 1: ' + s1 + ' correct · Part 2: open-ended reply chosen ' + s2 + ' of ' + rounds.length + ' times</div>';
            var a = button('eg-act-btn is-ghost', 'Start over'); a.style.marginTop = '1rem'; a.addEventListener('click', start); pick.appendChild(a); if (s2 === rounds.length) snd.right(); return;
          }
          var r = rounds[i];
          th.innerHTML = them(r.them, 25 + Math.floor(Math.random() * 60));
          pick.appendChild(el('b', '', 'Which reply will you send?'));
          var dr = el('div', 'egcv-drafts');
          shuffle([[r.open, 1], [r.closed, 0]]).forEach(function (p) { var b = button('egcv-draft', p[0].q + '<small>Send →</small>'); b.addEventListener('click', function () { send(p[0], p[1]); }); dr.appendChild(b); });
          pick.appendChild(dr);
        }
        function send(item, open) {
          pick.innerHTML = '';
          th.insertAdjacentHTML('beforeend', me(item.q, 1)); var ty = el('div', 'egcv-them', '<span class="egcv-typing"><i></i><i></i><i></i></span>'); th.appendChild(ty); th.scrollTop = th.scrollHeight;
          setTimeout(function () {
            ty.remove(); th.insertAdjacentHTML('beforeend', them(item.r || (open ? '…' : 'Yes.'), 0)); th.scrollTop = th.scrollHeight;
            if (open) { s2++; setM(lvl + 18); snd.right(); status.className = 'eg-act-status good'; status.textContent = '✓ You showed you were listening, and your open-ended question gave your Contact room to share.'; }
            else { setM(lvl - 10); snd.wrong(); status.className = 'eg-act-status bad'; status.textContent = '✕ You showed you were listening, but ending with a yes/no question let the conversation stall. The other reply ended with an open-ended question.'; }
            up(); i++;
            var n = button('eg-act-btn egcv-next', i >= rounds.length ? 'See results' : 'Next conversation →'); n.style.marginTop = '.9rem'; n.addEventListener('click', round); pick.appendChild(n);
          }, open ? 1500 : 900);
        }
        setM(20); round();
      }
      start();
    });
  }
  // ---------- Growth wheel: circles around a hub; click one to enlarge it and read its description ----------
  function wheels() {
    var IC = {
      cross: '<path d="M12 3v18M6 8.5h12"/>',
      dove: '<path d="M3 13c3-1 5.5-1 8 .5 1.6-3.6 4.6-6 9-6.5-.6 3.6-2.4 6.4-5.3 7.8 1 .9 1.8 2 2.3 3.2-3-.4-5.3-1.2-7-2.6C7.5 17 5 15.6 3 13z"/><circle cx="16.3" cy="9.6" r=".6" fill="currentColor"/>',
      flame: '<path d="M12 21c-3.6 0-6-2.4-6-5.6 0-3.4 2.6-5 3.4-8.4 2.2 1.4 3 3.4 3 5 1-.6 1.6-1.8 1.7-3.2 2 1.6 3.9 4 3.9 6.6 0 3.2-2.4 5.6-6 5.6z"/>',
      church: '<path d="M12 2.5v4M10.3 4.3h3.4M5 21v-8.5l7-5.5 7 5.5V21z"/><path d="M10 21v-4.5a2 2 0 0 1 4 0V21"/>',
      bible: '<path d="M12 6.5C10 5 7 4.5 3.5 5v13.5c3.5-.5 6.5 0 8.5 1.5 2-1.5 5-2 8.5-1.5V5C17 4.5 14 5 12 6.5zM12 6.5V20"/>',
      prayer: '<path d="M12 21V9.5c0-2 .9-4.5 2.3-6.5.9 2.8 2.7 5 2.7 8.2V16l2.5 3M12 21V9.5c0-2-.9-4.5-2.3-6.5-.9 2.8-2.7 5-2.7 8.2V16L4.5 19"/>',
      share: '<path d="M4 10v4h3l6 4V6L7 10z"/><path d="M16.5 9a4 4 0 0 1 0 6M19 6.5a7.5 7.5 0 0 1 0 11"/>',
      heart: '<path d="M12 20s-7.5-4.6-7.5-10A4.3 4.3 0 0 1 12 7.4 4.3 4.3 0 0 1 19.5 10c0 5.4-7.5 10-7.5 10z"/>'
    };
    var PAL = ['#494e8f', '#007a7a'];
    function svg(k) { return '<svg viewBox="0 0 24 24" aria-hidden="true">' + (IC[k] || '<circle cx="12" cy="12" r="6"/>') + '</svg>'; }
    document.querySelectorAll('.eg-wheel:not([data-ready])').forEach(function (w) {
      w.setAttribute('data-ready', '1');
      var items = [].slice.call(w.querySelectorAll(':scope > ul > li')), n = items.length;
      if (!n) return;
      var stage = el('div', 'egw-stage'), ns = 'http://www.w3.org/2000/svg', lines = document.createElementNS(ns, 'svg');
      lines.setAttribute('class', 'egw-lines'); lines.setAttribute('viewBox', '0 0 100 100');
      var hub = el('div', 'egw-hub'); hub.textContent = w.getAttribute('data-center') || '';
      var card = el('div', 'egw-card'); card.setAttribute('role', 'dialog');
      var close = button('egw-close', '×'); close.setAttribute('aria-label', 'Close');
      var hintTxt = w.getAttribute('data-hint') || 'Select a circle to read more.';
      var hint = el('p', 'egw-hint'); hint.textContent = hintTxt;
      stage.append(lines, el('div', 'egw-ring'), hub);
      var seen = {}, cur = -1, sps = [];
      function shut() {
        if (cur < 0) return; var was = sps[cur]; cur = -1;
        card.classList.remove('is-open'); stage.classList.remove('is-open'); [].forEach.call(lines.children, function (l) { l.classList.remove('is-hot'); });
        was.focus({ preventScroll: true });
      }
      items.forEach(function (li, i) {
        var c = li.getAttribute('data-color') || PAL[i % PAL.length], title = li.getAttribute('data-title') || '', ic = li.getAttribute('data-icon') || '';
        var a = (-90 + i * 360 / n) * Math.PI / 180, x = 50 + 38 * Math.cos(a), y = 50 + 38 * Math.sin(a);
        var ln = document.createElementNS(ns, 'line');
        ln.setAttribute('x1', 50); ln.setAttribute('y1', 50); ln.setAttribute('x2', x); ln.setAttribute('y2', y); ln.style.setProperty('--c', c); lines.append(ln);
        var b = button('egw-sp', ''); b.innerHTML = '<span class="egw-float"><span class="egw-dot">' + svg(ic) + '</span></span><span class="egw-lbl"></span>';
        b.querySelector('.egw-lbl').textContent = title; b.setAttribute('aria-label', title + ': read more');
        b.style.left = x + '%'; b.style.top = y + '%'; b.style.setProperty('--c', c); b.style.setProperty('--i', i);
        b.addEventListener('mouseenter', function () { ln.classList.add('is-hot'); snd.hover(); });
        b.addEventListener('mouseleave', function () { if (cur !== i) ln.classList.remove('is-hot'); });
        b.addEventListener('click', function () {
          if (cur === i) { shut(); return; }
          var reopen = cur >= 0; cur = i; snd.pick();
          [].forEach.call(lines.children, function (l, k) { l.classList.toggle('is-hot', k === i); });
          function fill() {
            card.style.setProperty('--c', c);
            card.style.transformOrigin = ((x - 9) / 82 * 100) + '% ' + ((y - 9) / 82 * 100) + '%';
            card.innerHTML = '<span class="egw-ci">' + svg(ic) + '</span><span class="egw-ct"></span><span class="egw-cx"></span>';
            card.querySelector('.egw-ct').textContent = title; card.querySelector('.egw-cx').innerHTML = li.innerHTML;
            card.setAttribute('aria-label', title); card.append(close);
            void card.offsetWidth; card.classList.add('is-open'); stage.classList.add('is-open'); close.focus({ preventScroll: true });
          }
          if (reopen) { card.classList.remove('is-open'); setTimeout(fill, 220); } else fill();
          seen[i] = 1; b.classList.add('is-seen');
          var k = Object.keys(seen).length;
          hint.textContent = k < n ? k + ' of ' + n + ' explored. ' + hintTxt : '✓ You’ve explored all ' + n + '!';
          hint.classList.toggle('is-done', k === n);
        });
        sps.push(b); stage.append(b);
      });
      stage.append(card);
      card.addEventListener('click', function (e) { if (e.target === card || e.target === close || !e.target.closest('a')) shut(); });
      w.addEventListener('keydown', function (e) { if (e.key === 'Escape') shut(); });
      w.append(stage, hint);
      if ('IntersectionObserver' in window) {
        var io = new IntersectionObserver(function (es) { es.forEach(function (en) { if (en.isIntersecting) { w.classList.add('is-in'); io.disconnect(); } }); }, { threshold: .3 });
        io.observe(w);
      } else w.classList.add('is-in');
    });
  }
  // ---------- Highlighter check: highlight the right lines in a notebook, then "grade" them with a red pen ----------
  function markers() {
    function squeak() { var c = audio(); if (!c) return; var len = .22, buf = c.createBuffer(1, c.sampleRate * len, c.sampleRate), d = buf.getChannelData(0); for (var i = 0; i < d.length; i++) d[i] = (Math.random() * 2 - 1) * (1 - i / d.length); var src = c.createBufferSource(), f = c.createBiquadFilter(), gn = c.createGain(); src.buffer = buf; f.type = 'bandpass'; f.frequency.setValueAtTime(1800, c.currentTime); f.frequency.linearRampToValueAtTime(3200, c.currentTime + len); f.Q.value = 3; gn.gain.value = .22; src.connect(f); f.connect(gn); gn.connect(c.destination); src.start(); }
    var CHECK = '<svg class="egm-mark" viewBox="0 0 32 32" aria-hidden="true"><path d="M6 17l7 7L27 7"/></svg>';
    var CROSS = '<svg class="egm-mark" viewBox="0 0 32 32" aria-hidden="true"><path d="M8 8l16 16M24 8L8 24"/></svg>';
    var CIRCLE = '<svg class="egm-mark" viewBox="0 0 32 32" aria-hidden="true"><path d="M16 4C8 4 4 10 4 16s5 12 12 12 12-5 12-12S22 3 13 5"/></svg>';
    document.querySelectorAll('.eg-marker:not([data-ready])').forEach(function (m) {
      m.setAttribute('data-ready', '1');
      var ul = m.querySelector('ul.eg-quiz-opts'); if (!ul) return;
      var items = [].slice.call(ul.children);
      for (var i = items.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); ul.appendChild(items[j]); items.splice(j, 1); }
      items = [].slice.call(ul.children);
      var pad = el('div', 'egm-pad'); ul.before(pad); pad.appendChild(ul);
      items.forEach(function (li) {
        var why = li.getAttribute('data-why') || '';
        li.innerHTML = '<span class="egm-t">' + li.innerHTML + '</span>';
        li.egWhy = why; li.tabIndex = 0; li.setAttribute('role', 'checkbox'); li.setAttribute('aria-checked', 'false');
        function toggle() { if (m.classList.contains('is-done')) return; var on = li.classList.toggle('is-sel'); li.setAttribute('aria-checked', on ? 'true' : 'false'); if (on) squeak(); else snd.pick(); status.textContent = ''; status.className = 'egm-status'; }
        li.addEventListener('click', toggle);
        li.addEventListener('keydown', function (e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); toggle(); } });
      });
      var check = button('egm-btn', '✎ ' + (m.getAttribute('data-check') || 'Check my notes'));
      var retry = button('egm-btn is-ghost', '↻ ' + (m.getAttribute('data-retry') || 'Erase and try again')); retry.style.display = 'none';
      var status = el('p', 'egm-status');
      pad.after(check, retry, status);
      check.addEventListener('click', function () {
        if (!items.some(function (li) { return li.classList.contains('is-sel'); })) { status.className = 'egm-status bad'; status.textContent = 'Highlight at least one line first.'; return; }
        m.classList.add('is-done'); check.style.display = 'none';
        var score = 0;
        items.forEach(function (li, k) {
          var good = li.hasAttribute('data-correct'), on = li.classList.contains('is-sel'), ok = good === on, cls, mark;
          if (ok) score++;
          if (on && good) { cls = 'is-right'; mark = CHECK; } else if (on && !good) { cls = 'is-wrong'; mark = CROSS; } else if (!on && good) { cls = 'is-missed'; mark = CIRCLE; } else { cls = 'is-skip'; mark = CHECK; }
          li.removeAttribute('tabindex');
          var d = (k * .12) + 's';
          { li.classList.add(cls); li.insertAdjacentHTML('beforeend', mark); var w = el('span', 'egm-why', (cls === 'is-missed' ? 'Missed: ' : (cls === 'is-wrong' || cls === 'is-skip' ? 'Assumption: ' : '')) + li.egWhy); li.appendChild(w); li.style.setProperty('--d', d); li.querySelectorAll('.egm-mark path, .egm-why').forEach(function (x) { x.style.setProperty('--d', d); }); }
        });
        var stamp = el('div', 'egm-score' + (score === items.length ? ' is-perfect' : ''), score + '/' + items.length);
        setTimeout(function () { pad.appendChild(stamp); if (score === items.length) snd.right(); else snd.wrong(); }, items.length * 120 + 200);
        status.className = 'egm-status ' + (score === items.length ? 'good' : 'bad');
        status.textContent = score === items.length ? '✓ Perfect notes! Asking and listening are how you learn about a Disciple’s growth.' : 'Not quite. Read the red-pen notes, then try again.';
        retry.style.display = '';
      });
      retry.addEventListener('click', function () {
        m.classList.remove('is-done'); retry.style.display = 'none'; check.style.display = ''; status.textContent = ''; status.className = 'egm-status';
        var s = pad.querySelector('.egm-score'); if (s) s.remove();
        items.forEach(function (li) { li.classList.remove('is-sel', 'is-right', 'is-wrong', 'is-missed', 'is-skip'); li.setAttribute('aria-checked', 'false'); li.tabIndex = 0; li.querySelectorAll('.egm-mark, .egm-why').forEach(function (x) { x.remove(); }); });
        snd.pick();
      });
    });
  }
  // ---------- Pinboard check: pin the right sticky notes, then check ----------
  function pinboards() {
    var COL = ['#fff27a', '#ffc2d4', '#bfe3ff', '#c9f2b5', '#ffd8a8', '#e3d1ff'];
    var PIN = '<svg class="egp-pin" viewBox="0 0 26 30" aria-hidden="true"><ellipse cx="13" cy="27" rx="5" ry="2" fill="rgba(0,0,0,.25)"/><path d="M13 14v13" stroke="#777" stroke-width="2"/><circle cx="13" cy="9" r="8" fill="#e5484d"/><circle cx="10" cy="6" r="2.5" fill="#ff9a9e"/></svg>';
    document.querySelectorAll('.eg-pinboard:not([data-ready])').forEach(function (b) {
      b.setAttribute('data-ready', '1');
      var ul = b.querySelector('ul.eg-quiz-opts'); if (!ul) return;
      var orig = [].slice.call(ul.children).map(function (li) { return { html: li.innerHTML, ok: li.hasAttribute('data-correct'), why: li.getAttribute('data-why') || '' }; });
      var cork = el('div', 'egp-cork'); ul.before(cork); cork.appendChild(ul);
      var check = button('egp-btn', b.getAttribute('data-check') || 'Check my board');
      var retry = button('egp-btn is-ghost', '↻ ' + (b.getAttribute('data-retry') || 'Try again'));
      var status = el('p', 'egp-status');
      cork.after(check, retry, status);
      var notes = [];
      function build() {
        b.classList.remove('is-done'); ul.innerHTML = ''; notes = [];
        retry.style.display = 'none'; check.style.display = ''; status.textContent = ''; status.className = 'egp-status';
        var list = orig.slice(); for (var i = list.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var t = list[i]; list[i] = list[j]; list[j] = t; }
        list.forEach(function (s, k) {
          var li = el('li', '', '<span>' + s.html + '</span>'); li.s = s; li.tabIndex = 0; li.setAttribute('role', 'checkbox'); li.setAttribute('aria-checked', 'false');
          li.style.setProperty('--c', COL[k % COL.length]); li.style.setProperty('--r', (Math.random() * 6 - 3).toFixed(1) + 'deg');
          function toggle() { if (b.classList.contains('is-done')) return; var on = li.classList.toggle('is-on'); li.setAttribute('aria-checked', on ? 'true' : 'false'); if (on) { li.insertAdjacentHTML('afterbegin', PIN); tone(160, 0, .12, .4, 'triangle', 90); } else { var p = li.querySelector('.egp-pin'); if (p) p.remove(); tone(600, 0, .1, .18, 'sine', 350); } status.textContent = ''; status.className = 'egp-status'; }
          li.addEventListener('click', toggle);
          li.addEventListener('keydown', function (e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); toggle(); } });
          ul.appendChild(li); notes.push(li);
        });
      }
      check.addEventListener('click', function () {
        if (!notes.some(function (n) { return n.classList.contains('is-on'); })) { status.className = 'egp-status bad'; status.textContent = 'Pin at least one note first.'; return; }
        b.classList.add('is-done'); check.style.display = 'none';
        var score = 0;
        notes.forEach(function (n, k) {
          var on = n.classList.contains('is-on'), ok = on === n.s.ok; if (ok) score++;
          n.removeAttribute('tabindex');
          setTimeout(function () {
            if (on && n.s.ok) n.append(el('span', 'egp-badge g', '✓'));
            else if (on) { n.classList.add('is-fall'); n.append(el('span', 'egp-badge b', '✕')); }
            else if (n.s.ok) { n.classList.add('is-missed'); n.append(el('span', 'egp-badge b', '!')); }
            n.append(el('span', 'egp-why ' + (ok ? 'g' : 'b'), (n.s.ok ? (on ? '' : 'Missed: ') : 'Assumption: ') + n.s.why));
          }, k * 90);
        });
        setTimeout(function () {
          var all = score === notes.length;
          status.className = 'egp-status ' + (all ? 'good' : 'bad');
          status.textContent = all ? '✓ All ' + notes.length + ' correct! Asking and listening are how you learn about a Disciple’s growth.' : score + ' of ' + notes.length + ' correct. Read the notes, then try again.';
          (all ? snd.right : snd.wrong)(); retry.style.display = '';
        }, notes.length * 90 + 200);
      });
      retry.addEventListener('click', function () { snd.pick(); build(); });
      build();
    });
  }
  // ---------- Practice conversations with a best-practice badge rail ----------
  function replyPractice() {
    var IC = {
      clock: '<circle cx="12" cy="13" r="8"/><path d="M12 9v4l2.5 2M9 2h6"/>',
      ask: '<path d="M4 5h16v11H9l-5 4z"/><path d="M10 9a2 2 0 1 1 2.6 1.9c-.4.2-.6.5-.6.9V12M12 14.2v.1"/>',
      reply: '<path d="M9 14L4 9l5-5"/><path d="M4 9h10a6 6 0 0 1 6 6v4"/>',
      stairs: '<path d="M4 20h4v-4h4v-4h4V8h4"/><path d="M17 4h3v3"/>',
      users: '<circle cx="8" cy="8" r="3"/><circle cx="16" cy="8" r="3"/><path d="M2.5 19a5.5 5.5 0 0 1 11 0M10.5 19a5.5 5.5 0 0 1 11 0"/>',
      megaphone: '<path d="M4 10v4h3l6 4V6L7 10z"/><path d="M16.5 9a4 4 0 0 1 0 6M19 6.5a7.5 7.5 0 0 1 0 11"/>',
      hands: '<path d="M12 21V9.5c0-2 .9-4.5 2.3-6.5.9 2.8 2.7 5 2.7 8.2V16l2.5 3M12 21V9.5c0-2-.9-4.5-2.3-6.5-.9 2.8-2.7 5-2.7 8.2V16L4.5 19"/>',
      shield: '<path d="M12 3l7.5 3v5.5c0 4.6-3.2 8.2-7.5 9.5-4.3-1.3-7.5-4.9-7.5-9.5V6z"/><path d="M9 12l2 2 4-4"/>',
      nocamera: '<path d="M4 8h3l2-2.5h6L17 8h3v11H4z"/><circle cx="12" cy="13" r="3.2"/><path d="M3 3l18 18"/>',
      link: '<path d="M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1"/><path d="M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1"/>',
      pin: '<path d="M12 21s-6.5-6.2-6.5-11a6.5 6.5 0 0 1 13 0c0 4.8-6.5 11-6.5 11z"/><circle cx="12" cy="10" r="2.3"/>',
      lockphone: '<rect x="6.5" y="2.5" width="11" height="19" rx="2.5"/><path d="M10.5 18.5h3"/><rect x="9.3" y="9.8" width="5.4" height="4.4" rx="1"/><path d="M10.5 9.8V8.5a1.5 1.5 0 0 1 3 0v1.3"/>',
      star: '<path d="m12 3 2.7 5.6 6.1.9-4.4 4.3 1 6.1L12 17l-5.4 2.9 1-6.1-4.4-4.3 6.1-.9z"/>'
    };
    function svg(k) { return '<svg viewBox="0 0 24 24" aria-hidden="true">' + (IC[k] || IC.star) + '</svg>'; }
    function wait(ms) { return new Promise(function (r) { setTimeout(r, ms); }); }
    function shuffle(a) { a = a.slice(); for (var i = a.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var t = a[i]; a[i] = a[j]; a[j] = t; } return a; }
    var s = { send: function () { tone(700, 0, .08, .15, 'sine', 1100); }, recv: function () { tone(880, 0, .08, .15); tone(660, .08, .1, .15); }, badge: function () { tone(523, 0, .12, .22); tone(784, .09, .14, .22); tone(1047, .18, .3, .22); } };
    document.querySelectorAll('.eg-convo-practice:not([data-ready])').forEach(function (R) {
      R.setAttribute('data-ready', '1');
      var BP = [].slice.call(R.querySelectorAll(':scope > ol[data-practices] > li')).map(function (li) { var b = li.querySelector('b,strong'), t = b ? b.textContent.trim() : ''; var d = li.textContent.replace(t, '').trim(); return { t: t, d: d, ic: li.getAttribute('data-icon') }; });
      var CONVS = [].slice.call(R.querySelectorAll(':scope > div[data-contact]')).map(function (c) {
        var items = [].slice.call(c.children).map(function (n) {
          if (n.hasAttribute('data-turn')) return { turn: n.getAttribute('data-turn'), q: n.getAttribute('data-q') || '', note: n.getAttribute('data-note') || '', time: n.getAttribute('data-time') || '', o: [].slice.call(n.children).map(function (p) { var ids = [].slice.call(p.querySelectorAll('span[data-bp]')).concat([p]).map(function (q) { return q.getAttribute('data-bp') || ''; }).join(',').split(',').map(function (x) { return parseInt(x, 10) - 1; }).filter(function (x, i, arr) { return x >= 0 && arr.indexOf(x) === i; }); return { html: p.innerHTML, bp: ids, why: p.getAttribute('data-why') || '' }; }) };
          return { msg: n.innerHTML, time: n.getAttribute('data-time') || '' };
        });
        return { name: c.getAttribute('data-contact'), role: c.getAttribute('data-role') || '', items: items };
      });
      var root = el('div', 'egrp-act'); R.appendChild(root);
      function badge(k) { var b = el('div', 'egrp-bdg', svg(BP[k].ic) + '<span class="egrp-tip"><b>' + (k + 1) + '. ' + BP[k].t + '</b>' + BP[k].d + '</span>'); b.tabIndex = 0; return b; }
      function start() {
        root.innerHTML = ''; var badges = [], earned = {}, misses = 0;
        var rail = el('div', 'egrp-rail', '<span class="egrp-lab">' + (R.getAttribute('data-label') || 'Best practices').replace(' ', '<br>') + '</span>'); BP.forEach(function (_, k) { var b = badge(k); badges.push(b); rail.appendChild(b); });
        var cnt = el('span', 'egrp-count', '0 of ' + BP.length); rail.appendChild(cnt);
        var path = el('div', 'egrp-path'), hd = el('div', 'egrp-hd'), thread = el('div', 'egrp-thread'); path.append(hd, thread);
        var coach = el('div', 'egrp-coach'); root.append(rail, path, coach); var ci = 0;
        function add(n) { thread.appendChild(n); thread.scrollTop = thread.scrollHeight; return n; }
        function contact(m) { add(el('div', 'egrp-mc', '<div class="egrp-bb">' + m.msg + '</div><div class="egrp-ts">' + m.time + '</div>')); s.recv(); }
        function me(html, ts) { s.send(); return add(el('div', 'egrp-mo', '<div class="egrp-me">Me</div><div class="egrp-row"><span class="egrp-kb"><i></i><i></i><i></i></span><div class="egrp-bb">' + html + '</div></div><div class="egrp-ts">' + ts + '</div>')); }
        function bpOf(n) { return (n.getAttribute('data-bp') || '').split(',').map(function (x) { return parseInt(x, 10) - 1; }).filter(function (x) { return x >= 0 && badges[x]; }); }
        var pop = el('div', 'egrp-pop'), busy = false, revT = null, curSeg = null; pop.style.display = 'none'; root.appendChild(pop);
        function showPop(seg, anchor, mode) {
          var names = seg.bp.map(function (k) { return '<span class="egrp-pb">' + svg(BP[k].ic) + '</span>'; }).join('');
          var q = seg.text.length > 140 ? seg.text.slice(0, 137) + '\u2026' : seg.text;
          pop.innerHTML = '<div class="egrp-ph">' + names + '<div>' + seg.bp.map(function (k) { return '<b>' + (k + 1) + '. ' + BP[k].t + '</b>'; }).join('') + '</div></div><p class="egrp-pq">\u201c' + q + '\u201d</p><p class="egrp-pn">' + seg.note + '</p>';
          pop.style.display = ''; pop.className = 'egrp-pop' + (mode === 'hover' ? ' is-peek' : '');
          var rr = root.getBoundingClientRect(), r = anchor.getBoundingClientRect(), w = Math.min(340, rr.width - 24);
          pop.style.width = w + 'px';
          var left = Math.max(12, Math.min(r.left - rr.left, rr.width - w - 12)); pop.style.left = left + 'px';
          var h = pop.offsetHeight, top = r.bottom - rr.top + 10; if (top + h > rr.height - 8) top = Math.max(8, r.top - rr.top - h - 10);
          pop.style.top = top + 'px';
          return new Promise(function (res) {
            if (mode === 'hover') return res();
            var c = button('egrp-go egrp-pgo', mode === 'flow' ? 'Continue' : 'Close'); pop.appendChild(c); c.focus({ preventScroll: true });
            c.addEventListener('click', function () { pop.style.display = 'none'; res(); });
          });
        }
        function lightSeg(seg, on) { seg.bp.forEach(function (k) { var b = badges[k]; if (on) { b.classList.remove('is-on'); void b.offsetWidth; b.classList.add('is-glow'); } else { b.classList.remove('is-glow'); b.classList.add('is-on'); } }); seg.els.forEach(function (e) { e.classList.toggle('egrp-hl', on); e.classList.toggle('egrp-hl-done', !on); }); }
        function reviewable(seg, target) {
          target.classList.add('egrp-rev'); target.tabIndex = 0;
          target.addEventListener('mouseenter', function () { if (busy || pop.dataset.pinned) return; clearTimeout(revT); if (curSeg && curSeg !== seg) lightSeg(curSeg, false); curSeg = seg; lightSeg(seg, true); showPop(seg, target, 'hover'); });
          target.addEventListener('mouseleave', function () { if (busy || pop.dataset.pinned) return; revT = setTimeout(function () { lightSeg(seg, false); if (curSeg === seg) curSeg = null; pop.style.display = 'none'; }, 120); });
          function pin(e) { if (busy) return; e.preventDefault(); clearTimeout(revT); if (curSeg && curSeg !== seg) lightSeg(curSeg, false); curSeg = seg; pop.dataset.pinned = 1; lightSeg(seg, true); showPop(seg, target, 'review').then(function () { delete pop.dataset.pinned; lightSeg(seg, false); curSeg = null; }); }
          target.addEventListener('click', pin);
          target.addEventListener('keydown', function (e) { if (e.key === 'Enter' || e.key === ' ') pin(e); });
        }
        async function glow(k, from) {
          var b = badges[k]; earned[k] = 1; s.badge();
          var r0 = from.getBoundingClientRect(), r1 = b.getBoundingClientRect(), f = el('div', 'egrp-fly', svg(BP[k].ic));
          f.style.left = (r0.left + Math.min(r0.width, 200) / 2 - 20) + 'px'; f.style.top = (r0.top + r0.height / 2 - 20) + 'px'; document.body.appendChild(f);
          await wait(30); f.style.left = (r1.left + 6) + 'px'; f.style.top = (r1.top + 6) + 'px'; f.style.transform = 'scale(.8)';
          await wait(600); f.remove(); b.classList.remove('is-on', 'is-glow'); void b.offsetWidth; b.classList.add('is-glow');

        }
        async function earn(btn, sent, fallback, sys) {
          busy = true; clearTimeout(revT); if (curSeg) { lightSeg(curSeg, false); curSeg = null; } pop.style.display = 'none'; delete pop.dataset.pinned;
          var a = [].slice.call(btn.querySelectorAll('span[data-bp]')), m = sent ? [].slice.call(sent.querySelectorAll('span[data-bp]')) : [], segs;
          if (a.length) segs = a.map(function (sp, i) { return { els: [sp, m[i]].filter(Boolean), bp: bpOf(sp), text: sp.textContent.trim(), note: sp.getAttribute('data-note') || '', rev: m[i] || sys }; });
          else segs = [{ els: [btn], bp: fallback, text: btn.textContent.replace(/^(Action|Message)/, '').trim(), note: '', rev: sys }];
          for (var x = 0; x < segs.length; x++) {
            var g = segs[x]; if (!g.bp.length) continue;
            if (!g.note) g.note = g.bp.map(function (k) { return BP[k].d; }).join(' ');
            g.els.forEach(function (e) { e.classList.add('egrp-hl'); });
            for (var y = 0; y < g.bp.length; y++) { await glow(g.bp[y], g.els[g.els.length - 1]); await wait(200); }
            await showPop(g, g.els[g.els.length - 1], 'flow');
            lightSeg(g, false);
            if (g.rev) { if (g.rev === sys) g.els = g.els.concat([sys]); reviewable(g, g.rev); }
          }
          cnt.textContent = Object.keys(earned).length + ' of ' + BP.length; busy = false;
        }
        function conv() { var C = CONVS[ci]; hd.innerHTML = '<div><b>' + C.name + '</b><small>' + C.role + '</small></div><span class="egrp-vp">View Profile</span>'; thread.innerHTML = ''; step(0); }
        async function step(i) {
          var C = CONVS[ci]; if (i >= C.items.length) return endConv();
          var it = C.items[i];
          if (!it.turn) { if (i > 0) await wait(1100); contact(it); if (i > 0) await wait(400); return step(i + 1); }
          coach.innerHTML = '';
          coach.append(el('div', 'egrp-conv', 'Conversation ' + (ci + 1) + ' of ' + CONVS.length + ' · ' + C.name), el('h3', '', it.q));
          var ch = el('div', 'egrp-ch'), fb = el('p', 'egrp-fb');
          shuffle(it.o).forEach(function (o) {
            var b = button('', '<span class="egrp-k">' + (it.turn === 'action' ? 'Action' : 'Message') + '</span>' + o.html);
            b.addEventListener('click', async function () {
              if (ch.dataset.done) return;
              if (!o.bp.length) { misses++; b.classList.remove('is-no'); void b.offsetWidth; b.classList.add('is-no'); fb.className = 'egrp-fb bad'; fb.textContent = '✕ ' + o.why; snd.wrong(); return; }
              ch.dataset.done = 1; b.classList.add('is-ok'); [].forEach.call(ch.children, function (x) { if (x !== b) x.style.opacity = .4; });
              var sent = null, sys = null; if (it.turn === 'action') sys = add(el('div', 'egrp-sys', '<span>' + it.note + '</span>')).firstChild; else sent = me(o.html, it.time);
              fb.className = 'egrp-fb good'; fb.textContent = '✓ ' + o.why;
              await wait(350); await earn(b, sent, o.bp, sys); await wait(400); step(i + 1);
            });
            ch.appendChild(b);
          });
          coach.append(ch, fb);
        }
        function endConv() {
          var C = CONVS[ci]; coach.innerHTML = ''; var last = ci === CONVS.length - 1, e = el('div', 'egrp-end');
          if (!last) { e.innerHTML = '<div class="egrp-conv">Conversation ' + (ci + 1) + ' of ' + CONVS.length + ' complete</div><h3>Nice work with ' + C.name + '!</h3>'; var n = button('egrp-go', 'Next conversation →'); n.addEventListener('click', function () { ci++; conv(); }); e.appendChild(n); }
          else {
            snd.right(); var all = Object.keys(earned).length === BP.length;
            e.innerHTML = '<div class="egrp-conv">All conversations complete</div><h3>' + (all ? (R.getAttribute('data-complete') || 'You used all ' + BP.length + ' best practices!') : 'Conversations complete!') + '</h3>';
            var row = el('div', 'egrp-endrow'); BP.forEach(function (_, k) { var b = badge(k); if (earned[k]) b.classList.add('is-on'); row.appendChild(b); });
            e.append(row, el('p', 'egrp-tries', misses ? misses + ' wrong pick' + (misses > 1 ? 's' : '') + ' along the way.' : 'No wrong picks. Excellent!'), el('p', 'egrp-close', R.getAttribute('data-done') || 'Different Contacts need different responses, but these practices guide every conversation.'));
            var a = button('egrp-go', '↻ Practice again'); a.addEventListener('click', start); e.appendChild(a);
          }
          coach.appendChild(e);
        }
        conv();
      }
      start();
    });
  }
  // ---------- World Watch List map: pins drop on ranked countries; hover/tap for rank + score ----------
  function wwlMaps() {
    var NS = 'http://www.w3.org/2000/svg';
    function sv(t, a) { var e = document.createElementNS(NS, t); for (var k in a) e.setAttribute(k, a[k]); return e; }
    var LV = { x: ['Extreme', '#c4161c'], v: ['Very high', '#e5541f'], h: ['High', '#f0a020'] };
    document.querySelectorAll('.eg-wwl-map:not([data-ready])').forEach(function (R) {
      var svg = R.querySelector(':scope > svg'); if (!svg) return; R.setAttribute('data-ready', '1');
      var byName = {}; [].forEach.call(svg.querySelectorAll('path[data-name]'), function (p) { var n = p.getAttribute('data-name').toLowerCase(); (byName[n] = byName[n] || []).push(p); });
      var list = [].slice.call(R.querySelectorAll(':scope > ol > li')).map(function (li, i) {
        var nm = li.textContent.trim(), key = (li.getAttribute('data-map') || nm).toLowerCase(), s = parseInt(li.getAttribute('data-score'), 10) || 0;
        return { r: i + 1, n: nm, s: s, l: s >= 81 ? 'x' : s >= 61 ? 'v' : 'h', ps: byName[key] || [] };
      });
      var tip = el('div', 'egwm-tip'), hint = el('div', 'egwm-hint', 'Hover over or tap a pin to learn more');
      var used = {}; list.forEach(function (o) { used[o.l] = 1; });
      var lg = el('div', 'egwm-legend', ['x', 'v', 'h'].filter(function (k) { return used[k]; }).map(function (k) { return '<span><i style="background:' + LV[k][1] + '"></i>' + LV[k][0] + '</span>'; }).join(''));
      var src = R.getAttribute('data-source'), link = R.getAttribute('data-link');
      R.append(tip, hint, lg); if (src) R.appendChild(el('div', 'egwm-src', 'Source: ' + (link ? '<a href="' + link + '" target="_blank" rel="noopener">' + src + '</a>' : src)));
      var gP = sv('g', {}); svg.appendChild(gP); var pins = [];
      function show(o) {
        list.forEach(function (q) { if (q !== o) off(q); }); hint.style.opacity = 0;
        o.ps.forEach(function (p) { p.classList.add('is-hov'); }); if (o.pin) { o.pin.classList.remove('is-in'); o.pin.style.animationDelay = ''; o.pin.classList.add('is-done', 'is-hov'); gP.appendChild(o.pin); }
        var c = LV[o.l][1]; tip.innerHTML = '<div class="egwm-tr"><span class="egwm-rk" style="background:' + c + '">' + o.r + '</span><div><b>' + o.n + '</b><small style="color:' + c + '">' + LV[o.l][0] + ' persecution</small></div></div><div class="egwm-bar"><span style="width:' + o.s + '%;background:' + c + '"></span></div><div class="egwm-sc">Score <strong>' + o.s + '</strong> / 100 · Rank ' + o.r + ' of ' + list.length + '</div>';
        var rr = R.getBoundingClientRect(), x = o.pinXY ? o.pinXY[0] / 1000 * svg.getBoundingClientRect().width : 0;
        tip.style.left = ''; tip.style.right = ''; if (x > rr.width / 2) tip.style.left = '12px'; else tip.style.right = '12px';
        tip.classList.add('is-on');
      }
      function off(o) { o.ps.forEach(function (p) { p.classList.remove('is-hov'); }); if (o.pin) o.pin.classList.remove('is-hov'); }
      function hideAll() { list.forEach(off); tip.classList.remove('is-on'); }
      list.forEach(function (o) {
        var lv = 'egwm-c egwm-' + o.l, pinAt = null;
        o.ps.forEach(function (p) { p.setAttribute('class', lv); p.setAttribute('tabindex', '0'); p.setAttribute('aria-label', o.r + '. ' + o.n + ', score ' + o.s); if (!pinAt && p.getAttribute('data-pin')) pinAt = p.getAttribute('data-pin').split(',').map(Number); });
        if (pinAt) {
          var x = pinAt[0], y = pinAt[1], g = sv('g', { 'class': 'egwm-pin', tabindex: '0', 'aria-label': o.r + '. ' + o.n });
          g.append(sv('path', { d: 'M' + x + ' ' + y + 'c-1.6-3-6.5-6.2-6.5-10.2a6.5 6.5 0 0 1 13 0c0 4-4.9 7.2-6.5 10.2z' }));
          var t = sv('text', { x: x, y: y - 10.5 }); t.textContent = o.r; g.appendChild(t); gP.appendChild(g); o.pin = g; o.pinXY = pinAt; pins.push(g);
        }
        o.ps.concat(o.pin ? [o.pin] : []).forEach(function (n) {
          n.addEventListener('mouseenter', function () { show(o); }); n.addEventListener('mouseleave', function () { off(o); tip.classList.remove('is-on'); });
          n.addEventListener('click', function (e) { e.stopPropagation(); show(o); }); n.addEventListener('focus', function () { show(o); }); n.addEventListener('blur', function () { off(o); tip.classList.remove('is-on'); });
        });
      });
      R.addEventListener('click', hideAll);
      function drop() { pins.forEach(function (g, i) { g.style.animationDelay = (i * 25) + 'ms'; g.classList.add('is-in'); setTimeout(function () { g.classList.remove('is-in'); g.style.animationDelay = ''; g.classList.add('is-done'); }, 560 + i * 25); }); }
      if ('IntersectionObserver' in window) { var io = new IntersectionObserver(function (es) { if (es[0].isIntersecting) { io.disconnect(); drop(); } }, { threshold: .3 }); io.observe(R); } else drop();
    });
  }
  // ---------- Top countries: flag badges; click to open a details drawer ----------
  function top10s() {
    document.querySelectorAll('.eg-top10:not([data-ready])').forEach(function (R) {
      R.setAttribute('data-ready', '1');
      var C = [].slice.call(R.querySelectorAll(':scope > [data-country]')).map(function (n, i) {
        var f = n.querySelector('svg, img'), d = n.querySelector('p');
        return { n: n.getAttribute('data-country'), r: n.getAttribute('data-rank') || (i + 1), s: parseInt(n.getAttribute('data-score'), 10) || 0, x: n.getAttribute('data-christians') || '', rel: n.getAttribute('data-religion') || '', u: n.getAttribute('data-link') || '', f: f ? f.outerHTML : '', d: d ? d.innerHTML : '' };
      });
      var hint = el('p', 'egt-hint', R.getAttribute('data-hint') || 'Click a flag to learn more about each country.');
      var row = el('div', 'egt-row'), dr = el('div', 'egt-drawer', '<div></div>'), cur = null;
      C.forEach(function (o, i) {
        var b = button('egt-b', '<span class="egt-ball"><span class="egt-fl">' + o.f + '</span><span class="egt-rk">' + o.r + '</span></span>' + o.n);
        b.style.animationDelay = (i * 50) + 'ms'; b.setAttribute('aria-expanded', 'false');
        b.addEventListener('click', function () {
          [].forEach.call(row.children, function (x) { x.classList.remove('is-on'); x.setAttribute('aria-expanded', 'false'); });
          if (cur === o) { cur = null; dr.classList.remove('is-open'); return; }
          cur = o; b.classList.add('is-on'); b.setAttribute('aria-expanded', 'true'); if (typeof snd !== 'undefined' && snd.pick) snd.pick();
          var st = '<div class="egt-st"><span>Rank <b>' + o.r + '</b></span>' + (o.s ? '<span>Score <b>' + o.s + '</b> / 100</span>' : '') + (o.x ? '<span>Christians <b>' + o.x + '</b></span>' : '') + (o.rel ? '<span>Main religion <b>' + o.rel + '</b></span>' : '') + '</div>';
          dr.firstChild.innerHTML = '<div class="egt-panel"><span class="egt-fl">' + o.f + '</span><div><h3>' + o.r + '. ' + o.n + '</h3>' + st + (o.s ? '<div class="egt-bar"><i></i></div>' : '') + '<p>' + o.d + '</p>' + (o.u ? '<a class="egt-more" href="' + o.u + '" target="_blank" rel="noopener">Read more at Open Doors ↗</a>' : '') + '</div></div>';
          dr.classList.add('is-open'); setTimeout(function () { var bi = dr.querySelector('.egt-bar i'); if (bi) bi.style.width = o.s + '%'; }, 60);
        });
        row.appendChild(b);
      });
      R.append(hint, row, dr);
      if (R.getAttribute('data-source')) R.appendChild(el('p', 'egt-src', 'Source: ' + R.getAttribute('data-source')));
    });
  }
  // ---------- Swipe deck sort: drag a card left/right (or use buttons) ----------
  function swipeSorts() {
    function shuffle(a) { a = a.slice(); for (var i = a.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)), t = a[i]; a[i] = a[j]; a[j] = t; } return a; }
    document.querySelectorAll('.eg-swipe:not([data-ready])').forEach(function (R) {
      R.setAttribute('data-ready', '1');
      var LEFT = R.getAttribute('data-left') || 'No', RIGHT = R.getAttribute('data-right') || 'Yes';
      var Q = [].slice.call(R.querySelectorAll(':scope > p[data-pile]')).map(function (p) { return { t: p.innerHTML, side: p.getAttribute('data-pile').trim().toLowerCase() === RIGHT.toLowerCase() ? 'r' : 'l', w: p.getAttribute('data-why') || '' }; });
      var box = el('div', 'egsw-box'); R.appendChild(box);
      function start() {
        box.innerHTML = '';
        var top = el('div', 'egsw-top', '<span class="egsw-n"></span><div class="egsw-prog"><i></i></div><span class="egsw-m"></span>');
        var deck = el('div', 'egsw-deck'), btns = el('div', 'egsw-btns'), fb = el('p', 'egsw-fb'), hint = el('p', 'egsw-hint', R.getAttribute('data-hint') || 'Drag the card, or use the buttons.');
        var bl = button('egsw-b is-l', '← ' + LEFT), br = button('egsw-b is-r', RIGHT + ' →'); btns.append(bl, br);
        box.append(top, deck, btns, fb, hint);
        var L = shuffle(Q), i = 0, miss = 0, cur = null, busy = false;
        function stat() { top.querySelector('.egsw-n').textContent = Math.min(i + 1, L.length) + ' of ' + L.length; top.querySelector('i').style.width = (i / L.length * 100) + '%'; top.querySelector('.egsw-m').textContent = miss ? miss + ' miss' + (miss > 1 ? 'es' : '') : ''; }
        function show() {
          deck.innerHTML = ''; stat(); if (i >= L.length) return end();
          if (L[i + 1]) deck.appendChild(el('div', 'egsw-card is-under', L[i + 1].t));
          cur = el('div', 'egsw-card', '<span class="egsw-st is-l">' + LEFT.toUpperCase() + '</span><span class="egsw-st is-r">' + RIGHT.toUpperCase() + '</span>' + L[i].t);
          cur.tabIndex = 0; cur.addEventListener('keydown', function (e) { if (e.key === 'ArrowRight') answer('r'); if (e.key === 'ArrowLeft') answer('l'); });
          deck.appendChild(cur); drag(cur);
        }
        function reset(c) { c.style.transform = ''; c.querySelectorAll('.egsw-st').forEach(function (s) { s.style.opacity = 0; }); }
        function answer(side) {
          if (busy || !cur) return; var q = L[i], ok = side === q.side;
          fb.className = 'egsw-fb is-on ' + (ok ? 'is-ok' : 'is-no');
          fb.innerHTML = ok ? '<b>✓ Correct: ' + (q.side === 'r' ? RIGHT : LEFT) + '</b>' + q.w : '<b>✕ Not quite. Try again.</b>' + (R.getAttribute('data-retry') || 'Think about who could be put at risk.');
          if (ok) {
            busy = true; snd.right(); cur.style.transition = 'transform .5s ease-in, opacity .5s';
            cur.style.transform = 'translateX(' + (side === 'r' ? 140 : -140) + '%) rotate(' + (side === 'r' ? 18 : -18) + 'deg)'; cur.style.opacity = 0;
            setTimeout(function () { i++; busy = false; show(); }, 1600);
          } else { miss++; stat(); snd.wrong(); reset(cur); cur.classList.remove('is-shake'); void cur.offsetWidth; cur.classList.add('is-shake'); }
        }
        function drag(c) {
          var x0 = null, dx = 0;
          c.addEventListener('pointerdown', function (e) { if (busy) return; x0 = e.clientX; dx = 0; c.setPointerCapture(e.pointerId); c.style.transition = 'none'; });
          c.addEventListener('pointermove', function (e) { if (x0 === null) return; dx = e.clientX - x0; c.style.transform = 'translateX(' + dx + 'px) rotate(' + dx / 18 + 'deg)'; c.querySelector('.egsw-st.is-r').style.opacity = Math.max(0, dx / 110); c.querySelector('.egsw-st.is-l').style.opacity = Math.max(0, -dx / 110); });
          function up() { if (x0 === null) return; x0 = null; c.style.transition = ''; if (Math.abs(dx) > 90) answer(dx > 0 ? 'r' : 'l'); else reset(c); dx = 0; }
          c.addEventListener('pointerup', up); c.addEventListener('pointercancel', up);
        }
        function end() {
          box.innerHTML = ''; var e = el('div', 'egsw-end', '<div class="egsw-sc">' + L.length + ' / ' + L.length + '</div><h3>' + (miss ? 'All sorted!' : 'Perfect sort!') + '</h3><p class="egsw-tries">' + (miss ? miss + ' wrong tr' + (miss > 1 ? 'ies' : 'y') + ' along the way.' : 'No wrong tries.') + '</p>');
          var rv = el('div', 'egsw-rev'); Q.forEach(function (q) { rv.appendChild(el('div', '', '<span class="egsw-tag" style="background:' + (q.side === 'r' ? '#1f8a4c' : '#c4161c') + '">' + (q.side === 'r' ? RIGHT : LEFT) + '</span><div>' + q.t + (q.w ? '<small>' + q.w + '</small>' : '') + '</div>')); });
          var again = button('egsw-b is-go', '↻ Try again'); again.addEventListener('click', start); e.append(rv, again); box.appendChild(e);
        }
        bl.addEventListener('click', function () { answer('l'); }); br.addEventListener('click', function () { answer('r'); });
        show();
      }
      start();
    });
  }
  // ---------- Course-complete medal celebration (confetti + stars) ----------
  function medals() {
    var COLS = ['#f5c34a', '#c8962e', '#494e8f', '#007a7a', '#e5541f', '#56b1e5', '#ffffff', '#2fb38a'];
    function confetti(cv) {
      var ctx = cv.getContext('2d'), P = [], raf = null, W = 0, H = 0, dpr = Math.min(2, window.devicePixelRatio || 1);
      function size() { var r = cv.getBoundingClientRect(); W = r.width; H = r.height; cv.width = W * dpr; cv.height = H * dpr; ctx.setTransform(dpr, 0, 0, dpr, 0, 0); }
      function star(s) { ctx.beginPath(); for (var i = 0; i < 5; i++) { var a = (18 + i * 72) * Math.PI / 180, b = (54 + i * 72) * Math.PI / 180; ctx.lineTo(Math.cos(a) * s, -Math.sin(a) * s); ctx.lineTo(Math.cos(b) * s * .45, -Math.sin(b) * s * .45); } ctx.fill(); }
      function loop() {
        ctx.clearRect(0, 0, W, H);
        P = P.filter(function (p) { p.vx *= p.d; p.vy = p.vy * p.d + p.g; p.x += p.vx; p.y += p.vy; p.r += p.vr; p.life--; ctx.save(); ctx.globalAlpha = Math.min(1, p.life / 30); ctx.translate(p.x, p.y); ctx.rotate(p.r); ctx.fillStyle = p.c; if (p.k === 's') star(p.s); else { ctx.scale(1, Math.cos(p.f += .15)); ctx.fillRect(-p.s / 2, -p.s / 4, p.s, p.s / 2); } ctx.restore(); return p.life > 0 && p.y < H + 40; });
        if (P.length) raf = requestAnimationFrame(loop); else { raf = null; ctx.clearRect(0, 0, W, H); }
      }
      function add(o) { o.r = Math.random() * 6; o.vr = (Math.random() - .5) * .3; o.c = o.c || COLS[Math.random() * COLS.length | 0]; o.f = Math.random() * 6; P.push(o); if (!raf) raf = requestAnimationFrame(loop); }
      return {
        burst: function (x, y, n) { size(); for (var i = 0; i < n; i++) { var a = Math.random() * Math.PI * 2, v = 7 * (.4 + Math.random()); add({ x: x, y: y, vx: Math.cos(a) * v, vy: Math.sin(a) * v, k: 's', s: 6 + Math.random() * 5, g: .15, d: .97, life: 150 }); } },
        rain: function (n) { size(); for (var i = 0; i < n; i++) add({ x: Math.random() * W, y: -20 - Math.random() * H * .6, vx: (Math.random() - .5) * 2, vy: 2 + Math.random() * 2, k: 'r', s: 8 + Math.random() * 6, g: .05, d: .995, life: 320 }); }
      };
    }
    function fanfare() { [523, 659, 784, 1047].forEach(function (f, i) { tone(f, i * .12, .35, .22, 'triangle'); }); tone(1047, .5, .7, .18); }
    document.querySelectorAll('.eg-medal:not([data-ready])').forEach(function (R) {
      R.setAttribute('data-ready', '1');
      var ps = [].slice.call(R.querySelectorAll(':scope > p'));
      if (ps[0]) ps[0].classList.add('egm-t1'); if (ps[1]) ps[1].classList.add('egm-t2');
      var cv = document.createElement('canvas'), C = confetti(cv);
      var m = el('div', 'egm-medal', '<span class="egm-rib is-l"></span><span class="egm-rib is-r"></span><div class="egm-disc"><svg viewBox="0 0 24 24" fill="none" stroke="#7a5310" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v18M7 8h10"/></svg></div>');
      R.insertBefore(m, R.firstChild); R.appendChild(cv);
      if (R.getAttribute('data-tag')) R.appendChild(el('span', 'egm-pill', R.getAttribute('data-tag')));
      var again = button('egm-again', '↻ Celebrate again'); R.appendChild(again);
      function go() {
        R.classList.remove('is-go'); void R.offsetWidth; R.classList.add('is-go');
        setTimeout(function () { var r = R.getBoundingClientRect(), d = m.querySelector('.egm-disc').getBoundingClientRect(); C.burst(d.left - r.left + d.width / 2, d.top - r.top + d.height / 2, 40); tone(1568, 0, .15, .2); tone(2093, .08, .3, .15); fanfare(); }, 1200);
        setTimeout(function () { C.rain(160); }, 1400);
      }
      again.addEventListener('click', go);
      if ('IntersectionObserver' in window) { var io = new IntersectionObserver(function (es) { if (es[0].isIntersecting) { io.disconnect(); go(); } }, { threshold: .45 }); io.observe(R); } else go();
    });
  }
  // ---------- Relabel the last-slide "Next: Go to My courses" button as "Exit Course" ----------
  function exitButtons() {
    document.querySelectorAll('a.slide-footer__buttons__button:not([data-eg-exit])').forEach(function (a) {
      var h = (a.getAttribute('href') || '').replace(/[?#].*$/, '').replace(/\/$/, '');
      if (!/\/my-courses$/.test(h)) return;
      a.setAttribute('data-eg-exit', '1');
      var s = a.querySelector('.ui-small'); if (s) s.remove();
      var m = a.querySelector('.ui-weight-semibold'); if (m) m.textContent = 'Exit Course';
    });
  }
  // ---------- Impact stats: live estimate counter + count-up stat stack ----------
  function impacts() {
    var IC = { globe: '<circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3c3 3.3 3 14.7 0 18M12 3c-3 3.3-3 14.7 0 18"/>', heart: '<path d="M12 20s-7-4.4-7-10a4 4 0 0 1 7-2.6A4 4 0 0 1 19 10c0 5.6-7 10-7 10z"/>', users: '<circle cx="9" cy="8" r="3.5"/><path d="M2.5 20a6.5 6.5 0 0 1 13 0"/><circle cx="17" cy="9" r="2.5"/><path d="M16 14.5a5 5 0 0 1 5.5 5"/>', laptop: '<rect x="4" y="5" width="16" height="11" rx="1.5"/><path d="M2 19h20"/>', book: '<path d="M4 5a2 2 0 0 1 2-2h13v16H6a2 2 0 0 0-2 2z"/><path d="M4 19V5"/>', chat: '<path d="M4 5h16v11H9l-5 4z"/>' };
    document.querySelectorAll('.eg-impact:not([data-ready])').forEach(function (R) {
      R.setAttribute('data-ready', '1');
      var perDay = parseFloat(R.getAttribute('data-per-day')) || 0, rate = perDay / 86400;
      var dp = R.querySelector(':scope > p[data-daily]'), lp = R.querySelector(':scope > p:not([data-daily])'), sub = lp ? lp.innerHTML : 'shared since you opened this page';
      var live = el('div', 'egi-live', '<span class="egi-dot"><i></i>LIVE ESTIMATE</span><div class="egi-big">0</div><div class="egi-sub">' + sub + '</div>' + (perDay && !dp ? '<div class="egi-foot">Based on an average of <b>' + perDay.toLocaleString() + '</b> a day</div>' : ''));
      var stack = el('div', 'egi-stack'), nums = [];
      [].forEach.call(R.querySelectorAll(':scope > ul > li'), function (li, i) {
        var ov = li.querySelector('small'), st = li.querySelector('strong'), rest = li.cloneNode(true);
        [].forEach.call(rest.querySelectorAll('small,strong'), function (x) { x.remove(); });
        var s = el('div', 'egi-s', '<span class="egi-ic"><svg viewBox="0 0 24 24">' + (IC[li.getAttribute('data-icon')] || IC.globe) + '</svg></span><div>' + (ov ? '<span class="egi-ov">' + ov.textContent + '</span>' : '') + '<div class="egi-n">' + (st ? st.textContent : '') + '</div><div class="egi-l">' + rest.innerHTML.trim() + '</div></div>');
        s.style.transitionDelay = (i * 120) + 'ms'; stack.appendChild(s); nums.push(s.querySelector('.egi-n'));
      });
      if (dp) {
        var dk = dp.querySelector('small'), dn = dp.querySelector('strong'), dr = dp.cloneNode(true);
        [].forEach.call(dr.querySelectorAll('small,strong'), function (x) { x.remove(); });
        var daily = el('div', 'egi-live egi-daily', (dk ? '<span class="egi-k">' + dk.textContent + '</span>' : '') + '<div class="egi-big">' + (dn ? dn.textContent : '') + '</div><div class="egi-sub">' + dr.innerHTML.trim() + '</div>');
        var left = el('div', 'egi-left'); left.append(daily, live); R.append(left, stack); nums.push(daily.querySelector('.egi-big'));
      } else R.append(live, stack);
      var big = live.querySelector('.egi-big'), t0 = performance.now();
      if (rate) setInterval(function () { big.textContent = Math.floor((performance.now() - t0) / 1000 * rate).toLocaleString(); }, 100);
      function countUp(n) { var m = n.textContent.match(/^(\D*)([\d,.]+)(.*)$/); if (!m) return; var end = parseFloat(m[2].replace(/,/g, '')), comma = m[2].indexOf(',') > -1, s0 = null;
        function f(t) { if (!s0) s0 = t; var k = Math.min((t - s0) / 1500, 1), v = Math.round(end * (1 - Math.pow(1 - k, 3))); n.textContent = m[1] + (comma ? v.toLocaleString() : v) + m[3]; if (k < 1) requestAnimationFrame(f); }
        n.textContent = m[1] + '0' + m[3]; requestAnimationFrame(f); }
      function go() { R.classList.add('is-in'); nums.forEach(countUp); }
      if ('IntersectionObserver' in window) { var io = new IntersectionObserver(function (es) { if (es[0].isIntersecting) { io.disconnect(); go(); } }, { threshold: .4 }); io.observe(R); } else go();
    });
  }
  // ---------- 5-Star stats: stars light up in turn, twinkle, and sparkle on hover/tap ----------
  function stars() {
    var P = 'M12 2.5l2.9 6.1 6.6.8-4.9 4.6 1.3 6.6L12 17.3l-5.9 3.3 1.3-6.6-4.9-4.6 6.6-.8z';
    document.querySelectorAll('.eg-stars:not([data-ready])').forEach(function (U) {
      U.setAttribute('data-ready', '1');
      var lis = [].slice.call(U.children);
      lis.forEach(function (li, i) {
        var w = document.createElement('span'); w.className = 'egs-star'; w.setAttribute('aria-hidden', 'true');
        w.innerHTML = '<svg viewBox="0 0 24 24"><path d="' + P + '"/></svg>';
        li.insertBefore(w, li.firstChild); li.style.setProperty('--i', i);
        var last = 0;
        li._burst = function () {
          var now = Date.now(); if (now - last < 450) return; last = now;
          for (var k = 0; k < 9; k++) {
            var s = document.createElement('i'), a = k / 9 * Math.PI * 2 + Math.random() * .5, d = 30 + Math.random() * 18;
            s.className = 'egs-spark'; s.style.setProperty('--x', Math.cos(a) * d + 'px'); s.style.setProperty('--y', Math.sin(a) * d + 'px');
            w.appendChild(s); setTimeout(s.remove.bind(s), 800);
          }
        };
        li.addEventListener('mouseenter', function () { if (U.classList.contains('is-done')) li._burst(); });
        li.addEventListener('click', function () { if (U.classList.contains('is-lit')) li._burst(); });
      });
      function go() {
        U.classList.add('is-lit');
        lis.forEach(function (li, i) { setTimeout(li._burst, 650 + i * 280); });
        setTimeout(function () { U.classList.add('is-done'); }, 900 + lis.length * 280);
      }
      if ('IntersectionObserver' in window) { var io = new IntersectionObserver(function (es) { if (es[0].isIntersecting) { io.disconnect(); go(); } }, { threshold: .4 }); io.observe(U); } else go();
    });
  }
  function run() { banners(); iconCols(); highlights(); notes(); quizzes(); tidy(); counters(); flips(); sorts(); orders(); chats(); stepsUI(); journeys(); connects(); scales(); engels(); circlesUI(); tabsUI(); stampGames(); msgQuizzes(); convoGames(); wheels(); markers(); pinboards(); replyPractice(); wwlMaps(); top10s(); swipeSorts(); medals(); exitButtons(); impacts(); stars(); }
  var t; new MutationObserver(function () { clearTimeout(t); t = setTimeout(run, 60); }).observe(document.body, { childList: true, subtree: true });
  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', run); else run();
})();
</script>
	  
  

  </body>
</html>
