PageSourceSearch

https://simbound-astro.netlify.app/about/

html simbound-astro.netlify.app collected 2026-10-03 11:24:36 UTC 197,655 bytes, 907 lines download raw bytes

1<!DOCTYPE html><html lang="en" data-beasties-container> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="icon" type="image/png" sizes="32x32" href="/favicon.png"><link rel="apple-touch-icon" href="/favicon.svg"><link rel="manifest" href="/site.webmanifest"><meta name="theme-color" content="#6B2D2D"><meta name="generator" content="Astro v5.17.2"><title>Simbound |  About</title><meta name="description" content="Learn how Simbound got started, and some of the values that guide us into our mission. Meet the team and read our credo."><meta name="keywords" content="about simbound,learn more about simbound"><meta name="robots" content="noindex"><meta property="og:url" content="https://simbound-astro.netlify.app/about/"><meta property="og:title" content="Simbound |  About"><meta property="og:description" content="Learn how Simbound got started, and some of the values that guide us into our mission. Meet the team and read our credo."><meta property="og:type" content="website"><meta property="og:image" content="https://images.prismic.io/simbound/abPtuFxvIZEnjpWW_OGAboutpage.png?auto=format,compress"><meta property="og:image:alt" content="Simbound |  About"><meta property="og:site_name" content="Simbound"><meta property="og:locale" content="en_US"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@simbound"><meta name="twitter:title" content="Simbound |  About"><meta name="twitter:description" content="Learn how Simbound got started, and some of the values that guide us into our mission. Meet the team and read our credo."><meta name="twitter:image" content="https://images.prismic.io/simbound/abPtuFxvIZEnjpWW_OGAboutpage.png?auto=format,compress"><meta name="dc.language" content="en"><meta name="dc.language.iso" content="en_US"><meta name="dc.publisher" content="Simbound"><meta name="dc.title" content="Simbound |  About"><meta name="dc.description" content="Learn how Simbound got started, and some of the values that guide us into our mission. Meet the team and read our credo."><link rel="canonical" href="https://simbound-astro.netlify.app/about/"><link rel="alternate" href="https://simbound-astro.netlify.app/about/" hreflang="en"><link rel="alternate" href="https://simbound-astro.netlify.app/about/" hreflang="x-default"><link rel="alternate" type="application/rss+xml" title="Simbound Blog" href="/rss.xml"><link rel="preconnect" href="https://code.iconify.design"><link rel="preconnect" href="https://images.prismic.io">
1<script src="https://code.iconify.design/iconify-icon/2.3.0/iconify-icon.min.js" async></script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","@id":"https://simbound.com/#organization","name":"APOLLO EDTECH SRL","alternateName":"Simbound","description":"Educational simulation software of Websites, Search Advertising, Email, Social Media Marketing, Community, Affiliate for digital marketing courses","url":"https://simbound.com/","logo":"https://simbound.com/uploads/assets/simbound-logo/Simbound_Logo.png","email":"[email protected]","contactPoint":{"@type":"ContactPoint","contactType":"customer support","email":"[email protected]","telephone":"+40 723 673 388"},"vatID":"RO28078603","foundingDate":"2014","address":{"@type":"PostalAddress","streetAddress":"Str. Tabacarilor no. 15B","postalCode":"400136","addressLocality":"Cluj-Napoca","addressCountry":"RO"},"sameAs":["https://www.trustpilot.com/review/simbound.com","https://www.linkedin.com/company/simbound/"]}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","inLanguage":"en","mainEntity":[{"@type":"Question","name":"What exactly is Simbound?","acceptedAnswer":{"@type":"Answer","text":"Simbound is the pioneering digital marketing simulation platform designed for higher education. It lets students practise SEO, search advertising, email marketing, social media, community management, and affiliate marketing in a realistic, risk-free competitive environment."}},{"@type":"Question","name":"Who is behind Simbound?","acceptedAnswer":{"@type":"Answer","text":"Simbound was founded by a team of marketing professionals and technologists passionate about education and simulations. Today the team includes educators, engineers, and data scientists working from Europe and beyond."}},{"@type":"Question","name":"How do universities get started?","acceptedAnswer":{"@type":"Answer","text":"It starts with requesting access credentials and a personalized tutorial. Our team walks you through the platform, helps map simulations to your syllabus, and supports you through the first semester. Most instructors are up and running within a few days."}},{"@type":"Question","name":"Where can I learn more or schedule a demo?","acceptedA
1nswer":{"@type":"Answer","text":"Visit our Request a Demo page or reach out directly at [email protected]. We offer personalised walkthroughs and pilot programs so you can experience the platform before committing."}}]}</script>
1<style>@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-900:oklch(42.1% .095 57.708);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-500:oklch(55.1% .027 264.364);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--blur-xl:24px;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#6b2d2d;--color-primary-dark:#4a1a1a;--color-primary-light:#8b4545;--color-secondary:#d4a053;--color-secondary-dark:#a67b3d;--color-secondary-light:#e8c47a;--color-sage:#8b7355;--color-accent:#c75b2a;--color-accent-dark:#a14520;--color-accent-contrast:#8e3a16;--color-accent-contrast-dark:#6e2d10;--color-accent-light:#e07a4a;--color-accent-bg:#fff8f2;--color-surface:#faf5ef;--color-surface-warm:#fef3e8;--color-cream:#f3eae0;--color-text:#2d1f1f;--color-text-muted:#5c4a42;--color-border:#d9cfc5;--font-primary:"Plus Jakarta Sans Variable","Plus Jakarta Sans",sans-serif;--font-secondary:"Lora Variable","Lora",Georgia,serif;--cta-px:2rem;--cta-py:1rem;--cta-font-size:.875rem}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}h1,h2,h3{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}kbd{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}summary{display:list-item}ul{list-style:none}img,svg{vertical-align:middle;display:block}img{max-width:100%;height:auto}button,input{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}
1button,input:where([type=button],[type=reset],[type=submit]){appearance:button}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.-top-2{top:calc(var(--spacing)*-2)}.-top-6{top:calc(var(--spacing)*-6)}.-top-32{top:calc(var(--spacing)*-32)}.top-0{top:calc(var(--spacing)*0)}.top-18{top:calc(var(--spacing)*18)}.top-24{top:calc(var(--spacing)*24)}.top-\[5\%\]{top:5%}.top-\[10\%\]{top:10%}.top-\[15\%\]{top:15%}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.-right-32{right:calc(var(--spacing)*-32)}.right-0{right:calc(var(--spacing)*0)}.right-5{right:calc(var(--spacing)*5)}.right-\[4\%\]{right:4%}.right-\[10\%\]{right:10%}.right-\[12\%\]{right:12%}.right-\[15\%\]{right:15%}.right-\[16\%\]{right:16%}.-bottom-1{bottom:calc(var(--spacing)*-1)}.-bottom-48{bottom:calc(var(--spacing)*-48)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-\[10\%\]{bottom:10%}.-left-2{left:calc(var(--spacing)*-2)}.-left-24{left:calc(var(--spacing)*-24)}.left-0{left:calc(var(--spacing)*0)}.left-6{left:calc(var(--spacing)*6)}.left-\[5\%\]{left:5%}.left-\[6\%\]{left:6%}.left-\[8\%\]{left:8%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.m-0{margin:calc(var(--spacing)*0)}.mx-auto{margin-inline:auto}.-mt-1{margin-top:calc(var(--spacing)*-1)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-10{margin-top:calc(var(--spacing)*10)}.mt-12{margin-top:calc(var(--spacing)*12)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-7{margin-bottom:calc(var(--spacing)*7)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.mb-14{margin-bottom:calc(var(--spacing)*14)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-18{height:calc(var(--spacing)*18)}.h-24{height:calc(var(--spacing)*24)}.h-32{height:calc(var(--spacing)*32)}.h-\[2px\]{height:2px}.h-\[60\%\]{height:60%}.h-\[200px\]{height:200px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-full{height:100%}.h-px{height:1px}.max-h-\[60vh\]{max-height:60vh}.min-h-\[520px\]{min-height:520px}.min-h-screen{min-height:100vh}.w-1{width:calc(var(--spacing)*1)}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-\[1px\]{width:1px}.w-\[2px\]{width:2px}.w-\[200px\]{width:200px}.w-\[280px\]{width:280px}.w-\[300px\]{width:300px}.w-\[400px\]{width:400px}.w-\[500px\]{width:500px}.w-auto{width:auto}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-50{min-width:calc(var(--spacing)*50)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-center{transform-origin:50%}.origin-top{transform-origin:top}.translate-x-3{--tw-translate-x:calc(var(--spacing)*3);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-2{rotate:2deg}.rotate-\[15deg\]{rotate:15deg}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.columns-1{columns:1}.break-inside-avoid{break-inside:avoid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}
1.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}.gap-12{gap:calc(var(--spacing)*12)}.gap-x-3{column-gap:calc(var(--spacing)*3)}.gap-x-6{column-gap:calc(var(--spacing)*6)}.gap-y-4{row-gap:calc(var(--spacing)*4)}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-accent-light\/40{border-color:#e07a4a66}@supports (color:color-mix(in lab,red,red)){.border-accent-light\/40{border-color:color-mix(in oklab,var(--color-accent-light)40%,transparent)}}.border-border{border-color:var(--color-border)}.border-border\/30{border-color:#d9cfc54d}@supports (color:color-mix(in lab,red,red)){.border-border\/30{border-color:color-mix(in oklab,var(--color-border)30%,transparent)}}.border-border\/40{border-color:#d9cfc566}@supports (color:color-mix(in lab,red,red)){.border-border\/40{border-color:color-mix(in oklab,var(--color-border)40%,transparent)}}.border-primary{border-color:var(--color-primary)}.border-primary\/20{border-color:#6b2d2d33}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.border-secondary\/30{border-color:#d4a0534d}@supports (color:color-mix(in lab,red,red)){.border-secondary\/30{border-color:color-mix(in oklab,var(--color-secondary)30%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.border-l-accent{border-left-color:var(--color-accent)}.border-l-primary{border-left-color:var(--color-primary)}.border-l-secondary{border-left-color:var(--color-secondary)}.bg-accent{background-color:var(--color-accent)}.bg-accent-contrast{background-color:var(--color-accent-contrast)}.bg-accent-dark{background-color:var(--color-accent-dark)}.bg-accent\/40{background-color:#c75b2a66}@supports (color:color-mix(in lab,red,red)){.bg-accent\/40{background-color:color-mix(in oklab,var(--color-accent)40%,transparent)}}.bg-accent\/\[0\.03\]{background-color:#c75b2a08}@supports (color:color-mix(in lab,red,red)){.bg-accent\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-accent)3%,transparent)}}.bg-accent\/\[0\.06\]{background-color:#c75b2a0f}@supports (color:color-mix(in lab,red,red)){.bg-accent\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-accent)6%,transparent)}}.bg-accent\/\[0\.025\]{background-color:#c75b2a06}@supports (color:color-mix(in lab,red,red)){.bg-accent\/\[0\.025\]{background-color:color-mix(in oklab,var(--color-accent)2.5%,transparent)}}.bg-cream{background-color:var(--color-cream)}.bg-current{background-color:currentColor}.bg-primary{background-color:var(--color-primary)}.bg-primary-dark{background-color:var(--color-primary-dark)}.bg-primary-dark\/80{background-color:#4a1a1acc}@supports (color:color-mix(in lab,red,red)){.bg-primary-dark\/80{background-color:color-mix(in oklab,var(--color-primary-dark)80%,transparent)}}.bg-primary-light{background-color:var(--color-primary-light)}.bg-primary\/\[0\.03\]{background-color:#6b2d2d08}@supports (color:color-mix(in lab,red,red)){.bg-primary\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-primary)3%,transparent)}}.bg-primary\/\[0\.04\]{background-color:#6b2d2d0a}@supports (color:color-mix(in lab,red,red)){.bg-primary\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-primary)4%,transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-secondary-dark{background-color:var(--color-secondary-dark)}.bg-secondary\/\[0\.03\]{background-color:#d4a05308}@supports (color:color-mix(in lab,red,red)){.bg-secondary\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-secondary)3%,transparent)}}.bg-secondary\/\[0\.08\]{background-color:#d4a05314}@supports (color:color-mix(in lab,red,red)){.bg-secondary\/\[0\.08\]{background-color:color-mix(in oklab,var(--color-secondary)8%,transparent)}}.bg-surface{background-color:var(--color-surface)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-white\/\[0\.06\]{background-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-accent{--tw-gradient-from:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var
1(--tw-gradient-to-position))}.from-border{--tw-gradient-from:var(--color-border);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-border\/40{--tw-gradient-from:#d9cfc566}@supports (color:color-mix(in lab,red,red)){.from-border\/40{--tw-gradient-from:color-mix(in oklab,var(--color-border)40%,transparent)}}.from-border\/40{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary-dark\/60{--tw-gradient-from:#4a1a1a99}@supports (color:color-mix(in lab,red,red)){.from-primary-dark\/60{--tw-gradient-from:color-mix(in oklab,var(--color-primary-dark)60%,transparent)}}.from-primary-dark\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary\/20{--tw-gradient-from:#6b2d2d33}@supports (color:color-mix(in lab,red,red)){.from-primary\/20{--tw-gradient-from:color-mix(in oklab,var(--color-primary)20%,transparent)}}.from-primary\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-accent\/30{--tw-gradient-via:#c75b2a4d}@supports (color:color-mix(in lab,red,red)){.via-accent\/30{--tw-gradient-via:color-mix(in oklab,var(--color-accent)30%,transparent)}}.via-accent\/30{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-accent\/\[0\.08\]{--tw-gradient-via:#c75b2a14}@supports (color:color-mix(in lab,red,red)){.via-accent\/\[0\.08\]{--tw-gradient-via:color-mix(in oklab,var(--color-accent)8%,transparent)}}.via-accent\/\[0\.08\]{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-border\/20{--tw-gradient-via:#d9cfc533}@supports (color:color-mix(in lab,red,red)){.via-border\/20{--tw-gradient-via:color-mix(in oklab,var(--color-border)20%,transparent)}}.via-border\/20{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-border\/60{--tw-gradient-via:#d9cfc599}@supports (color:color-mix(in lab,red,red)){.via-border\/60{--tw-gradient-via:color-mix(in oklab,var(--color-border)60%,transparent)}}.via-border\/60{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/\[0\.06\]{--tw-gradient-via:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.via-white\/\[0\.06\]{--tw-gradient-via:color-mix(in oklab,var(--color-white)6%,transparent)}}.via-white\/\[0\.06\]{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-accent-light{--tw-gradient-to:var(--color-accent-light);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var
1(--tw-gradient-to-position))}.to-secondary\/20{--tw-gradient-to:#d4a05333}@supports (color:color-mix(in lab,red,red)){.to-secondary\/20{--tw-gradient-to:color-mix(in oklab,var(--color-secondary)20%,transparent)}}.to-secondary\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.fill-current{fill:currentColor}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-2{padding:calc(var(--spacing)*2)}.p-6{padding:calc(var(--spacing)*6)}.p-7{padding:calc(var(--spacing)*7)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-20{padding-block:calc(var(--spacing)*20)}.py-24{padding-block:calc(var(--spacing)*24)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-16{padding-top:calc(var(--spacing)*16)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-12{padding-right:calc(var(--spacing)*12)}.pb-5{padding-bottom:calc(var(--spacing)*5)}.pb-10{padding-bottom:calc(var(--spacing)*10)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-5{padding-left:calc(var(--spacing)*5)}.text-center{text-align:center}.text-right{text-align:right}.font-primary{font-family:var(--font-primary)}.font-secondary{font-family:var(--font-secondary)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.95rem\]{font-size:.95rem}.text-\[1\.02rem\]{font-size:1.02rem}.text-\[7rem\]{font-size:7rem}.text-\[8rem\]{font-size:8rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-\[1\.1\]{--tw-leading:1.1;line-height:1.1}.leading-\[1\.25\]{--tw-leading:1.25;line-height:1.25}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.15em\]{--tw-tracking:.15em;letter-spacing:.15em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-accent{color:var(--color-accent)}.text-accent-light{color:var(--color-accent-light)}.text-accent\/20{color:#c75b2a33}@supports (color:color-mix(in lab,red,red)){.text-accent\/20{color:color-mix(in oklab,var(--color-accent)20%,transparent)}}.text-accent\/30{color:#c75b2a4d}@supports (color:color-mix(in lab,red,red)){.text-accent\/30{color:color-mix(in oklab,var(--color-accent)30%,transparent)}}.text-primary{color:var(--color-primary)}.text-primary-dark{color:var(--color-primary-dark)}.text-primary\/15{color:#6b2d2d26}@supports (color:color-mix(in lab,red,red)){.text-primary\/15{color:color-mix(in oklab,var(--color-primary)15%,transparent)}}.text-primary\/\[0\.06\]{color:#6b2d2d0f}@supports (color:color-mix(in lab,red,red)){.text-primary\/\[0\.06\]{color:color-mix(in oklab,var(--color-primary)6%,transparent)}}.text-secondary{color:var(--color-secondary)}.text-secondary-light{color:var(--color-secondary-light)}.text-secondary\/25{color:#d4a05340}@supports (color:color-mix(in lab,red,red)){.text-secondary\/25{color:color-mix(in oklab,var(--color-secondary)25%,transparent)}}.text-text{color:var(--color-text)}.text-text-muted{color:var(--color-text-muted)}.text-text-muted\/70{color:#5c4a42b3}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/70{color:color-mix(in oklab,var(--color-text-muted)70%,transparent)}}.text-text-muted\/80{color:#5c4a42cc}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/80{color:color-mix(in oklab,var(--color-text-muted)80%,transparent)}}.text-white{color:var(--color-white)}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.text-white\/90{color:color-mix(in oklab,var(--color-white)90%,transparent)}}.uppercase{text-transform:uppercase}.italic{font-style:italic}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-\[0\.03\]{opacity:.03}
1.opacity-\[0\.08\]{opacity:.08}.opacity-\[0\.035\]{opacity:.035}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.10\)\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 8px 30px var(--tw-sha
1dow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
1dow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-accent\/20{--tw-ring-color:#c75b2a33}@supports (color:color-mix(in lab,red,red)){.ring-accent\/20{--tw-ring-color:color-mix(in oklab,var(--color-accent)20%,transparent)}}.ring-primary\/15{--tw-ring-color:#6b2d2d26}@supports (color:color-mix(in lab,red,red)){.ring-primary\/15{--tw-ring-color:color-mix(in oklab,var(--color-primary)15%,transparent)}}.ring-secondary\/20{--tw-ring-color:#d4a05333}@supports (color:color-mix(in lab,red,red)){.ring-secondary\/20{--tw-ring-color:color-mix(in oklab,var(--color-secondary)20%,transparent)}}.ring-white{--tw-ring-color:var(--color-white)}.blur-\[60px\]{--tw-blur:blur(60px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-\[70px\]{--tw-blur:blur(70px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-\[80px\]{--tw-blur:blur(80px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-\[100px\]{--tw-blur:blur(100px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-open\:rotate-45:is(:where(.group):is([open],:popover-open,:open) *){rotate:45deg}.group-open\:border-accent:is(:where(.group):is([open],:popover-open,:open) *){border-color:var(--color-accent)}.group-open\:bg-accent:is(:where(.group):is([open],:popover-open,:open) *){background-color:var(--color-accent)}.group-open\:text-primary:is(:where(.group):is([open],:popover-open,:open) *){color:var(--color-primary)}.group-open\:text-white:is(:where(.group):is([open],:popover-open,:open) *){color:var(--color-white)}@media(hover:hover){.group-hover\:rotate-0:is(:where(.group):hover *){rotate:none}.group-hover\:text-accent\/50:is(:where(.group):hover *){color:#c75b2a80}@supports (color:color-mix(in lab,red,red)){.group-hover\:text-accent\/50:is(:where(.group):hover *){color:color-mix(in oklab,var(--color-accent)50%,transparent)}}.group-hover\:shadow-\[0_12px_32px_rgba\(0\,0\,0\,0\.14\)\]:is(:where(.group):hover *){--tw-shadow:0 12px 32px var(--tw-sha
1dow-color,#00000024);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-hover\:shadow-\[0_12px_40px_rgba\(0\,0\,0\,0\.12\)\]:is(:where(.group):hover *){--tw-shadow:0 12px 40px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.group-\[\.open\]\:rotate-180:is(:where(.group).open *){rotate:180deg}.placeholder\:text-text-muted\/70::placeholder{color:#5c4a42b3}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-text-muted\/70::placeholder{color:color-mix(in oklab,var(--color-text-muted)70%,transparent)}}.backdrop\:bg-black\/40::backdrop{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.backdrop\:bg-black\/40::backdrop{background-color:color-mix(in oklab,var(--color-black)40%,transparent)}}.backdrop\:backdrop-blur-sm::backdrop{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}@media(hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-accent-light:hover{border-color:var(--color-accent-light)}.hover\:border-primary\/15:hover{border-color:#6b2d2d26}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/15:hover{border-color:color-mix(in oklab,var(--color-primary)15%,transparent)}}.hover\:border-secondary:hover{border-color:var(--color-secondary)}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-accent-contrast-dark:hover{background-color:var(--color-accent-contrast-dark)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:bg-surface:hover{background-color:var(--color-surface)}.hover\:bg-white\/\[0\.12\]:hover{background-color:#ffffff1f}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.12\]:hover{background-color:color-mix(in oklab,var(--color-white)12%,transparent)}}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:text-text:hover{color:var(--color-text)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-\[0_18px_55px_rgba\(0\,0\,0\,0\.09\)\]:hover{--tw-shadow:0 18px 55px var(--tw-sha
1dow-color,#00000017);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-primary\/40:focus-visible{--tw-ring-color:#6b2d2d66}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-primary\/40:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}@media(min-width:40rem){.sm\:block{display:block}.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}@media(min-width:48rem){.md\:z-10{z-index:10}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-8{grid-column:span 8/span 8}.md\:max-w-\[380px\]{max-width:380px}.md\:min-w-0{min-width:calc(var(--spacing)*0)}.md\:flex-1{flex:1}.md\:-translate-y-2{--tw-translate-y:calc(var(--spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.md\:translate-y-4{--tw-translate-y:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.md\:-rotate-3{rotate:-3deg}.md\:rotate-0{rotate:none}.md\:rotate-3{rotate:3deg}.md\:columns-2{columns:2}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-4{gap:calc(var(--spacing)*4)}.md\:p-8{padding:calc(var(--spacing)*8)}}@media(min-width:64rem){.lg\:absolute{position:absolute}.lg\:sticky{position:sticky}.lg\:-top-8{top:calc(var(--spacing)*-8)}.lg\:top-24{top:calc(var(--spacing)*24)}.lg\:-left-6{left:calc(var(--spacing)*-6)}.lg\:left-1\/2{left:50%}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-start-2{grid-column-start:2}.lg\:col-start-7{grid-column-start:7}.lg\:mx-auto{margin-inline:auto}.lg\:mt-14{margin-top:calc(var(--spacing)*14)}.lg\:mt-16{margin-top:calc(var(--spacing)*16)}.lg\:mt-\[12vh\]{margin-top:12vh}.lg\:mb-8{margin-bottom:calc(var(--spacing)*8)}.lg\:mb-14{margin-bottom:calc(var(--spacing)*14)}.lg\:mb-16{margin-bottom:calc(var(--spacing)*16)}.lg\:mb-20{margin-bottom:calc(var(--spacing)*20)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:min-h-\[600px\]{min-height:600px}.lg\:w-1\/2{width:50%}.lg\:-translate-x-1\/2{--tw-translate-x:-50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.lg\:-translate-x-\[1px\]{--tw-translate-x:-1px ;translate:var(--tw-translate-x)var(--tw-translate-y)}.lg\:columns-3{columns:3}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:gap-0{gap:calc(var(--spacing)*0)}.lg\:gap-5{gap:calc(var(--spacing)*5)}.lg\:gap-6{gap:calc(var(--spacing)*6)}.lg\:gap-8{gap:calc(var(--spacing)*8)}.lg\:gap-16{gap:calc(var(--spacing)*16)}.lg\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.lg\:border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.lg\:border-white\/\[0\.08\]{border-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.lg\:p-8{padding:calc(var(--spacing)*8)}.lg\:p-9{padding:calc(var(--spacing)*9)}.lg\:p-10{padding:calc(var(--spacing)*10)}.lg\:px-8{padding-inline:calc(var(--spacing)*8)}.lg\:py-14{padding-block:calc(var(--spacing)*14)}
1.lg\:py-28{padding-block:calc(var(--spacing)*28)}.lg\:py-32{padding-block:calc(var(--spacing)*32)}.lg\:pt-4{padding-top:calc(var(--spacing)*4)}.lg\:pt-8{padding-top:calc(var(--spacing)*8)}.lg\:pl-12{padding-left:calc(var(--spacing)*12)}.lg\:text-center{text-align:center}.lg\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.lg\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.lg\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.lg\:text-\[1\.08rem\]{font-size:1.08rem}.lg\:text-\[2\.75rem\]{font-size:2.75rem}.lg\:text-\[3\.5rem\]{font-size:3.5rem}.lg\:text-\[11px\]{font-size:11px}.lg\:text-\[12rem\]{font-size:12rem}.lg\:leading-\[1\.2\]{--tw-leading:1.2;line-height:1.2}}@media(min-width:80rem){.xl\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}}:root{--accent-rgb:199 91 42;--secondary-rgb:212 160 83;--cta-shadow:0 4px 20px #c75b2a4d;--cta-shadow-hover:0 8px 36px #c75b2a66}@supports not (background-image:linear-gradient(in oklab,red,red)){.bg-gradient-to-t{--tw-gradient-position:to top}.bg-gradient-to-b{--tw-gradient-position:to bottom}.bg-gradient-to-r{--tw-gradient-position:to right}}html{scroll-behavior:smooth}body{font-family:var(--font-primary);color:var(--color-text)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s cubic-bezier(.23,1,.32,1);transition-delay:var(--reveal-delay, 0s)}.reveal.revealed{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}#site-header[data-astro-cid-5blmo7yk]{background:#fff0;backdrop-filter:none}.nav-link-color[data-astro-cid-5blmo7yk]{color:var(--color-text)}
1#site-header[data-astro-cid-5blmo7yk]:not(.scrolled) .nav-link-color[data-astro-cid-5blmo7yk]{color:var(--color-primary-dark)}.nav-link-color[data-astro-cid-5blmo7yk]:hover{color:var(--color-primary)!important}.tp-wrap[data-astro-cid-4xaaofsg]{position:fixed;inset:0;pointer-events:none;z-index:50;overflow:hidden}.tp[data-astro-cid-4xaaofsg]{position:absolute;top:-30px;will-change:transform;animation-timing-function:linear;animation-iteration-count:infinite}.tp-leaf[data-astro-cid-4xaaofsg]{width:22px;height:24px;opacity:.45;transform:scale(var(--tp-scale, 1)) rotate(var(--tp-rot, 0deg));animation-name:tp-leaf-fall}@keyframes tp-leaf-fall{0%{transform:translateY(-5vh) translate(0) rotate(var(--tp-rot, 0deg)) scale(var(--tp-scale, 1));opacity:0}6%{opacity:.45}25%{transform:translateY(25vh) translate(calc(var(--tp-drift, 40px) * .4)) rotate(calc(var(--tp-rot, 0deg) + 90deg)) scale(var(--tp-scale, 1))}50%{transform:translateY(50vh) translate(calc(var(--tp-drift, 40px) * -.2)) rotate(calc(var(--tp-rot, 0deg) + 200deg)) scale(var(--tp-scale, 1))}75%{transform:translateY(75vh) translate(calc(var(--tp-drift, 40px) * .7)) rotate(calc(var(--tp-rot, 0deg) + 300deg)) scale(var(--tp-scale, 1))}90%{opacity:.35}to{transform:translateY(105vh) translate(var(--tp-drift, 40px)) rotate(calc(var(--tp-rot, 0deg) + 400deg)) scale(var(--tp-scale, 1));opacity:0}}@media(prefers-reduced-motion:reduce){.tp-wrap[data-astro-cid-4xaaofsg]{display:none}}.fwpb[data-astro-cid-ldpmy3iq]{--fwpb-bg-start:#003130;--fwpb-bg-middle:#0a4a48;--fwpb-bg-end:#003130;--fwpb-text:#ffffff;--fwpb-accent:#fbb03b;--fwpb-icon:#7dd4d3;--fwpb-eyebrow-bg:#f7941e;--fwpb-eyebrow-text:#ffffff;position:sticky;top:4.5rem;z-index:30;display:flex;align-items:stretch;min-height:44px;width:100%;overflow:hidden;text-decoration:none;color:var(--fwpb-text);background:linear-gradient(90deg,var(--fwpb-bg-start) 0%,var(--fwpb-bg-middle) 50%,var(--fwpb-bg-end) 100%);box-shadow:inset 0 1px #ffffff1a,inset 0 -1px #0000004d,0 6px 22px -10px #00000073;isolation:isolate;will-change:transform}.fwpb-sweep[data-astro-cid-ldpmy3iq]{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 360px 80px at 22% 50%,rgba(81,195,194,.18),transparent 65%),radial-gradient(ellipse 260px 60px at 78% 50%,rgba(247,148,30,.12),transparent 65%);animation:fwpb-sweep 18s ease-in-out infinite;mix-blend-mode:screen}.fwpb-grain[data-astro-cid-ldpmy3iq]{position:absolute;inset:0;pointer-events:none;opacity:.45;background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.045) 1px,transparent 0);background-size:3px 3px}.fwpb-inner[data-astro-cid-ldpmy3iq]{position:relative;z-index:1;display:block;width:100%;max-width:80rem;margin:0 auto;padding:.625rem 1.5rem;font-family:var(--font-primary),"Plus Jakarta Sans",system-ui,sans-serif;line-height:1.55;font-size:13.5px}.fwpb-icon[data-astro-cid-ldpmy3iq]{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:20px;height:20px;margin-right:.5rem;color:var(--fwpb-icon);transition:transform .4s cubic-bezier(.2,.8,.2,1)}.fwpb-eyebrow[data-astro-cid-ldpmy3iq]{display:inline-block;vertical-align:middle;margin-right:.625rem;padding:3px 10px;font-size:10px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--fwpb-eyebrow-text);background:var(--fwpb-eyebrow-bg);border:1px solid rgba(255,255,255,.18);border-radius:999px;box-shadow:inset 0 1px #ffffff38,0 1px 2px #0000002e}.fwpb-divider[data-astro-cid-ldpmy3iq]{display:inline-block;vertical-align:middle;width:1px;height:14px;margin-right:.5rem;background:linear-gradient(to bottom,transparent,rgba(255,255,255,.3),transparent)}.fwpb-message[data-astro-cid-ldpmy3iq]{font-family:"Twemoji Country Flags",var(--font-primary),"Plus Jakarta Sans",system-ui,sans-serif;font-weight:600;color:var(--fwpb-text);text-shadow:0 1px 0 rgba(0,0,0,.25)}.fwpb-highlight[data-astro-cid-ldpmy3iq]{font-family:var(--font-secondary, "Lora"),Georgia,serif;font-style:italic;font-weight:600;font-size:16px;color:var(--fwpb-accent);margin-left:.4em;letter-spacing:-.005em;text-shadow:0 0 18px color-mix(in srgb,var(--fwpb-accent) 45%,transparent);animation:fwpb-pulse 4.5s ease-in-out infinite}.fwpb-action[data-astro-cid-ldpmy3iq]{float:right;display:inline-flex;align-items:center;gap:.5rem;margin-left:.875rem;margin-top:1px}.fwpb-cta[data-astro-cid-ldpmy3iq]{font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--fwpb-text);position:relative;transition:color .25s ease;text-shadow:0 1px 0 rgba(0,0,0,.2)}.fwpb-cta[data-astro-cid-ldpmy3iq]:after{content:"";position:absolute;
1left:0;right:0;bottom:-3px;height:1px;background:var(--fwpb-accent);transform:scaleX(0);transform-origin:right center;transition:transform .4s cubic-bezier(.2,.8,.2,1)}.fwpb-arrow[data-astro-cid-ldpmy3iq]{display:inline-flex;align-items:center;justify-content:center;color:var(--fwpb-accent);flex-shrink:0;width:16px;height:16px}.fwpb-arrow[data-astro-cid-ldpmy3iq] svg[data-astro-cid-ldpmy3iq]{transition:transform .35s cubic-bezier(.2,.8,.2,1)}a[data-astro-cid-ldpmy3iq].fwpb:hover .fwpb-arrow[data-astro-cid-ldpmy3iq] svg[data-astro-cid-ldpmy3iq]{transform:translate(4px)}a[data-astro-cid-ldpmy3iq].fwpb:hover .fwpb-cta[data-astro-cid-ldpmy3iq]:after{transform:scaleX(1);transform-origin:left center}a[data-astro-cid-ldpmy3iq].fwpb:hover .fwpb-icon[data-astro-cid-ldpmy3iq]{transform:rotate(8deg) scale(1.08)}@media(max-width:720px){.fwpb[data-astro-cid-ldpmy3iq]{min-height:40px;top:4.5rem}.fwpb-inner[data-astro-cid-ldpmy3iq]{padding:.5rem .875rem;gap:.5rem;font-size:12px}.fwpb-eyebrow[data-astro-cid-ldpmy3iq],.fwpb-divider[data-astro-cid-ldpmy3iq],.fwpb-cta[data-astro-cid-ldpmy3iq]{display:none}.fwpb-highlight[data-astro-cid-ldpmy3iq]{font-size:14px}.fwpb-message[data-astro-cid-ldpmy3iq]{font-size:12.5px}}@keyframes fwpb-sweep{0%,to{transform:translate3d(-3%,0,0)}50%{transform:translate3d(3%,0,0)}}@keyframes fwpb-pulse{0%,to{filter:brightness(1);text-shadow:0 0 18px color-mix(in srgb,var(--fwpb-accent) 45%,transparent)}50%{filter:brightness(1.14);text-shadow:0 0 28px color-mix(in srgb,var(--fwpb-accent) 65%,transparent)}}@media(prefers-reduced-motion:reduce){.fwpb-sweep[data-astro-cid-ldpmy3iq],.fwpb-highlight[data-astro-cid-ldpmy3iq]{animation:none}a[data-astro-cid-ldpmy3iq].fwpb:hover .fwpb-arrow[data-astro-cid-ldpmy3iq] svg[data-astro-cid-ldpmy3iq],a[data-astro-cid-ldpmy3iq].fwpb:hover .fwpb-icon[data-astro-cid-ldpmy3iq]{transform:none}}#sim-chat-root{position:fixed;inset:auto 24px 24px auto;z-index:60;font-family:var(--font-primary, "Plus Jakarta Sans"),system-ui,sans-serif;color:var(--color-text, #1a2e2e);pointer-events:none}#sim-chat-root>*{pointer-events:auto}.sim-launcher{position:relative;display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;padding:0;border:0;border-radius:9999px;cursor:pointer;background:linear-gradient(135deg,#004140,#156e6c);color:#fff;box-shadow:0 0 0 6px #f7941e1f,0 12px 32px #0041402e;transition:transform .18s ease,box-shadow .3s ease}.sim-launcher svg{width:24px;height:24px;position:relative;z-index:1;transform-origin:50% 60%;transition:transform .18s ease}.sim-launcher:hover{transform:translateY(-2px)}.sim-launcher:hover svg{animation:simbot-wiggle .55s ease-in-out}@keyframes simbot-wiggle{0%,to{transform:rotate(0)}30%{transform:rotate(-8deg)}70%{transform:rotate(8deg)}}.sim-launcher:focus-visible{outline:2px solid #f7941e;outline-offset:4px}.sim-launcher-glow{position:absolute;inset:-6px;border-radius:inherit;pointer-events:none;box-shadow:0 0 0 6px #f7941e1f;animation:sim-launcher-pulse 4s ease-in-out infinite}@keyframes sim-launcher-pulse{0%,to{box-shadow:0 0 0 6px #f7941e1f}50%{box-shadow:0 0 0 12px #f7941e38}}.sim-teaser{position:absolute;right:72px;bottom:12px;background:#fffcf7;color:#1a2e2e;padding:10px 14px;border-radius:14px;font-size:13px;font-style:italic;font-family:var(--font-secondary, "Lora"),serif;box-shadow:0 8px 24px #0041401f,0 0 0 1px #0041400f;cursor:pointer;white-space:nowrap;opacity:0;transform:translate(8px);transition:opacity .3s ease,transform .3s ease}.sim-teaser-tail{position:absolute;right:-5px;top:50%;width:10px;height:10px;background:#fffcf7;transform:translateY(-50%) rotate(45deg);box-shadow:1px -1px #0041400f}.sim-panel{position:absolute;bottom:0;right:0;width:440px;height:680px;max-width:calc(100vw - 16px);max-height:calc(100vh - 48px);background:#fff;border-radius:24px;overflow:hidden;display:flex;flex-direction:column;transform-origin:bottom right;box-shadow:0 24px 64px -12px #00414047,0 8px 16px -4px #156e6c1f,0 0 0 1px #0041400a}.sim-header{display:flex;align-items:center;gap:12px;padding:18px 16px;background:linear-gradient(135deg,#004140,#156e6c);color:#fff;position:relative}.sim-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#1a8a87,#51c3c2);display:grid;place-items:center;font-weight:700;font-size:16px;color:#fff;box-shadow:0 0 0 3px #ffffff2e;flex-shrink:0}.sim-header-text{flex:1;min-width:0}.sim-header-name{font-weight:700;font-size:15px;
1display:inline-flex;align-items:center;gap:8px}.sim-online{width:8px;height:8px;border-radius:50%;background:#7bd389;box-shadow:0 0 0 2px #7bd38940}.sim-header-tag{font-size:12px;color:#ffffffc7;margin-top:2px}.sim-close{background:#ffffff1a;border:0;border-radius:50%;width:32px;height:32px;display:grid;place-items:center;color:#fff;cursor:pointer;transition:background .2s ease}.sim-close:hover{background:#ffffff38}.sim-close svg{width:16px;height:16px}.sim-close:focus-visible{outline:2px solid #f7941e;outline-offset:2px}.sim-messages{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:20px 16px;background:radial-gradient(120% 80px at 50% 0%,#ffffffe6,#fff0),#faf6ed;display:flex;flex-direction:column;gap:12px;scrollbar-width:thin;scrollbar-color:rgba(0,65,64,.18) transparent}.sim-messages::-webkit-scrollbar{width:6px}.sim-messages::-webkit-scrollbar-thumb{background:#0041402e;border-radius:3px}.sim-toast{position:absolute;left:50%;bottom:96px;transform:translate(-50%,8px);background:#004140;color:#fff;padding:9px 14px 9px 12px;border-radius:9999px;font-size:12.5px;font-weight:600;box-shadow:0 8px 24px #00414052;opacity:0;pointer-events:none;transition:opacity .22s ease,transform .22s ease;z-index:2;display:inline-flex;align-items:center;gap:8px;max-width:calc(100% - 32px);white-space:nowrap}.sim-toast:before{content:"✓";display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:#f7941e;color:#fff;font-size:11px;font-weight:700;line-height:1;flex-shrink:0}.sim-footer{border-top:1px solid;border-image:linear-gradient(90deg,transparent,#d1dede 30%,#d1dede 70%,transparent) 1;background:#fff;padding:8px 12px 12px;display:flex;flex-direction:column;gap:8px}.sim-escalate-btn{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;padding:6px 10px;font-size:11.5px;font-weight:600;text-decoration:none;color:#156e6c;background:#156e6c0f;border-radius:9999px;border:1px solid rgba(21,110,108,.14);transition:background .18s ease,border-color .18s ease}.sim-escalate-btn:hover{background:#f7941e1a;border-color:#f7941e66;color:#1a2e2e}.sim-escalate-btn iconify-icon{font-size:14px}.sim-form{display:flex;align-items:center;gap:8px;background:#f8fafa;border:1px solid #e6ecec;border-radius:9999px;padding:4px 4px 4px 14px;transition:border-color .18s ease,box-shadow .18s ease}.sim-form:focus-within{border-color:#156e6c66;box-shadow:0 0 0 3px #156e6c1a}.sim-input{flex:1;background:transparent;border:0;outline:none;font:inherit;font-size:14px;color:#1a2e2e;padding:8px 0;min-width:0}.sim-input::placeholder{color:#4a6363;opacity:.7}.sim-send{width:36px;height:36px;border-radius:50%;border:0;background:#f7941e;color:#fff;cursor:pointer;display:grid;place-items:center;flex-shrink:0;transition:background .18s ease,transform .18s ease}.sim-send:hover{background:#d47a0a;transform:scale(1.05)}.sim-send:focus-visible{outline:2px solid #1a2e2e;outline-offset:2px}.sim-send svg{width:16px;height:16px}@media(max-width:480px){#sim-chat-root{inset:auto 8px 8px}.sim-panel{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;bottom:-8px;right:-8px;border-radius:0}.sim-launcher{margin-left:auto;display:flex}.sim-teaser{right:64px}.sim-header{padding:14px}.sim-header-name{font-size:14px}.sim-header-tag{font-size:11px}.sim-messages{padding:16px 14px;gap:10px}.sim-input{font-size:13.5px}}@media(prefers-reduced-motion:reduce){.sim-launcher-glow{animation:none!important}.sim-launcher:hover{transform:none}.sim-launcher:hover svg{animation:none}}</style><link rel="preload" href="/_astro/_path_.e7_kGuV6.css" onload="this.rel='stylesheet'" as="style"><noscript><link rel="stylesheet" href="/_astro/_path_.e7_kGuV6.css"></noscript>
2<link rel="preload" href="/_astro/_path_.B9k5_mS7.css" onload="this.rel='stylesheet'" as="style"><noscript><link rel="stylesheet" href="/_astro/_path_.B9k5_mS7.css"></noscript>
3<link rel="preload" href="/_astro/_path_.dRk497xc.css" onload="this.rel='stylesheet'" as="style"><noscript><link rel="stylesheet" href="/_astro/_path_.dRk497xc.css"></noscript></head> <body class="min-h-screen flex flex-col font-primary text-text bg-white antialiased"> <header id="site-header" class="fixed top-0 inset-x-0 z-50 transition-all duration-300" data-astro-cid-5blmo7yk> <nav class="max-w-7xl mx-auto flex items-center justify-between px-6 lg:px-8 h-18" data-astro-cid-5blmo7yk> <!-- Logo --> <a href="/" class="shrink-0 relative z-10" data-astro-cid-5blmo7yk> <img src="https://simbound.cdn.prismic.io/simbound/aafgC1xvIZEnjTWF_Simbound-logo-colour.svg" alt="Simboun
3d Logo (SVG)" fetchpriority="high" data-astro-cid-5blmo7yk="true" loading="lazy" decoding="async" width="180" height="40" class="h-9 w-auto"> </a> <!-- Mobile toggle --> <button id="mobile-menu-btn" class="lg:hidden relative z-10 flex flex-col gap-1.5 p-2 cursor-pointer" aria-label="Toggle menu" data-astro-cid-5blmo7yk> <span class="block w-5 h-0.5 bg-current transition-transform origin-center" id="burger-top" data-astro-cid-5blmo7yk></span> <span class="block w-5 h-0.5 bg-current transition-opacity" id="burger-mid" data-astro-cid-5blmo7yk></span> <span class="block w-5 h-0.5 bg-current transition-transform origin-center" id="burger-bot" data-astro-cid-5blmo7yk></span> </button> <!-- Desktop nav --> <div class="hidden lg:flex items-center gap-0.5 ml-auto" data-astro-cid-5blmo7yk> <div class="relative group" data-astro-cid-5blmo7yk> <button class="nav-dropdown-trigger flex items-center gap-1 px-4 py-2 text-sm nav-link-color rounded-lg transition-colors" data-astro-cid-5blmo7yk>  Simulations <iconify-icon icon="lucide:chevron-down" width="12" height="12" class="transition-transform group-[.open]:rotate-180" data-astro-cid-5blmo7yk="true"></iconify-icon> </button> <div class="nav-dropdown absolute top-full left-0 mt-1 min-w-50 bg-white rounded-xl shadow-lg border border-border py-2 hidden" data-astro-cid-5blmo7yk> <a href="/simulations/web/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="circum:globe" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Website &amp; SEO </a><a href="/simulations/sem/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="icon-park-outline:send" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Search Advertising </a><a href="/simulations/email/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="formkit:email" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Email Marketing </a><a href="/simulations/social/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="ic:outline-share" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Social Media </a><a href="/simulations/community/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="clarity:users-line" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Brand Community </a><a href="/simulations/affiliate/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:network" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Affiliate Marketing </a> </div> </div><div class="relative group" data-astro-cid-5blmo7yk> <button class="nav-dropdown-trigger flex items-center gap-1 px-4 py-2 text-sm nav-link-color rounded-lg transition-colors" data-astro-cid-5blmo7yk>  Usage <iconify-icon icon="lucide:chevron-down" width="12" height="12" class="transition-transform group-[.open]:rotate-180" data-astro-cid-5blmo7yk="true"></iconify-icon> </button> <div class="nav-dropdown absolute top-full left-0 mt-1 min-w-50 bg-white rounded-xl shadow-lg border border-border py-2 hidden" data-astro-cid-5blmo7yk> <a href="/marketing-simulation-software-for-university-students/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="boxicons:school" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Universities </a><a href="/digital-marketing-practice-simulation-exercises/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="mingcute:briefcase-line" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon>
3 Professionals </a> </div> </div><div class="relative group" data-astro-cid-5blmo7yk> <a href="/blog/" class="flex items-center gap-1 px-4 py-2 text-sm nav-link-color rounded-lg transition-colors" data-astro-cid-5blmo7yk>  Blog </a>  </div><div class="relative group" data-astro-cid-5blmo7yk> <a href="/contact/" class="flex items-center gap-1 px-4 py-2 text-sm nav-link-color rounded-lg transition-colors" data-astro-cid-5blmo7yk>  Contact </a>  </div><div class="relative group" data-astro-cid-5blmo7yk> <button class="nav-dropdown-trigger flex items-center gap-1 px-4 py-2 text-sm nav-link-color rounded-lg transition-colors" data-astro-cid-5blmo7yk>  More <iconify-icon icon="lucide:chevron-down" width="12" height="12" class="transition-transform group-[.open]:rotate-180" data-astro-cid-5blmo7yk="true"></iconify-icon> </button> <div class="nav-dropdown absolute top-full left-0 mt-1 min-w-50 bg-white rounded-xl shadow-lg border border-border py-2 hidden" data-astro-cid-5blmo7yk> <a href="/licensing/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:receipt" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Licensing </a><a href="/digital-marketing-competition/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:flag-checkered" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Competitions </a><a href="/vlog/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:video-conference" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Vlog </a><a href="/e-commerce-game/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:trophy" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> E-Commerce Game </a><a href="/simbound-vs-competitors/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:coffee" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Simbound vs Competitors </a><a href="/jobs/" class="flex items-center gap-2 px-4 py-2.5 text-sm text-text hover:bg-surface hover:text-primary transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:user-circle-check" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Jobs </a> </div> </div> <!-- Search --> <button type="button" data-search-open aria-label="Search" class="nav-link-color flex cursor-pointer items-center gap-1 rounded-lg px-3 py-2 text-sm transition-colors" data-astro-cid-5blmo7yk> <iconify-icon icon="lucide:search" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> </button> <!-- Language switcher -->  <!-- Button links --> <a href="/login/" class="ml-3 px-6 py-2.5 text-sm font-medium rounded-full transition-all duration-200 border-2 border-primary text-primary hover:bg-primary hover:text-white" data-astro-cid-5blmo7yk> Login </a><a href="/signup/" class="ml-3 px-6 py-2.5 text-sm font-medium rounded-full transition-all duration-200 bg-accent-contrast text-white hover:bg-accent-contrast-dark shadow-sm hover:shadow-md" data-astro-cid-5blmo7yk> Sign Up </a> </div> </nav> </header> <!-- Mobile menu (outside header to avoid fixed positioning issues from backdrop-filter/transitions) --> <div id="mobile-menu" class="lg:hidden hidden fixed inset-x-0 top-18 bottom-0 bg-white overflow-y-auto z-40" data-astro-cid-5blmo7yk> <div class="px-5 py-5 flex flex-col gap-1" data-astro-cid-5blmo7yk> <div data-astro-cid-5blmo7yk> <button class="mobile-dropdown-trigger w-full flex items-center justify-between px-3 py-3 text-sm text-text rounded-lg hover:bg-surface" data-astro-cid-5blmo7yk> <span class="flex items-center gap-2" data-astro-cid-5blmo7yk>  Simulations </span> <svg class="w-4 h-4 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-5blmo7yk=""> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" data-astro-cid-5blmo7yk=""/> </svg> </button> <div class="mobile-dropdown hidden pl-4" data-astro-cid-5blmo7yk> <a href="/simulations/web/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="circum:globe" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Website &amp; SEO </a><a href="/simulations/sem/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="icon-park-outline:send" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Search Advertising </a><a href="/simulations/email/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="formkit:email" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Email Marketing </a><a href="/simulations/social/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="ic:outline-share" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Social Media </a><a href="/simulations/community/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk>
3 <iconify-icon icon="clarity:users-line" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Brand Community </a><a href="/simulations/affiliate/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:network" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Affiliate Marketing </a> </div> </div><div data-astro-cid-5blmo7yk> <button class="mobile-dropdown-trigger w-full flex items-center justify-between px-3 py-3 text-sm text-text rounded-lg hover:bg-surface" data-astro-cid-5blmo7yk> <span class="flex items-center gap-2" data-astro-cid-5blmo7yk>  Usage </span> <svg class="w-4 h-4 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-5blmo7yk=""> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" data-astro-cid-5blmo7yk=""/> </svg> </button> <div class="mobile-dropdown hidden pl-4" data-astro-cid-5blmo7yk> <a href="/marketing-simulation-software-for-university-students/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="boxicons:school" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Universities </a><a href="/digital-marketing-practice-simulation-exercises/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="mingcute:briefcase-line" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Professionals </a> </div> </div><a href="/blog/" class="flex items-center gap-2 px-3 py-3 text-sm text-text rounded-lg hover:bg-surface" data-astro-cid-5blmo7yk>  Blog </a><a href="/contact/" class="flex items-center gap-2 px-3 py-3 text-sm text-text rounded-lg hover:bg-surface" data-astro-cid-5blmo7yk>  Contact </a><div data-astro-cid-5blmo7yk> <button class="mobile-dropdown-trigger w-full flex items-center justify-between px-3 py-3 text-sm text-text rounded-lg hover:bg-surface" data-astro-cid-5blmo7yk> <span class="flex items-center gap-2" data-astro-cid-5blmo7yk>  More </span> <svg class="w-4 h-4 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-5blmo7yk=""> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" data-astro-cid-5blmo7yk=""/> </svg> </button> <div class="mobile-dropdown hidden pl-4" data-astro-cid-5blmo7yk> <a href="/licensing/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:receipt" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Licensing </a><a href="/digital-marketing-competition/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:flag-checkered" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Competitions </a><a href="/vlog/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:video-conference" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Vlog </a><a href="/e-commerce-game/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:trophy" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> E-Commerce Game </a><a href="/simbound-vs-competitors/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:coffee" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Simbound vs Competitors </a><a href="/jobs/" class="flex items-center gap-2 px-3 py-2.5 text-sm text-text-muted hover:text-primary" data-astro-cid-5blmo7yk> <iconify-icon icon="ph:user-circle-check" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Jobs </a> </div> </div> <!-- Mobile search --> <button type="button" data-search-open class="flex items-center gap-2 rounded-lg px-3 py-3 text-sm text-text hover:bg-surface" data-astro-cid-5blmo7yk> <iconify-icon icon="lucide:search" width="16" height="16" data-astro-cid-5blmo7yk="true"></iconify-icon> Search </button> <!-- Mobile language switcher -->  <!-- Mobile button links --> <div class="border-t border-border mt-3 pt-4 flex flex-col gap-2.5 px-3" data-astro-cid-5blmo7yk> <a href="/login/" class="text-center px-6 py-3 text-sm font-semibold rounded-full transition-colors border-2 border-primary text-primary" data-astro-cid-5blmo7yk> Login </a><a href="/signup/" class="text-center px-6 py-3 text-sm font-semibold rounded-full transition-colors bg-accent-contrast text-white" data-astro-cid-5blmo7yk> Sign Up </a> </div> </div> </div> <!-- Spacer for fixed header --> <div class="h-18" data-astro-cid-5blmo7yk></div>  <dialog id="search-dialog" class="m-0 w-full max-w-2xl rounded-2xl border border-border bg-white p-0 shadow-2xl backdrop:bg-black/40 backdrop:backdrop-blur-sm lg:mx-auto lg:mt-[12vh]" aria-labelledby="search-dialog-title"> <h2 id="search-dialog-title" class="sr-only">Search Simbound</h2> <div class="flex items-center gap-3 border-b border-border px-5 py-4"> <iconify-icon icon="lucide:search" width="20" height="20" class="shrink-0 text-text-muted"></iconify-icon> <input id="search-input" type="search" autofocus autocomplete="off" spellcheck="false" placeholder="Search pages..." aria-label="Search pages..." aria-controls="search-results" aria-autocomplete="list" class="font-primary min-w-0 flex-1 bg-transparent text-base text-text outline-none placeholder:text-text-muted/70"> <button id="search-close" type="button" aria-label="Close search" class="flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-lg leading-none text-text-muted transition-colors hover:bg-surface hover:text-text focus-visible:ring-2 focus-visible:ring-primary/40 focu
3s-visible:outline-none"> <iconify-icon icon="lucide:x" width="18" height="18" class="block"></iconify-icon> </button> </div> <div class="max-h-[60vh] overflow-y-auto overscroll-contain"> <ul id="search-results" role="listbox" aria-label="Search Simbound"></ul> <p id="search-status" class="font-primary px-5 py-8 text-center text-sm text-text-muted" aria-live="polite"> Search by page title, description, or URL path (e.g. /about). </p> </div> <div class="flex items-center justify-between border-t border-border bg-surface px-5 py-2.5"> <span class="font-primary text-[11px] text-text-muted"> <kbd class="rounded border border-border bg-white px-1.5 py-0.5">&uarr;&darr;</kbd> <kbd class="ml-1 rounded border border-border bg-white px-1.5 py-0.5">&crarr;</kbd> <kbd class="ml-1 rounded border border-border bg-white px-1.5 py-0.5">esc</kbd> </span> <a id="search-view-all" href="/search/" class="font-primary hidden text-[11px] font-semibold text-primary hover:underline">View all results</a> </div> </dialog> 
3<script>(function(){const searchI18n = {"noResults":"No pages match your search.","hint":"Search by page title, description, or URL path (e.g. /about).","error":"Search is unavailable right now.","loading":"Loading..."};
4
5  ;(() => {
6    const dialog = document.getElementById('search-dialog')
7    if (!dialog) return
8
9    const input = document.getElementById('search-input')
10    const list = document.getElementById('search-results')
11    const status = document.getElementById('search-status')
12    const viewAll = document.getElementById('search-view-all')
13    const closeBtn = document.getElementById('search-close')
14
15    const MAX_RESULTS = 8
16
17    let index = null
18    let loading = null
19    let rows = []
20    let active = -1
21
22    function setStatus(text) {
23      status.textContent = text
24      status.hidden = !text
25    }
26
27    function loadIndex() {
28      if (index) return Promise.resolve(index)
29      if (!loading) {
30        loading = fetch('/search-index.json')
31          .then((r) => (r.ok ? r.json() : Promise.reject(new Error('HTTP ' + r.status))))
32          .then((data) => {
33            index = data.map((r) => ({
34              u: r.u,
35              t: r.t,
36              d: r.d || '',
37              lt: r.t.toLowerCase(),
38              ld: (r.d || '').toLowerCase(),
39              lu: r.u.toLowerCase(),
40            }))
41            return index
42          })
43          .catch((e) => {
44            loading = null
45            throw e
46          })
47      }
48      return loading
49    }
50
51    // Normalises a path-ish query: "/about", "about/", " /about " -> "/about/".
52    function toPath(q) {
53      let p = q.split(' ').join('')
54      if (p.charAt(0) !== '/') p = '/' + p
55      if (p.charAt(p.length - 1) !== '/') p = p + '/'
56      while (p.indexOf('//') !== -1) p = p.split('//').join('/')
57      return p
58    }
59
60    // Title beats description, and a contiguous phrase hit beats scattered
61    // tokens. Every token must appear somewhere, so the match stays an AND.
62
63    function score(rec, query, tokens) {
64      let s = 0
65
66      // A query starting with "/" is read as a URL path. "/" alone means the
67      // home page only; "/blog" ranks the listing first, then what is under it.
68      if (query.charAt(0) === '/') {
69        const qp = toPath(query)
70        if (qp === '/') return rec.lu === '/' ? 1000 : 0
71        if (rec.lu === qp) return 1000
72        if (rec.lu.startsWith(qp)) s += 300
73      }
74
75      if (rec.lt === query) s += 400
76      else if (rec.lt.startsWith(query)) s += 200
77      else if (rec.lt.includes(query)) s += 120
78      if (rec.ld.includes(query)) s += 40
79      if (rec.lu.includes(query)) s += 60
80
81      for (const tok of tokens) {
82        if (rec.lt.includes(tok)) s += 12
83        else if (rec.lu.includes(tok)) s += 6
84        else if (rec.ld.includes(tok)) s += 3
85        else return 0
86      }
87      return s
88    }
89
90    // Builds nodes rather than innerHTML so page titles can never inject markup.
91    function highlight(el, text, query) {
92      const at = query ? text.toLowerCase().indexOf(query) : -1
93      if (at < 0) {
94        el.textContent = text
95        return
96      }
97      el.appendChild(document.createTextNode(text.slice(0, at)))
98      const mark = document.createElement('mark')
99      mark.className = 'rounded-sm bg-secondary/30 text-inherit'
100      mark.textContent = text.slice(at, at + query.length)
101      el.appendChild(mark)
102      el.appendChild(document.createTextNode(text.slice(at + query.length)))
103    }
104
105    function render(results, query) {
106      list.textContent = ''
107      rows = []
108      active = -1
109
110      for (const rec of results) {
111        const li = document.createElement('li')
112        li.setAttribute('role', 'option')
113        li.setAttribute('aria-selected', 'false')
114
115        const a = document.createElement('a')
116        a.href = rec.u
117        a.className =
118          'block border-b border-border/60 px-5 py-3 transition-colors last:border-0 hover:bg-surface'
119
120        const title = document.createElement('span')
121        title.className = 'font-primary block text-sm font-semibold text-text'
122        highlight(title, rec.t, query)
123        a.appendChild(title)
124
125        if (rec.d) {
126          const desc = document.createElement('span')
127          desc.className =
128            'font-primary mt-0.5 line-clamp-2 block text-xs text-text-muted'
129          highlight(desc, rec.d, query)
130          a.appendChild(desc)
131        }
132
133        const url = document.createElement('span')
134        url.className = 'font-primary mt-1 block truncate text-[11px] text-primary/70'
135        url.textContent = rec.u
136        a.appendChild(url)
137
138        li.appendChild(a)
139        list.appendChild(li)
140        rows.push(li)
141      }
142    }
143
144    function setActive(next) {
145      if (!rows.length) return
146      if (active >= 0) {
147        rows[active].setAttribute('aria-selected', 'false')
148        rows[active].firstChild.classList.remove('bg-surface')
149      }
150      active = (next + rows.length) % rows.length
151      rows[active].setAttribute('aria-selected', 'true')
152      rows[active].firstChild.classList.add('bg-surface')
153      rows[active].scrollIntoView({ block: 'nearest' })
154    }
155
156    function search() {
157      const raw = input.value.trim()
158      const query = raw.toLowerCase()
159
160      viewAll.href = '/search/?q=' + encodeURIComponent(raw)
161      viewAll.classList.toggle('hidden', !raw)
162
163      if (!raw) {
164        render([], '')
165        setStatus(searchI18n.hint)
166        return
167      }
168      if (!index) {
169        setStatus(searchI18n.loading)
170        return
171      }
172
173      const tokens = query.split(/\s+/).filter(Boolean)
174      const scored = []
175      for (const rec of index) {
176        const s = score(rec, query, tokens)
177        if (s > 0) scored.push({ rec, s })
178      }
179      scored.sort((a, b) => b.s - a.s || a.rec.t.localeCompare(b.rec.t))
180
181      const top = scored.slice(0, MAX_RESULTS).map((x) => x.rec)
182      render(top, query)
183      setStatus(top.length ? '' : searchI18n.noResults)
184    }
185
186    let timer
187    input.addEventListener('input', () => {
188      clearTimeout(timer)
189      timer = setTimeout(search, 90)
190    })
191
192    input.addEventListener('keydown', (e) => {
193      if (e.key === 'ArrowDown') {
194        e.preventDefault()
195        setActive(active + 1)
196      } else if (e.key === 'ArrowUp') {
197        e.preventDefault()
198        setActive(active - 1)
199      } else if (e.key === 'Enter' && active >= 0) {
200        e.preventDefault()
201        rows[active].firstChild.click()
202      }
203    })
204
205    function openSearch() {
206      if (dialog.open) return
207      dialog.showModal()
208      input.value = ''
209      render([], '')
210      setStatus(searchI18n.hint)
211      input.focus()
212      // Re-run once the index lands: the user can out-type the fetch, and
213      // search() bails to a loading state while index is still null.
214      loadIndex()
215        .then(() => {
216          if (input.value.trim()) search()
217        })
218        .catch(() => setStatus(searchI18n.error))
219    }
220
221    closeBtn.addEventListener('click', () => dialog.close())
222
223    // A click on the ::backdrop reports the dialog itself as the target.
224    dialog.addEventListener('click', (e) => {
225      if (e.target === dialog) dialog.close()
226    })
227
228    document.addEventListener('click', (e) => {
229      const trigger = e.target.closest && e.target.closest('[data-search-open]')
230      if (!trigger) return
231      e.preventDefault()
232      openSearch()
233    })
234
235    document.addEventListener('keydown', (e) => {
236      if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'k') {
237        e.preventDefault()
238        if (dialog.open) dialog.close()
239        else openSearch()
240      }
241    })
242  })()
243})();</script>
243 
243<script type="module">const n=document.getElementById("site-header");function d(){n&&(window.scrollY>40?n.classList.add("scrolled"):n.classList.remove("scrolled"))}d();window.addEventListener("scroll",d,{passive:!0});document.getElementById("mobile-menu-btn")?.addEventListener("click",()=>{const e=document.getElementById("mobile-menu");if(!e)return;const t=!e.classList.contains("hidden");e.classList.toggle("hidden"),document.body.classList.toggle("overflow-hidden",!t);const o=document.getElementById("burger-top"),r=document.getElementById("burger-mid"),s=document.getElementById("burger-bot");t?(o?.style.setProperty("transform","none"),r?.style.setProperty("opacity","1"),s?.style.setProperty("transform","none")):(o?.style.setProperty("transform","translateY(8px) rotate(45deg)"),r?.style.setProperty("opacity","0"),s?.style.setProperty("transform","translateY(-8px) rotate(-45deg)"))});document.querySelectorAll(".nav-dropdown-trigger").forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation();const o=e.closest(".group")??e.parentElement,r=o?.querySelector(".nav-dropdown");r&&(document.querySelectorAll(".nav-dropdown").forEach(s=>{s!==r&&(s.classList.add("hidden"),s.closest(".group")?.classList.remove("open"))}),r.classList.toggle("hidden"),o?.classList.toggle("open"))})});document.querySelectorAll(".mobile-dropdown-trigger").forEach(e=>{e.addEventListener("click",()=>{const t=e.parentElement?.querySelector(".mobile-dropdown"),o=e.querySelector("svg");t&&(t.classList.toggle("hidden"),o?.classList.toggle("rotate-180"))})});document.addEventListener("click",()=>{document.querySelectorAll(".nav-dropdown").forEach(e=>{e.classList.add("hidden"),e.closest(".group")?.classList.remove("open")})});</script>
243 <a href="/license-auction/" class="fwpb" style="--fwpb-bg-start:#217573;--fwpb-bg-middle:#1AA39F;--fwpb-bg-end:#2FC27B;--fwpb-text:#FFFFFF;--fwpb-accent:#D9F21F;--fwpb-icon:#D9F21F;--fwpb-eyebrow-bg:#D9F21F;--fwpb-eyebrow-text:#301D1D" aria-label="A limited number of Simbound licenses becomes available to schools each month Earn savings of up to 60% See the Auction" data-astro-cid-ldpmy3iq="true"> <div class="fwpb-sweep" aria-hidden="true" data-astro-cid-ldpmy3iq></div> <div class="fwpb-grain" aria-hidden="true" data-astro-cid-ldpmy3iq></div> <div class="fwpb-inner" data-astro-cid-ldpmy3iq> <span class="fwpb-action" data-astro-cid-ldpmy3iq> <span class="fwpb-cta" data-astro-cid-ldpmy3iq>See the Auction</span> <span class="fwpb-arrow" aria-hidden="true" data-astro-cid-ldpmy3iq> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ldpmy3iq=""><path d="M5 12h14M13 5l7 7-7 7" data-astro-cid-ldpmy3iq=""/></svg> </span> </span> <span class="fwpb-icon" aria-hidden="true" data-astro-cid-ldpmy3iq> <iconify-icon icon="ph:ranking" width="16" height="16" data-astro-cid-ldpmy3iq="true"></iconify-icon> </span> <span class="fwpb-eyebrow" data-astro-cid-ldpmy3iq>The Simbound Auction</span> <span class="fwpb-divider" aria-hidden="true" data-astro-cid-ldpmy3iq></span> <span class="fwpb-message" data-astro-cid-ldpmy3iq> A limited number of Simbound licenses becomes available to schools each month <em class="fwpb-highlight" data-astro-cid-ldpmy3iq>Earn savings of up to 60%</em> </span> </div> </a>  <div class="tp-wrap" aria-hidden="true" data-astro-cid-4xaaofsg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:89%;animation-delay:5.1s;animation-duration:21.8s;--tp-drift:-19px;--tp-rot:233deg;--tp-scale:0.69" fill="#D44B2A" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:73%;animation-delay:9.8s;animation-duration:21s;--tp-drift:2px;--tp-rot:141deg;--tp-scale:0.55" fill="#E87830" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:41%;animation-delay:10.3s;animation-duration:13s;--tp-drift:10px;--tp-rot:248deg;--tp-scale:1.07" fill="#E8B230" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:32%;animation-delay:11s;animation-duration:15.2s;--tp-drift:-3px;--tp-rot:12deg;--tp-scale:0.91" fill="#C73525" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:48%;animation-delay:3.8s;animation-duration:21.2s;--tp-drift:-1px;--tp-rot:194deg;--tp-scale:0.64" fill="#D4A020" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:33%;animation-delay:7.6s;animation-duration:14s;--tp-drift:47px;--tp-rot:7deg;--tp-scale:0.67" fill="#D44B2A" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:89%;animation-delay:1.9s;animation-duration:14.3s;--tp-drift:-49px;--tp-rot:87deg;--tp-scale:1.12" fill="#E87830" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:56%;animation-delay:0.4s;animation-duration:15.6s;--tp-drift:0px;--tp-rot:170deg;--tp-scale:0.92" fill="#E8B230" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:93%;animation-delay:0.9s;animation-duration:11.4s;--tp-drift:-46px;--tp-rot:20deg;--tp-scale:0.84" fill="#C73525" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:79%;animation-delay:2.1s;animation-duration:10.6s;--tp-drift:8px;--tp-rot:188deg;--tp-scale:0.59" fill="#D4A020" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:69%;animation-delay:3.8s;animation-duration:20.2s;--tp-drift:23px;--tp-rot:18deg;--tp-scale:0.8" fill="#D44B2A" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:69%;animation-delay:7.6s;animation-duration:14.2s;--tp-drift:-15px;--tp-rot:268deg;--tp-scale:1.17" fill="#E87830" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:36%;animation-delay:2.2s;animation-duration:17.3s;--tp-drift:-26px;--tp-rot:339deg;--tp-scale:0.86" fill="#E8B230" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:65%;animation-delay:4.6s;animation-duration:16.2s;--tp-drift:24px;--tp-rot:253deg;--tp-scale:0.65" fill="#C73525" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg><svg class="tp tp-leaf" viewBox="0 0 40 44" style="left:71%;animation-delay:6.6s;animation-duration:16.3s;--tp-drift:-10px;--tp-rot:75deg;--tp-scale:0.86" fill="#D4A020" data-astro-cid-4xaaofsg=""><path d="M20 0 C20 0 24 8 30 12 C36 16 40 14 40 14 C40 14 36 20 34 24 C32 28 34 32 34 32 C34 32 28 30 24 32 C20 34 20 44 20 44 C20 44 20 34 16 32 C12 30 6 32 6 32 C6 32 8 28 6 24 C4 20 0 14 0 14 C0 14 4 16 10 12 C16 8 20 0 20 0Z" data-astro-cid-4xaaofsg=""/></svg></div> <main class="flex-1">  <section class="relative overflow-hidden bg-primary-dark min-h-[520px] lg:min-h-[600px] flex items-center" aria-label="Hero"> <!-- Geometric accents --> <div class="absolute inset-0 pointer-events-none" aria-hidden="true"> <!-- Grid overlay --> <div class="absolute inset-0 opacity-[0.03]" style="background-image:repeating-linear-gradient(90deg,#fff 0,#fff 1px,transparent 1px,transparent 80px),repeating-linear-gradient(0deg,#fff 0,#fff 1px,transparent 1px,transparent 80px)"></div> <!-- Noise grain --> <div class="absolute inset-0 opacity-[0.035]" style="background-image:url('data:image/svg+xml,%3Csvg viewBox=%220 0 256 256%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Cfilter id=%22n%22%3E%3CfeTurbulence type=%22fractalNoise%22 baseFrequency=%220.9%22 numOctaves=%224%22 stitchTiles=%22stitch%22/%3E%3C/filter%3E%3Crect width=%22100%25%22 height=%22100%25%22 filter=%22url(%23n)%22 opacity=%221%22/%3E%3C/svg%3E')"></div> <!-- Ambient glows --> <div class="absolute -top-32 -right-32 w-[500px] h-[500px] rounded-full bg-secondary/[0.08] blur-[100px]"></div> <div class="absolute -bottom-48 -left-24 w-[400px] h-[400px] rounded-full bg-accent/[0.06] blur-[100px]"></div> <!-- Diagonal accent line --> <div class="absolute top-0 right-[15%] w-[1px] h-full bg-gradient-to-b from-transparent via-white/[0.06] to-transparent rotate-[15deg] origin-top"></div> <div class="absolute top-0 right-[16%] w-[1px] h-full bg-gradient-to-b from-transparent via-accent/[0.08] to-transparent rotate-[15deg] origin-top translate-x-3"></div> <!-- Dot cluster -->
243 <div class="absolute top-24 left-[8%] grid grid-cols-5 gap-3 opacity-[0.08]"> <div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div><div class="w-1 h-1 rounded-full bg-white"></div> </div> </div> <div class="relative max-w-7xl mx-auto px-6 lg:px-8 py-20 lg:py-28 w-full">  <div class="max-w-3xl"> <!-- Eyebrow --> <div class="inline-flex items-center gap-3 mb-6 reveal" style="--reveal-delay:0s"> <span class="w-8 h-[2px] bg-accent"></span> <span class="text-[11px] font-bold tracking-[0.2em] text-white/80 uppercase font-primary">About Us</span> </div> <!-- Title --> <h1 class="text-4xl sm:text-5xl lg:text-[3.5rem] font-extrabold text-white tracking-tight leading-[1.1] font-primary reveal" style="--reveal-delay:0.08s"> Bringing Marketing Practice<br class="hidden sm:block"> <span class="font-secondary italic text-secondary-light">Into Classrooms</span>  since 2012 </h1> <!-- Subtitle --> <p class="mt-6 text-lg lg:text-xl text-white/80 leading-relaxed max-w-2xl font-primary reveal" style="--reveal-delay:0.16s"> Simbound is the initial digital marketing simulation platform built for higher education. We give students the tools to learn SEO, advertising, email, social media, and more — by actually doing it. </p> <!-- Accent bar --> <div class="mt-10 flex items-center gap-4 reveal" style="--reveal-delay:0.24s"> <span class="w-12 h-1 rounded-full bg-accent"></span> <span class="text-sm text-white/80 font-primary font-medium">Found in 6 countries</span> </div> </div> </div> <!-- Bottom edge fade --> <div class="absolute bottom-0 left-0 right-0 h-16 bg-gradient-to-t from-primary-dark/60 to-transparent pointer-events-none"></div> </section><section class="relative bg-primary-dark py-6 lg:py-14" aria-label="Key statistics"> <div class="max-w-6xl mx-auto px-6 lg:px-8"> <div class="grid grid-cols-2 lg:grid-cols-4 gap-x-6 gap-y-4 lg:gap-0"> <div class="text-center lg:text-center reveal " style="--reveal-delay:0s"> <div class="text-2xl lg:text-4xl font-extrabold text-white tracking-tight font-primary">120+</div> <div class="mt-1 text-[10px] lg:text-[11px] font-semibold text-white/80 tracking-[0.15em] uppercase font-primary">Universities</div> </div><div class="text-center lg:text-center reveal lg:border-l lg:border-white/[0.08]" style="--reveal-delay:0.08s"> <div class="text-2xl lg:text-4xl font-extrabold text-white tracking-tight font-primary">80+</div> <div class="mt-1 text-[10px] lg:text-[11px] font-semibold text-white/80 tracking-[0.15em] uppercase font-primary">Countries</div> </div><div class="text-center lg:text-center reveal lg:border-l lg:border-white/[0.08]" style="--reveal-delay:0.16s"> <div class="text-2xl lg:text-4xl font-extrabold text-white tracking-tight font-primary">40K+</div> <div class="mt-1 text-[10px] lg:text-[11px] font-semibold text-white/80 tracking-[0.15em] uppercase font-primary">Students Trained</div> </div><div class="text-center lg:text-center reveal lg:border-l lg:border-white/[0.08]" style="--reveal-delay:0.24s"> <div class="text-2xl lg:text-4xl font-extrabold text-white tracking-tight font-primary">4.4/5</div> <div class="mt-1 text-[10px] lg:text-[11px] font-semibold text-white/80 tracking-[0.15em] uppercase font-primary">Avg. Rating</div> </div> </div> </div> </section><section class="bg-white py-20 lg:py-28 relative overflow-hidden" aria-label="Manifesto"> <!-- Atmospheric details --> <div class="absolute top-0 right-[12%] w-[1px] h-[60%] bg-gradient-to-b from-border/40 via-border/20 to-transparent pointer-events-none" aria-hidden="true"></div>
243 <div class="absolute bottom-[10%] left-[6%] w-[280px] h-[280px] rounded-full bg-secondary/[0.03] blur-[80px] pointer-events-none" aria-hidden="true"></div> <div class="absolute top-[15%] right-[4%] w-[200px] h-[200px] rounded-full bg-accent/[0.025] blur-[60px] pointer-events-none" aria-hidden="true"></div> <div class="max-w-7xl mx-auto px-6 lg:px-8"> <!-- Eyebrow --> <div class="inline-flex items-center gap-3 mb-10 lg:mb-14 reveal" style="--reveal-delay:0s"> <span class="w-8 h-[2px] bg-accent"></span> <span class="text-[11px] font-bold tracking-[0.2em] text-text-muted/80 uppercase font-primary">Our Mission</span> </div> <!-- Pull quote — the centrepiece --> <div class="relative max-w-5xl reveal" style="--reveal-delay:0.06s"> <!-- Large decorative quotation mark --> <div class="absolute -top-6 -left-2 lg:-top-8 lg:-left-6 text-[8rem] lg:text-[12rem] leading-none font-secondary italic text-primary/[0.06] select-none pointer-events-none" aria-hidden="true">&ldquo;</div> <blockquote class="relative"> <p class="text-2xl sm:text-3xl lg:text-[2.75rem] xl:text-5xl leading-[1.25] lg:leading-[1.2] font-primary font-extrabold text-primary-dark tracking-tight"> The best way to learn marketing is to  <span class="font-secondary italic font-semibold text-primary">actually do it</span>  <span class="text-text-muted/70 font-bold">— to make decisions that matter, in a world that responds.</span> </p> </blockquote> </div> <!-- Accent divider --> <div class="mt-10 lg:mt-14 flex items-center gap-4 reveal" style="--reveal-delay:0.12s"> <span class="w-14 h-[2px] rounded-full bg-gradient-to-r from-accent to-accent-light"></span> <span class="w-2 h-2 rounded-full bg-accent/40"></span> </div> <!-- Conviction items — asymmetric editorial grid --> <div class="mt-12 lg:mt-16 grid lg:grid-cols-12 gap-8 lg:gap-6"> <div class="lg:col-span-5 reveal" style="--reveal-delay:0.18s"> <div class="group relative pl-5 border-l-2 border-primary/20 hover:border-accent transition-colors duration-500"> <h3 class="text-xs font-bold tracking-[0.2em] uppercase text-accent font-primary mb-3">Not a textbook replacement</h3> <p class="text-text-muted text-base lg:text-lg leading-relaxed font-primary"> Simbound is built alongside educators, not instead of them. It strengthens the curriculum you've already crafted — giving students a place to apply theory the moment they learn it. </p> </div> </div><div class="lg:col-span-4 lg:col-start-7 lg:pt-8 reveal" style="--reveal-delay:0.26s"> <div class="group relative pl-5 border-l-2 border-secondary/30 hover:border-secondary transition-colors duration-500"> <h3 class="text-xs font-bold tracking-[0.2em] uppercase text-secondary font-primary mb-3">Risk-free, not consequence-free</h3> <p class="text-text-muted text-base lg:text-lg leading-relaxed font-primary"> Every campaign has consequences. Budgets deplete, competitors adapt, markets shift. Students learn from what works and what doesn't — without real-world stakes. </p> </div> </div><div class="lg:col-span-5 lg:col-start-2 lg:pt-4 reveal" style="--reveal-delay:0.33999999999999997s"> <div class="group relative pl-5 border-l-2 border-accent-light/40 hover:border-accent-light transition-colors duration-500"> <h3 class="text-xs font-bold tracking-[0.2em] uppercase text-accent-light font-primary mb-3">Confidence over compliance</h3> <p class="text-text-muted text-base lg:text-lg leading-relaxed font-primary"> We don't train students to follow instructions. We give them an environment where curiosity leads to strategy, and where graduates enter the workforce ready to think — not just execute. </p> </div> </div> </div> </div> </section><section class="bg-surface py-20 lg:py-28 relative overflow-hidden" aria-label="Timeline"> <div class="absolute bottom-0 right-[10%] w-[400px] h-[400px] rounded-full bg-primary/[0.03] blur-[80px] pointer-events-none" aria-hidden="true"></div> <div class="max-w-4xl mx-auto px-6 lg:px-8"> <!-- Heading --> <div class="text-center max-w-2xl mx-auto mb-14 lg:mb-20 reveal" style="--reveal-delay:0s"> <div class="inline-flex items-center gap-3 mb-5"> <span class="w-8 h-[2px] bg-accent"></span> <span class="text-[11px] font-bold tracking-[0.2em] text-text-muted/80 uppercase font-primary">Our Journey</span> <span class="w-8 h-[2px] bg-accent"></span> </div> <h2 class="text-3xl lg:text-[2.75rem] font-extrabold text-primary-dark tracking-tight font-primary"> From Idea to <span class="font-secondary italic text-primary">Global Impact</span> </h2> </div> <!-- Vertical timeline --> <div class="relative"> <!-- Connector line --> <div class="absolute left-6 lg:left-1/2 top-0 bottom-0 w-[2px] bg-gradient-to-b from-primary/20 via-accent/30 to-secondary/20 lg:-translate-x-[1px]" aria-hidden="true"></div> <div class="space-y-10 lg:space-y-12"> <div class="relative flex items-start gap-6 lg:gap-0 reveal" style="--reveal-delay:0s">  <div class="hidden lg:block lg:w-1/2 pr-12 text-right"> <div class="inline-block"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-2">2012</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Initial Client Simulation</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">A basic simulation is built to explain to a client of a marketing agency how digital marketing works.</p> </div> </div>  <div class="relative shrink-0 lg:absolute lg:left-1/2 lg:-translate-x-1/2 z-10"> <div class="w-12 h-12 rounded-xl bg-primary flex items-center justify-center shadow-sm"> <span class="text-xs font-extrabold text-white font-primary">1</span> </div> </div>  <div class="lg:w-1/2  min-w-0">  <div class="lg:hidden"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-1">2012</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Initial Client Simulation</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">A basic simulation is built to explain to a client of a marketing agency how digital marketing works.</p> </div>   </div> </div><div class="relative flex items-start gap-6 lg:gap-0 reveal" style="--reveal-delay:0.08s">  <div class="hidden lg:block lg:w-1/2 ">  </div>  <div class="relative shrink-0 lg:absolute lg:left-1/2 lg:-translate-x-1/2 z-10"> <div class="w-12 h-12 rounded-xl bg-accent flex items-center justify-center shadow-sm"> <span class="text-xs font-extrabold text-white font-primary">2</span> </div> </div>  <div class="lg:w-1/2 lg:pl-12 min-w-0">  <div class="lg:hidden"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-1">2013</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Scaling the Simulation</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">We draw people from all corners of the world to try the simulation out.</p> </div>  <div class="hidden lg:block"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-2">2013</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Scaling the Simulation</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">We draw people from all corners of the world to try the simulation out.</p> </div> </div> </div><div class="relative flex items-start gap-6 lg:gap-0 reveal" style="--reveal-delay:0.16s">  <div class="hidden lg:block lg:w-1/2 pr-12 text-right"> <div class="inline-block"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-2">2015</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">100 Global Universities</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">On track to working with 100 universities worldwide.</p> </div> </div>  <div class="relative shrink-0 lg:absolute lg:left-1/2 lg:-translate-x-1/2 z-10"> <div class="w-12 h-12 rounded-xl bg-secondary flex items-center justify-center shadow-sm"> <span class="text-xs font-extrabold text-white font-primary">3</span> </div> </div>  <div class="lg:w-1/2  min-w-0">  <div class="lg:hidden"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-1">2015</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">100 Global Universities</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">On track to working with 100 universities worldwide.</p> </div>   </div> </div><div class="relative flex items-start gap-6 lg:gap-0 reveal" style="--reveal-delay:0.24s">  <div class="hidden lg:block lg:w-1/2 ">  </div>  <div class="relative shrink-0 lg:absolute lg:left-1/2 lg:-translate-x-1/2 z-10"> <div class="w-12 h-12 rounded-xl bg-primary-light flex items-center justify-center shadow-sm"> <span class="text-xs font-extrabold text-white font-primary">4</span> </div> </div>  <div class="lg:w-1/2 lg:pl-12 min-w-0">  <div class="lg:hidden"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-1">2017</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Second-Generation Launch</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">The second-generation platform called Simbound Sense, is starting to take shape.</p> </div>  <div class="hidden lg:block"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-2">2017</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Second-Generation Launch</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">The second-generation platform called Simbound Sense, is starting to take shape.</p> </div> </div> </div><div class="relative flex items-start gap-6 lg:gap-0 reveal" style="--reveal-delay:0.32s">  <div class="hidden lg:block lg:w-1/2 pr-12 text-right"> <div class="inline-block"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-2">2018</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Prestigious Recognition Earned</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">Simbound is declared the best startup in Europe for the Edtech category by Finnova and the European Commission.</p> </div> </div>  <div class="relative shrink-0 lg:absolute lg:left-1/2 lg:-translate-x-1/2 z-10"> <div class="w-12 h-12 rounded-xl bg-accent-dark flex items-center justify-center shadow-sm"> <span class="text-xs font-extrabold text-white font-primary">5</span> </div> </div>  <div class="lg:w-1/2  min-w-0">  <div class="lg:hidden"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-1">2018</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Prestigious Recognition Earned</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">Simbound is declared the best startup in Europe for the Edtech category by Finnova and the European Commission.</p> </div>   </div> </div><div class="relative flex items-start gap-6 lg:gap-0 reveal" style="--reveal-delay:0.4s">  <div class="hidden lg:block lg:w-1/2 ">  </div>  <div class="relative shrink-0 lg:absolute lg:left-1/2 lg:-translate-x-1/2 z-10"> <div class="w-12 h-12 rounded-xl bg-secondary-dark flex items-center justify-center shadow-sm"> <span class="text-xs font-extrabold text-white font-primary">6</span> </div> </div>  <div class="lg:w-1/2 lg:pl-12 min-w-0">  <div class="lg:hidden"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-1">2020</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Third-Generation Development</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">Work on the 3rd generation Digital Marketing Simulation platform begins.</p> </div>  <div class="hidden lg:block"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-2">2020</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Third-Generation Development</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">Work on the 3rd generation Digital Marketing Simulation platform begins.</p> </div> </div> </div><div class="relative flex items-start gap-6 lg:gap-0 reveal" style="--reveal-delay:0.48s">  <div class="hidden lg:block lg:w-1/2 pr-12 text-right"> <div class="inline-block"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-2">2024</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Advanced Suite Launch</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">There are six digital marketing simulations available, all integrated. Three are AI-powered.</p> </div> </div>  <div class="relative shrink-0 lg:absolute lg:left-1/2 lg:-translate-x-1/2 z-10"> <div class="w-12 h-12 rounded-xl bg-primary flex items-center justify-center shadow-sm"> <span class="text-xs font-extrabold text-white font-primary">7</span> </div> </div>  <div class="lg:w-1/2  min-w-0">  <div class="lg:hidden"> <div class="text-xs font-bold text-text-muted/80 tracking-[0.15em] uppercase font-primary mb-1">2024</div> <h3 class="text-lg font-bold text-primary-dark font-primary mb-2">Advanced Suite Launch</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">There are six digital marketing simulations available, all integrated. Three are AI-powered.</p> </div>   </div> </div> </div> </div> </div> </section><section class="bg-surface py-20 lg:py-28 relative overflow-hidden" aria-label="Initial Cards"> <div class="max-w-7xl mx-auto px-6 lg:px-8"> <!-- Heading --> <div class="text-center max-w-2xl mx-auto mb-14 lg:mb-20 reveal"> <div class="inline-flex items-center gap-3 mb-5"> <span class="w-8 h-[2px] bg-accent"></span> <span class="text-[11px] font-bold tracking-[0.2em] text-text-muted/80 uppercase font-primary">Our Values</span> <span class="w-8 h-[2px] bg-accent"></span> </div> <h2 class="text-3xl lg:text-[2.75rem] font-extrabold text-primary-dark tracking-tight font-primary"> What We <span class="font-secondary italic text-primary">Stand For</span> </h2> <p class="mt-4 text-text-muted text-base lg:text-lg leading-relaxed font-primary"> Three principles that guide our journey and every simulation we build. </p> </div> <!-- Fan spread cards --> <div class="flex flex-col md:flex-row items-center justify-center gap-6 md:gap-4 lg:gap-0"> <div class="relative bg-white rounded-2xl p-6 md:p-8 lg:p-10 border border-border/30 shadow-[0_8px_30px_rgba(0,0,0,0.05)] w-full md:flex-1 md:min-w-0 md:max-w-[380px] md:-rotate-3 md:translate-y-4 reveal" style="--reveal-delay:0s"> <div class="w-16 h-16 rounded-2xl flex items-center justify-center mb-6 shadow-sm" style="background:linear-gradient(to bottom right,#178280,#36D4D9)"> <span class="text-3xl font-extrabold text-white font-primary">E</span> </div> <h3 class="text-xl font-bold text-primary-dark font-primary mb-3">Education</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">We believe that well-designed education can solve the world's most pressing problems. Our commitment to developing interactive, modern tools for learners of all backgrounds is what allows us to persevere. We are inspired by the talent of students and interns worldwide, and we strive to be the ultimate partner for those working to achieve their dreams.</p> </div><div class="relative bg-white rounded-2xl p-6 md:p-8 lg:p-10 border border-border/30 shadow-[0_8px_30px_rgba(0,0,0,0.05)] w-full md:flex-1 md:min-w-0 md:max-w-[380px] md:rotate-0 md:-translate-y-2 md:z-10 reveal" style="--reveal-delay:0.1s"> <div class="w-16 h-16 rounded-2xl flex items-center justify-center mb-6 shadow-sm" style="background:linear-gradient(to bottom right,#C9B112,#F0E50C)"> <span class="text-3xl font-extrabold text-white font-primary">T</span> </div> <h3 class="text-xl font-bold text-primary-dark font-primary mb-3">Technology</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">We use technology to empower future leaders, not to dictate their priorities. While we recognize the immense power of digital marketing, we are also aware of the risks of its misu
243se. We provide the tools for critical thinking and informed decision-making, ensuring that we always put people and their real-world needs first.</p> </div><div class="relative bg-white rounded-2xl p-6 md:p-8 lg:p-10 border border-border/30 shadow-[0_8px_30px_rgba(0,0,0,0.05)] w-full md:flex-1 md:min-w-0 md:max-w-[380px] md:rotate-3 md:translate-y-4 reveal" style="--reveal-delay:0.2s"> <div class="w-16 h-16 rounded-2xl flex items-center justify-center mb-6 shadow-sm" style="background:linear-gradient(to bottom right,#365BCF,#0889FF)"> <span class="text-3xl font-extrabold text-white font-primary">I</span> </div> <h3 class="text-xl font-bold text-primary-dark font-primary mb-3">Impact</h3> <p class="text-sm text-text-muted leading-relaxed font-primary">We care about more than just profit; we invest in a better world. From promoting eco-friendly online learning to being an equal opportunity employer for young professionals, our governance is rooted in ethics. We understand that digital marketing isn't just about websites—it’s about the power to highlight causes that can truly help society.</p> </div> </div> </div> </section><section class="relative py-24 lg:py-32 overflow-hidden" aria-label="Features"> <!-- Background image --> <div class="absolute inset-0"> <div class="w-full h-full bg-primary-dark"></div> <div class="absolute inset-0 bg-primary-dark/80 backdrop-blur-[2px]"></div> </div> <div class="relative max-w-7xl mx-auto px-6 lg:px-8"> <!-- Heading --> <div class="text-center max-w-2xl mx-auto mb-14 lg:mb-16 reveal"> <div class="inline-flex items-center gap-3 mb-5"> <span class="w-8 h-[2px] bg-accent"></span> <span class="text-[11px] font-bold tracking-[0.2em] text-white/80 uppercase font-primary">Why Simbound</span> <span class="w-8 h-[2px] bg-accent"></span> </div> <h2 class="text-3xl lg:text-[2.75rem] font-extrabold text-white tracking-tight leading-tight font-primary"> What Makes Us <span class="font-secondary italic text-secondary-light">Different</span> </h2> <p class="mt-4 text-white/80 text-base lg:text-lg leading-relaxed font-primary"> Built specifically for higher education, Simbound goes beyond generic marketing tools to deliver a rich environment for learning. </p> </div> <!-- 2x2 Glass benefit cards --> <div class="grid sm:grid-cols-2 gap-4 lg:gap-5 max-w-4xl mx-auto"> <div class="group bg-white/[0.06] backdrop-blur-xl border border-white/[0.08] rounded-2xl p-7 lg:p-8 hover:bg-white/[0.12] transition-all duration-500 reveal" style="--reveal-delay:0s"> <div class="text-3xl font-extrabold text-accent/30 font-primary mb-3 group-hover:text-accent/50 transition-colors duration-300"> 01 </div> <h3 class="text-lg font-bold text-white font-primary mb-2">Realistic Simulations</h3> <p class="text-sm text-white/80 leading-relaxed font-primary">Every channel — SEO, SEM, Email, Social, Affiliates — is modelled on real-world mechanics, giving students an authentic decision-making experience without any risk or expense.</p> </div><div class="group bg-white/[0.06] backdrop-blur-xl border border-white/[0.08] rounded-2xl p-7 lg:p-8 hover:bg-white/[0.12] transition-all duration-500 reveal" style="--reveal-delay:0.08s"> <div class="text-3xl font-extrabold text-accent/30 font-primary mb-3 group-hover:text-accent/50 transition-colors duration-300"> 02 </div> <h3 class="text-lg font-bold text-white font-primary mb-2">AI-Enhanced Learning</h3> <p class="text-sm text-white/80 leading-relaxed font-primary">Integrated AI tools provide content suggestions, performance insights, and adaptive difficulty so every student learns at their optimal pace. AI is also used by teachers.</p> </div><div class="group bg-white/[0.06] backdrop-blur-xl border border-white/[0.08] rounded-2xl p-7 lg:p-8 hover:bg-white/[0.12] transition-all duration-500 reveal" style="--reveal-delay:0.16s"> <div class="text-3xl font-extrabold text-accent/30 font-primary mb-3 group-hover:text-accent/50 transition-colors duration-300"> 03 </div> <h3 class="text-lg font-bold text-white font-primary mb-2">Comprehensive Analytics</h3> <p class="text-sm text-white/80 leading-relaxed font-primary">
243Easy to navigate dashboards and exportable reports let instructors track progress, compare teams, and seamlessly integrate simulation results into course assessment workflows.</p> </div><div class="group bg-white/[0.06] backdrop-blur-xl border border-white/[0.08] rounded-2xl p-7 lg:p-8 hover:bg-white/[0.12] transition-all duration-500 reveal" style="--reveal-delay:0.24s"> <div class="text-3xl font-extrabold text-accent/30 font-primary mb-3 group-hover:text-accent/50 transition-colors duration-300"> 04 </div> <h3 class="text-lg font-bold text-white font-primary mb-2">Trusted Expertise</h3> <p class="text-sm text-white/80 leading-relaxed font-primary">The solution chosen by educators and independent learners for years — and still their favorite. Our specialist team is independent, attentive, and ready to deliver no matter the complexity involved.</p> </div> </div> </div> </section><section class="bg-white py-20 lg:py-28 relative overflow-hidden" aria-label="Team"> <div class="absolute top-[10%] left-[5%] w-[300px] h-[300px] rounded-full bg-accent/[0.03] blur-[70px] pointer-events-none" aria-hidden="true"></div> <div class="max-w-7xl mx-auto px-6 lg:px-8"> <!-- Heading --> <div class="text-center max-w-2xl mx-auto mb-14 lg:mb-20 reveal" style="--reveal-delay:0s"> <div class="inline-flex items-center gap-3 mb-5"> <span class="w-8 h-[2px] bg-accent"></span> <span class="text-[11px] font-bold tracking-[0.2em] text-text-muted/80 uppercase font-primary">Our Team</span> <span class="w-8 h-[2px] bg-accent"></span> </div> <h2 class="text-3xl lg:text-[2.75rem] font-extrabold text-primary-dark tracking-tight font-primary"> The People Behind <span class="font-secondary italic text-primary">Simbound</span> </h2> <p class="mt-4 text-text-muted text-base lg:text-lg leading-relaxed font-primary"> A passionate team of educators, engineers, and marketers united by one goal — making experiential learning accessible to every university. </p> </div> <!-- Team grid --> <div class="grid sm:grid-cols-2 lg:grid-cols-4 gap-6 lg:gap-8"> <div class="group text-center reveal" style="--reveal-delay:0s"> <!-- Avatar --> <div class="relative mx-auto w-32 h-32 mb-5"> <img src="/_astro/Zl7XLJm069VX1bwW_tristanseuillet_Z1WSkP3.webp" alt="Tristan Seulliet" loading="lazy" decoding="async" fetchpriority="auto" width="128" height="128" class="w-full h-full rounded-2xl object-cover shadow-[0_8px_30px_rgba(0,0,0,0.08)] group-hover:shadow-[0_12px_40px_rgba(0,0,0,0.12)] transition-shadow duration-300 rotate-2 group-hover:rotate-0 transition-transform"> <!-- Small accent dot --> <div class="absolute -bottom-1 -right-1 w-6 h-6 rounded-lg bg-accent flex items-center justify-center shadow-sm"> <svg class="w-3 h-3 text-white" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/></svg> </div> </div> <h3 class="text-base font-bold text-primary-dark font-primary">Tristan Seulliet</h3> <p class="mt-1 text-sm text-text-muted font-primary">Simbound France</p> </div><div class="group text-center reveal" style="--reveal-delay:0.08s"> <!-- Avatar --> <div class="relative mx-auto w-32 h-32 mb-5"> <img src="/_astro/Zk9iCyol0Zci9ZiD_aurel_tumurug_1kBV2L.webp" alt="Aurel Tumurug" loading="lazy" decoding="async" fetchpriority="auto" width="128" height="128" class="w-full h-full rounded-2xl object-cover shadow-[0_8px_30px_rgba(0,0,0,0.08)] group-hover:shadow-[0_12px_40px_rgba(0,0,0,0.12)] transition-shadow duration-300 rotate-2 group-hover:rotate-0 transition-transform"> <!-- Small accent dot --> <div class="absolute -bottom-1 -right-1 w-6 h-6 rounded-lg bg-accent flex items-center justify-center shadow-sm"> <svg class="w-3 h-3 text-white" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/></svg> </div> </div> <h3 class="text-base font-bold text-primary-dark font-primary">Aurel Tumurug</h3> <p class="mt-1 text-sm text-text-muted font-primary">Developer</p> </div><div class="group text-center reveal" style="--reveal-delay:0.16s"> <!-- Avatar --> <div class="relative mx-auto w-32 h-32 mb-5"> <img src="/_astro/Zk9h7yol0Zci9Zh4_alin_chedea_Z1gs1Lx.webp" alt="Alin Chedea" loading="lazy" decoding="async" fetchpriority="auto" width="128" height="128" class="w-full h-full rounded-2xl object-cover shadow-[0_8px_30px_rgba(0,0,0,0.08)] group-hover:shadow-[0_12px_40px_rgba(0,0,0,0.12)] transition-shadow duration-300 rotate-2 group-hover:rotate-0 transition-transform"> <!-- Small accent dot --> <div class="absolute -bottom-1 -right-1 w-6 h-6 rounded-lg bg-accent flex items-center justify-center shadow-sm"> <svg class="w-3 h-3 text-white" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/></svg> </div> </div> <h3 class="text-base font-bold text-primary-dark font-primary">Alin Chedea</h3> <p class="mt-1 text-sm text-text-muted font-primary">CTO</p> </div><div class="group text-center reveal" style="--reveal-delay:0.24s"> <!-- Avatar --> <div class="relative mx-auto w-32 h-32 mb-5"> <img src="/_astro/Zk22xyol0Zci9WBA_mark_pic_ZVYGKi.webp" alt="Mark Zielonka" loading="lazy" decoding="async" fetchpriority="auto" width="128" height="128" class="w-full h-full rounded-2xl object-cover shadow-[0_8px_30px_rgba(0,0,0,0.08)] group-hover:shadow-[0_12px_40px_rgba(0,0,0,0.12)] transition-shadow duration-300 rotate-2 group-hover:rotate-0 transition-transform"> <!-- Small accent dot --> <div class="absolute -bottom-1 -right-1 w-6 h-6 rounded-lg bg-accent flex items-center justify-center shadow-sm"> <svg class="w-3 h-3 text-white" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/></svg> </div> </div> <h3 class="text-base font-bold text-primary-dark font-primary">Mark Zielonka</h3> <p class="mt-1 text-sm text-text-muted font-primary">Simbound Canada</p> </div><div class="group text-center reveal" style="--reveal-delay:0.32s"> <!-- Avatar --> <div class="relative mx-auto w-32 h-32 mb-5"> <img src="/_astro/Zl7WnZm069VX1bvy_VarulPatil_ZhEWW.webp" alt="Varun Patil" loading="lazy" decoding="async" fetchpriority="auto" width="128" height="128" class="w-full h-full rounded-2xl object-cover shadow-[0_8px_30px_rgba(0,0,0,0.08)] group-hover:shadow-[0_12px_40px_rgba(0,0,0,0.12)] transition-shadow duration-300 rotate-2 group-hover:rotate-0 transition-transform"> <!-- Small accent dot --> <div class="absolute -bottom-1 -right-1 w-6 h-6 rounded-lg bg-accent flex items-center justify-center shadow-sm"> <svg class="w-3 h-3 text-white" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/></svg> </div> </div> <h3 class="text-base font-bold text-primary-dark font-primary">Varun Patil</h3> <p class="mt-1 text-sm text-text-muted font-primary">Simbound India</p> </div><div class="group text-center reveal" style="--reveal-delay:0.4s"> <!-- Avatar --> <div class="relative mx-auto w-32 h-32 mb-5"> <img src="/_astro/ZkNrWSol0Zci9HOv_Louiscrop_1aSjYC.webp" alt="Louis Havriliuc" loading="lazy" decoding="async" fetchpriority="auto" width="128" height="128" class="w-full h-full rounded-2xl object-cover shadow-[0_8px_30px_rgba(0,0,0,0.08)] group-hover:shadow-[0_12px_40px_rgba(0,0,0,0.12)] transition-shadow duration-300 rotate-2 group-hover:rotate-0 transition-transform"> <!-- Small accent dot --> <div class="absolute -bottom-1 -right-1 w-6 h-6 rounded-lg bg-accent flex items-center justify-center shadow-sm"> <svg class="w-3 h-3 text-white" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/></svg> </div> </div> <h3 class="text-base font-bold text-primary-dark font-primary">Louis Havriliuc</h3> <p class="mt-1 text-sm text-text-muted font-primary">CEO &amp; Founder</p> </div><div class="group text-center reveal" style="--reveal-delay:0.48s"> <!-- Avatar --> <div class="relative mx-auto w-32 h-32 mb-5"> <img src="/_astro/Zl7XJpm069VX1bwS_Fabiosandes_Z25QPJh.webp" alt="Fabio Sandes" loading="lazy" decoding="async" fetchpriority="auto" width="128" height="128" class="w-full h-full rounded-2xl object-cover shadow-[0_8px_30px_rgba(0,0,0,0.08)] group-hover:shadow-[0_12px_40px_rgba(0,0,0,0.12)] transition-shadow duration-300 rotate-2 group-hover:rotate-0 transition-transform"> <!-- Small accent dot --> <div class="absolute -bottom-1 -right-1 w-6 h-6 rounded-lg bg-accent flex items-center justify-center shadow-sm"> <svg class="w-3 h-3 text-white" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/></svg> </div> </div> <h3 class="text-base font-bold text-primary-dark font-primary">Fabio Sandes</h3> <p class="mt-1 text-sm text-text-muted font-primary">Simbound Portugal</p> </div><div class="group text-center reveal" style="--reveal-delay:0.56s"> <!-- Avatar --> <div class="relative mx-auto w-32 h-32 mb-5"> <img src="/_astro/aWiu_gIvOtkhBmLd_DigitalMarketingCompetitionWinner-IuliaPentek_Z1gDCv5.webp" alt="Iulia Pentek" loading="lazy" decoding="async" fetchpriority="auto" width="128" height="128" class="w-full h-full rounded-2xl object-cover shadow-[0_8px_30px_rgba(0,0,0,0.08)] group-hover:shadow-[0_12px_40px_rgba(0,0,0,0.12)] transition-shadow duration-300 rotate-2 group-hover:rotate-0 transition-transform"> <!-- Small accent dot --> <div class="absolute -bottom-1 -right-1 w-6 h-6 rounded-lg bg-accent flex items-center justify-center shadow-sm"> <svg class="w-3 h-3 text-white" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/></svg> </div> </div> <h3 class="text-base font-bold text-primary-dark font-primary">Iulia Pentek</h3> <p class="mt-1 text-sm text-text-muted font-primary">Operations</p> </div> </div> </div> </section><section class="bg-cream py-20 lg:py-28 relative overflow-hidden" aria-label="Testimonials"> <div class="absolute top-[5%] right-[10%] w-[300px] h-[300px] rounded-full bg-primary/[0.04] blur-[60px] pointer-events-none"></div> <div class="max-w-7xl mx-auto px-6 lg:px-8"> <!-- Heading --> <div class="max-w-2xl mb-14 lg:mb-16 reveal"> <div class="inline-flex items-center gap-3 mb-5"> <span class="w-8 h-[2px] bg-accent"></span> <span class="text-[11px] font-bold tracking-[0.2em] text-text-muted/80 uppercase font-primary">Testimonials</span> </div> <h2 class="text-3xl lg:text-[2.75rem] font-extrabold text-primary-dark tracking-tight font-primary"> Trusted by  <span class="font-secondary italic text-primary">Educators</span>  Worldwide </h2> </div> <!-- Masonry testimonial cards --> <div class="columns-1 md:columns-2 lg:columns-3 gap-6 lg:gap-8"> <blockquote class="group relative bg-white rounded-2xl p-7 lg:p-9 border-l-4 border-l-primary shadow-[0_8px_30px_rgba(0,0,0,0.04)] hover:shadow-[0_18px_55px_rgba(0,0,0,0.09)] hover:-translate-y-0.5 transition-all duration-500 mb-6 lg:mb-8 break-inside-avoid reveal" style="--reveal-delay:0s"> <!-- Oversized decorative quote glyph --> <span class="absolute -top-2 right-5 text-[7rem] leading-none text-primary/15 font-secondary select-none pointer-events-none" aria-hidden="true">&ldquo;</span> <div class="relative z-10"> <!-- Quote --> <p class="font-secondary italic text-text leading-relaxed text-[1.02rem] lg:text-[1.08rem] mb-7"> Everything went very well for the Paris and Lille courses. The students were once again delighted with the experience. It continues to be a pleasure to run this session, which mixes stress, decision making, timing and gaming, and always delights! </p> <!-- Hairline divider --> <div class="h-px bg-gradient-to-r from-border via-border/60 to-transparent mb-5"></div> <!-- Attribution --> <footer class="flex items-center gap-4"> <div class="relative shrink-0"> <img src="/_astro/ZwU5yYF3NbkBXA3Q_romain_baert2_ZGTrPV.webp" alt="Romain Baert" loading="lazy" decoding="async" fetchpriority="auto" width="192" height="192" class="w-24 h-24 rounded-2xl object-cover shadow-[0_8px_24px_rgba(0,0,0,0.10)] ring-4 ring-primary/15 rotate-2 group-hover:rotate-0 group-hover:shadow-[0_12px_32px_rgba(0,0,0,0.14)] transition-all duration-500"> <!-- Accent badge --> <div class="absolute -bottom-1 -right-1 w-7 h-7 rounded-lg bg-primary flex items-center justify-center shadow-md ring-2 ring-white"> <svg class="w-3.5 h-3.5 text-white" fill="currentColor" viewBox="0 0 20 20" aria-hidden="true"> <path d="M5.92 6.5h2.66l-1.6 7H4.42l1.5-7zm6.62 0h2.66l-1.6 7h-2.56l1.5-7z"/> </svg> </div> </div> <div class="min-w-0 flex-1"> <div class="font-bold text-primary-dark text-[0.95rem] font-primary leading-tight"> Romain Baert </div> <div class="mt-1 text-xs text-text-muted font-primary leading-snug">
243 Skema Business School France </div> </div> </footer>  </div> </blockquote><blockquote class="group relative bg-white rounded-2xl p-7 lg:p-9 border-l-4 border-l-accent shadow-[0_8px_30px_rgba(0,0,0,0.04)] hover:shadow-[0_18px_55px_rgba(0,0,0,0.09)] hover:-translate-y-0.5 transition-all duration-500 mb-6 lg:mb-8 break-inside-avoid reveal" style="--reveal-delay:0.12s"> <!-- Oversized decorative quote glyph --> <span class="absolute -top-2 right-5 text-[7rem] leading-none text-accent/20 font-secondary select-none pointer-events-none" aria-hidden="true">&ldquo;</span> <div class="relative z-10"> <!-- Quote --> <p class="font-secondary italic text-text leading-relaxed text-[1.02rem] lg:text-[1.08rem] mb-7"> Simbound is a useful tool in our Digital Marketing class. It provides students with a risk-free environment to apply concepts such as PPC ads, landing page creation, and email marketing. The Simbound Team are very supportive and provide quick and prompt help, which is essential for teaching a large cohort. </p> <!-- Hairline divider --> <div class="h-px bg-gradient-to-r from-border via-border/60 to-transparent mb-5"></div> <!-- Attribution --> <footer class="flex items-center gap-4"> <div class="relative shrink-0"> <img src="/_astro/ZnF3Spm069VX11vD_dion_ang_ZGDprh.webp" alt="Dionysius Ang" loading="lazy" decoding="async" fetchpriority="auto" width="192" height="192" class="w-24 h-24 rounded-2xl object-cover shadow-[0_8px_24px_rgba(0,0,0,0.10)] ring-4 ring-accent/20 rotate-2 group-hover:rotate-0 group-hover:shadow-[0_12px_32px_rgba(0,0,0,0.14)] transition-all duration-500"> <!-- Accent badge --> <div class="absolute -bottom-1 -right-1 w-7 h-7 rounded-lg bg-accent flex items-center justify-center shadow-md ring-2 ring-white"> <svg class="w-3.5 h-3.5 text-white" fill="currentColor" viewBox="0 0 20 20" aria-hidden="true"> <path d="M5.92 6.5h2.66l-1.6 7H4.42l1.5-7zm6.62 0h2.66l-1.6 7h-2.56l1.5-7z"/> </svg> </div> </div> <div class="min-w-0 flex-1"> <div class="font-bold text-primary-dark text-[0.95rem] font-primary leading-tight"> Dionysius Ang </div> <div class="mt-1 text-xs text-text-muted font-primary leading-snug"> University of Leeds Business School </div> </div> </footer>  </div> </blockquote><blockquote class="group relative bg-white rounded-2xl p-7 lg:p-9 border-l-4 border-l-secondary shadow-[0_8px_30px_rgba(0,0,0,0.04)] hover:shadow-[0_18px_55px_rgba(0,0,0,0.09)] hover:-translate-y-0.5 transition-all duration-500 mb-6 lg:mb-8 break-inside-avoid reveal" style="--reveal-delay:0.24s"> <!-- Oversized decorative quote glyph --> <span class="absolute -top-2 right-5 text-[7rem] leading-none text-secondary/25 font-secondary select-none pointer-events-none" aria-hidden="true">&ldquo;</span> <div class="relative z-10"> <!-- Quote --> <p class="font-secondary italic text-text leading-relaxed text-[1.02rem] lg:text-[1.08rem] mb-7"> Following the usage of the simulation we have found that student engagement increased as did the quality of the summative assessments and overall student knowledge. </p> <!-- Hairline divider --> <div class="h-px bg-gradient-to-r from-border via-border/60 to-transparent mb-5"></div> <!-- Attribution --> <footer class="flex items-center gap-4"> <div class="relative shrink-0"> <img src="/_astro/ZmgBqZm069VX1nzx_Rohim_Mohammed_Z16udkD.webp" alt="Rohim Mohammed" loading="lazy" decoding="async" fetchpriority="auto" width="192" height="192" class="w-24 h-24 rounded-2xl object-cover shadow-[0_8px_24px_rgba(0,0,0,0.10)] ring-4 ring-secondary/20 rotate-2 group-hover:rotate-0 group-hover:shadow-[0_12px_32px_rgba(0,0,0,0.14)] transition-all duration-500"> <!-- Accent badge --> <div class="absolute -bottom-1 -right-1 w-7 h-7 rounded-lg bg-secondary flex items-center justify-center shadow-md ring-2 ring-white"> <svg class="w-3.5 h-3.5 text-white" fill="currentColor" viewBox="0 0 20 20" aria-hidden="true"> <path d="M5.92 6.5h2.66l-1.6 7H4.42l1.5-7zm6.62 0h2.66l-1.6 7h-2.56l1.5-7z"/> </svg> </div> </div> <div class="min-w-0 flex-1"> <div class="font-bold text-primary-dark text-[0.95rem] font-primary leading-tight"> Rohim Mohammed </div> <div class="mt-1 text-xs text-text-muted font-primary leading-snug"> Lecturer in Digital Marketing - University College Birmingham </div> </div> </footer>  </div> </blockquote> </div> </div> </section><section class="bg-white py-20 lg:py-28" aria-label="FAQ" data-astro-cid-i6nurfvm> <div class="max-w-7xl mx-auto px-6 lg:px-8" data-astro-cid-i6nurfvm>
243 <div class="grid lg:grid-cols-5 gap-12 lg:gap-16" data-astro-cid-i6nurfvm> <!-- LEFT: Sticky heading + image --> <div class="lg:col-span-2 reveal" data-astro-cid-i6nurfvm> <div class="lg:sticky lg:top-24" data-astro-cid-i6nurfvm> <div class="inline-flex items-center gap-3 mb-5" data-astro-cid-i6nurfvm> <span class="w-8 h-[2px] bg-accent" data-astro-cid-i6nurfvm></span> <span class="text-[11px] font-bold tracking-[0.2em] text-text-muted/80 uppercase font-primary" data-astro-cid-i6nurfvm>FAQ</span> </div> <h2 class="text-3xl lg:text-4xl font-extrabold text-primary-dark tracking-tight font-primary leading-tight" data-astro-cid-i6nurfvm> Common <br data-astro-cid-i6nurfvm><span class="font-secondary italic text-primary" data-astro-cid-i6nurfvm>Questions</span> </h2> <p class="mt-4 text-text-muted text-base leading-relaxed font-primary" data-astro-cid-i6nurfvm> Everything you need to know about who we are and how to work with us. </p> <!-- Decorative image -->  </div> </div> <!-- RIGHT: Accordion --> <div class="lg:col-span-3 space-y-3" data-astro-cid-i6nurfvm> <details class="group bg-surface rounded-2xl border border-border/30 hover:border-primary/15 transition-colors duration-300 reveal" style="--reveal-delay:0s" data-astro-cid-i6nurfvm> <summary class="flex items-center justify-between cursor-pointer list-none gap-4 px-6 py-5" data-astro-cid-i6nurfvm> <h3 class="font-primary font-semibold text-primary-dark text-[0.95rem] group-open:text-primary transition-colors" data-astro-cid-i6nurfvm>What exactly is Simbound?</h3> <span class="shrink-0 w-7 h-7 rounded-lg bg-white border border-border/40 flex items-center justify-center group-open:bg-accent group-open:border-accent transition-all duration-300" data-astro-cid-i6nurfvm> <svg class="w-4 h-4 text-text-muted/70 group-open:text-white group-open:rotate-45 transition-all duration-300" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-i6nurfvm=""> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4" data-astro-cid-i6nurfvm=""/> </svg> </span> </summary> <div class="px-6 pb-5 -mt-1" data-astro-cid-i6nurfvm> <p class="text-sm text-text-muted leading-relaxed font-primary pr-8" data-astro-cid-i6nurfvm>Simbound is the pioneering digital marketing simulation platform designed for higher education. It lets students practise SEO, search advertising, email marketing, social media, community management, and affiliate marketing in a realistic, risk-free competitive environment.</p> </div> </details><details class="group bg-surface rounded-2xl border border-border/30 hover:border-primary/15 transition-colors duration-300 reveal" style="--reveal-delay:0.05s" data-astro-cid-i6nurfvm> <summary class="flex items-center justify-between cursor-pointer list-none gap-4 px-6 py-5" data-astro-cid-i6nurfvm> <h3 class="font-primary font-semibold text-primary-dark text-[0.95rem] group-open:text-primary transition-colors" data-astro-cid-i6nurfvm>Who is behind Simbound?</h3> <span class="shrink-0 w-7 h-7 rounded-lg bg-white border border-border/40 flex items-center justify-center group-open:bg-accent group-open:border-accent transition-all duration-300" data-astro-cid-i6nurfvm> <svg class="w-4 h-4 text-text-muted/70 group-open:text-white group-open:rotate-45 transition-all duration-300" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-i6nurfvm=""> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4" data-astro-cid-i6nurfvm=""/> </svg> </span> </summary> <div class="px-6 pb-5 -mt-1" data-astro-cid-i6nurfvm> <p class="text-sm text-text-muted leading-relaxed font-primary pr-8" data-astro-cid-i6nurfvm>Simbound was founded by a team of marketing professionals and technologists passionate about education and simulations. Today the team includes educators, engineers, and data scientists working from Europe and beyond.</p> </div> </details><details class="group bg-surface rounded-2xl border border-border/30 hover:border-primary/15 transition-colors duration-300 reveal" style="--reveal-delay:0.1s" data-astro-cid-i6nurfvm> <summary class="flex items-center justify-between cursor-pointer list-none gap-4 px-6 py-5" data-astro-cid-i6nurfvm> <h3 class="font-primary font-semibold text-primary-dark text-[0.95rem] group-open:text-primary transition-colors" data-astro-cid-i6nurfvm>How do universities get started?</h3> <span class="shrink-0 w-7 h-7 rounded-lg bg-white border border-border/40 flex items-center justify-center group-open:bg-accent group-open:border-accent transition-all duration-300" data-astro-cid-i6nurfvm> <svg class="w-4 h-4 text-text-muted/70 group-open:text-white group-open:rotate-45 transition-all duration-300" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-i6nurfvm=""> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4" data-astro-cid-i6nurfvm=""/> </svg> </span> </summary> <div class="px-6 pb-5 -mt-1" data-astro-cid-i6nurfvm> <p class="text-sm text-text-muted leading-relaxed font-primary pr-8" data-astro-cid-i6nurfvm>It starts with requesting access credentials and a personalized tutorial. Our team walks y
243ou through the platform, helps map simulations to your syllabus, and supports you through the first semester. Most instructors are up and running within a few days.</p> </div> </details><details class="group bg-surface rounded-2xl border border-border/30 hover:border-primary/15 transition-colors duration-300 reveal" style="--reveal-delay:0.15000000000000002s" data-astro-cid-i6nurfvm> <summary class="flex items-center justify-between cursor-pointer list-none gap-4 px-6 py-5" data-astro-cid-i6nurfvm> <h3 class="font-primary font-semibold text-primary-dark text-[0.95rem] group-open:text-primary transition-colors" data-astro-cid-i6nurfvm>Where can I learn more or schedule a demo?</h3> <span class="shrink-0 w-7 h-7 rounded-lg bg-white border border-border/40 flex items-center justify-center group-open:bg-accent group-open:border-accent transition-all duration-300" data-astro-cid-i6nurfvm> <svg class="w-4 h-4 text-text-muted/70 group-open:text-white group-open:rotate-45 transition-all duration-300" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-i6nurfvm=""> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4" data-astro-cid-i6nurfvm=""/> </svg> </span> </summary> <div class="px-6 pb-5 -mt-1" data-astro-cid-i6nurfvm> <p class="text-sm text-text-muted leading-relaxed font-primary pr-8" data-astro-cid-i6nurfvm>Visit our Request a Demo page or reach out directly at [email protected]. We offer personalised walkthroughs and pilot programs so you can experience the platform before committing.</p> </div> </details> </div> </div> </div> </section> 
243<script type="module">if(typeof IntersectionObserver<"u"){const t=new IntersectionObserver(e=>{e.forEach(r=>{r.isIntersecting&&(r.target.classList.add("revealed"),t.unobserve(r.target))})},{threshold:.08,rootMargin:"0px 0px -30px 0px"});document.querySelectorAll(".reveal").forEach(e=>t.observe(e))}</script>
243  </main> <footer class="bg-primary-dark text-white"> <!-- Main footer --> <div class="max-w-7xl mx-auto px-6 lg:px-8 pt-16 pb-10"> <div class="grid grid-cols-1 md:grid-cols-12 gap-12"> <!-- Brand column --> <div class="md:col-span-4 flex flex-col gap-6"> <div class="flex flex-wrap items-center gap-4"> <a href="/" class="inline-block"> <img src="/_astro/ZjDBB93JpQ5PTQ6c_logo-white_4JqGc.webp" alt="simbound logo white" loading="lazy" decoding="async" fetchpriority="auto" width="208" height="45" class="h-9 w-auto"> </a> <a href="/about/" class="inline-flex items-center gap-1.5 rounded-full border border-white/20 bg-white/10 px-4 py-1.5 text-sm font-semibold text-white transition-all duration-200 hover:border-accent hover:bg-accent hover:scale-105"> Our Story <iconify-icon icon="lucide:arrow-right" class="block shrink-0 text-base"></iconify-icon> </a> </div> <p class="text-white/80 text-sm leading-relaxed max-w-xs"> The leading digital marketing simulation platform trusted by universities worldwide. </p> <!-- Social icons --> <div class="flex gap-3"> <a href="https://www.linkedin.com/company/simbound" target="_blank" rel="nofollow noopener noreferrer" aria-label="LinkedIn" class="w-9 h-9 rounded-full bg-white/10 flex items-center justify-center hover:bg-accent hover:scale-105 transition-all duration-200"> <svg class="w-4 h-4 fill-current" viewBox="0 0 24 24"> <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/> </svg> </a><a href="https://vimeo.com/simbot" target="_blank" rel="nofollow noopener noreferrer" aria-label="Vimeo" class="w-9 h-9 rounded-full bg-white/10 flex items-center justify-center hover:bg-accent hover:scale-105 transition-all duration-200"> <svg class="w-4 h-4 fill-current" viewBox="0 0 24 24"> <path d="M23.9765 6.4168c-.105 2.338-1.739 5.5429-4.894 9.6088-3.2679 4.247-6.0258 6.3699-8.2898 6.3699-1.409 0-2.578-1.294-3.553-3.881l-1.9179-7.1138c-.719-2.584-1.488-3.878-2.312-3.878-.179 0-.806.378-1.8809 1.132l-1.129-1.457a315.06 315.06 0 003.501-3.1279c1.579-1.368 2.765-2.085 3.5539-2.159 1.867-.18 3.016 1.1 3.447 3.838.465 2.953.789 4.789.971 5.507.545 2.477 1.146 3.7159 1.803 3.7159.51 0 1.276-.806 2.294-2.416 1.017-1.611 1.563-2.836 1.636-3.6769.145-1.391-.401-2.088-1.636-2.088-.581 0-1.18.134-1.797.401 1.194-3.9169 3.475-5.821 6.843-5.7128 2.496.075 3.674 1.6968 3.53 4.8618z"/> </svg> </a> </div> </div> <!-- Link groups --> <div class="md:col-span-8 grid grid-cols-2 sm:grid-cols-3 gap-8"> <div> <h2 class="font-semibold text-sm uppercase tracking-wider text-white/90 mb-4">Our Simulations</h2> <div>  <ul class="flex flex-col gap-2.5"> <li> <a href="/simulations/web/" class="text-sm text-white/80 hover:text-white transition-colors"> Website &amp; SEO </a> </li><li> <a href="/simulations/sem/" class="text-sm text-white/80 hover:text-white transition-colors"> Search Advertising </a> </li><li> <a href="/simulations/email/" class="text-sm text-white/80 hover:text-white transition-colors"> Email Marketing </a> </li><li> <a href="/simulations/social/" class="text-sm text-white/80 hover:text-white transition-colors"> Social Media </a> </li><li> <a href="/simulations/community/" class="text-sm text-white/80 hover:text-white transition-colors"> Brand Community </a> </li><li> <a href="/simulations/affiliate/" class="text-sm text-white/80 hover:text-white transition-colors"> Affiliate Marketing </a> </li> </ul> </div> </div><div> <h2 class="font-semibold text-sm uppercase tracking-wider text-white/90 mb-4">For Business</h2> <div>  <ul class="flex flex-col gap-2.5"> <li> <a href="/partners/" class="text-sm text-white/80 hover:text-white transition-colors"> Partners </a> </li><li> <a href="/marketing-training-tool-for-employees/" class="text-sm text-white/80 hover:text-white transition-colors"> Corporate Solution </a> </li><li> <a href="/referrals-affiliate-program/" class="text-sm text-white/80 hover:text-white transition-colors"> Affiliate Program </a> </li> </ul> </div><div class="mt-6"> <h3 class="text-[11px] font-bold tracking-[0.2em] uppercase text-white/80 mb-3"> Partner Websites </h3> <ul class="flex flex-col gap-2.5"> <li>
243 <a href="https://www.simbound.fr/" class="text-sm text-white/80 hover:text-white transition-colors"> Simbound.FR </a> </li><li> <a href="https://marketingsquads.com/" class="text-sm text-white/80 hover:text-white transition-colors"> Marketing Squads </a> </li> </ul> </div> </div><div> <h2 class="font-semibold text-sm uppercase tracking-wider text-white/90 mb-4">Get Support</h2> <div>  <ul class="flex flex-col gap-2.5"> <li> <a href="/contact/" class="text-sm text-white/80 hover:text-white transition-colors"> Contact </a> </li><li> <a href="/help/" class="text-sm text-white/80 hover:text-white transition-colors"> Help Center </a> </li> </ul> </div> </div> </div> </div> </div> <!-- Bottom bar --> <div class="border-t border-white/10"> <div class="max-w-7xl mx-auto px-6 lg:px-8 py-5 flex flex-col sm:flex-row items-center justify-between gap-3 text-xs text-white/80"> <div class="flex flex-wrap items-center justify-center gap-x-3"> <span>&copy; 2026 Apollo Edtech SRL</span> <span class="hidden sm:inline">&middot;</span> <a href="/privacy-policy/" class="hover:text-white transition-colors">Privacy Policy</a> <span>&middot;</span> <a href="/terms/" class="hover:text-white transition-colors">Terms of Use</a> <span>&middot;</span> <a href="/cookie-policy/" class="hover:text-white transition-colors">Cookie Policy</a> </div> <p>Simbound encourages smart &amp; responsible online communications</p> </div> </div> </footer> <div id="sim-chat-root" data-lang="en"> <!-- Teaser pill (first-visit nudge) --> <div id="sim-chat-teaser" class="sim-teaser" hidden> <span class="sim-teaser-text">Got a question? I&#39;m here.</span> <span class="sim-teaser-tail"></span> </div> <!-- Launcher button --> <button id="sim-chat-launcher" type="button" class="sim-launcher" aria-label="Open chat with Simbot" aria-expanded="false" aria-controls="sim-chat-panel"> <span class="sim-launcher-glow" aria-hidden="true"></span> <svg viewBox="0 0 32 32" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <path d="M6 8 C6 5 9 4 12 4 H22 C26 4 28 6 28 10 V18 C28 21.5 26 23.5 22.5 23.5 H14.5 L9 28 L10.2 23.2 C7.5 22.4 6 20.5 6 18 Z"/> <circle cx="13" cy="13" r="1.35" fill="currentColor" stroke="none"/> <circle cx="21" cy="13" r="1.35" fill="currentColor" stroke="none"/> <path d="M12.5 17.5 Q17 20.5 21.5 17.5"/> </svg> </button> <!-- Chat panel --> <section id="sim-chat-panel" class="sim-panel" role="dialog" aria-labelledby="sim-chat-title" aria-modal="false" hidden> <header class="sim-header"> <div class="sim-avatar" aria-hidden="true"> <span>S</span> </div> <div class="sim-header-text"> <div class="sim-header-name" id="sim-chat-title"> Simbot <span class="sim-online" aria-label="Online"></span> </div> <div class="sim-header-tag font-secondary italic">your guide to Simbound</div> </div> <button id="sim-chat-close" type="button" class="sim-close" aria-label="Close chat"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"> <path d="M6 6 L18 18 M18 6 L6 18"/> </svg> </button> </header> <div id="sim-chat-messages" class="sim-messages" role="log" aria-live="polite" aria-atomic="false"></div> <div id="sim-chat-toast" class="sim-toast" role="status" aria-live="polite" hidden></div> <footer class="sim-footer"> <a id="sim-chat-escalate" href="/contact/" class="sim-escalate-btn"> <iconify-icon icon="lucide:user-round" aria-hidden="true"></iconify-icon> <span id="sim-chat-escalate-label">Talk to a real person</span> </a> <form id="sim-chat-form" class="sim-form" autocomplete="off"> <input id="sim-chat-input" type="text" class="sim-input" placeholder="Ask anything…" aria-label="Ask anything…" maxlength="500"> <button type="submit" class="sim-send" aria-label="Send message"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <path d="M22 2 L11 13"/> <path d="M22 2 L15 22 L11 13 L2 9 Z"/> </svg> </button> </form> </footer> </section> </div> 
243<script>(function(){const apiUrl = "https://app.simbound.com/website_api/sendChatbotRequest";
244const categories = [{"id":"student","label":"Student Attending a University Course","icon":"lucide:graduation-cap","intro":"Welcome! To register, open the enrollment link from your professor or visit /signup/ and enter the 5-character course code. Do not select \"Individual Subscription Plan (Non-Academic)\". If you misplaced your password then use the password recovery link below.","links":[{"label":"Sign Up","sub":"Register your Simbound account","href":"/signup/"},{"label":"Log In","sub":"Access your Dashboard","href":"/login/"},{"label":"Reset Password","sub":"Forgot your Credentials?","href":"/reset-password/"}],"escalateHref":"/contact/","escalateLabel":"Talk to a real person","featured":false,"inferenceKeywords":["course code","enrollment link","enrolment link","my professor","forgot password","register for class","i am a student","i'm a student"]},{"id":"professor","label":"Professor / Educator Evaluating Simbound","icon":"lucide:presentation","intro":"Simbound gives your students hands-on practice across 6 fully integrated digital marketing simulations — and is used by 120+ universities. Get up and running in minutes with our self-service setup. Book a free demo to learn more.","links":[{"label":"Request a Demo","sub":"Get login credentials and a walk-through with our team","href":"/request-demo/"},{"label":"How Licensing Works","sub":"Choose from a variety of flexible licensing options.","href":"/licensing/"},{"label":"Contact Us","sub":"Talk to a real person","href":"/contact/"}],"escalateHref":"/request-demo/","escalateLabel":"Schedule a Demo","featured":false,"inferenceKeywords":["demo","curriculum","my students","course setup","instructor","professor","university course","cohort","pricing for university","lecturer","teach","syllabus"]},{"id":"selfLearner","label":"Self-Learner: Individual Seeking Practice","icon":"lucide:compass","intro":"Sign up, tick \"Individual Subscription Plan (Non-Academic)\", and pick a user plan.","links":[{"label":"Sign Up","sub":"Register your Simbound account","href":"/signup/"},{"label":"For Self-Learners","sub":"Open Enrollment courses","href":"/digital-marketing-practice-simulation-exercises/"},{"label":"Contact Us","sub":"Talk to a real person","href":"/contact/"}],"escalateHref":"/contact/","escalateLabel":"Talk to a real person","featured":false,"inferenceKeywords":["self-paced","self paced","individual plan","without university","on my own","independent","tutoring","self-learner","self learner"]},{"id":"partner","label":"Software Reseller or Integration Partner","icon":"lucide:handshake","intro":"Simbound has a structured partner program with three models: Reseller, Referral, and Integration. No technical expertise required — we provide training, co-branded materials, and a dedicated partner manager.","links":[{"label":"Partner Registration","sub":"Apply toda","href":"/partners/"},{"label":"Licensing","sub":"Models & terms","href":"/licensing/"},{"label":"Email Louis","sub":"[email protected]","href":"mailto:[email protected]"}],"escalateHref":"/partners/","escalateLabel":"Apply to the partner program","featured":false,"inferenceKeywords":["reseller","white-label","white label","oem","partner program","integration","revenue share","commission","lms","distribute","distributor"]},{"id":"competition","label":"Future Competition Participant","icon":"lucide:trophy","intro":"The Simbound Global competition is a free, individual digital marketing challenge. Every entrant gets 100 credits — enough to compete if you plan carefully. Top 5 receive an official Simbound certificate.","links":[{"label":"Competition Page","sub":"Rules, dates, prizes","href":"/digital-marketing-competition/"},{"label":"Join the Competition","sub":"Sign up with code 4911A","href":"/signup/?app=4911A"},{"label":"Past Winners","sub":"Winter 25 results","href":"/competition-winners-winter25/"}],"escalateHref":"/contact/","escalateLabel":"Talk to a real person","featured":false,"inferenceKeywords":["competition","simbound global","simbound masters","compete","prize","winner","4911a","top 5","leaderboard"]}];
245const i18n = {"greeting":"Hi! I'm here to help you find your way around Simbound. What best describes you?","
245inputPlaceholder":"Ask anything…","sendAria":"Send message","closeAria":"Close chat","launcherAria":"Open chat with Simbot","botName":"Simbot","tagline":"your guide to Simbound","online":"Online","teaser":"Got a question? I'm here.","typing":"Simbot is typing","errorFallback":"Hmm, I couldn't reach the team just now — but you can email [email protected] or WhatsApp +40 723 673 388 for the exact answer.","limitReached":"You've reached the chat usage limit for now. For urgent inquiries, please reach out using email [email protected] or WhatsApp +40 723 673 388 and we'll get back to you quickly. Thank you!","inferredPrefix":"It sounds like you might be","escalateSubtle":"Didn't find what you're looking for?","escalateDefault":"Talk to a real person","escalateDefaultHref":"/contact/","notMe":"No, that's not me","emailCopied":"Email copied to clipboard","emailCopyFailed":"Couldn't copy — please copy manually","emailCopyEnabled":true,"aiInstructions":"Use a maximum of 90 words. Tone should be friendly, polite and professional. If the question is not related to digital marketing education, educational simulations or learning topics answer: Sorry, I was not built for this type of conversation. Can I help you with something else? Link only to Simbound pages (do not link to any external page).","aiResponseFormat":"To suggest clickable shortcuts after your reply, append [[ACTIONS]]<JSON array>[[/ACTIONS]]. Each item is {\"label\": \"...\", and one of: \"href\": \"/url-with-trailing-slash/ or mailto:...\", \"message\": \"auto-sent follow-up question\", \"pick\": \"<one of the audience-category IDs listed in the audience-categories context line>\"}. IMPORTANT: internal URLs MUST start with \"/\" and end with \"/\" (e.g., \"/contact/\" — never \"contact\", \"/contact\", \"simbound.com/contact\", or \"https://simbound.com/contact/\"). Use up to 4 actions, only when genuinely useful for this visitor. IMPORTANT: Fetch and check the website sitemap, and tailor recommendations based on the existing pages. Sitemap URL: https://simbound.com/sitemap.xml. IMPORTANT: Determine the language of the question that is asked and answer in the same language. Here is the question:"};
246const validPaths = ["privacy-policy","","simulations/web","simulations/email","simulations/affiliate","simulations/social","simulations/community","simulations/sem","help","blog/why-i-teach-with-simulators","license-auction","jobs","simbound-vs-competitors","global-voices","licensing","blog/new-research","request-demo","help/restart-round","signup","blog/what-professors-look-for-in-a-digital-marketing-simulation","blog/from-simulation-to-employment","contact","help/switch-course-existing-account","e-commerce-game","help/publish-profile-marketing-squads","help/decisions-disabled","blog/new-scenario-tool","terms","help/refund","help/pricing-plans","help/course-setup-guide","blog/new-academic-year","blog/internship-story","digital-marketing-competition","competition-winners-winter25","blog/engaging-simulation-4-steps","blog/edtech-quarantine","blog/infographics","blog/european-markets","blog/animation","blog/self-learning","blog/win-marketing-simulation","blog/large-scale-courses","blog/universities-practicability","blog/skema-success","blog/website-simulation-update","blog/simbound-in-canada","blog/grading","cookie-policy","blog/erasmus-plus-simbound","blog/ai-marketing","blog/successful-simulation","blog/a-peek-inside-simbounds-quality-score-algorithm","blog/global-voices-expansion","partners","blog/user-survey","blog/gdpr-in-educational-technology-simbound","blog/simbound-journey","blog/market-simulation","blog/clients-developments","blog/course-control","blog/academic-grading","blog/erasmus-skills","blog/ai-simbound","blog/competitions-growth","blog/free-use","blog/practice-rounds","blog/new-licensing","blog/dissertation-university-leeds","blog/new-reports","blog/recruitment-simulations","blog/new-era-learning","blog/students-feedback","blog/7-years-of-simbound","blog/strong-community","blog/learner-user-experience","blog/digital-marketing-essential-2
246023","blog/50-teaching-simulation-tips","blog/skills","blog/learning-survey-results","blog/experience","login","vlog","blog","about","reset-password","recover-password","digital-marketing-practice-simulation-exercises","marketing-simulation-software-for-university-students","marketing-training-tool-for-employees","referrals-affiliate-program"];
247
248  const STORAGE_KEY = 'simbound:chat'
249  const TEASER_KEY = 'simbound:teaserShown'
250  let userInteracted = false
251
252  const root = document.getElementById('sim-chat-root')
253  const launcher = document.getElementById('sim-chat-launcher')
254  const teaser = document.getElementById('sim-chat-teaser')
255  const panel = document.getElementById('sim-chat-panel')
256  const closeBtn = document.getElementById('sim-chat-close')
257  const messagesEl = document.getElementById('sim-chat-messages')
258  const form = document.getElementById('sim-chat-form')
259  const input = document.getElementById('sim-chat-input')
260  const escalateLink = document.getElementById('sim-chat-escalate')
261  const escalateLabel = document.getElementById('sim-chat-escalate-label')
262  const toast = document.getElementById('sim-chat-toast')
263
264  let toastTimer = null
265  function showToast(message, variant) {
266    if (!toast) return
267    toast.textContent = message
268    toast.classList.remove('sim-toast-error')
269    if (variant === 'error') toast.classList.add('sim-toast-error')
270    toast.removeAttribute('hidden')
271    // Force reflow so the in-animation re-fires on consecutive copies
272    void toast.offsetWidth
273    toast.classList.add('sim-toast-in')
274    if (toastTimer) clearTimeout(toastTimer)
275    toastTimer = window.setTimeout(function () {
276      toast.classList.remove('sim-toast-in')
277      toastTimer = window.setTimeout(function () {
278        toast.setAttribute('hidden', '')
279      }, 220)
280    }, 2200)
281  }
282
283  async function copyTextToClipboard(text) {
284    try {
285      if (navigator.clipboard && window.isSecureContext) {
286        await navigator.clipboard.writeText(text)
287        return true
288      }
289    } catch {
290      // fall through to legacy path
291    }
292    try {
293      const ta = document.createElement('textarea')
294      ta.value = text
295      ta.setAttribute('readonly', '')
296      ta.style.position = 'fixed'
297      ta.style.opacity = '0'
298      document.body.appendChild(ta)
299      ta.select()
300      const ok = document.execCommand('copy')
301      document.body.removeChild(ta)
302      return ok
303    } catch {
304      return false
305    }
306  }
307
308  function loadState() {
309    try {
310      const raw = sessionStorage.getItem(STORAGE_KEY)
311      if (!raw) return null
312      const parsed = JSON.parse(raw)
313      if (!parsed || typeof parsed !== 'object') return null
314      return parsed
315    } catch {
316      return null
317    }
318  }
319
320  function saveState() {
321    try {
322      sessionStorage.setItem(STORAGE_KEY, JSON.stringify(state))
323    } catch {
324      // sessionStorage might be disabled — fail silently
325    }
326  }
327
328  let state = loadState() || {
329    open: false,
330    category: null,
331    messages: [],
332    greeted: false,
333  }
334
335  function getCategory(id) {
336    return categories.find(function (c) { return c.id === id })
337  }
338
339  function escapeHtml(s) {
340    return String(s).replace(/[&<>"']/g, function (c) {
341      return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[c]
342    })
343  }
344
345  // Astro is configured with trailingSlash: 'always', so any internal URL
346  // without a trailing slash 404s. This normalizes any href before render.
347  // Skips schemes that don't have paths (mailto, tel, sms, hash, javascript)
348  // and paths whose last segment looks like a file (e.g., /foo.pdf).
349  // Also strips bare-domain prefixes the AI sometimes emits (e.g.,
350  // 'simbound.com/contact/' → '/contact/') so they don't resolve to
351  // <current-origin>/simbound.com/contact/.
352  function normalizeHref(href) {
353    if (!href || typeof href !== 'string') return href
354    let h = href.trim()
355    if (!h) return href
356    if (/^(mailto:|tel:|sms:|javascript:|#)/i.test(h)) return h
357
358    // Detect bare-domain inputs like "simbound.com/contact/" or
359    // "www.example.com/foo" (no scheme, no leading slash, first segment
360    // contains a '.'). Strip the domain so it becomes an internal path.
361    if (!/^https?:\/\//i.test(h) && !h.startsWith('/') && !h.startsWith('?') && !h.startsWith('./') && !h.startsWith('../')) {
362      const firstSlash = h.indexOf('/')
363      const firstSeg = firstSlash === -1 ? h : h.substring(0, firstSlash)
364      if (firstSeg.includes('.') && !firstSeg.startsWith('.')) {
365        const rest = firstSlash === -1 ? '' : h.substring(firstSlash)
366        h = rest || '/'
367      }
368    }
369
370    try {
371      const isAbsolute = /^https?:\/\//i.test(h)
372      const url = new URL(h, window.location.origin)
373      const path = url.pathname
374      const lastSeg = path.substring(path.lastIndexOf('/') + 1)
375      const hasExt = lastSeg && lastSeg.includes('.')
376      if (path && !path.endsWith('/') && !hasExt) {
377        url.pathname = path + '/'
378      }
379      return isAbsolute
380        ? url.toString()
381        : url.pathname + url.search + url.hash
382    } catch {
383      return h
384    }
385  }
386
387  // Built-time list of routes that actually exist on the site.
388  const VALID_PATHS = new Set(validPaths)
389
390  // Returns true if `href` points at something we know exists. The AI
391  // sometimes hallucinates plausible-looking URLs (/pricing/, /faq/, etc.);
392  // those get filtered out before render so users don't click into a 404.
393  // Trailing-slash variants and full https://simbound.com/... forms are
394  // accepted — anything internal is normalized to a canonical
395  // "no-slashes, lowercase, no query, no hash" form before lookup.
396  // Non-path schemes (mailto:, tel:, #) bypass the check.
397  function isValidHref(href) {
398    if (!href || typeof href !== 'string') return false
399    const trimmed = href.trim()
400    if (!trimmed) return false
401    if (/^(mailto:|tel:|sms:|javascript:|#)/i.test(trimmed)) return true
402
403    let pathOnly = trimmed
404    if (/^https?:\/\//i.test(trimmed)) {
405      try {
406        const u = new URL(trimmed)
407        // Only our own domains are eligible; everything else is rejected.
408        if (!/(^|\.)simbound\.com$/i.test(u.hostname)) return false
409        pathOnly = u.pathname
410      } catch {
411        return false
412      }
413    }
414
415    pathOnly = pathOnly.split('?')[0].split('#')[0]
416    const clean = pathOnly.replace(/^\/+|\/+$/g, '').toLowerCase()
417    return VALID_PATHS.has(clean)
418  }
419
420  // Minimal inline formatting: **bold**, paragraph breaks, auto-link bare URLs.
421  function formatBotText(text) {
422    let html = escapeHtml(text)
423    html = html.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>')
424    html = html.replace(/(https?:\/\/[^\s<]+)/g, function (match) {
425      const safe = normalizeHref(match)
426      return '<a href="' + safe + '" target="_blank" rel="noopener noreferrer">' + match + '</a>'
427    })
428    html = html.replace(/\n/g, '<br>')
429    return html
430  }
431
432  /**
433   * Parse the AI's reply for an [[ACTIONS]]...[[/ACTIONS]] block.
434   * The block must contain a JSON array of action objects:
435   *   { "label": "Sign up",      "href":    "/signup" }                 — anchor
436   *   { "label": "Pricing tiers","message": "What are the pricing tiers?" } — auto-prompt
437   *   { "label": "I'm a student","pick":    "student" }                  — set audience path
438   *
439   * If parsing fails (or no marker is present), the original text is returned
440   * untouched and `actions` is null. This is forward-compatible: backends that
441   * don't yet emit the marker continue to work exactly as before.
442   */
443  function parseActions(raw) {
444    if (typeof raw !== 'string') return { text: raw, actions: null }
445    const m = raw.match(/\[\[ACTIONS\]\]([\s\S]*?)\[\[\/ACTIONS\]\]/i)
446    if (!m) return { text: raw, actions: null }
447    let actions = null
448    try {
449      const parsed = JSON.parse(m[1].trim())
450      if (Array.isArray(parsed)) {
451        actions = parsed
452          .filter(function (a) {
453            return a && typeof a === 'object' && (a.label || a.text)
454          })
455          // Drop hallucinated href targets. If an action carries an href
456          // that doesn't resolve to a real route, strip the href; if that
457          // leaves no actionable payload at all (no message/pick fallback),
458          // drop the whole action so it never renders.
459          .map(function (a) {
460            if (!a.href) return a
461            if (isValidHref(String(a.href))) return a
462            const fallback = Object.assign({}, a)
463            delete fallback.href
464            return fallback
465          })
466          .filter(function (a) {
467            return a.href || a.message || a.pick
468          })
469      }
470    } catch {
471      actions = null
472    }
473    const cleaned = raw.replace(m[0], '').replace(/\n{3,}/g, '\n\n').trim()
474    return { text: cleaned, actions: actions && actions.length ? actions : null }
475  }
476
477  // ─── Category inference (only fires before a category has been selected) ──
478  // Keywords are attached to each category in the frontmatter (from Prismic
479  // `inference_keywords` or hardcoded fallback). Returns a category ID only
480  // when exactly one category matches — ambiguous or zero matches return null.
481  function inferCategory(text) {
482    const lower = text.toLowerCase()
483    const hits = categories.filter(function (c) {
484      const kws = c.inferenceKeywords || []
485      return kws.length > 0 && kws.some(function (w) { return w && lower.indexOf(w) !== -1 })
486    })
487    if (hits.length === 1) return hits[0].id
488    return null
489  }
490
491  // ─── Rendering ───────────────────────────────────────────────────────────
492  function renderMessages() {
493    messagesEl.innerHTML = state.messages.map(renderMessage).join('')
494    messagesEl.scrollTop = messagesEl.scrollHeight
495    bindMessageHandlers()
496  }
497
498  function renderMessage(m) {
499    if (m.role === 'user') {
500      return '<div class="sim-bubble-row sim-bubble-row-user">' +
501        '<div class="sim-bubble sim-bubble-user">' + escapeHtml(m.text) + '</div>' +
502        '</div>'
503    }
504
505    let html = '<div class="sim-bubble-row">'
506    html += '<div class="sim-bubble-avatar" aria-hidden="true"><span>S</span></div>'
507    html += '<div class="sim-bubble-stack">'
508    html += '<div class="sim-bubble sim-bubble-bot">' + formatBotText(m.text) + '</div>'
509
510    // Audience tile picker (greeting only)
511    if (m.quickReplies && m.quickReplies.length) {
512      html += '<div class="sim-tiles">'
513      m.quickReplies.forEach(function (id) {
514        const cat = getCategory(id)
515        if (!cat) return
516        const ribbon = cat.featured ? ' sim-tile-ribbon' : ''
517        html += '<button type="button" class="sim-tile' + ribbon + '" data-pick="' + cat.id + '">' +
518          '<span class="sim-tile-icon"><iconify-icon icon="' + cat.icon + '"></iconify-icon></span>' +
519          '<span class="sim-tile-label">' + escapeHtml(cat.label) + '</span>' +
520          '<svg class="sim-tile-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">' +
521          '<path d="M9 6 L15 12 L9 18"/>' +
522          '</svg>' +
523          '</button>'
524      })
525      html += '</div>'
526    }
527
528    // Inferred-category soft suggestion
529    if (m.suggestion) {
530      const sCat = getCategory(m.suggestion)
531      if (sCat) {
532        html += '<div class="sim-suggestion">' +
533          '<div class="sim-suggestion-text">' +
534          escapeHtml(i18n.inferredPrefix) + ' <strong>' + escapeHtml(sCat.label) + '</strong>.' +
535          '</div>' +
536          '<div class="sim-suggestion-actions">' +
537          '<button type="button" class="sim-suggestion-yes" data-pick="' + sCat.id + '">' +
538          escapeHtml(sCat.label) +
539          '</button>' +
540          '<button type="button" class="sim-suggestion-no" data-dismiss-suggestion>' +
541          escapeHtml(i18n.notMe) +
542          '</button>' +
543          '</div>' +
544          '</div>'
545      }
546    }
547
548    // Path link cards
549    if (m.links && m.links.length) {
550      html += '<div class="sim-link-cards">'
551      m.links.forEach(function (l) {
552        const safe = normalizeHref(l.href)
553        html += '<a class="sim-link-card" href="' + escapeHtml(safe) + '">' +
554          '<div class="sim-link-card-text">' +
555          '<div class="sim-link-card-label">' + escapeHtml(l.label) + '</div>' +
556          (l.sub ? '<div class="sim-link-card-sub">' + escapeHtml(l.sub) + '</div>' : '') +
557          '</div>' +
558          '<svg class="sim-link-card-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">' +
559          '<path d="M7 17 L17 7 M9 7 L17 7 L17 15"/>' +
560          '</svg>' +
561          '</a>'
562      })
563      html += '</div>'
564    }
565
566    // AI-suggested clickable actions (parsed from [[ACTIONS]] block)
567    if (m.actions && m.actions.length) {
568      html += '<div class="sim-actions">'
569      m.actions.forEach(function (a, idx) {
570        const label = escapeHtml(String(a.label || a.text || 'Open'))
571        if (a.href) {
572          const safe = normalizeHref(String(a.href))
573          html += '<a class="sim-action" href="' + escapeHtml(safe) + '">' +
574            label +
575            '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">' +
576            '<path d="M7 17 L17 7 M9 7 L17 7 L17 15"/></svg>' +
577            '</a>'
578        } else if (a.message) {
579          html += '<button type="button" class="sim-action" data-action-message="' +
580            escapeHtml(String(a.message)) + '">' + label + '</button>'
581        } else if (a.pick) {
582          html += '<button type="button" class="sim-action" data-pick="' +
583            escapeHtml(String(a.pick)) + '">' + label + '</button>'
584        }
585      })
586      html += '</div>'
587    }
588
589    // Inline subtle escalation under bot replies (after API answers)
590    if (m.showEscalation) {
591      const cat = getCategory(state.category)
592      const label = cat ? cat.escalateLabel : i18n.escalateDefault
593      const href = cat ? cat.escalateHref : i18n.escalateDefaultHref
594      html += '<a class="sim-inline-escalate" href="' + escapeHtml(normalizeHref(href)) + '">' +
595        '<span class="sim-inline-escalate-sub">' + escapeHtml(i18n.escalateSubtle) + '</span>' +
596        '<span class="sim-inline-escalate-label">' + escapeHtml(label) + ' →</span>' +
597        '</a>'
598    }
599
600    html += '</div></div>'
601    return html
602  }
603
604  function bindMessageHandlers() {
605    messagesEl.querySelectorAll('[data-pick]').forEach(function (btn) {
606      btn.addEventListener('click', function () { selectCategory(btn.getAttribute('data-pick')) })
607    })
608    messagesEl.querySelectorAll('[data-dismiss-suggestion]').forEach(function (btn) {
609      btn.addEventListener('click', dismissSuggestion)
610    })
611    messagesEl.querySelectorAll('[data-action-message]').forEach(function (btn) {
612      btn.addEventListener('click', function () {
613        const text = btn.getAttribute('data-action-message')
614        if (text) sendMessage(text)
615      })
616    })
617    // Mailto links → copy address to clipboard with toast feedback
618    // (skipped when the editor disables `email_copy_enabled` in Prismic).
619    if (i18n.emailCopyEnabled) {
620      messagesEl.querySelectorAll('a[href^="mailto:"]').forEach(function (a) {
621        a.addEventListener('click', async function (e) {
622          e.preventDefault()
623          const href = a.getAttribute('href') || ''
624          const email = href.replace(/^mailto:/i, '').split('?')[0].trim()
625          if (!email) return
626          const ok = await copyTextToClipboard(email)
627          if (ok) showToast(i18n.emailCopied)
628          else showToast(i18n.emailCopyFailed, 'error')
629        })
630      })
631    }
632  }
633
634  function pushMessage(m) {
635    state.messages.push(Object.assign({ ts: Date.now() }, m))
636    saveState()
637    renderMessages()
638  }
639
640  function dismissSuggestion() {
641    for (let i = state.messages.length - 1; i >= 0; i--) {
642      if (state.messages[i].suggestion) {
643        delete state.messages[i].suggestion
644        break
645      }
646    }
647    saveState()
648    renderMessages()
649  }
650
651  function selectCategory(id) {
652    const cat = getCategory(id)
653    if (!cat) return
654    state.category = id
655    // Strip any pending suggestions so they don't linger.
656    state.messages.forEach(function (m) { if (m.suggestion) delete m.suggestion })
657    saveState()
658
659    pushMessage({ role: 'user', text: cat.label })
660    pushMessage({
661      role: 'bot',
662      text: cat.intro,
663      links: cat.links,
664      showEscalation: false,
665    })
666    updateEscalation()
667  }
668
669  function updateEscalation() {
670    const cat = getCategory(state.category)
671    const label = cat ? cat.escalateLabel : i18n.escalateDefault
672    const href = cat ? cat.escalateHref : i18n.escalateDefaultHref
673    escalateLabel.textContent = label
674    escalateLink.setAttribute('href', normalizeHref(href))
675  }
676
677  // ─── Typing indicator (transient, not persisted) ─────────────────────────
678  function showTyping() {
679    if (document.getElementById('sim-typing')) return
680    const el = document.createElement('div')
681    el.className = 'sim-bubble-row'
682    el.id = 'sim-typing'
683    el.innerHTML =
684      '<div class="sim-bubble-avatar" aria-hidden="true"><span>S</span></div>' +
685      '<div class="sim-bubble-stack">' +
686      '<div class="sim-bubble sim-bubble-bot sim-typing" aria-label="' + escapeHtml(i18n.typing) + '">' +
687      '<span></span><span></span><span></span>' +
688      '</div></div>'
689    messagesEl.appendChild(el)
690    messagesEl.scrollTop = messagesEl.scrollHeight
691  }
692
693  function hideTyping() {
694    const el = document.getElementById('sim-typing')
695    if (el) el.remove()
696  }
697
698  // ─── API ────────────────────────────────────────────────────────────────
699  async function sendToApi(userText) {
700    const cat = getCategory(state.category)
701    const audience = cat ? cat.label : null
702    const pageUrl = window.location.href
703
704    // Last 7 user-side entries preceding the current one (free-text questions
705    // AND category-pick selections — both build the visitor's profile).
706    const allUser = state.messages.filter(function (m) { return m.role === 'user' })
707    const previous = allUser.slice(-8, -1)
708    const history = previous.map(function (m) { return m.text })
709
710    // The API only reads `message` and `page`. Everything else (audience,
711    // history, current URL, response-format spec) is embedded as a structured
712    // prefix in `message` so the upstream AI has full visitor context.
713    const contextLines = []
714    if (audience) contextLines.push('[Audience: ' + audience + ']')
715    contextLines.push('[Current page: ' + pageUrl + ']')
716    const categoryIds = categories
717      .map(function (c) { return c.id })
718      .filter(function (id) { return !!id })
719    if (categoryIds.length > 0) {
720      contextLines.push('[Audience categories: ' + categoryIds.join(', ') + ']')
721    }
722    if (history.length > 0) {
723      const hist = history
724        .map(function (h, i) { return (i + 1) + ') ' + h })
725        .join(' | ')
726      contextLines.push('[Recent user context: ' + hist + ']')
727    }
728    contextLines.push('[Instructions: ' + i18n.aiInstructions + ']')
729    contextLines.push('[Response format: ' + i18n.aiResponseFormat + ']')
730    const payload = contextLines.join(' ') + ' ' + userText
731
732    try {
733      const fd = new FormData()
734      fd.append('message', payload)
735      fd.append('page', pageUrl)
736      const res = await fetch(apiUrl, { method: 'POST', body: fd })
737      if (!res.ok) return { data: null, notice: null }
738      const json = await res.json()
739      const r = json && json.response
740      if (!r) return { data: null, notice: null }
741      // Hard rate-limit: regardless of `valid`, show our friendly
742      // "limit reached, contact us" message instead of the raw API text.
743      if (r.limit_reached === true) {
744        return { data: null, notice: i18n.limitReached }
745      }
746      // Other valid:false responses: surface the API's `txt` directly
747      // (e.g. soft errors with their own explanatory text).
748      if (!r.valid) {
749        const notice = typeof r.txt === 'string' && r.txt.trim() ? r.txt.trim() : null
750        return { data: null, notice: notice }
751      }
752      if (!r.data) return { data: null, notice: null }
753      return { data: r.data, notice: null }
754    } catch {
755      return { data: null, notice: null }
756    }
757  }
758
759  async function sendMessage(rawText) {
760    const text = (rawText || '').trim()
761    if (!text) return
762
763    pushMessage({ role: 'user', text: text })
764
765    let suggestion = null
766    if (!state.category) suggestion = inferCategory(text)
767
768    showTyping()
769    const result = await sendToApi(text)
770    hideTyping()
771
772    if (result.data) {
773      const parsed = parseActions(result.data)
774      pushMessage({
775        role: 'bot',
776        text: parsed.text,
777        actions: parsed.actions,
778        suggestion: suggestion,
779        showEscalation: true,
780      })
781    } else if (result.notice) {
782      pushMessage({
783        role: 'bot',
784        text: result.notice,
785        showEscalation: true,
786      })
787    } else {
788      pushMessage({
789        role: 'bot',
790        text: i18n.errorFallback,
791        showEscalation: true,
792      })
793    }
794  }
795
796  async function handleSubmit(e) {
797    e.preventDefault()
798    const text = input.value.trim()
799    if (!text) return
800    input.value = ''
801    await sendMessage(text)
802  }
803
804  // ─── Open/close ──────────────────────────────────────────────────────────
805  function setOpen(open) {
806    state.open = open
807    saveState()
808    if (open) {
809      panel.removeAttribute('hidden')
810      launcher.setAttribute('aria-expanded', 'true')
811      root.classList.add('sim-open')
812      hideTeaser()
813      // Animate in (re-trigger animation by removing/re-adding class)
814      panel.classList.remove('sim-panel-anim')
815      // Force reflow so animation re-fires after navigation
816      void panel.offsetWidth
817      panel.classList.add('sim-panel-anim')
818      // Skip autofocus on touch devices — focusing the input pops the
819      // mobile keyboard on every open and gets in the way of navigation.
820      const isTouch = window.matchMedia('(hover: none) and (pointer: coarse)').matches
821      if (!isTouch) {
822        setTimeout(function () { input && input.focus() }, 80)
823      }
824      messagesEl.scrollTop = messagesEl.scrollHeight
825    } else {
826      panel.setAttribute('hidden', '')
827      launcher.setAttribute('aria-expanded', 'false')
828      root.classList.remove('sim-open')
829      panel.classList.remove('sim-panel-anim')
830    }
831  }
832
833  // ─── Teaser ──────────────────────────────────────────────────────────────
834  function showTeaserOnce() {
835    try {
836      if (sessionStorage.getItem(TEASER_KEY)) return
837      sessionStorage.setItem(TEASER_KEY, '1')
838    } catch {
839      return
840    }
841    setTimeout(function () {
842      if (!state.open) {
843        teaser.removeAttribute('hidden')
844        teaser.classList.add('sim-teaser-in')
845      }
846      setTimeout(hideTeaser, 7000)
847    }, 4000)
848  }
849
850  function hideTeaser() {
851    teaser.setAttribute('hidden', '')
852    teaser.classList.remove('sim-teaser-in')
853  }
854
855  // ─── Greeting seed ───────────────────────────────────────────────────────
856  function seedGreeting() {
857    if (state.messages.length === 0 && !state.greeted) {
858      state.messages.push({
859        role: 'bot',
860        text: i18n.greeting,
861        quickReplies: categories.map(function (c) { return c.id }),
862        ts: Date.now(),
863      })
864      state.greeted = true
865      saveState()
866    }
867  }
868
869  // If the editor renamed/removed a category between sessions, the persisted
870  // state.category may point at a slug that no longer exists. Reset it so the
871  // user falls back to the default escalation target rather than a dead path.
872  if (state.category && !getCategory(state.category)) {
873    state.category = null
874    saveState()
875  }
876
877  // ─── Init ────────────────────────────────────────────────────────────────
878  seedGreeting()
879  renderMessages()
880  updateEscalation()
881  if (state.open) setOpen(true)
882
883  launcher.addEventListener('click', function () { userInteracted = true; setOpen(!state.open) })
884  closeBtn.addEventListener('click', function () { userInteracted = true; setOpen(false) })
885  form.addEventListener('submit', handleSubmit)
886  teaser.addEventListener('click', function () { userInteracted = true; setOpen(true) })
887
888  // On touch devices, persist open=false when the user taps a chat link
889  // that navigates to a new page, so the panel doesn't pop back open on
890  // arrival. Skips mailto/tel/sms/hash links and new-tab targets.
891  panel.addEventListener('click', function (e) {
892    const a = e.target.closest && e.target.closest('a[href]')
893    if (!a) return
894    if (!window.matchMedia('(hover: none) and (pointer: coarse)').matches) return
895    const href = a.getAttribute('href') || ''
896    if (/^(mailto:|tel:|sms:|javascript:|#)/i.test(href)) return
897    if (a.target === '_blank') return
898    state.open = false
899    saveState()
900  })
901
902  document.addEventListener('keydown', function (e) {
903    if (e.key === 'Escape' && state.open) { userInteracted = true; setOpen(false) }
904  })
905
906  showTeaserOnce()
907})();</script>
907   </body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.