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 & 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 & 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">↑↓</kbd> <kbd class="ml-1 rounded border border-border bg-white px-1.5 py-0.5">↵</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">“</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 & 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">“</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">“</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">“</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 & 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>© 2026 Apollo Edtech SRL</span> <span class="hidden sm:inline">·</span> <a href="/privacy-policy/" class="hover:text-white transition-colors">Privacy Policy</a> <span>·</span> <a href="/terms/" class="hover:text-white transition-colors">Terms of Use</a> <span>·</span> <a href="/cookie-policy/" class="hover:text-white transition-colors">Cookie Policy</a> </div> <p>Simbound encourages smart & 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'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 { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[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.