Web Page Design Overview

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

What is the primary purpose of using emphasis in web design?

  • To generate visual interest
  • To enhance navigation
  • To define the organization of information
  • To communicate your message effectively (correct)

When choosing typography for a web page, which font size is recommended for body text?

  • 18-20 pts
  • 14-18 pts (correct)
  • 8-10 pts
  • 12-14 pts

Which color scheme involves using colors that are adjacent to each other on the color wheel?

  • Analogous (correct)
  • Monochromatic
  • Triadic
  • Complementary

What is a key function of contrast in web design?

<p>Generate visual interest (C)</p>
Signup and view all the answers

What should be avoided when selecting fonts for a web page?

<p>Dancing letters (D)</p>
Signup and view all the answers

Why is it important to use browser-safe colors in web design?

<p>To make designs consistent across platforms (B)</p>
Signup and view all the answers

Which of the following rules is important for effective navigation on a web page?

<p>Group navigation tools in one place (C)</p>
Signup and view all the answers

What does the href attribute do in an HTML link?

<p>Specifies the URL the link points to (B)</p>
Signup and view all the answers

Which attribute is used to specify an alternate text for an image if it cannot be displayed?

<p>alt (D)</p>
Signup and view all the answers

What effect does the target attribute have when creating hyperlinks?

<p>Specifies how to open the linked document (B)</p>
Signup and view all the answers

What is the purpose of the style attribute in HTML?

<p>To apply specific styling to an element (A)</p>
Signup and view all the answers

How can the id attribute be used in an HTML document?

<p>To create bookmarks for navigation (A)</p>
Signup and view all the answers

What is a key principle of clarity in webpage content?

<p>Communicate the purpose of the page clearly. (C)</p>
Signup and view all the answers

Which element is essential for achieving visual balance on a webpage?

<p>Evenly distributing elements according to visual rules. (C)</p>
Signup and view all the answers

What is an example of a 'DO' in webpage design?

<p>Communicate with visual elements like white space and layout. (A)</p>
Signup and view all the answers

Which principle emphasizes using consistent terminology and organization in webpage content?

<p>Consistency (B)</p>
Signup and view all the answers

Which of the following statements about relevance in webpage content is correct?

<p>Updating information is crucial to maintaining relevance. (C)</p>
Signup and view all the answers

What should you avoid when designing a webpage in terms of navigation?

<p>Limiting user choices and access. (B)</p>
Signup and view all the answers

What type of network interconnects computers within a limited area, such as a school or office?

<p>LAN - Local Area Network (C)</p>
Signup and view all the answers

Which of the following options describes a WAN?

<p>Interconnects multiple offices and data centers. (B)</p>
Signup and view all the answers

Which guideline should be followed to maintain an informal tone in webpage content?

<p>Write in a conversational style to engage users. (A)</p>
Signup and view all the answers

Who invented the first program that allowed people to send mail electronically?

<p>Ray Tomlinson (A)</p>
Signup and view all the answers

What significant development occurred in 1984 regarding internet structure?

<p>The Domain Name System (C)</p>
Signup and view all the answers

What programming language was invented by Sun Microsystems in 1995 to enhance web interactivity?

<p>JAVA (A)</p>
Signup and view all the answers

Which protocol is used for sending email and messages over the internet?

<p>SMTP (A)</p>
Signup and view all the answers

Which year did the first graphical web browser, Mosaic, get released?

<p>1993 (C)</p>
Signup and view all the answers

What year did Facebook launch as a social media platform?

<p>2004 (C)</p>
Signup and view all the answers

Who proposed a communication system to create links to documents online in 1989?

<p>Tim Berners-Lee (C)</p>
Signup and view all the answers

Which of the following invented the symbol for expressing emotions in messages?

<p>Mackenzie (B)</p>
Signup and view all the answers

What function does the Voice over Internet Protocol (VoIP) serve?

<p>Facilitating conference calls (B)</p>
Signup and view all the answers

What major internet event happened in 2006?

<p>Creation of Twitter (B)</p>
Signup and view all the answers

What is the primary purpose of VoIP technology?

<p>To convert analog voice signals into data packets (C)</p>
Signup and view all the answers

Which component of a URL indicates the address of a unique web resource?

<p>URL (B)</p>
Signup and view all the answers

What does the top-level domain (TLD) signify?

<p>The type of entity an organization registers as (D)</p>
Signup and view all the answers

Who is credited with developing HTML?

<p>Tim Berners-Lee (C)</p>
Signup and view all the answers

What is an attribute in HTML?

<p>Additional information about HTML elements (C)</p>
Signup and view all the answers

What does HTML stand for?

<p>Hyper Text Markup Language (C)</p>
Signup and view all the answers

What was one of the main reasons Tim Berners-Lee invented HTML?

<p>To enable communication among scientists (C)</p>
Signup and view all the answers

How does a web browser interpret HTML?

<p>By reading the code and displaying the content on the screen (B)</p>
Signup and view all the answers

What is the function of a subdirectory in a URL?

<p>To indicate the particular section of a webpage (D)</p>
Signup and view all the answers

In what year was the very first web page using HTML posted to the internet?

<p>1990 (D)</p>
Signup and view all the answers

Flashcards

Web Page Emphasis

Communicating the message effectively and highlighting important information on a website, influencing the organization of information.

Visual Contrast

Using differences in colors, shapes, and sizes to make a webpage visually appealing and easy to navigate; creating interest and helping users find their way.

Website Typography

The arrangement of text on a website to enhance readability and convey a specific message (e.g., professional, casual).

Color Schemes

Using colors strategically to create a visual identity on a webpage. Includes monochromatic, analogous, complementary schemes.

Signup and view all the flashcards

Navigation Structure

How a webpage is organized to guide users to different sections; using visual cues and links.

Signup and view all the flashcards

Website Navigation Tools

Tools used to guide users to different parts of the website, like menus and links.

Signup and view all the flashcards

Breadcrumbs in Web Design

Provides a clear path to the specific web page one is currently viewing. Shows the hierarchical structure of website content.

Signup and view all the flashcards

Visual Balance

The arrangement of web page elements to create a visually pleasing and easy-to-understand layout.

Signup and view all the flashcards

Clarity

Clearly communicating the purpose of a web page.

Signup and view all the flashcards

Brevity

Using concise language and summarizing key information.

Signup and view all the flashcards

Informality

Using a friendly and engaging tone to make content interesting.

Signup and view all the flashcards

Accuracy

Ensuring information is correct and free of errors.

Signup and view all the flashcards

Relevance

Providing content tailored to the specific target audience.

Signup and view all the flashcards

Consistency

Maintaining a uniform style and terminology across a website.

Signup and view all the flashcards

LAN (Local Area Network)

A network connecting computers within a limited area, like a home or office.

Signup and view all the flashcards

WAN (Wide Area Network)

A network connecting devices and offices across a large distance, like a city or country.

Signup and view all the flashcards

What does the "href" attribute do?

The "href" attribute defines the URL of the page that a hyperlink will go to.

Signup and view all the flashcards

What is the purpose of the "src" attribute?

The "src" attribute is used to embed images within an HTML page by linking to the image file.

Signup and view all the flashcards

How do you create an image hyperlink?

To create an image that acts as a link, place the image tag () inside the anchor tag ().

Signup and view all the flashcards

What is the 'alt' attribute used for?

The 'alt' attribute provides alternative text for an image if it can't be displayed. This is useful for screen readers and when the image fails to load.

Signup and view all the flashcards

What is the "lang" attribute's purpose?

The "lang" attribute is used to declare the language of the web page.

Signup and view all the flashcards

Packet Switching

A method of data transmission where messages are broken down into small packets, sent independently, and reassembled at the destination.

Signup and view all the flashcards

ARPANET

The precursor to the internet, developed by the Department of Advanced Research Projects Agency (DARPA).

Signup and view all the flashcards

Email

Electronic mail, a system for sending and receiving messages via the internet.

Signup and view all the flashcards

Network Voice Protocol

A technology that enables voice communication over computer networks, like conference calls.

Signup and view all the flashcards

Emojis

Small digital icons that represent emotions, objects, or ideas, used in messaging.

Signup and view all the flashcards

Domain Name System (DNS)

A hierarchical naming system used to translate domain names into numerical IP addresses, like a phone book for the internet.

Signup and view all the flashcards

World Wide Web (WWW)

A system of interlinked hypertext documents accessed via the internet, allowing users to navigate and access information.

Signup and view all the flashcards

HTTP

Hyper Text Transfer Protocol, the standard protocol used for transmitting web pages and other files over the internet.

Signup and view all the flashcards

SMTP

Simple Mail Transfer Protocol, the protocol used for sending email messages and attachments over the internet.

Signup and view all the flashcards

FTP

File Transfer Protocol, a protocol used for transferring files between computers over the internet.

Signup and view all the flashcards

Scheme

The first part of a URL that tells the browser how to access the resource. Often 'http' or 'https' for secure connections.

Signup and view all the flashcards

Subdomain

A specific part of a website, often used for separate sections or services.

Signup and view all the flashcards

Second-level domain

The main name of a website, like 'google' in 'google.com'.

Signup and view all the flashcards

Top-level domain

Identifies the type of organization the website belongs to, like '.com' for commercial, '.org' for non-profit.

Signup and view all the flashcards

Subdirectory

A specific section or folder within a website, used to organize content.

Signup and view all the flashcards

Who invented HTML?

Tim Berners-Lee developed HTML to facilitate information sharing among scientists.

Signup and view all the flashcards

How does HTML work?

It provides instructions to a browser, telling it how to display content, images, and links.

Signup and view all the flashcards

Study Notes

Web Page Design

  • Emphasis: Effectively communicate the message, highlight crucial topics, and organize information for easy navigation.

  • Contrast: Generate visual interest and enable easy navigation by making the page appealing.

  • Typography: Enhance readability and complement graphics. Use typography to create a mental image and convey the appropriate tone (professional, recreational, whimsical). Maintain a readable size (12-10pts to 14-18pts for body text), and avoid "dancing letters." Choose fonts that fit the site, are readable, and widely available across browsers. Utilize Cascading Style Sheets (CSS) for defining formatting and applying styles.

  • Colors and graphics: Use color schemes, such as monochromatic, analogous, or complementary, that enhance the reader's experience, considering the needs of visually impaired individuals. Utilize appropriate graphic formats (GIF, JPEG) and place buttons and icons strategically. Opt for standard icons to improve recognizability. Provide matching text links for users with lower bandwidth. Make sure animated graphics turn off automatically to minimize distraction. Avoid flashing images.

Webpage Navigation

  • Structure: Visual cues guide users to their destination, with navigation tools grouped for easy access (horizontally or vertically). The placement of tools and terminology should be consistent. Utilizing a "breadcrumb trail" aids in finding the way back.

Webpage Content

  • Clarity: Communicate the page's purpose clearly.

  • Brevity: Use short sentences and provide a summary of the page.

  • Informality: Maintain an engaging and enticing tone.

  • Accuracy: Verify all facts and remove any typos to enhance the positive response of the reader.

  • Relevance: The content should match the target audience's needs. Relevant information should be prominently placed at the beginning (e.g., at the top). Keep information updated and provide options regarding the language used.

  • Consistency: Use standard, consistent terminology. Utilize a style guide.

Do's and Don'ts

  • DO'S: Address your target audience directly, personalize pages for specific users, communicate with visual elements (e.g., white space, contrast, layout), provide alternate graphics and multimedia solutions, and use consistent navigation tools. Provide "breadcrumb" trails and links to relevant external sites. Obtain approval before publishing content external to the site. Conduct thorough testing and seek feedback.

  • DON'TS: Limit your audience unnecessarily, make everything overly obvious, use large files, overuse multimedia, overload your pages with information, maintain inactive links, employ jarring colors, or publish external content without consent.

Webpage Elements

  • HTML: The fundamental code language for creating web pages.

  • HTML History: Evolution and key milestones (starting in 1964) involving important individuals and advancements like email, chat, etc.

  • Internet Protocols: (e.g., HTTP, SMTP, FTP, VoIP)

  • Components of a URL: Describe the scheme, subdomain, second-level domain, top-level domain, and subdirectory.

HTML Elements

  • HTML Attributes: Explain how attributes (like HREF, src, alt, width, height, lang, and style) provide additional information about HTML elements (like links, images, paragraphs).

  • HTML Tags: Explain which tags are mandatory and their placement in an HTML file (e.g., , , , <body> tags).</p> </li> <li> <p><strong>Paragraph Tags</strong> (p): Used for blocks of text</p> </li> <li> <p><strong>Horizontal Rules</strong> (hr): Used to separate content</p> </li> <li> <p><strong>Line Breaks</strong> (br): Used to break lines without starting new paragraphs.</p> </li> <li> <p><strong>Preformatted Text</strong> (<pre>): preserves spacing and line breaks.</p> </li> <li> <p><strong>Formatting Tags:</strong> (e.g., bold, italic, small, highlight, delete, underline, subscript, superscript)</p> </li> <li> <p><strong>Inline CSS:</strong> Modifying elements' appearance through CSS.</p> </li> </ul> <h3 id="html-colors" class="contents-heading">HTML Colors</h3> <ul> <li>Specify HTML colors using predefined color names, RGB, HEX, or HSL/HSLA values.</li> </ul> </div> </div> </div> <div class="mt-12"> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-gradient-to-t from-primary-0 to-primary-1 border-0 dark:border-primary-3 text-surface-0 sm:p-0 p-0 border-surface-4 dark:border-elevated-2 overflow-hidden"> <div class="flex flex-col md:flex-row relative"> <div class="w-full md:w-1/2 rounded-t-3xl md:rounded-l-3xl p-8 flex items-center relative z-10"> <div class="space-y-4 mr-4 text-center md:text-left"> <h2 class="text-2xl font-semibold text-white"> Studying That Suits <span class="text-secondary-1"> You </span> </h2> <p class="text-white text-md"> Use AI to generate personalized quizzes and flashcards to suit your learning preferences. </p> <div class="relative z-20 flex justify-center md:justify-start"> <button class="px-4 py-2.5 text-md rounded-xl w-auto bg-secondary-1 border-secondary-0 hover:bg-secondary-2 hover:border-secondary-1 active:bg-secondary-0 focus:shadow-outline-yellow text-elevated-4 disabled:bg-surface-4 disabled:text-elevated-0 disabled:border-surface-6 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center register-modal-button" x-data="" @click="$dispatch('open-modal', 'register')" color="highlight" type="button"> Get started for free </button> </div> </div> </div> <div class="w-full md:w-1/2 -mt-16 md:mt-0 relative z-0 md:z-10"> <img src="https://imagedelivery.net/1wpWmoOF0K-Y_NxLJO3e2w/9386c9f5-826e-486e-a4a1-ba6708215800/default" alt="Quiz Team" class="w-full h-56 sm:h-full object-cover object-top rounded-t-[2.5rem] md:rounded-r-2xl md:rounded-l-none"> </div> </div> </div> </div> <div class="dark:bg-elevated-4 mt-12"> <h2 class="text-xl font-bold contents-heading" id="study-notes"> Related Documents </h2> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-surface-0 dark:bg-elevated-3 border-surface-4 dark:border-elevated-2 sm:p-4 p-4 border-surface-4 dark:border-elevated-2 mt-6"> <div class="flex items-center justify-between"> <a class="text-primary-1 cursor-pointer dark:text-primary-1 hover:text-primary-2 text-lg font-medium" href="https://quizgecko.com/upload/ict-q2r-ljzI2C">Web Design Principles PDF</a> <div class="space-x-2"> <button class="px-3 py-2 text-sm rounded-xl w-auto bg-primary-1 border-primary-0 hover:bg-primary-3 active:bg-primary-0 focus:shadow-outline-indigo text-surface-0 disabled:bg-surface-4 disabled:text-surface-0 disabled:bg-surface-6 disabled:border-elevated-0 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" size="sm" @click="window.location.href = 'https://quizgecko.com/chat/assistant?upload_ids=705533&mode=chat'" type="button"> Chat with Document </button> </div> </div> </div> </div> </article> </main> <aside class="lg:col-span-1 hidden lg:block "> <div class="sticky top-6 border-l border-surface-4 dark:border-elevated-2 pl-6"> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-surface-0 dark:bg-elevated-3 border-surface-4 dark:border-elevated-2 sm:p-0 p-0 border-surface-4 dark:border-elevated-2"> <div x-data="visibleNavHighlighter" class="flex flex-col gap-6 items-start justify-start w-full flex-shrink-0 relative overflow-y-auto pl-4 pb-4 pt-4 max-h-[calc(100vh-3rem)]"> <div class="flex flex-col gap-4 items-start justify-start w-full flex-shrink-0 relative"> <div class="px-3 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'introduction', 'opacity-0': visibleHeadingId !== 'introduction' }"> </div> <div class="text-elevated-3 dark:text-surface-4 text-left font-semibold text-base leading-6 flex-1" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'introduction' }"> <a href="#introduction"> Introduction </a> </div> </div> <div class="px-3 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'podcast', 'opacity-0': visibleHeadingId !== 'podcast' }"> </div> <div class="text-elevated-3 dark:text-surface-4 text-left font-semibold text-base leading-6 flex-1" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'podcast' }"> <a href="#podcast"> Podcast </a> </div> </div> <div class="px-3 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'questions-and-answers', 'opacity-0': visibleHeadingId !== 'questions-and-answers' }"> </div> <div class="text-elevated-3 dark:text-surface-4 text-left font-semibold text-base leading-6 flex-1" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'questions-and-answers' }"> <a href="#questions-and-answers"> Questions and Answers </a> </div> </div> <div class="px-3 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'flashcards', 'opacity-0': visibleHeadingId !== 'flashcards' }"> </div> <div class="text-elevated-3 dark:text-surface-4 text-left font-semibold text-base leading-6 flex-1" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'flashcards' }"> <a href="#flashcards"> Flashcards </a> </div> </div> <div class="px-3 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'study-notes', 'opacity-0': visibleHeadingId !== 'study-notes' }"> </div> <div class="text-elevated-3 dark:text-surface-4 text-left font-semibold text-base leading-6 flex-1 flex items-center justify-between" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'study-notes' }"> <a href="#study-notes"> Study Notes </a> <button @click.prevent.stop="studyNotesExpanded = !studyNotesExpanded" class="transform transition-transform duration-200" :class="{ 'rotate-180': studyNotesExpanded }"> <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z"/></svg> </button> </div> </div> <div x-cloak x-show="studyNotesExpanded" x-transition.duration.200ms class="space-y-3"> <div class="px-6 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'web-page-design', 'opacity-0': visibleHeadingId !== 'web-page-design' }"> </div> <div class="text-elevated-1 dark:text-surface-5 text-left font-regular text-base leading-6 flex-1" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'web-page-design' }"> <a href="#web-page-design"> Web Page Design </a> </div> </div> <div class="px-6 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'webpage-navigation', 'opacity-0': visibleHeadingId !== 'webpage-navigation' }"> </div> <div class="text-elevated-1 dark:text-surface-5 text-left font-regular text-base leading-6 flex-1" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'webpage-navigation' }"> <a href="#webpage-navigation"> Webpage Navigation </a> </div> </div> <div class="px-6 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'webpage-content', 'opacity-0': visibleHeadingId !== 'webpage-content' }"> </div> <div class="text-elevated-1 dark:text-surface-5 text-left font-regular text-base leading-6 flex-1" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'webpage-content' }"> <a href="#webpage-content"> Webpage Content </a> </div> </div> <div class="px-6 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'dos-and-donts', 'opacity-0': visibleHeadingId !== 'dos-and-donts' }"> </div> <div class="text-elevated-1 dark:text-surface-5 text-left font-regular text-base leading-6 flex-1" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'dos-and-donts' }"> <a href="#dos-and-donts"> Do's and Don'ts </a> </div> </div> <div class="px-6 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'webpage-elements', 'opacity-0': visibleHeadingId !== 'webpage-elements' }"> </div> <div class="text-elevated-1 dark:text-surface-5 text-left font-regular text-base leading-6 flex-1" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'webpage-elements' }"> <a href="#webpage-elements"> Webpage Elements </a> </div> </div> <div class="px-6 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'html-elements', 'opacity-0': visibleHeadingId !== 'html-elements' }"> </div> <div class="text-elevated-1 dark:text-surface-5 text-left font-regular text-base leading-6 flex-1" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'html-elements' }"> <a href="#html-elements"> HTML Elements </a> </div> </div> <div class="px-6 flex flex-row gap-2 items-start justify-center w-full flex-shrink-0 relative"> <div x-cloak class="w-1 h-6 bg-primary-1 dark:bg-primary-1 rounded-lg" :class="{ 'opacity-100': visibleHeadingId === 'html-colors', 'opacity-0': visibleHeadingId !== 'html-colors' }"> </div> <div class="text-elevated-1 dark:text-surface-5 text-left font-regular text-base leading-6 flex-1" :class="{ 'text-primary-1 dark:text-primary-1': visibleHeadingId === 'html-colors' }"> <a href="#html-colors"> HTML Colors </a> </div> </div> </div> </div> </div> <script> document.addEventListener('alpine:initializing', () => { Alpine.data('visibleNavHighlighter', () => ({ headings: [], visibleHeadingId: null, studyNotesExpanded: false, init() { this.headings = Array.from(document.querySelectorAll('.contents-heading')); this.assignHeadingIds(); this.highlightVisibleHeading(); window.addEventListener('scroll', () => this.highlightVisibleHeading()); }, assignHeadingIds() { this.headings.forEach(heading => { if (!heading.id) { heading.id = heading.textContent.trim().toLowerCase().replace( /\s+/g, '-'); } }); }, highlightVisibleHeading() { const scrollPosition = window.scrollY; const windowHeight = window.innerHeight; for (let heading of this.headings) { const rect = heading.getBoundingClientRect(); if (rect.top >= 0 && rect.top <= windowHeight * 0.3) { this.visibleHeadingId = heading.id; // console.log('Current visible heading:', this.visibleHeadingId); return; } } // If no heading is found in the top 30% of the viewport, highlight none this.visibleHeadingId = null; } })); }); </script> </div> </div> </aside> </div> </div> <div class="mx-auto max-w-screen-xl mb-4"> <div class="mt-12"> <h2 class="text-xl font-bold "> More Like This </h2> </div> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-surface-0 dark:bg-elevated-3 border-surface-4 dark:border-elevated-2 sm:p-4 p-4 border-surface-4 dark:border-elevated-2 mt-8"> <div class=""> <div class="grid gap-8 sm:grid-cols-2 lg:grid-cols-4"> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-surface-0 dark:bg-elevated-3 border-surface-4 dark:border-elevated-2 sm:p-0 p-0 border-surface-4 dark:border-elevated-2 max-w-sm"> <a href="https://quizgecko.com/learn/basic-web-design-principles-and-elements-quiz-6pbj5j"> <img class="rounded-t-lg xl:h-48" src="https://images.unsplash.com/photo-1653971858653-f11f062bca5b?ixid=M3w0MjA4MDF8MHwxfHNlYXJjaHwyNXx8d2ViJTIwZGVzaWduJTIwSW50ZXJuZXQlMjBiYXNpY3MlMjBvbmxpbmUlMjBzZXJ2aWNlc3xlbnwxfDB8fHwxNzA0Mjk0MDk5fDA&ixlib=rb-4.0.3&w=300&fit=crop&h=200&q=75&fm=webp" alt="Basic Web Design Principles and Elements Quiz" loading="lazy" /> </a> <div class="p-3 -mt-12 flex justify-end"> <div class="font-semibold bg-elevated-3 text-surface-0 text-xs p-[0.3em] rounded-md opacity-80 dark:bg-elevated-3 dark:text-surface-0"> <div>20 questions</div> </div> </div> <div class="p-4 flex-col flex "> <a href="https://quizgecko.com/learn/basic-web-design-principles-and-elements-quiz-6pbj5j"> <h4 class="mb-2 text-xl font-bold tracking-tight text-gray-900 dark:text-surface-4"> Basic Web Design Principles and Elements Quiz </h4> </a> <div class="flex user-holder"> <img class="w-7 h-7 rounded-full" src="https://quizgecko.com/images/avatars/avatar-12.webp" alt="UnwaveringCentaur avatar"> <div class="font-medium ml-2 text-sm flex items-center truncate"> <div>UnwaveringCentaur</div> </div> </div> </div> </div> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-surface-0 dark:bg-elevated-3 border-surface-4 dark:border-elevated-2 sm:p-0 p-0 border-surface-4 dark:border-elevated-2 max-w-sm"> <a href="https://quizgecko.com/learn/basics-of-web-design-7uembe"> <img class="rounded-t-lg xl:h-48" src="https://assets.quizgecko.com/cdn-cgi/image/width=300,height=200,fit=crop,quality=75,format=webp/quiz/0c7b4c2f9b1830feeadc0b3a69c02eba.jpg" alt="Basics of Web Design" loading="lazy" /> </a> <div class="p-3 -mt-12 flex justify-end"> <div class="font-semibold bg-elevated-3 text-surface-0 text-xs p-[0.3em] rounded-md opacity-80 dark:bg-elevated-3 dark:text-surface-0"> <div>40 questions</div> </div> </div> <div class="p-4 flex-col flex "> <a href="https://quizgecko.com/learn/basics-of-web-design-7uembe"> <h4 class="mb-2 text-xl font-bold tracking-tight text-gray-900 dark:text-surface-4"> Basics of Web Design </h4> </a> <div class="flex user-holder"> <img class="w-7 h-7 rounded-full" src="https://quizgecko.com/images/avatars/avatar-1.webp" alt="CreativeSolarSystem7616 avatar"> <div class="font-medium ml-2 text-sm flex items-center truncate"> <div>CreativeSolarSystem7616</div> </div> </div> </div> </div> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-surface-0 dark:bg-elevated-3 border-surface-4 dark:border-elevated-2 sm:p-0 p-0 border-surface-4 dark:border-elevated-2 max-w-sm"> <a href="https://quizgecko.com/learn/basic-web-design-principles-quiz-kfwafr"> <img class="rounded-t-lg xl:h-48" src="https://images.unsplash.com/photo-1454165804606-c3d57bc86b40?crop=entropy&cs=srgb&fm=jpg&ixid=M3w0MjA4MDF8MHwxfHNlYXJjaHwxfHx3ZWIlMjBkZXNpZ24lMjBwcmluY2lwbGVzJTJDJTIwdmlzdWFsJTIwaGllcmFyY2h5JTJDJTIwdHlwb2dyYXBoeSUyQyUyMGdyYXBoaWMlMjBkZXNpZ258ZW58MXwwfHx8MTcyNzkxOTg0MXww&ixlib=rb-4.0.3&q=85&w=300&fit=crop&h=200&q=75&fm=webp" alt="Basic Web Design Principles Quiz" loading="lazy" /> </a> <div class="p-3 -mt-12 flex justify-end"> <div class="font-semibold bg-elevated-3 text-surface-0 text-xs p-[0.3em] rounded-md opacity-80 dark:bg-elevated-3 dark:text-surface-0"> <div>8 questions</div> </div> </div> <div class="p-4 flex-col flex "> <a href="https://quizgecko.com/learn/basic-web-design-principles-quiz-kfwafr"> <h4 class="mb-2 text-xl font-bold tracking-tight text-gray-900 dark:text-surface-4"> Basic Web Design Principles Quiz </h4> </a> <div class="flex user-holder"> <img class="w-7 h-7 rounded-full" src="https://quizgecko.com/images/avatars/avatar-2.webp" alt="AccessibleSitar avatar"> <div class="font-medium ml-2 text-sm flex items-center truncate"> <div>AccessibleSitar</div> </div> </div> </div> </div> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-surface-0 dark:bg-elevated-3 border-surface-4 dark:border-elevated-2 sm:p-0 p-0 border-surface-4 dark:border-elevated-2 max-w-sm"> <a href="https://quizgecko.com/learn/web-design-principles-quiz-cdc4dm"> <img class="rounded-t-lg xl:h-48" src="https://images.unsplash.com/photo-1519642918688-7e43b19245d8?crop=entropy&cs=srgb&fm=jpg&ixid=M3w0MjA4MDF8MHwxfHNlYXJjaHw0fHx3ZWIlMjBkZXNpZ24lMjBwcmluY2lwbGVzJTJDJTIwdXNhYmlsaXR5JTJDJTIwYWNjZXNzaWJpbGl0eSUyQyUyMGdyYXBoaWMlMjBkZXNpZ258ZW58MXwwfHx8MTczMTQxMzUyNXww&ixlib=rb-4.0.3&q=85&w=300&fit=crop&h=200&q=75&fm=webp" alt="Web Design Principles Quiz" loading="lazy" /> </a> <div class="p-3 -mt-12 flex justify-end"> <div class="font-semibold bg-elevated-3 text-surface-0 text-xs p-[0.3em] rounded-md opacity-80 dark:bg-elevated-3 dark:text-surface-0"> <div>13 questions</div> </div> </div> <div class="p-4 flex-col flex "> <a href="https://quizgecko.com/learn/web-design-principles-quiz-cdc4dm"> <h4 class="mb-2 text-xl font-bold tracking-tight text-gray-900 dark:text-surface-4"> Web Design Principles Quiz </h4> </a> <div class="flex user-holder"> <img class="w-7 h-7 rounded-full" src="https://quizgecko.com/images/avatars/avatar-5.webp" alt="UseableRosemary avatar"> <div class="font-medium ml-2 text-sm flex items-center truncate"> <div>UseableRosemary</div> </div> </div> </div> </div> </div> </div> <div class="flex flex-col gap-24 justify-center flex-1 overflow-hidden mt-3 mb-6 p-4"> <div class="text-left font-medium text-sm leading-5 font-weight-500 block md:hidden"> <nav aria-label="breadcrumb"> <ol itemscope itemtype="https://schema.org/BreadcrumbList" class="flex flex-wrap space-x-2"> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class="flex items-center"> <a itemprop="item" href="https://quizgecko.com/discover" class="text-primary-1 hover:underline"> <span itemprop="name">Discover</span> </a> <meta itemprop="position" content="1" /> <span class="ml-1">></span> </li> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class="flex items-center"> <span itemprop="name">Web Page Design Overview</span> <meta itemprop="position" content="2" /> </li> </ol> </nav> </div> </div> </div> </div> <div id="modal-share-assign-lesson" x-data="{ show: false, focusables() { // All focusable element types... let selector = 'a, button, input:not([type=\'hidden\']), textarea, select, details, [tabindex]:not([tabindex=\'-1\'])' return [...$el.querySelectorAll(selector)] // All non-disabled elements... .filter(el => !el.hasAttribute('disabled')) }, firstFocusable() { return this.focusables()[0] }, lastFocusable() { return this.focusables().slice(-1)[0] }, nextFocusable() { return this.focusables()[this.nextFocusableIndex()] || this.firstFocusable() }, prevFocusable() { return this.focusables()[this.prevFocusableIndex()] || this.lastFocusable() }, nextFocusableIndex() { return (this.focusables().indexOf(document.activeElement) + 1) % (this.focusables().length + 1) }, prevFocusableIndex() { return Math.max(0, this.focusables().indexOf(document.activeElement)) - 1 }, backOnClose: false, closeModal() { if (this.backOnClose) { window.history.back(); } window.dispatchEvent(new CustomEvent('close-modal', { detail: 'share-assign-lesson' })); this.show = false; } }" x-init="$watch('show', value => { if (value) { document.body.classList.add('overflow-y-hidden'); } else { document.body.classList.remove('overflow-y-hidden'); } })" x-on:open-modal.window="$event.detail == 'share-assign-lesson' ? show = true : null" x-on:close.stop="closeModal()" x-on:close-modal.window="$event.detail == 'share-assign-lesson' ? show = false : null" x-on:keydown.escape.window="closeModal()" x-on:keydown.tab.prevent="$event.shiftKey || nextFocusable().focus()" x-on:keydown.shift.tab.prevent="prevFocusable().focus()" x-show="show" class="relative z-50" aria-labelledby="modal-title" role="dialog" aria-modal="true" style="display: none;"> <div x-show="show" class="fixed inset-0 transform transition-all" x-on:click="closeModal()" x-transition:enter="ease-out duration-200" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0"> <div class="absolute inset-0 bg-elevated-0 dark:bg-elevated-4 opacity-80"></div> </div> <div x-show="show" class="fixed inset-0 z-50 overflow-y-auto"> <div class="flex min-h-full items-center justify-center sm:p-0"> <div @click.stop x-on:click.outside=closeModal() class="relative transform bg-surface-0 dark:bg-elevated-3 text-left shadow-xl dark:shadow-none dark:border dark:border-elevated-3 transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:rounded-xl w-full h-full sm:h-auto min-h-screen sm:min-h-0"> <div class="absolute right-0 top-0 pr-3 pt-3 block"> <button class="px-4 py-2.5 text-md rounded-xl w-auto border-transparent text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 disabled:text-surface-6 hover:bg-primary-6 disabled:hover:bg-transparent focus:border-primary-6 focus:border-primary-6 active:bg-primary-6 dark:hover:bg-primary-1 dark:hover:text-surface-1 disabled:dark:hover:bg-transparent inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" type="button" x-on:click="closeModal()" color="tertiary" type="button"> <svg class="w-6 h-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"/></svg> </button> </div> <div> <div class="pt-12 pr-8 pb-16 pl-8 flex flex-col gap-6 items-center" x-data="{ copied: false, loading: false, visibility: 'Public', init() { // Only track event when modal is actually opened window.addEventListener('open-modal', (event) => { if (event.detail === 'share-assign-lesson') { window.trackEvent('share_lesson', { quiz_id: 1081139, 'via': 'share_assign_modal' }); } }); }, toggleVisibility() { this.loading = true; axios.put('/api/v1/quiz/1081139', { visibility: this.visibility }) .then(response => { this.$dispatch('notify', { title: 'Updated', content: 'Visibility updated successfully', type: 'success', }); }) .catch(error => { this.$dispatch('notify', { title: 'Error', content: error.response?.data?.message || 'Failed to update visibility', type: 'error', }); this.visibility = 'Public'; }) .finally(() => { this.loading = false; }); } }"> <div> <h3 class="text-center text-2xl font-bold relative self-stretch flex items-center justify-center"> Quick Share </h3> <div class="mt-2"> Copy the link below or share directly to socials. </div> </div> <div class="w-full"> <div class="w-full bg-surface-0 dark:bg-elevated-3 rounded-2xl border border-surface-4 dark:border-elevated-1 p-4 flex flex-col gap-4"> <!-- Header --> <!-- Visibility Settings --> <div class="bg-surface-0 dark:bg-elevated-3 rounded-xl border border-surface-4 dark:border-elevated-1 p-2 flex items-center"> <div class="p-2 flex items-center gap-2 flex-1 text-sm"> <svg class="w-6 h-6 text-elevated-3 dark:text-surface-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,16a87.5,87.5,0,0,1,48,14.28V74L153.83,99.74,122.36,104l-.31-.22L102.38,90.92A16,16,0,0,0,79.87,95.1L58.93,126.4a16,16,0,0,0-2.7,8.81L56,171.44l-3.27,2.15A88,88,0,0,1,128,40ZM62.29,186.47l2.52-1.65A16,16,0,0,0,72,171.53l.21-36.23L93.17,104a3.62,3.62,0,0,0,.32.22l19.67,12.87a15.94,15.94,0,0,0,11.35,2.77L156,115.59a16,16,0,0,0,10-5.41l22.17-25.76A16,16,0,0,0,192,74V67.67A87.87,87.87,0,0,1,211.77,155l-16.14-14.76a16,16,0,0,0-16.93-3l-30.46,12.65a16.08,16.08,0,0,0-9.68,12.45l-2.39,16.19a16,16,0,0,0,11.77,17.81L169.4,202l2.36,2.37A87.88,87.88,0,0,1,62.29,186.47ZM185,195l-4.3-4.31a16,16,0,0,0-7.26-4.18L152,180.85l2.39-16.19L184.84,152,205,170.48A88.43,88.43,0,0,1,185,195Z"/></svg> <div class="font-semibold"> Anyone: Anyone can view and access this lesson. </div> </div> </div> <!-- Share Link --> <div x-show="visibility === 'Public'" class="flex flex-col gap-2 w-full"> <div class="flex items-center gap-2 w-full"> <input class="flex-1 block w-full min-w-0 text-elevated-3 dark:text-surface-4 bg-surface-3 dark:bg-elevated-4 px-4 py-3 rounded-xl mt-1 dark:bg-elevated-3 focus:ring-0 border border-surface-5 dark:border-elevated-1 focus:border-primary-1 flex-1" id="lessonLink" type="text" value="https://quizgecko.com/learn/web-page-design-overview-zwkbhu" readonly="readonly"> <button class="px-4 py-2.5 text-md rounded-xl w-auto border-2 bg-surface-1 dark:bg-elevated-3 border-surface-5 dark:border-elevated-1 hover:border-primary-1 dark:hover:border-primary-1 active:bg-surface-3 dark:active:bg-elevated-2 focus:border-primary-0 focus:shadow-outline-gray dark:focus:shadow-outline-gray text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 dark:disabled:elevated-3 disabled:text-surface-6 dark:disabled:border-elevated-1 disabled:hover:border-surface-5 disabled:active:bg-surface-1 dark:disabled:active:bg-elevated-2 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" color="light" type="button" @click="navigator.clipboard.writeText(document.getElementById('lessonLink').value); copied = true; setTimeout(() => copied = false, 2000)" type="button"> <span x-show="!copied">Copy link</span> <span x-show="copied">Copied!</span> </button> </div> </div> <div x-show="visibility == 'Public'" class="border-t border-surface-4 dark:border-elevated-1"></div> <div class="my-4 relative w-full rounded-xl border border-transparent p-4 bg-warning-2 text-elevated-3" x-show="visibility !== 'Public'" x-data="{ visible: !localStorage.getItem('closed-' + '05ab56dcc91f348602ff155eeff18588') }" x-show="visible" x-cloak> <div class="flex"> <!-- Icon --> <svg class="absolute left-4 top-4 h-5 w-5 text-warning-0" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"> <path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z" /> </svg> <div class="ml-7 flex-1"> <div class="text-sm font-medium"> <p>To share, set lesson to Public.</p> </div> </div> </div> </div> <!-- Social Sharing --> <div x-show="visibility === 'Public'" class="flex items-center justify-center gap-4"> <!-- resources/views/components/social-share-button.blade.php --> <a href="https://wa.me/?text=https%3A%2F%2Fquizgecko.com%2Flearn%2Fweb-page-design-overview-zwkbhu" target="_blank" class="bg-[#daffe9] rounded-lg p-2 flex flex-row gap-2 items-center justify-center shrink-0 relative overflow-hidden hover:opacity-90 transition-all duration-200"> <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g id="WhatsappLogo"> <path id="Vector" d="M23.4484 18.105L19.4484 16.105C19.2909 16.0265 19.1156 15.991 18.94 16.002C18.7644 16.0129 18.5948 16.07 18.4484 16.1675L16.6121 17.3925C15.7692 16.9291 15.0755 16.2354 14.6121 15.3925L15.8371 13.5562C15.9346 13.4098 15.9917 13.2402 16.0027 13.0646C16.0136 12.8891 15.9781 12.7137 15.8996 12.5562L13.8996 8.55625C13.8167 8.38884 13.6886 8.248 13.5298 8.14968C13.3709 8.05137 13.1877 7.99952 13.0009 8C11.6748 8 10.403 8.52678 9.46535 9.46447C8.52767 10.4021 8.00088 11.6739 8.00088 13C8.00419 15.9164 9.16418 18.7123 11.2264 20.7745C13.2885 22.8367 16.0845 23.9967 19.0009 24C19.6575 24 20.3077 23.8707 20.9143 23.6194C21.5209 23.3681 22.0721 22.9998 22.5364 22.5355C23.0007 22.0712 23.369 21.52 23.6203 20.9134C23.8716 20.3068 24.0009 19.6566 24.0009 19C24.001 18.8142 23.9494 18.6321 23.8518 18.474C23.7542 18.3159 23.6145 18.1881 23.4484 18.105ZM19.0009 22C16.6147 21.9974 14.3271 21.0483 12.6398 19.361C10.9526 17.6738 10.0035 15.3861 10.0009 13C10.0007 12.3064 10.2408 11.6342 10.6805 11.0977C11.1201 10.5612 11.732 10.1936 12.4121 10.0575L13.8471 12.9325L12.6259 14.75C12.5346 14.8869 12.4786 15.0442 12.4626 15.2079C12.4467 15.3717 12.4714 15.5368 12.5346 15.6888C13.2501 17.3892 14.6029 18.742 16.3034 19.4575C16.4558 19.5235 16.6222 19.5505 16.7876 19.5361C16.953 19.5217 17.1122 19.4663 17.2509 19.375L19.0771 18.1575L21.9521 19.5925C21.815 20.2734 21.4458 20.8856 20.9076 21.3247C20.3693 21.7637 19.6955 22.0024 19.0009 22ZM16.0009 3C13.7565 2.99951 11.5502 3.58011 9.5967 4.68529C7.64324 5.79046 6.00919 7.38256 4.8536 9.30662C3.69801 11.2307 3.06024 13.4212 3.00237 15.6648C2.9445 17.9085 3.46851 20.1289 4.52338 22.11L3.10463 26.3662C2.98712 26.7186 2.97006 27.0968 3.05538 27.4583C3.1407 27.8199 3.32503 28.1505 3.5877 28.4132C3.85037 28.6759 4.181 28.8602 4.54254 28.9455C4.90408 29.0308 5.28224 29.0138 5.63463 28.8962L9.89088 27.4775C11.6343 28.4048 13.5662 28.9228 15.5397 28.992C17.5132 29.0613 19.4765 28.68 21.2807 27.8772C23.0849 27.0743 24.6825 25.871 25.9521 24.3586C27.2218 22.8462 28.1303 21.0644 28.6085 19.1484C29.0868 17.2325 29.1223 15.2328 28.7123 13.301C28.3023 11.3693 27.4577 9.55642 26.2424 7.9999C25.0272 6.44337 23.4733 5.18415 21.6988 4.31782C19.9242 3.45149 17.9756 3.00081 16.0009 3ZM16.0009 27C14.0671 27.0013 12.1673 26.4921 10.4934 25.5238C10.3708 25.4527 10.2346 25.4085 10.0936 25.394C9.9527 25.3796 9.81031 25.3953 9.67588 25.44L5.00088 27L6.55963 22.325C6.60457 22.1907 6.62045 22.0483 6.60622 21.9074C6.592 21.7665 6.548 21.6301 6.47713 21.5075C5.2646 19.4111 4.77777 16.9732 5.09217 14.572C5.40657 12.1707 6.50463 9.94027 8.21599 8.22674C9.92736 6.51321 12.1564 5.41234 14.5573 5.0949C16.9581 4.77747 19.3967 5.26122 21.4945 6.47111C23.5924 7.68099 25.2324 9.54939 26.1601 11.7864C27.0877 14.0235 27.2512 16.5042 26.6252 18.8436C25.9991 21.1831 24.6185 23.2505 22.6976 24.7253C20.7766 26.2 18.4227 26.9996 16.0009 27Z" fill="#33B575" /> </g> </svg> </a> <!-- resources/views/components/social-share-button.blade.php --> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fquizgecko.com%2Flearn%2Fweb-page-design-overview-zwkbhu" target="_blank" class="bg-[#dff5ff] rounded-lg p-2 flex flex-row gap-2 items-center justify-center shrink-0 relative overflow-hidden hover:opacity-90 transition-all duration-200"> <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g id="FacebookLogo"> <path id="Vector" d="M16 3C13.4288 3 10.9154 3.76244 8.77759 5.1909C6.63975 6.61935 4.97351 8.64968 3.98957 11.0251C3.00563 13.4006 2.74819 16.0144 3.2498 18.5362C3.75141 21.0579 4.98953 23.3743 6.80762 25.1924C8.6257 27.0105 10.9421 28.2486 13.4638 28.7502C15.9856 29.2518 18.5995 28.9944 20.9749 28.0104C23.3503 27.0265 25.3807 25.3603 26.8091 23.2224C28.2376 21.0846 29 18.5712 29 16C28.9964 12.5533 27.6256 9.24882 25.1884 6.81163C22.7512 4.37445 19.4467 3.00364 16 3ZM17 26.9538V19H20C20.2652 19 20.5196 18.8946 20.7071 18.7071C20.8946 18.5196 21 18.2652 21 18C21 17.7348 20.8946 17.4804 20.7071 17.2929C20.5196 17.1054 20.2652 17 20 17H17V14C17 13.4696 17.2107 12.9609 17.5858 12.5858C17.9609 12.2107 18.4696 12 19 12H21C21.2652 12 21.5196 11.8946 21.7071 11.7071C21.8946 11.5196 22 11.2652 22 11C22 10.7348 21.8946 10.4804 21.7071 10.2929C21.5196 10.1054 21.2652 10 21 10H19C17.9391 10 16.9217 10.4214 16.1716 11.1716C15.4214 11.9217 15 12.9391 15 14V17H12C11.7348 17 11.4804 17.1054 11.2929 17.2929C11.1054 17.4804 11 17.7348 11 18C11 18.2652 11.1054 18.5196 11.2929 18.7071C11.4804 18.8946 11.7348 19 12 19H15V26.9538C12.181 26.6964 9.56971 25.3622 7.7093 23.2287C5.8489 21.0952 4.8826 18.3266 5.0114 15.4988C5.1402 12.671 6.35419 10.0017 8.40085 8.04613C10.4475 6.09057 13.1693 4.9993 16 4.9993C18.8307 4.9993 21.5525 6.09057 23.5992 8.04613C25.6458 10.0017 26.8598 12.671 26.9886 15.4988C27.1174 18.3266 26.1511 21.0952 24.2907 23.2287C22.4303 25.3622 19.819 26.6964 17 26.9538Z" fill="#1970FB" /> </g> </svg> </a> <!-- resources/views/components/social-share-button.blade.php --> <a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fquizgecko.com%2Flearn%2Fweb-page-design-overview-zwkbhu" target="_blank" class="bg-[#dfdfdf] rounded-lg p-2 flex flex-row gap-2 items-center justify-center shrink-0 relative overflow-hidden hover:opacity-90 transition-all duration-200"> <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g id="XLogo"> <path id="Vector" d="M26.844 26.4638L19.019 14.1663L26.7403 5.6725C26.9149 5.47565 27.0049 5.21791 26.9907 4.95515C26.9766 4.69239 26.8595 4.44579 26.6647 4.26882C26.47 4.09185 26.2134 3.99876 25.9504 4.00974C25.6875 4.02073 25.4396 4.1349 25.2603 4.3275L17.9053 12.4175L12.844 4.46375C12.7538 4.32169 12.6291 4.20471 12.4816 4.12365C12.3341 4.04258 12.1686 4.00005 12.0003 4H6.00025C5.82095 3.99991 5.64493 4.04803 5.49061 4.13932C5.33629 4.23062 5.20936 4.36172 5.1231 4.5189C5.03684 4.67609 4.99443 4.85357 5.0003 5.03278C5.00618 5.21198 5.06013 5.3863 5.1565 5.5375L12.9815 17.8337L5.26025 26.3337C5.17008 26.4306 5.10004 26.5444 5.05417 26.6685C5.00831 26.7927 4.98754 26.9247 4.99306 27.0569C4.99858 27.1891 5.03029 27.3189 5.08635 27.4388C5.14241 27.5586 5.22171 27.6662 5.31964 27.7552C5.41757 27.8442 5.53219 27.9129 5.65686 27.9572C5.78153 28.0016 5.91377 28.0208 6.04591 28.0137C6.17805 28.0066 6.30746 27.9733 6.42665 27.9158C6.54584 27.8583 6.65243 27.7777 6.74025 27.6787L14.0953 19.5888L19.1565 27.5425C19.2475 27.6834 19.3725 27.7991 19.5199 27.8791C19.6673 27.959 19.8325 28.0006 20.0003 28H26.0003C26.1794 27.9999 26.3552 27.9518 26.5093 27.8606C26.6634 27.7693 26.7902 27.6384 26.8764 27.4814C26.9627 27.3244 27.0051 27.1472 26.9994 26.9681C26.9937 26.7891 26.9401 26.6149 26.844 26.4638ZM20.549 26L7.8215 6H11.4465L24.179 26H20.549Z" fill="#4D4D4D" /> </g> </svg> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div x-data="exitIntentSignup"> <div id="modal-exit-intent-signup" x-data="{ show: false, focusables() { // All focusable element types... let selector = 'a, button, input:not([type=\'hidden\']), textarea, select, details, [tabindex]:not([tabindex=\'-1\'])' return [...$el.querySelectorAll(selector)] // All non-disabled elements... .filter(el => !el.hasAttribute('disabled')) }, firstFocusable() { return this.focusables()[0] }, lastFocusable() { return this.focusables().slice(-1)[0] }, nextFocusable() { return this.focusables()[this.nextFocusableIndex()] || this.firstFocusable() }, prevFocusable() { return this.focusables()[this.prevFocusableIndex()] || this.lastFocusable() }, nextFocusableIndex() { return (this.focusables().indexOf(document.activeElement) + 1) % (this.focusables().length + 1) }, prevFocusableIndex() { return Math.max(0, this.focusables().indexOf(document.activeElement)) - 1 }, backOnClose: false, closeModal() { if (this.backOnClose) { window.history.back(); } window.dispatchEvent(new CustomEvent('close-modal', { detail: 'exit-intent-signup' })); this.show = false; } }" x-init="$watch('show', value => { if (value) { document.body.classList.add('overflow-y-hidden'); } else { document.body.classList.remove('overflow-y-hidden'); } })" x-on:open-modal.window="$event.detail == 'exit-intent-signup' ? show = true : null" x-on:close.stop="closeModal()" x-on:close-modal.window="$event.detail == 'exit-intent-signup' ? show = false : null" x-on:keydown.escape.window="closeModal()" x-on:keydown.tab.prevent="$event.shiftKey || nextFocusable().focus()" x-on:keydown.shift.tab.prevent="prevFocusable().focus()" x-show="show" class="relative z-50" aria-labelledby="modal-title" role="dialog" aria-modal="true" style="display: none;"> <div x-show="show" class="fixed inset-0 transform transition-all" x-on:click="closeModal()" x-transition:enter="ease-out duration-200" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0"> <div class="absolute inset-0 bg-elevated-0 dark:bg-elevated-4 opacity-80"></div> </div> <div x-show="show" class="fixed inset-0 z-50 overflow-y-auto"> <div class="flex min-h-full items-center justify-center sm:p-0"> <div @click.stop x-on:click.outside=closeModal() class="relative transform bg-white dark:bg-elevated-3 text-left shadow-xl dark:shadow-none dark:border dark:border-elevated-3 transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:rounded-xl w-full h-full sm:h-auto min-h-screen sm:min-h-0"> <div class="absolute right-0 top-0 pr-3 pt-3 block"> <button class="px-4 py-2.5 text-md rounded-xl w-auto border-transparent text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 disabled:text-surface-6 hover:bg-primary-6 disabled:hover:bg-transparent focus:border-primary-6 focus:border-primary-6 active:bg-primary-6 dark:hover:bg-primary-1 dark:hover:text-surface-1 disabled:dark:hover:bg-transparent inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" type="button" x-on:click="closeModal()" color="tertiary" type="button"> <svg class="w-6 h-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"/></svg> </button> </div> <div> <div class="p-6 sm:p-8"> <div class="text-center mb-8 mt-3"> <h3 class="text-2xl font-bold mb-2">Create an AI Lesson for Free</h3> <p class="text-lg text-surface-5"> Instantly turn any content into interactive quizzes & flashcards. </p> </div> <div class="grid grid-cols-1 sm:grid-cols-2 gap-4 mb-8 w-full max-w-xl mx-auto"> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-surface-0 dark:bg-elevated-3 border-surface-4 dark:border-elevated-2 sm:p-4 p-4 border-surface-4 dark:border-elevated-2 flex items-center gap-3"> <svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg" class="w-7 h-7 shrink-0"> <g clip-path="url(#clip0_845_24100)"> <path d="M7.85522 33.6372L1.34775 40.1447C-0.44925 41.9417 -0.44925 44.8552 1.34775 46.6522C3.14475 48.4492 6.05822 48.4492 7.85522 46.6522C8.74689 45.7605 9.45421 44.7019 9.93678 43.5369C10.4193 42.3719 10.6677 41.1232 10.6677 39.8622V34.8023C10.6677 33.3344 8.89313 32.5993 7.85522 33.6372Z" fill="#42F4FF"/> <path d="M7.85513 46.6522C8.7468 45.7606 9.45411 44.702 9.93668 43.537C10.4193 42.372 10.6676 41.1233 10.6676 39.8623V37.3323L1.34766 46.6522C3.14466 48.4492 6.05813 48.4492 7.85513 46.6522Z" fill="#00CDFF"/> <path d="M46.5939 31.6311H44.2345V29.2717C44.2345 28.4951 43.6048 27.8655 42.8282 27.8655C42.0516 27.8655 41.422 28.4951 41.422 29.2717V31.6311H39.0626C38.2859 31.6311 37.6563 32.2608 37.6563 33.0374C37.6563 33.814 38.2859 34.4436 39.0626 34.4436H41.422V36.803C41.422 37.5797 42.0516 38.2093 42.8282 38.2093C43.6048 38.2093 44.2345 37.5797 44.2345 36.803V34.4436H46.5939C47.3705 34.4436 48.0001 33.814 48.0001 33.0374C48.0001 32.2608 47.3705 31.6311 46.5939 31.6311ZM33.7907 42.928H32.9376V42.0749C32.9376 41.2983 32.308 40.6686 31.5313 40.6686C30.7547 40.6686 30.1251 41.2983 30.1251 42.0749V42.928H29.272C28.4953 42.928 27.8657 43.5576 27.8657 44.3343C27.8657 45.1109 28.4953 45.7405 29.272 45.7405H30.1251V46.5936C30.1251 47.3703 30.7547 47.9999 31.5313 47.9999C32.308 47.9999 32.9376 47.3703 32.9376 46.5936V45.7405H33.7907C34.5673 45.7405 35.197 45.1109 35.197 44.3343C35.197 43.5576 34.5673 42.928 33.7907 42.928Z" fill="#FFB300"/> <path d="M8.93756 13.5563H6.57816V11.1968C6.57816 10.4202 5.94853 9.79059 5.17191 9.79059C4.39528 9.79059 3.76566 10.4202 3.76566 11.1968V13.5563H1.40625C0.629625 13.5563 0 14.1859 0 14.9625C0 15.7391 0.629625 16.3688 1.40625 16.3688H3.76566V18.7282C3.76566 19.5048 4.39528 20.1344 5.17191 20.1344C5.94853 20.1344 6.57816 19.5048 6.57816 18.7282V16.3688H8.93756C9.71419 16.3688 10.3438 15.7391 10.3438 14.9625C10.3438 14.1859 9.71419 13.5563 8.93756 13.5563ZM18.7282 2.25938H17.875V1.40625C17.875 0.629625 17.2454 0 16.4688 0C15.6922 0 15.0625 0.629625 15.0625 1.40625V2.25938H14.2094C13.4328 2.25938 12.8032 2.889 12.8032 3.66563C12.8032 4.44225 13.4328 5.07188 14.2094 5.07188H15.0625V5.925C15.0625 6.70163 15.6922 7.33125 16.4688 7.33125C17.2454 7.33125 17.875 6.70163 17.875 5.925V5.07188H18.7282C19.5048 5.07188 20.1344 4.44225 20.1344 3.66563C20.1344 2.889 19.5048 2.25938 18.7282 2.25938Z" fill="#FFD961"/> <path d="M7.85498 46.6523V33.6373L13.556 27.9363C14.5939 26.8984 16.3685 27.6335 16.3685 29.1012V34.1612C16.3685 35.4222 16.1202 36.6709 15.6376 37.8359C15.155 39.0009 14.4477 40.0595 13.556 40.9511L7.85498 46.6523Z" fill="#F3F4FA"/> <path d="M16.3685 34.1614V31.6313L7.85498 40.1449V46.6524L13.556 40.9514C14.4477 40.0597 15.155 39.0012 15.6376 37.8361C16.1201 36.6711 16.3685 35.4224 16.3685 34.1614Z" fill="#D9DFED"/> <path d="M13.5562 40.9511V27.9362L19.5812 21.9112C20.6191 20.8733 22.3937 21.6083 22.3937 23.0761V28.1361C22.3937 29.3971 22.1453 30.6457 21.6628 31.8108C21.1802 32.9758 20.4729 34.0343 19.5812 34.926L13.5562 40.9511Z" fill="#FF9CC8"/> <path d="M22.3937 28.1362V25.6062L13.5562 34.4437V40.9512L19.5812 34.9262C21.382 33.1254 22.3937 30.683 22.3937 28.1362Z" fill="#FF5BA5"/> <path d="M19.5811 34.9262V21.9112L22.6251 18.8672C22.8085 18.6838 23.039 18.5548 23.2911 18.4942C23.5433 18.4337 23.8072 18.444 24.0539 18.524L27.4648 19.6319C27.6759 19.7005 27.8678 19.818 28.0247 19.975C28.1817 20.132 28.2993 20.3239 28.3679 20.535L29.4757 23.9459C29.5558 24.1925 29.5662 24.4565 29.5056 24.7086C29.445 24.9608 29.316 25.1913 29.1326 25.3746L19.5811 34.9262Z" fill="#F3F4FA"/> <path d="M19.5811 34.9263L29.1326 25.3747C29.316 25.1914 29.445 24.9609 29.5056 24.7087C29.5662 24.4566 29.5558 24.1926 29.4757 23.946L28.3679 20.5351C28.2993 20.3239 28.1817 20.132 28.0247 19.9751L19.5811 28.4188V34.9263Z" fill="#D9DFED"/> <path d="M47.7312 21.6083L42.0898 13.8442L45.0556 4.71627C45.1357 4.46962 45.1461 4.20562 45.0855 3.95344C45.025 3.70127 44.8959 3.47075 44.7125 3.28736C44.5291 3.10398 44.2986 2.97488 44.0464 2.91434C43.7943 2.8538 43.5303 2.86417 43.2836 2.9443L34.1556 5.91009L26.3915 0.268586C26.1816 0.116142 25.9338 0.0246892 25.6752 0.00433726C25.4167 -0.0160147 25.1575 0.0355273 24.9265 0.153265C24.6954 0.271002 24.5014 0.450349 24.3658 0.671476C24.2303 0.892603 24.1586 1.1469 24.1586 1.40624V11.0038L16.3944 16.6446C16.1847 16.797 16.0212 17.0045 15.9219 17.2441C15.8227 17.4837 15.7917 17.746 15.8323 18.0021C15.8728 18.2582 15.9834 18.4982 16.1518 18.6954C16.3202 18.8926 16.5398 19.0394 16.7864 19.1196L25.9144 22.0854L28.8802 31.2134C28.9603 31.4601 29.1071 31.6798 29.3043 31.8482C29.5015 32.0167 29.7415 32.1273 29.9976 32.1679C30.2538 32.2084 30.5162 32.1774 30.7558 32.0781C30.9954 31.9788 31.2028 31.8152 31.3552 31.6054L36.996 23.8412H46.5936C46.8529 23.8412 47.1072 23.7695 47.3283 23.6339C47.5494 23.4984 47.7288 23.3044 47.8465 23.0733C47.9643 22.8423 48.0158 22.5831 47.9955 22.3246C47.9751 22.066 47.8837 21.8181 47.7312 21.6083Z" fill="#FFD961"/> <path d="M25.9146 22.0854L28.8804 31.2134C28.9605 31.4601 29.1073 31.6798 29.3045 31.8482C29.5017 32.0167 29.7416 32.1273 29.9978 32.1679C30.254 32.2085 30.5163 32.1774 30.7559 32.0781C30.9955 31.9788 31.203 31.8152 31.3554 31.6054L36.9962 23.8412H46.5937C46.8531 23.8412 47.1074 23.7695 47.3285 23.634C47.5496 23.4985 47.729 23.3044 47.8467 23.0734C47.9645 22.8423 48.016 22.5831 47.9956 22.3246C47.9753 22.066 47.8838 21.8182 47.7314 21.6084L42.09 13.8443L45.0558 4.71629C45.1359 4.46964 45.1463 4.20563 45.0858 3.95345C45.0252 3.70127 44.8961 3.47074 44.7127 3.28735L25.9146 22.0854Z" fill="#FFB300"/> </g> <defs> <clipPath id="clip0_845_24100"> <rect width="48" height="48" fill="white"/> </clipPath> </defs> </svg> <span class="text-sm">Generate quizzes & flashcards instantly</span> </div> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-surface-0 dark:bg-elevated-3 border-surface-4 dark:border-elevated-2 sm:p-4 p-4 border-surface-4 dark:border-elevated-2 flex items-center gap-3"> <svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg" class="w-7 h-7 shrink-0"> <path d="M21.8774 35.147H26.121V39.8794H21.8774V35.147Z" fill="#6B7ED9"/> <path d="M8.5468 12.7178H6.61339C5.95208 12.7178 5.41602 13.2539 5.41602 13.9153V14.8654C5.41602 15.5267 5.95208 16.0627 6.61339 16.0627H8.5468L8.76411 15.8795V12.8614L8.5468 12.7178Z" fill="#8BCAFF"/> <path d="M41.3853 12.7178H39.4519L39.2426 12.8694V15.8875L39.4519 16.0627H41.3853C42.0466 16.0627 42.5827 15.5267 42.5827 14.8654V13.9153C42.5827 13.2539 42.0466 12.7178 41.3853 12.7178ZM11.0254 12.7178H15.7255V16.0626H11.0254V12.7178Z" fill="#B5DCFF"/> <path d="M12.6431 14.8653V13.9153C12.6431 13.254 13.1792 12.7178 13.8405 12.7178H11.0254V16.0626H13.8405C13.1793 16.0626 12.6431 15.5266 12.6431 14.8653Z" fill="#8BCAFF"/> <path d="M32.2085 12.7178H36.9409V16.0626H32.2085V12.7178Z" fill="#B5DCFF"/> <path d="M27.235 0H23.7043L22.229 0.434812L20.1606 2.30203L19.3638 4.29797V25.0625L20.4261 27.4126L22.2128 28.2979L23.7266 28.7805H27.2349C30.2486 28.7805 32.6916 26.3375 32.6916 23.3238V5.45672C32.6917 2.44303 30.2487 0 27.235 0Z" fill="#DBEDFF"/> <path d="M19.5565 23.3239V5.45672C19.5565 2.44303 21.9997 0 25.0133 0H20.7638C17.7502 0 15.3071 2.44303 15.3071 5.45672V23.3239C15.3071 26.3376 17.7502 28.7806 20.7638 28.7806H25.0133C21.9997 28.7806 19.5565 26.3375 19.5565 23.3239Z" fill="#B5DCFF"/> <path d="M33.2549 6.75252H27.9752C27.7831 6.75252 27.5988 6.67621 27.463 6.54037C27.3272 6.40454 27.2508 6.22031 27.2508 6.02821C27.2508 5.83611 27.3272 5.65188 27.463 5.51604C27.5988 5.38021 27.7831 5.30389 27.9752 5.30389H33.2549C33.447 5.30389 33.6312 5.38021 33.767 5.51604C33.9029 5.65188 33.9792 5.83611 33.9792 6.02821C33.9792 6.12333 33.9605 6.21752 33.9241 6.3054C33.8877 6.39329 33.8343 6.47314 33.7671 6.5404C33.6998 6.60766 33.62 6.66101 33.5321 6.69741C33.4442 6.73381 33.35 6.75253 33.2549 6.75252ZM33.2549 10.0973H27.9752C27.7831 10.0973 27.5988 10.021 27.463 9.88519C27.3272 9.74935 27.2508 9.56512 27.2508 9.37302C27.2508 9.18092 27.3272 8.99669 27.463 8.86085C27.5988 8.72502 27.7831 8.64871 27.9752 8.64871H33.2549C33.447 8.64871 33.6312 8.72502 33.767 8.86085C33.9029 8.99669 33.9792 9.18092 33.9792 9.37302C33.9792 9.46814 33.9605 9.56233 33.9241 9.65022C33.8877 9.7381 33.8343 9.81795 33.7671 9.88521C33.6998 9.95247 33.62 10.0058 33.5321 10.0422C33.4442 10.0786 33.35 10.0973 33.2549 10.0973ZM33.2549 13.4422H27.9752C27.7831 13.4422 27.5988 13.3659 27.463 13.2301C27.3272 13.0943 27.2508 12.91 27.2508 12.7179C27.2508 12.5258 27.3272 12.3416 27.463 12.2058C27.5988 12.0699 27.7831 11.9936 27.9752 11.9936H33.2549C33.447 11.9936 33.6312 12.0699 33.767 12.2058C33.9029 12.3416 33.9792 12.5258 33.9792 12.7179C33.9792 12.813 33.9605 12.9072 33.9241 12.9951C33.8877 13.083 33.8343 13.1629 33.7671 13.2301C33.6998 13.2974 33.62 13.3507 33.5321 13.3871C33.4442 13.4235 33.35 13.4423 33.2549 13.4422ZM33.2549 16.7871H27.9752C27.7831 16.7871 27.5988 16.7107 27.463 16.5749C27.3272 16.4391 27.2508 16.2548 27.2508 16.0627C27.2508 15.8706 27.3272 15.6864 27.463 15.5506C27.5988 15.4147 27.7831 15.3384 27.9752 15.3384H33.2549C33.447 15.3384 33.6312 15.4147 33.767 15.5506C33.9029 15.6864 33.9792 15.8706 33.9792 16.0627C33.9792 16.1579 33.9605 16.2521 33.9241 16.3399C33.8877 16.4278 33.8343 16.5077 33.7671 16.5749C33.6998 16.6422 33.62 16.6955 33.5321 16.7319C33.4442 16.7683 33.35 16.7871 33.2549 16.7871ZM33.2549 20.132H27.9752C27.7831 20.132 27.5988 20.0556 27.463 19.9198C27.3272 19.784 27.2508 19.5997 27.2508 19.4076C27.2508 19.2155 27.3272 19.0313 27.463 18.8955C27.5988 18.7596 27.7831 18.6833 27.9752 18.6833H33.2549C33.447 18.6833 33.6312 18.7596 33.767 18.8955C33.9029 19.0313 33.9792 19.2155 33.9792 19.4076C33.9792 19.5028 33.9605 19.597 33.9241 19.6848C33.8877 19.7727 33.8343 19.8526 33.7671 19.9198C33.6998 19.9871 33.62 20.0405 33.5321 20.0768C33.4442 20.1132 33.35 20.132 33.2549 20.132ZM33.2549 23.4768H27.9752C27.7831 23.4768 27.5988 23.4005 27.463 23.2646C27.3272 23.1288 27.2508 22.9446 27.2508 22.7525C27.2508 22.5604 27.3272 22.3761 27.463 22.2403C27.5988 22.1045 27.7831 22.0281 27.9752 22.0281H33.2549C33.447 22.0281 33.6312 22.1045 33.767 22.2403C33.9029 22.3761 33.9792 22.5604 33.9792 22.7525C33.9792 22.8476 33.9605 22.9418 33.9241 23.0297C33.8877 23.1175 33.8343 23.1974 33.7671 23.2647C33.6998 23.3319 33.62 23.3853 33.5321 23.4217C33.4442 23.4581 33.35 23.4768 33.2549 23.4768ZM20.0236 6.75252H14.7438C14.5517 6.75252 14.3675 6.67621 14.2317 6.54037C14.0958 6.40454 14.0195 6.22031 14.0195 6.02821C14.0195 5.83611 14.0958 5.65188 14.2317 5.51604C14.3675 5.38021 14.5517 5.30389 14.7438 5.30389H20.0236C20.2157 5.30389 20.3999 5.38021 20.5357 5.51604C20.6716 5.65188 20.7479 5.83611 20.7479 6.02821C20.7479 6.22031 20.6716 6.40454 20.5357 6.54037C20.3999 6.67621 20.2157 6.75252 20.0236 6.75252ZM20.0236 10.0973H14.7438C14.5517 10.0973 14.3675 10.021 14.2317 9.88519C14.0958 9.74935 14.0195 9.56512 14.0195 9.37302C14.0195 9.18092 14.0958 8.99669 14.2317 8.86085C14.3675 8.72502 14.5517 8.64871 14.7438 8.64871H20.0236C20.2157 8.64871 20.3999 8.72502 20.5357 8.86085C20.6716 8.99669 20.7479 9.18092 20.7479 9.37302C20.7479 9.56512 20.6716 9.74935 20.5357 9.88519C20.3999 10.021 20.2157 10.0973 20.0236 10.0973ZM20.0236 13.4422H14.7438C14.5517 13.4422 14.3675 13.3659 14.2317 13.2301C14.0958 13.0943 14.0195 12.91 14.0195 12.7179C14.0195 12.5258 14.0958 12.3416 14.2317 12.2058C14.3675 12.0699 14.5517 11.9936 14.7438 11.9936H20.0236C20.2157 11.9936 20.3999 12.0699 20.5357 12.2058C20.6716 12.3416 20.7479 12.5258 20.7479 12.7179C20.7479 12.91 20.6716 13.0943 20.5357 13.2301C20.3999 13.3659 20.2157 13.4422 20.0236 13.4422ZM20.0236 16.7871H14.7438C14.5517 16.7871 14.3675 16.7107 14.2317 16.5749C14.0958 16.4391 14.0195 16.2548 14.0195 16.0627C14.0195 15.8706 14.0958 15.6864 14.2317 15.5506C14.3675 15.4147 14.5517 15.3384 14.7438 15.3384H20.0236C20.2157 15.3384 20.3999 15.4147 20.5357 15.5506C20.6716 15.6864 20.7479 15.8706 20.7479 16.0627C20.7479 16.2548 20.6716 16.4391 20.5357 16.5749C20.3999 16.7107 20.2157 16.7871 20.0236 16.7871ZM20.0236 20.132H14.7438C14.5517 20.132 14.3675 20.0556 14.2317 19.9198C14.0958 19.784 14.0195 19.5997 14.0195 19.4076C14.0195 19.2155 14.0958 19.0313 14.2317 18.8955C14.3675 18.7596 14.5517 18.6833 14.7438 18.6833H20.0236C20.2157 18.6833 20.3999 18.7596 20.5357 18.8955C20.6716 19.0313 20.7479 19.2155 20.7479 19.4076C20.7479 19.5997 20.6716 19.784 20.5357 19.9198C20.3999 20.0556 20.2157 20.132 20.0236 20.132ZM20.0236 23.4768H14.7438C14.5517 23.4768 14.3675 23.4005 14.2317 23.2646C14.0958 23.1288 14.0195 22.9446 14.0195 22.7525C14.0195 22.5604 14.0958 22.3761 14.2317 22.2403C14.3675 22.1045 14.5517 22.0281 14.7438 22.0281H20.0236C20.2157 22.0281 20.3999 22.1045 20.5357 22.2403C20.6716 22.3761 20.7479 22.5604 20.7479 22.7525C20.7479 22.9446 20.6716 23.1288 20.5357 23.2646C20.3999 23.4005 20.2157 23.4768 20.0236 23.4768ZM24.1136 13.4422C23.9215 13.4422 23.7373 13.3659 23.6014 13.2301C23.4656 13.0943 23.3893 12.91 23.3893 12.7179V6.02821C23.3893 5.83611 23.4656 5.65188 23.6014 5.51604C23.7373 5.38021 23.9215 5.30389 24.1136 5.30389C24.3057 5.30389 24.4899 5.38021 24.6258 5.51604C24.7616 5.65188 24.8379 5.83611 24.8379 6.02821V12.7179C24.8379 12.813 24.8192 12.9072 24.7828 12.9951C24.7464 13.083 24.693 13.1629 24.6258 13.2301C24.5585 13.2974 24.4787 13.3507 24.3908 13.3871C24.3029 13.4235 24.2087 13.4423 24.1136 13.4422ZM24.1136 23.4768C24.0185 23.4768 23.9243 23.458 23.8364 23.4216C23.7485 23.3852 23.6687 23.3319 23.6014 23.2646C23.5342 23.1974 23.4808 23.1175 23.4444 23.0296C23.408 22.9418 23.3893 22.8476 23.3893 22.7525V16.0627C23.3893 15.8706 23.4656 15.6864 23.6014 15.5506C23.7373 15.4147 23.9215 15.3384 24.1136 15.3384C24.3057 15.3384 24.4899 15.4147 24.6258 15.5506C24.7616 15.6864 24.8379 15.8706 24.8379 16.0627V22.7525C24.8379 22.8476 24.8192 22.9418 24.7828 23.0297C24.7464 23.1175 24.693 23.1974 24.6258 23.2647C24.5585 23.3319 24.4787 23.3853 24.3908 23.4217C24.3029 23.4581 24.2087 23.4768 24.1136 23.4768Z" fill="#8BCAFF"/> <path d="M38.4921 9.8205H37.5142C36.9842 9.8205 36.5545 10.2502 36.5545 10.7802V23.3239C36.5545 28.4711 32.3819 32.6437 27.2346 32.6437H20.7638C16.0253 32.6437 12.1129 29.1074 11.5215 24.53C11.4402 24.9303 11.358 25.3305 11.2749 25.7305L12.5546 29.4971L15.4761 32.7808L18.9771 34.8814L21.5194 35.5411H27.2346C33.982 35.5411 39.4518 30.0712 39.4518 23.3239V10.7802C39.4518 10.2502 39.0222 9.8205 38.4921 9.8205Z" fill="#8896E0"/> <path d="M11.5478 24.7154C11.4789 24.2547 11.4443 23.7896 11.4443 23.3238V10.7802C11.4443 10.2502 11.0147 9.8205 10.4846 9.8205H9.50659C8.97653 9.8205 8.54688 10.2502 8.54688 10.7802V23.3239C8.54688 30.0712 14.0167 35.5411 20.7641 35.5411H23.6856C17.409 35.5411 12.2387 30.8074 11.5478 24.7154Z" fill="#6B7ED9"/> <path d="M27.235 39.3458H25.5975L24.3215 39.7426L22.7602 40.7245L21.8779 41.8995L21.4199 44.1772H31.9674L32.5905 43.7564C32.1024 41.2434 29.8907 39.3458 27.235 39.3458Z" fill="#FBC700"/> <path d="M26.9452 39.3458H20.7642C18.1084 39.3458 15.8968 41.2434 15.4087 43.7564L16.08 44.1772H22.2611L21.5897 43.7564C22.0779 41.2434 24.2894 39.3458 26.9452 39.3458Z" fill="#EAB900"/> <path d="M34.5714 43.7564H19.0878L18.6391 43.996L18.1924 44.7203V47.1952L18.4942 47.6419L19.1934 48H34.5714C35.2684 48 35.8333 47.4351 35.8333 46.7381V45.0183C35.8333 44.3213 35.2684 43.7564 34.5714 43.7564Z" fill="#FFE02F"/> <path d="M18.3467 46.7381V45.0183C18.3467 44.3213 18.9116 43.7564 19.6085 43.7564H13.4274C12.7305 43.7564 12.1655 44.3213 12.1655 45.0183V46.7381C12.1655 47.4351 12.7305 48 13.4274 48H19.6084C18.9116 48 18.3467 47.4351 18.3467 46.7381Z" fill="#FBC700"/> </svg> <span class="text-sm">Practice with interactive study modes</span> </div> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-surface-0 dark:bg-elevated-3 border-surface-4 dark:border-elevated-2 sm:p-4 p-4 border-surface-4 dark:border-elevated-2 flex items-center gap-3"> <svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg" class="w-7 h-7 shrink-0"> <g clip-path="url(#clip0_798_815)"> <path d="M36.2899 42.2276C43.9856 34.5318 43.9856 22.0546 36.2899 14.3589C28.5942 6.66312 16.1169 6.66312 8.42117 14.3589C0.725441 22.0546 0.725441 34.5318 8.42117 42.2276C16.1169 49.9233 28.5942 49.9233 36.2899 42.2276Z" fill="#C5D3DD"/> <path d="M31.7682 10.9818C36.2771 14.5962 39.17 20.1475 39.17 26.3624C39.17 37.2284 30.3299 46.0685 19.4638 46.0685C16.0593 46.0685 12.8539 45.2005 10.0566 43.6744C13.431 46.3794 17.7101 48 22.3611 48C33.2271 48 42.0673 39.16 42.0673 28.294C42.0673 20.8324 37.8987 14.3263 31.7682 10.9818Z" fill="#B6C4CF"/> <path d="M32.63 38.5675C38.3043 32.8932 38.3043 23.6933 32.63 18.0189C26.9556 12.3446 17.7557 12.3446 12.0814 18.0189C6.40708 23.6933 6.40708 32.8932 12.0814 38.5675C17.7557 44.2418 26.9556 44.2418 32.63 38.5675Z" fill="#E8EDF2"/> <path d="M28.8939 15.318C32.0128 17.9851 33.9934 21.9465 33.9934 26.3623C33.9934 34.3741 27.4752 40.8922 19.4634 40.8922C17.1151 40.8922 14.8954 40.3315 12.9302 39.3381C15.4701 41.5101 18.7647 42.8239 22.3608 42.8239C30.3726 42.8239 36.8907 36.3057 36.8907 28.2939C36.8908 22.6304 33.6334 17.714 28.8939 15.318Z" fill="#D9E7EC"/> <path d="M22.3611 37.6477C27.5189 37.6477 31.715 33.4516 31.715 28.294C31.715 23.1361 27.5189 18.9401 22.3611 18.9401C17.2034 18.9401 13.0073 23.1361 13.0073 28.294C13.0073 33.4516 17.2035 37.6477 22.3611 37.6477Z" fill="white"/> <path d="M25.9976 19.6759C27.7363 21.3753 28.8175 23.7447 28.8175 26.3623C28.8175 31.52 24.6215 35.7161 19.4637 35.7161C18.1746 35.7161 16.9456 35.4539 15.8271 34.9802C17.5145 36.6294 19.8209 37.6477 22.3611 37.6477C27.5188 37.6477 31.7149 33.4516 31.7149 28.294C31.715 24.4253 29.3542 21.0976 25.9976 19.6759Z" fill="#F5F8F9"/> <path d="M22.3613 32.4716C24.6686 32.4716 26.539 30.6012 26.539 28.2939C26.539 25.9866 24.6686 24.1162 22.3613 24.1162C20.054 24.1162 18.1836 25.9866 18.1836 28.2939C18.1836 30.6012 20.054 32.4716 22.3613 32.4716Z" fill="#FE646F"/> <path d="M23.0188 24.1682C23.4269 24.8272 23.6426 25.5872 23.6415 26.3623C23.6415 28.6696 21.7711 30.54 19.4638 30.54C19.2436 30.5399 19.0237 30.5226 18.8062 30.4881C19.5423 31.6783 20.8589 32.4717 22.3612 32.4717C24.6684 32.4717 26.5388 30.6012 26.5388 28.294C26.5389 26.2105 25.0136 24.4837 23.0188 24.1682Z" fill="#FD4755"/> <path d="M3.70298 9.63585L3.7943 7.02988C3.8242 6.17581 4.85836 5.76847 5.46267 6.37278L7.86473 8.77485C7.95959 8.86971 8.0339 8.98308 8.08306 9.10789C8.13222 9.23271 8.15517 9.36631 8.15048 9.50038L7.99542 13.9282L3.56761 14.0833C3.43354 14.0879 3.29994 14.065 3.17513 14.0158C3.05031 13.9667 2.93694 13.8924 2.84208 13.7975L0.439922 11.3954C-0.16439 10.7911 0.242953 9.75697 1.09702 9.72706L3.70298 9.63585Z" fill="#FFE177"/> <path d="M7.86442 8.77478L6.41533 7.32568L6.24536 12.1785L1.39258 12.3484L2.84167 13.7975C2.93654 13.8924 3.0499 13.9667 3.17472 14.0159C3.29954 14.065 3.43314 14.088 3.5672 14.0833L7.99502 13.9282L8.15008 9.50031C8.15479 9.36625 8.13186 9.23265 8.08272 9.10783C8.03357 8.98301 7.95927 8.86964 7.86442 8.77478Z" fill="#FFD15B"/> <path d="M37.3147 21.0679C43.1324 21.0679 47.8486 16.3517 47.8486 10.5339C47.8486 4.7162 43.1324 0 37.3147 0C31.497 0 26.7808 4.7162 26.7808 10.5339C26.7808 16.3517 31.497 21.0679 37.3147 21.0679Z" fill="#0593FC"/> <path d="M39.9896 0.34314C42.4238 2.27261 43.9854 5.25498 43.9854 8.60233C43.9854 14.4201 39.2692 19.1363 33.4514 19.1363C32.5487 19.1368 31.6497 19.0215 30.7764 18.7931C32.5728 20.2171 34.8443 21.0679 37.3147 21.0679C43.1324 21.0679 47.8486 16.3517 47.8486 10.534C47.8485 5.64067 44.5118 1.52701 39.9896 0.34314Z" fill="#0182FC"/> <path d="M36.3926 14.8972C36.1884 14.8975 35.9862 14.8574 35.7976 14.7792C35.6089 14.7011 35.4376 14.5865 35.2934 14.442L31.2144 10.363C31.1184 10.267 31.0645 10.1367 31.0645 10.0009C31.0645 9.86512 31.1184 9.73489 31.2144 9.63886L32.6886 8.16464C32.7847 8.06862 32.9149 8.01468 33.0507 8.01468C33.1865 8.01468 33.3167 8.06862 33.4128 8.16464L36.3925 11.1444L41.216 6.32086C41.3121 6.22484 41.4423 6.1709 41.5781 6.1709C41.7139 6.1709 41.8441 6.22484 41.9402 6.32086L43.4144 7.79508C43.5104 7.89111 43.5643 8.02134 43.5643 8.15714C43.5643 8.29294 43.5104 8.42317 43.4144 8.5192L37.4916 14.442C37.3475 14.5865 37.1762 14.7011 36.9875 14.7793C36.7989 14.8574 36.5967 14.8975 36.3926 14.8972Z" fill="white"/> <path d="M42.5457 6.92603L35.1616 14.3101L35.2934 14.4419C35.4376 14.5864 35.609 14.7011 35.7976 14.7792C35.9862 14.8574 36.1885 14.8975 36.3927 14.8972C36.5968 14.8975 36.7991 14.8574 36.9877 14.7792C37.1763 14.7011 37.3477 14.5864 37.4919 14.4419L43.4146 8.51912C43.5106 8.42309 43.5646 8.29285 43.5646 8.15706C43.5646 8.02126 43.5106 7.89102 43.4146 7.79499L42.5457 6.92603Z" fill="#F5F8F9"/> <path d="M22.858 27.7967L3.04899 7.98769C2.91712 7.85582 2.73827 7.78174 2.55178 7.78174C2.3653 7.78174 2.18645 7.85582 2.05458 7.98769C1.92271 8.11955 1.84863 8.2984 1.84863 8.48489C1.84863 8.67138 1.92271 8.85023 2.05458 8.98209L21.8637 28.7911C22.0009 28.9283 22.1809 28.997 22.3608 28.997C22.5407 28.997 22.7207 28.9283 22.858 28.7911C22.9233 28.7258 22.9751 28.6483 23.0104 28.563C23.0458 28.4777 23.064 28.3862 23.064 28.2939C23.064 28.2015 23.0458 28.1101 23.0104 28.0248C22.9751 27.9395 22.9233 27.862 22.858 27.7967Z" fill="#FFC344"/> </g> <defs> <clipPath id="clip0_798_815"> <rect width="48" height="48" fill="white"/> </clipPath> </defs> </svg> <span class="text-sm">Save lessons & track your progress</span> </div> <div class="rounded-2xl border transition-shadow transition-border transition-colors duration-200 bg-surface-0 dark:bg-elevated-3 border-surface-4 dark:border-elevated-2 sm:p-4 p-4 border-surface-4 dark:border-elevated-2 flex items-center gap-3"> <svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg" class="w-7 h-7 shrink-0"> <g clip-path="url(#clip0_499_25797)"> <path d="M41.5804 34.3228C42.6014 35.4487 43.8979 37.1446 43.8979 38.5499C43.8979 41.8499 41.226 44.5274 37.927 44.5349H37.9129C37.2811 44.5349 36.6726 44.4356 36.1007 44.2537C35.9104 44.1937 35.707 44.2827 35.6254 44.4646C34.687 46.543 32.6001 47.9915 30.1729 47.9999C26.8608 48.0112 24.1505 45.2221 24.1505 41.909L20.0132 11.6805L24.1505 4.48407C24.1505 2.05501 26.138 -0.00654686 28.567 1.56247e-05C30.622 0.00564061 32.3451 1.41939 32.8251 3.32626C32.8804 3.54751 33.112 3.67688 33.3267 3.60001C33.9061 3.39376 34.5267 3.2747 35.1736 3.26251C35.3479 3.25876 35.5251 3.26345 35.7042 3.27563C38.6432 3.48095 40.9917 5.89032 41.1248 8.83406C41.1585 9.5775 41.0535 10.2909 40.8323 10.9528C40.7564 11.1806 40.9045 11.4225 41.1426 11.4562C44.137 11.8866 46.4385 14.4609 46.4385 17.5744C46.4385 18.9637 45.9792 20.2462 45.2048 21.2784C45.0839 21.4406 45.1139 21.6684 45.2676 21.8006C46.8145 23.1365 47.7942 25.11 47.7942 27.314C47.7942 30.5306 44.7679 32.79 41.7567 33.6946C41.4848 33.7762 41.3901 34.1128 41.5804 34.3228Z" fill="#FE99A0" /> <path d="M33.1946 8.56797C33.1422 8.38902 33.0208 8.2382 32.8572 8.1487C32.6936 8.05919 32.5012 8.03833 32.3222 8.09069C32.0541 8.16916 31.6037 7.91191 31.2181 7.59194C31.4428 7.31369 31.6498 7.00319 31.8382 6.66054C31.8837 6.57957 31.9126 6.4904 31.9234 6.39817C31.9343 6.30594 31.9267 6.21249 31.9012 6.1232C31.8757 6.03391 31.8328 5.95056 31.7749 5.87795C31.717 5.80534 31.6453 5.74492 31.5639 5.70018C31.4826 5.65543 31.3931 5.62724 31.3008 5.61724C31.2085 5.60724 31.1151 5.61563 31.0261 5.64192C30.937 5.6682 30.854 5.71187 30.7819 5.7704C30.7098 5.82892 30.6501 5.90115 30.606 5.98291C30.0923 6.91694 29.4449 7.50466 28.6341 7.77419C28.7758 6.74763 28.707 5.24482 27.4267 4.27479C27.3531 4.21902 27.2692 4.1783 27.1799 4.15494C27.0906 4.13159 26.9975 4.12606 26.906 4.13867C26.8146 4.15128 26.7265 4.18178 26.6468 4.22844C26.5671 4.27509 26.4974 4.33698 26.4416 4.41058C26.3858 4.48418 26.3451 4.56804 26.3218 4.65738C26.2984 4.74671 26.2929 4.83977 26.3055 4.93125C26.3181 5.02272 26.3486 5.11081 26.3953 5.1905C26.4419 5.27018 26.5038 5.3399 26.5774 5.39566C27.4372 6.04704 27.3233 7.26194 27.1785 7.92982C25.5195 7.795 24.0058 6.77594 23.986 6.76225C23.8322 6.658 23.6435 6.6188 23.461 6.65323C23.2785 6.68766 23.117 6.79292 23.0118 6.94601C22.9066 7.0991 22.8663 7.2876 22.8996 7.47033C22.9329 7.65306 23.0372 7.81518 23.1897 7.92129C23.2879 7.98888 25.2964 9.3505 27.5375 9.3505C27.9175 9.3505 28.3044 9.31132 28.6894 9.2201C29.225 9.09437 29.7324 8.86953 30.1853 8.55719C30.6598 8.97719 31.4202 9.5096 32.2282 9.5096C32.3899 9.5096 32.5537 9.48822 32.7172 9.44041C32.8962 9.388 33.047 9.26665 33.1365 9.10304C33.2261 8.93943 33.2469 8.74697 33.1946 8.56797ZM32.3038 19.4863C32.2224 19.4863 32.1397 19.4848 32.0555 19.4819C31.9632 19.4786 31.8725 19.4573 31.7885 19.419C31.7045 19.3807 31.6288 19.3262 31.5659 19.2587C31.5029 19.1911 31.4539 19.1118 31.4215 19.0253C31.3892 18.9389 31.3743 18.8468 31.3775 18.7546C31.3911 18.3664 31.7174 18.0646 32.1048 18.0765C32.9117 18.1053 33.5199 17.96 33.8185 17.669C33.9959 17.4962 34.0806 17.2473 34.0774 16.9083C34.0766 16.8159 34.0939 16.7243 34.1284 16.6387C34.163 16.553 34.2141 16.4751 34.2788 16.4092C34.3435 16.3433 34.4205 16.2908 34.5055 16.2546C34.5905 16.2185 34.6817 16.1995 34.7741 16.1987H34.7807C34.966 16.1987 35.1438 16.2719 35.2755 16.4023C35.4071 16.5328 35.4819 16.7099 35.4837 16.8952C35.4904 17.6282 35.2604 18.2273 34.8 18.6762C34.2478 19.2141 33.4087 19.4863 32.3038 19.4863Z" fill="#FE646F" /> <path d="M41.5802 34.3228C42.6012 35.4487 43.8977 37.1447 43.8977 38.55C43.8977 41.85 41.2258 44.5275 37.9268 44.535C40.1824 43.6369 41.7762 41.4347 41.7762 38.8584C41.7762 37.425 40.4533 35.6934 39.4099 34.545C39.2158 34.3312 39.3124 33.9881 39.5908 33.9037C42.664 32.9803 45.7512 30.675 45.7512 27.3919C45.7512 25.1428 44.7508 23.1291 43.173 21.7659C43.0165 21.6309 42.9865 21.3984 43.1093 21.2334C43.8996 20.1797 44.3693 18.8719 44.3693 17.4534C44.3693 14.2762 42.0199 11.6484 38.9637 11.2097C38.7218 11.175 38.5699 10.9284 38.6477 10.6959C38.8727 10.0209 38.9805 9.29155 38.9458 8.53405C38.838 6.14812 37.3033 4.10624 35.1733 3.26249C35.3477 3.25874 35.5249 3.26343 35.704 3.27562C38.643 3.48093 40.9915 5.8903 41.1246 8.83405C41.1583 9.57749 41.0533 10.2909 40.8321 10.9528C40.7562 11.1806 40.9043 11.4225 41.1424 11.4562C44.1368 11.8866 46.4383 14.4609 46.4383 17.5744C46.4383 18.9637 45.979 20.2462 45.2046 21.2784C45.0837 21.4406 45.1137 21.6684 45.2674 21.8006C46.8143 23.1366 47.794 25.11 47.794 27.3141C47.794 30.5306 44.7677 32.79 41.7565 33.6947C41.4846 33.7762 41.3899 34.1128 41.5802 34.3228Z" fill="#FD8087" /> <path d="M27.7742 15.6744C27.6463 15.6743 27.5209 15.6393 27.4115 15.5733C27.302 15.5073 27.2126 15.4126 27.1529 15.2996C27.0932 15.1865 27.0655 15.0593 27.0727 14.9317C27.0799 14.8041 27.1217 14.6808 27.1937 14.5752C28.111 13.2295 29.8708 11.6327 33.0292 11.6818C33.2146 11.6848 33.3912 11.7609 33.5208 11.8935C33.6503 12.0261 33.7223 12.2045 33.7209 12.3899C33.7196 12.5752 33.6451 12.7526 33.5137 12.8833C33.3822 13.014 33.2045 13.0876 33.0191 13.0879L33.0086 13.0878C30.9757 13.0575 29.4073 13.8247 28.3558 15.3673C28.2913 15.462 28.2045 15.5396 28.1031 15.5931C28.0018 15.6466 27.8888 15.6745 27.7742 15.6744ZM33.3919 41.5901C33.3387 41.2054 32.9833 40.9362 32.5992 40.9899C30.8417 41.2324 29.68 40.6443 29.1348 39.2408C29.9165 39.0063 30.6203 38.5837 31.2279 37.9761C31.3588 37.844 31.4321 37.6655 31.4317 37.4796C31.4312 37.2936 31.3572 37.1154 31.2257 36.9839C31.0942 36.8524 30.916 36.7784 30.73 36.778C30.5441 36.7776 30.3656 36.8509 30.2335 36.9818C29.2369 37.9784 27.9102 38.2815 26.2891 37.8829C25.0017 37.5663 24.0059 36.9122 23.98 36.8952C23.9034 36.8437 23.8173 36.8078 23.7268 36.7895C23.6363 36.7713 23.5431 36.7711 23.4525 36.7889C23.3619 36.8066 23.2756 36.8421 23.1987 36.8932C23.1218 36.9443 23.0557 37.0101 23.0043 37.0867C22.9528 37.1633 22.9169 37.2494 22.8986 37.3399C22.8804 37.4304 22.8801 37.5236 22.8979 37.6142C22.9157 37.7049 22.9512 37.7911 23.0023 37.868C23.0534 37.9449 23.1191 38.011 23.1958 38.0625C23.2435 38.0946 24.3827 38.8534 25.9108 39.238C26.4977 39.3856 27.0631 39.459 27.6028 39.459C27.6422 39.459 27.6808 39.4572 27.7199 39.4564C28.3495 41.3937 29.8186 42.4486 31.8723 42.4486C32.167 42.4486 32.4738 42.4269 32.7917 42.3829C32.9764 42.3573 33.1434 42.2594 33.256 42.1107C33.3685 41.9621 33.4174 41.7748 33.3919 41.5901ZM35.6367 37.5441C35.5095 37.5442 35.3846 37.5098 35.2754 37.4445C35.1661 37.3792 35.0767 37.2855 35.0165 37.1734C33.9565 35.1987 34.2925 33.7638 34.761 32.908C35.2653 31.9867 36.0146 31.5482 36.0984 31.5013C36.179 31.4561 36.2676 31.4273 36.3593 31.4164C36.451 31.4055 36.5439 31.4128 36.6328 31.4378C36.7217 31.4628 36.8048 31.5051 36.8773 31.5622C36.9499 31.6194 37.0104 31.6902 37.0556 31.7708C37.1464 31.9327 37.1695 32.124 37.1198 32.3028C37.0701 32.4817 36.9517 32.6336 36.7905 32.7255C36.5864 32.8451 34.8792 33.9444 36.2556 36.5085C36.3131 36.6155 36.3419 36.7357 36.3391 36.8572C36.3363 36.9787 36.3021 37.0974 36.2397 37.2017C36.1774 37.3061 36.0891 37.3924 35.9834 37.4524C35.8777 37.5125 35.7582 37.544 35.6367 37.5441ZM36.859 40.9506C36.7964 40.9506 36.7332 40.9499 36.6692 40.9482C36.4827 40.9434 36.3058 40.8648 36.1773 40.7297C36.0489 40.5945 35.9793 40.4138 35.984 40.2274C35.994 39.8392 36.3152 39.5314 36.7048 39.5424C37.6218 39.5659 38.2844 39.3845 38.6254 39.0189C38.9128 38.7106 38.8974 38.3429 38.8971 38.3393C38.8883 38.2474 38.8978 38.1546 38.9248 38.0663C38.9519 37.978 38.9961 37.896 39.0549 37.8248C39.1137 37.7536 39.1859 37.6946 39.2675 37.6514C39.3491 37.6081 39.4384 37.5813 39.5303 37.5725C39.9162 37.5352 40.2601 37.8191 40.297 38.2057C40.3067 38.3062 40.37 39.21 39.6539 39.978C39.0516 40.6238 38.1118 40.9506 36.859 40.9506Z" fill="#FE646F" /> <path d="M24.1501 4.40437V41.9971C24.1501 45.3121 21.4632 47.9999 18.1473 47.9999C17.8698 47.9999 17.596 47.9812 17.3279 47.9446C15.1276 47.6437 13.306 46.1493 12.5382 44.1346C11.8522 44.3997 11.1231 44.5354 10.3876 44.5349C7.082 44.5349 4.40263 41.8546 4.40263 38.5499C4.40263 36.9346 6.1145 34.9359 7.15419 33.8596C3.95544 33.0909 0.507324 30.7481 0.507324 27.314C0.507324 24.9759 1.60982 22.8965 3.32263 21.5634C2.41232 20.4862 1.86201 19.095 1.86201 17.5743C1.86201 14.295 4.41482 11.6147 7.64075 11.4065C7.32897 10.6793 7.16853 9.89622 7.16919 9.10498C7.16919 5.87718 9.78574 3.26062 13.0135 3.26062C13.8592 3.26062 14.6626 3.44249 15.3892 3.76593C15.6545 1.93687 17.0429 0.472499 18.8326 0.0946873C19.1279 0.0328124 19.4335 0 19.7467 0C22.1785 0 24.1501 1.9725 24.1501 4.40437Z" fill="#99E6FC" /> <path d="M24.1503 4.40437V41.9971C24.1503 45.3121 21.4634 47.9999 18.1475 47.9999C17.87 47.9999 17.5962 47.9812 17.3281 47.9446C19.9222 47.2668 21.8375 44.909 21.8375 42.103V4.28905C21.8375 2.34281 20.5803 0.687186 18.8328 0.0946873C19.1281 0.0328124 19.4337 0 19.7469 0C22.1787 0 24.1503 1.9725 24.1503 4.40437Z" fill="#62DBFB" /> <path d="M12.4962 47.685C14.2024 47.685 15.5856 46.3018 15.5856 44.5955C15.5856 42.8893 14.2024 41.5061 12.4962 41.5061C10.7899 41.5061 9.40674 42.8893 9.40674 44.5955C9.40674 46.3018 10.7899 47.685 12.4962 47.685Z" fill="#6FD7A3" /> <path d="M18.5573 20.024C18.4025 20.0241 18.2521 19.9729 18.1296 19.8784L6.87961 11.2372C6.73514 11.1224 6.64157 10.9555 6.61907 10.7723C6.59657 10.5892 6.64695 10.4046 6.75934 10.2582C6.87173 10.1119 7.03713 10.0156 7.21987 9.9901C7.40261 9.96461 7.58805 10.012 7.7362 10.1219L18.9862 18.7632C19.1027 18.8527 19.1881 18.9765 19.2307 19.1171C19.2732 19.2577 19.2706 19.4081 19.2233 19.5472C19.176 19.6863 19.0863 19.807 18.9669 19.8926C18.8474 19.9781 18.7042 20.024 18.5573 20.024ZM6.26976 34.5156C6.11204 34.5158 5.95883 34.463 5.83475 34.3656C5.71068 34.2682 5.62294 34.132 5.58565 33.9787C5.54836 33.8255 5.56368 33.6641 5.62915 33.5206C5.69461 33.3771 5.80642 33.2598 5.94661 33.1875L17.1966 27.3784C17.3619 27.2965 17.5528 27.2828 17.728 27.3404C17.9033 27.3979 18.049 27.522 18.1336 27.6859C18.2183 27.8498 18.2351 28.0404 18.1805 28.2166C18.1259 28.3928 18.0043 28.5405 17.8418 28.6279L6.59179 34.437C6.49228 34.4886 6.38185 34.5155 6.26976 34.5156ZM17.3188 24.0912C17.2871 24.0912 17.2551 24.089 17.223 24.0847L3.16055 22.1698C3.06905 22.1574 2.98091 22.127 2.90115 22.0805C2.82138 22.034 2.75156 21.9722 2.69568 21.8987C2.63979 21.8252 2.59892 21.7414 2.57541 21.6521C2.55191 21.5629 2.54622 21.4698 2.55867 21.3783C2.61117 20.9935 2.96676 20.7242 3.3502 20.7764L17.4127 22.6913C17.5893 22.7152 17.7503 22.8054 17.863 22.9434C17.9757 23.0815 18.0317 23.2573 18.0198 23.4351C18.0078 23.6129 17.9288 23.7796 17.7987 23.9014C17.6685 24.0232 17.497 24.091 17.3188 24.0912ZM13.1283 43.9877C13 43.9876 12.8741 43.9524 12.7644 43.8858C12.6546 43.8193 12.5652 43.724 12.5057 43.6102C12.4463 43.4964 12.4191 43.3686 12.4272 43.2405C12.4352 43.1124 12.4782 42.9889 12.5514 42.8835L20.5201 31.4066C20.7415 31.0875 21.1798 31.0086 21.4987 31.23C21.8176 31.4515 21.8968 31.8897 21.6752 32.2086L13.7065 43.6856C13.6417 43.7789 13.5553 43.8552 13.4546 43.9079C13.3539 43.9605 13.242 43.9879 13.1283 43.9877ZM21.4513 16.9175C21.3196 16.9176 21.1906 16.8807 21.0788 16.8111C20.9671 16.7414 20.8772 16.6418 20.8193 16.5236L15.1943 5.04031C15.1123 4.87284 15.1001 4.67963 15.1605 4.5032C15.2209 4.32677 15.3489 4.18157 15.5164 4.09953C15.6839 4.01749 15.8771 4.00534 16.0535 4.06575C16.23 4.12616 16.3752 4.25418 16.4572 4.42165L22.0822 15.9049C22.1347 16.0121 22.1591 16.1308 22.1531 16.25C22.147 16.3692 22.1107 16.4849 22.0476 16.5862C21.9845 16.6875 21.8966 16.7711 21.7923 16.829C21.688 16.887 21.5706 16.9174 21.4513 16.9175Z" fill="#6FD7A3" /> <path d="M15.5851 44.5959C15.5851 46.3021 14.2023 47.6849 12.496 47.6849C12.1913 47.6849 11.897 47.6409 11.6185 47.5584C12.7604 47.0587 13.5582 45.9206 13.5582 44.5959C13.5582 43.2702 12.7595 42.1312 11.6157 41.6334C11.9014 41.5483 12.198 41.5053 12.496 41.5059C14.2023 41.5059 15.5851 42.8896 15.5851 44.5959Z" fill="#3EC3A4" /> <path d="M39.7884 26.1079C38.6963 25.5618 37.6723 26.3435 37.1064 26.9317C36.0967 26.3792 34.7128 26.1507 33.5192 26.0647C33.3337 26.0521 33.1507 26.1135 33.0104 26.2355C32.8701 26.3575 32.7838 26.5301 32.7704 26.7156C32.757 26.9011 32.8176 27.0843 32.939 27.2252C33.0604 27.366 33.2326 27.4531 33.4181 27.4673C35.4045 27.6105 36.8392 28.1282 37.0728 28.786C37.1214 28.9229 37.2112 29.0413 37.3298 29.1251C37.4485 29.2089 37.5901 29.254 37.7353 29.254C37.8479 29.2541 37.9589 29.227 38.0589 29.1752C38.1589 29.1234 38.245 29.0484 38.3099 28.9564C38.3749 28.8644 38.4167 28.7581 38.4321 28.6466C38.4474 28.535 38.4357 28.4214 38.398 28.3153C38.3404 28.1546 38.2636 28.0015 38.1692 27.8593C38.4957 27.5359 38.9116 27.2416 39.1593 27.3655C39.2419 27.4069 39.3318 27.4315 39.4239 27.4381C39.516 27.4446 39.6085 27.433 39.6961 27.4038C39.7837 27.3746 39.8647 27.3284 39.9345 27.2679C40.0042 27.2074 40.0613 27.1337 40.1026 27.0511C40.1439 26.9685 40.1686 26.8786 40.1752 26.7866C40.1817 26.6945 40.1701 26.602 40.1409 26.5144C40.1117 26.4268 40.0656 26.3458 40.0051 26.2761C39.9446 26.2063 39.871 26.1492 39.7884 26.1079Z" fill="#FE646F" /> <path d="M34.1384 23.9999C34.1384 29.5161 29.6665 33.988 24.1503 33.988C24.0471 33.988 23.945 33.9861 23.8428 33.9833C18.469 33.8211 14.1631 29.413 14.1631 23.9999C14.1631 18.5849 18.4709 14.1777 23.8465 14.0174C23.9478 14.0146 24.049 14.0127 24.1503 14.0127C29.6665 14.0127 34.1384 18.4836 34.1384 23.9999Z" fill="#DFF6FD" /> <path d="M34.1379 23.9999C34.1379 29.5161 29.666 33.988 24.1498 33.988C24.0467 33.988 23.9445 33.9861 23.8423 33.9833C28.4004 32.9493 31.8026 28.8721 31.8026 23.9999C31.8026 19.1286 28.4023 15.0533 23.846 14.0174C23.9473 14.0146 24.0485 14.0127 24.1498 14.0127C29.666 14.0127 34.1379 18.4836 34.1379 23.9999Z" fill="#D8ECFE" /> <path d="M5.51961 37.2892C7.22586 37.2892 8.60905 35.906 8.60905 34.1998C8.60905 32.4935 7.22586 31.1104 5.51961 31.1104C3.81336 31.1104 2.43018 32.4935 2.43018 34.1998C2.43018 35.906 3.81336 37.2892 5.51961 37.2892Z" fill="#6FD7A3" /> <path d="M8.60805 34.2001C8.60805 35.9064 7.22523 37.2892 5.51898 37.2892C5.2143 37.2892 4.91992 37.2451 4.64148 37.1626C5.78336 36.6629 6.58117 35.5248 6.58117 34.2001C6.58117 32.8745 5.78242 31.7354 4.63867 31.2376C4.92435 31.1525 5.22091 31.1096 5.51898 31.1101C7.22523 31.1101 8.60805 32.4939 8.60805 34.2001Z" fill="#3EC3A4" /> <path d="M3.29647 24.5688C5.00272 24.5688 6.38591 23.1856 6.38591 21.4793C6.38591 19.7731 5.00272 18.3899 3.29647 18.3899C1.59022 18.3899 0.207031 19.7731 0.207031 21.4793C0.207031 23.1856 1.59022 24.5688 3.29647 24.5688Z" fill="#6FD7A3" /> <path d="M6.38592 21.4792C6.38592 23.1854 5.00311 24.5692 3.29686 24.5692C2.99123 24.5692 2.69592 24.5251 2.41748 24.4417C3.56029 23.9448 4.35904 22.8048 4.35904 21.4792C4.35904 20.1545 3.56029 19.0154 2.41748 18.5176C2.69592 18.4342 2.99123 18.3901 3.29686 18.3901C5.00311 18.3901 6.38592 19.7729 6.38592 21.4792Z" fill="#3EC3A4" /> <path d="M6.99666 13.5309C8.70291 13.5309 10.0861 12.1477 10.0861 10.4415C10.0861 8.73524 8.70291 7.35205 6.99666 7.35205C5.29041 7.35205 3.90723 8.73524 3.90723 10.4415C3.90723 12.1477 5.29041 13.5309 6.99666 13.5309Z" fill="#6FD7A3" /> <path d="M10.0861 10.4411C10.0861 12.1474 8.7033 13.5311 6.99705 13.5311C6.69143 13.5311 6.39611 13.4871 6.11768 13.4036C7.26049 12.9067 8.05924 11.7667 8.05924 10.4411C8.05924 9.11736 7.26049 7.97736 6.11768 7.47955C6.39611 7.39611 6.69143 7.35205 6.99705 7.35205C8.7033 7.35205 10.0861 8.73486 10.0861 10.4411Z" fill="#3EC3A4" /> <path d="M15.2403 6.62761C16.9466 6.62761 18.3298 5.24442 18.3298 3.53817C18.3298 1.83192 16.9466 0.44873 15.2403 0.44873C13.5341 0.44873 12.1509 1.83192 12.1509 3.53817C12.1509 5.24442 13.5341 6.62761 15.2403 6.62761Z" fill="#6FD7A3" /> <path d="M18.3298 3.53828C18.3298 5.24453 16.947 6.62734 15.2407 6.62734C14.9351 6.62734 14.6407 6.58328 14.3623 6.50078C15.5042 6.00297 16.3029 4.86297 16.3029 3.53734C16.3029 2.21359 15.5042 1.07359 14.3623 0.575781C14.6407 0.493281 14.9351 0.449219 15.2407 0.449219C16.947 0.449219 18.3298 1.83203 18.3298 3.53828Z" fill="#3EC3A4" /> <path d="M26.0754 27.8011L23.1056 19.932C23.1033 19.9255 23.1007 19.9192 23.0981 19.9128C23.0318 19.7505 22.9186 19.6117 22.773 19.5141C22.6273 19.4165 22.4559 19.3646 22.2806 19.365H22.2797C22.1013 19.3647 21.9271 19.4187 21.78 19.5196C21.6329 19.6205 21.5199 19.7638 21.456 19.9303L18.4591 27.799C18.3928 27.9733 18.3983 28.1668 18.4746 28.337C18.5509 28.5071 18.6917 28.64 18.866 28.7063C19.2282 28.8445 19.635 28.6625 19.7733 28.2996L20.3472 26.7927H24.1918L24.7598 28.2976C24.8102 28.4313 24.9002 28.5465 25.0177 28.6278C25.1353 28.7091 25.2748 28.7526 25.4177 28.7527C25.5314 28.7526 25.6435 28.725 25.7442 28.6722C25.8449 28.6193 25.9313 28.5428 25.996 28.4493C26.0606 28.3557 26.1016 28.2478 26.1155 28.135C26.1293 28.0221 26.1155 27.9075 26.0754 27.8011ZM20.8827 25.3865L22.2782 21.7224L23.661 25.3865H20.8827ZM28.0251 28.6344C27.8386 28.6344 27.6598 28.5604 27.5279 28.4285C27.396 28.2966 27.322 28.1178 27.322 27.9313V19.9502C27.322 19.5619 27.6367 19.2471 28.0251 19.2471C28.4135 19.2471 28.7282 19.5619 28.7282 19.9502V27.9313C28.7282 28.1178 28.6541 28.2966 28.5223 28.4285C28.3904 28.5604 28.2116 28.6344 28.0251 28.6344Z" fill="#9FACBA" /> <path d="M41.8639 17.7655C41.8393 17.6765 41.7975 17.5932 41.7407 17.5203C41.6839 17.4475 41.6133 17.3866 41.5329 17.3411C41.4526 17.2955 41.3641 17.2663 41.2724 17.255C41.1807 17.2437 41.0878 17.2506 40.9988 17.2753C40.9098 17.2999 40.8265 17.3418 40.7537 17.3986C40.6809 17.4554 40.62 17.526 40.5744 17.6063C40.5289 17.6866 40.4997 17.7752 40.4884 17.8668C40.4771 17.9585 40.4839 18.0514 40.5085 18.1404C40.5934 18.4474 40.5764 18.6946 40.4564 18.8959C40.3429 19.0864 40.1266 19.2604 39.8327 19.4044C39.5349 18.2381 38.6195 17.7109 38.5136 17.6537C38.3496 17.565 38.157 17.5451 37.9783 17.5984C37.7996 17.6517 37.6494 17.7738 37.5607 17.9379C37.472 18.1019 37.4522 18.2945 37.5055 18.4732C37.5588 18.6519 37.6809 18.8021 37.8449 18.8908C37.8499 18.8934 38.3454 19.1853 38.4818 19.792C38.6221 20.416 38.3473 21.2217 37.6871 22.1221C37.6318 22.1965 37.5917 22.2811 37.5693 22.3711C37.5468 22.461 37.5423 22.5545 37.5561 22.6462C37.5699 22.7379 37.6017 22.826 37.6497 22.9054C37.6976 22.9847 37.7608 23.0538 37.8356 23.1086C37.9104 23.1635 37.9953 23.203 38.0854 23.2249C38.1755 23.2468 38.269 23.2506 38.3606 23.2362C38.4522 23.2218 38.5401 23.1894 38.6191 23.1409C38.6981 23.0924 38.7668 23.0288 38.8211 22.9536C39.3415 22.244 39.6785 21.5627 39.8308 20.9151C40.5054 20.6987 41.2506 20.3104 41.6645 19.6157C41.9822 19.0822 42.0511 18.4426 41.8639 17.7655ZM38.8997 14.999C39.0439 14.9989 39.1846 14.9546 39.3028 14.8719C39.4209 14.7892 39.5108 14.6722 39.5603 14.5368C39.5919 14.45 39.6062 14.3579 39.6023 14.2657C39.5984 14.1734 39.5763 14.0828 39.5373 13.9991C39.4984 13.9154 39.4434 13.8401 39.3753 13.7777C39.3073 13.7153 39.2277 13.6668 39.1409 13.6352C38.2363 13.3049 37.6916 12.8125 37.522 12.1717C37.3949 11.6911 37.5189 11.2754 37.525 11.2554C37.5839 11.0791 37.5704 10.8866 37.4878 10.7202C37.4051 10.5537 37.2598 10.4267 37.0837 10.367C36.9077 10.3074 36.7152 10.3198 36.5483 10.4017C36.3814 10.4836 36.2538 10.6283 36.1932 10.804C35.8491 11.8032 35.9215 13.9569 38.6586 14.9562C38.7383 14.9852 38.8196 14.999 38.8997 14.999Z" fill="#FE646F" /> </g> <defs> <clipPath id="clip0_499_25797"> <rect width="48" height="48" fill="white" /> </clipPath> </defs> </svg> <span class="text-sm">Understand topics faster with AI chat</span> </div> </div> <div class="flex flex-col items-center gap-4"> <div class=""> <div class="mt-6 text-center mx-auto max-w-xl"> <a x-data @click="$store.signInMethod.trackSignIn('google')" x-tooltip="Last used" x-tooltip-position="left" x-tooltip-display="$store.signInMethod.method === 'google'" href="https://quizgecko.com/auth/google/redirect" class="px-5 py-3 text-md rounded-lg w-full bg-blue-600 dark:border-blue-600 hover:bg-blue-700 hover:border-blue-600 active:bg-blue-100 focus:border-blue-600 focus:shadow-outline-gray text-surface-0 disabled:bg-blue-200 disabled:text-surface-3 inline-flex justify-center font-bold border shadow-sm disabled:cursor-not-allowed cursor-pointer disabled:shadow-none focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 mt-1 sm:w-full"> <svg class="w-6 h-6 mr-1" viewBox="0 0 533.5 544.3"> <path d="M533.5 278.4c0-18.5-1.5-37.1-4.7-55.3H272.1v104.8h147c-6.1 33.8-25.7 63.7-54.4 82.7v68h87.7c51.5-47.4 81.1-117.4 81.1-200.2z" fill="#4285f4"></path> <path d="M272.1 544.3c73.4 0 135.3-24.1 180.4-65.7l-87.7-68c-24.4 16.6-55.9 26-92.6 26-71 0-131.2-47.9-152.8-112.3H28.9v70.1c46.2 91.9 140.3 149.9 243.2 149.9z" fill="#34a853"></path> <path d="M119.3 324.3c-11.4-33.8-11.4-70.4 0-104.2V150H28.9c-38.6 76.9-38.6 167.5 0 244.4l90.4-70.1z" fill="#fbbc04"></path> <path d="M272.1 107.7c38.8-.6 76.3 14 104.4 40.8l77.7-77.7C405 24.6 339.7-.8 272.1 0 169.2 0 75.1 58 28.9 150l90.4 70.1c21.5-64.5 81.8-112.4 152.8-112.4z" fill="#ea4335"></path> </svg> <span class="ml-2"> Continue with Google </span> </a> </div> <div class="mt-2 text-center mx-auto max-w-xl"> <a href="https://quizgecko.com/auth/apple/redirect" x-data @click="$store.signInMethod.trackSignIn('apple')" x-tooltip-position="left" x-tooltip="Last used" x-tooltip-display="$store.signInMethod.method === 'apple'" class="px-5 py-3 text-md rounded-lg w-full dark:border-elevated-3 hover:bg-elevated-3 hover:border-black active:bg-surface-3 focus:border-black focus:shadow-outline-gray text-surface-0 disabled:text-surface-3 disabled:bg-surface-4 inline-flex justify-center font-bold border shadow-sm disabled:cursor-not-allowed cursor-pointer disabled:shadow-none focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 mt-1 sm:w-full bg-black"> <svg class="w-5 h-5 mr-0.5 mt-0.5" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"> <path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516.024.034 1.52.087 2.475-1.258.955-1.345.762-2.391.728-2.43Zm3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422.212-2.189 1.675-2.789 1.698-2.854.023-.065-.597-.79-1.254-1.157a3.692 3.692 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56.244.729.625 1.924 1.273 2.796.576.984 1.34 1.667 1.659 1.899.319.232 1.219.386 1.843.067.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758.347-.79.505-1.217.473-1.282Z"> </path> <path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516.024.034 1.52.087 2.475-1.258.955-1.345.762-2.391.728-2.43Zm3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422.212-2.189 1.675-2.789 1.698-2.854.023-.065-.597-.79-1.254-1.157a3.692 3.692 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56.244.729.625 1.924 1.273 2.796.576.984 1.34 1.667 1.659 1.899.319.232 1.219.386 1.843.067.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758.347-.79.505-1.217.473-1.282Z"> </path> </svg> <span class="ml-2"> Sign in with Apple </span> </a> </div> <div class="text-center mt-8"> <a class="px-4 py-2.5 text-md rounded-xl w-auto border-transparent text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 disabled:text-surface-6 hover:bg-primary-6 disabled:hover:bg-transparent focus:border-primary-6 focus:border-primary-6 active:bg-primary-6 dark:hover:bg-primary-1 dark:hover:text-surface-1 disabled:dark:hover:bg-transparent inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" color="tertiary" type="button" href="https://quizgecko.com/register" > or continue with email </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener('alpine:init', () => { Alpine.data('exitIntentSignup', () => ({ modalShown: false, init() { // Wait before attaching mouseleave listener (3 seconds) setTimeout(() => { if (!this.modalShown) { document.addEventListener('mouseleave', this.handleMouseLeave.bind( this)); } }, 2500); }, handleMouseLeave(event) { // Check if the mouse is near the top of the viewport (likely moving towards browser chrome) // and if the modal hasn't been shown yet. if (event.clientY <= 10 && !this.modalShown) { this.showModal(); } }, showModal() { this.modalShown = true; // Remove the listener once the modal is shown document.removeEventListener('mouseleave', this.handleMouseLeave); this.$dispatch('open-modal', 'exit-intent-signup'); // Track this event if tracking is available if (typeof window.trackEvent === 'function') { window.trackEvent('exit_intent_modal_shown'); } } })); }); </script> </div> </div> <script> document.addEventListener('alpine:init', () => { Alpine.data('showQuiz', () => ({ loading: false, user: window.user, openQuestions: [], openedQuestions: null, audioLoading: false, quizId: 1081139, isAssignment: false, assignmentSessionId: null, questionCount: 41, init: function() { // maybe not best long term approach, but a quick fix to an odd issue this.slug = window.location.pathname.split('/').pop(); // Check if this is an assignment by looking at the URL pattern const pathParts = window.location.pathname.split('/'); if (pathParts.includes('assignment')) { this.isAssignment = true; // Find the session ID (typically the part after 'assignment/') const assignmentIndex = pathParts.indexOf('assignment'); if (assignmentIndex !== -1 && pathParts.length > assignmentIndex + 1) { this.assignmentSessionId = pathParts[assignmentIndex + 1]; } } // Check if URL has a share hashtag and open the share modal if present if (window.location.hash === '#share') { // Use setTimeout to ensure the modal component is fully initialized setTimeout(() => { this.$dispatch('open-modal', 'share-assign-lesson'); }, 100); } }, getBaseUrl: function() { if (this.isAssignment && this.assignmentSessionId) { return 'https://quizgecko.com/learn/assignment/' + this.assignmentSessionId; } return 'https://quizgecko.com/learn/' + this.slug; }, openQuestion(id) { if (!this.user && this.openQuestions.length >= 2) { this.$store.ui.modals.registerModal.toggle(); return; } if (!this.user && !this.openedQuestions) { this.openedQuestions = new Set(); } if (!this.user && this.openedQuestions.size >= 2) { this.$store.ui.modals.registerModal.toggle(); return; } if (this.openQuestions.includes(id)) { this.openQuestions.splice(this.openQuestions.indexOf(id), 1); } else { this.openQuestions.push(id); if (!this.user) { this.openedQuestions.add(id); } } }, // TODO: not esure these flashcard routes are correct playFlashcards: function() { window.location.href = this.getBaseUrl() + '/flashcards/view?mode=review'; }, playSpacedRepetitionFlashcards: function() { if (!window.user) { this.$store.ui.modals.registerModal.toggle(); return; } if (!window.user.is_paid) { this.$store.ui.modals.limitModal.toggle( "Please upgrade to use spaced repetition flashcards" ); return; } window.location.href = this.getBaseUrl() + '/flashcards/view?mode=spaced-repetition'; }, playQuiz: function() { if (!this.questionCount) { window.confirmModal( "No questions available", "This quiz has no questions to play. Please add questions first." ); return; } window.location.href = this.getBaseUrl() + '/play/start'; }, playChat: function() { // Chat always uses quiz ID regardless of whether it's an assignment or not let chatUrl = 'https://quizgecko.com/chat/assistant?quiz_ids=' + this.quizId; // If this is an assignment, add the assignment ID to the URL window.location.href = chatUrl; }, duplicate: function() { if (!this.user) { this.$store.ui.modals.registerModal.toggle(); return; } if (!this.user?.is_paid) { this.$store.ui.modals.limitModal.toggle(); return; } // Duplication always uses the original quiz, regardless of assignment if (this.user && this.user.is_paid) { let url = 'https://quizgecko.com/learn/1081139/duplicate'; return window.location.href = url; } }, downloadPdf: function(quizId, withAnswers) { if (!this.user) { this.$store.ui.modals.registerModal.toggle(); return; } if (!this.user?.is_paid) { this.$store.ui.modals.limitModal.toggle(); return; } // PDF download always uses the original quiz ID const url = `/generate/${quizId}/export/pdf` + (withAnswers ? '?answers=true' : ''); window.location.href = url; }, deleteQuiz(quizId) { if (!confirm("Are you sure you want to delete this quiz?")) { return; } axios.delete(`/api/v1/quiz/${quizId}`) .then(() => { window.location.href = '/library?deleted=true'; }) .catch(error => { console.error("Failed to delete quiz:", error); }); }, })); }); </script> </div> </main> <div x-data="bottomBannerMobile()" class="sm:hidden" x-show="open" x-cloak> <div class="fixed bottom-0 start-0 z-40 w-full"> <div id="bottom-banner" tabindex="-1" class="flex justify-between py-4 px-5 border-t bg-surface-0 rounded-t-[20px] z-20"> <!-- Banner content --> <div class="relative w-full box-border text-center px-md pt-md pb-xl text-elevated-3"> <div class="mx-auto"> <span class="font-bold text-lg text-elevated-2 ">Use Quizgecko on... </span> </div> <div slot="ctas" class="mt-6 space-y-6"> <div class="flex justify-between box-border mb-md"> <div class="flex items-center space-x-4"> <div class="w-[48px] h-[48px] flex items-center justify-center border border-solid border-neutral-border-weak rounded-lg"> <svg class="w-8 rounded-md" width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M10.1778 7.40835C10.9606 8.07549 11.4861 7.98429 11.9672 8.0172C12.122 7.99252 12.6155 8.17517 13.3515 9.10326C13.0139 9.39671 12.2643 9.90793 11.9672 9.60515L10.7862 8.18989C10.709 8.01521 10.2704 7.97804 10.2179 8.16201C9.91186 9.23985 9.31213 8.36828 9.04421 8.60894C8.90786 8.73159 8.84016 8.93693 8.91167 9.10326C9.25301 9.89491 8.7963 9.9776 8.5217 10.1133C8.32243 10.2127 8.29192 10.4803 8.46736 10.6169C9.39482 11.2999 11.9605 12.4437 14.8033 11.5551C14.8989 11.7444 15.0666 12.238 14.9721 12.6988C14.3771 12.4098 12.8367 11.8779 11.4524 12.781C11.1401 12.9601 10.583 13.7684 10.4479 14.6323C10.3497 15.2605 10.0182 15.4196 9.89612 15.4265C9.37362 15.4405 8.75578 14.6107 8.36295 13.9798C8.22089 13.7531 7.82424 13.7522 7.76227 14.0105C7.60399 14.673 7.38851 14.7919 7.16444 14.8133C6.76208 14.8514 6.52372 15.2667 6.71727 15.6124C6.86982 15.8856 6.92131 16.0816 6.60667 16.3752C6.25674 16.7023 6.42265 17.283 6.89747 17.3806C7.46478 17.5535 8.88469 17.7955 10.0259 17.3806C11.1671 16.9657 12.167 16.1434 12.5243 15.7842C12.8788 16.0968 13.6773 16.7666 14.0352 16.9443C13.5907 17.7396 12.1293 19.3386 9.84019 19.3715C7.55108 19.4044 6.02781 18.354 5.55232 17.8247C4.95303 17.2981 3.67005 15.669 3.33242 13.3652C2.91039 10.4855 3.91483 8.64251 3.97391 8.49441C4.16888 8.00572 3.56148 7.36741 3.21283 7.76147C2.9353 8.07515 2.66875 8.42369 2.42923 8.80706C1.72021 9.76147 1.13781 11.695 1.07028 12.5836C0.960552 13.1623 0.898091 14.7557 1.52608 16.5C2.31106 18.6803 3.88948 20.1696 4.98677 20.8936C6.08406 21.6176 7.70467 22.3334 9.50254 22.4322C11.3004 22.5309 12.8028 22.1195 13.5541 21.8151C14.3053 21.5107 16.8375 20.2518 18.4497 18.7544C18.6888 18.8449 19.1047 19.197 18.8548 19.8816C18.4638 20.8775 17.8101 23.047 18.3232 23.7574C18.4052 23.9321 18.6302 23.9934 18.7942 23.8875L18.7932 23.8894C19.3644 23.5196 19.7906 23.6506 20.0833 23.8959C20.3054 24.0826 20.6477 24.0083 20.7764 23.7518C20.9605 23.3867 21.1855 23.0643 22.0169 23.054C22.3029 23.0503 22.2858 22.5913 22.0188 22.4928C21.4076 22.2661 20.7698 21.9149 20.7507 21.4531C20.7715 21.3105 20.9481 20.9561 21.4883 20.6797C22.1636 20.3341 22.5434 19.1658 22.3155 18.055C22.0876 16.9443 21.4123 15.8664 20.9481 15.3728C21.3842 14.5582 22.0775 12.3088 21.3617 9.82729C21.1507 8.7001 20.4332 7.51531 20.2897 7.34253C22.1264 4.47928 20.4754 1.36097 19.4203 0.159721C19.2192 -0.0549163 18.7033 -0.0707127 18.7033 0.220117C18.7043 1.06287 17.9091 0.724655 17.5096 0.703284C17.2998 0.692134 17.1273 0.851022 17.1273 1.05544C17.1254 1.50423 17.6021 2.02735 16.5828 2.22247C16.2663 2.2838 16.2466 2.83373 16.5113 2.99461L18.0952 3.90333C18.7033 4.29827 18.5248 4.9428 18.2332 5.26507C17.5096 4.4875 15.8924 3.82734 15.5291 3.66473C15.4777 3.64058 15.3146 3.555 15.3013 3.50018C14.5575 0.393972 10.8079 0.919957 9.15177 2.07584C7.54804 3.19456 9.30536 6.66316 10.1778 7.40835Z" fill="#4F46E5" /> </svg> </div> <span class="text-16 font-bold text-neutral-content-strong ml-xs" x-text="appName"></span> </div> <a :href="appUrl" class="min-w-[120px] px-[var(--rem14)] items-center justify-center inline-flex bg-primary-1 rounded-lg text-surface-0 font-bold" id="primary-button" rel="nofollow"> <span class="flex items-center justify-center"> <span class="flex items-center gap-xs">Open</span></span> </a> </div> <div class="flex justify-between box-border"> <div class="flex items-center space-x-4"> <div class="w-[48px] h-[48px] flex items-center justify-center border border-solid border-neutral-border-weak rounded-lg"> <img class="w-[40px] h-[40px] text-[40px] rounded-full" src="https://imagedelivery.net/1wpWmoOF0K-Y_NxLJO3e2w/f6dbf467-b532-444e-7df3-ba798d577a00/thumb" alt="Browser" /> </div> <span id="continue-label" class="text-16 font-bold text-neutral-content-strong ml-xs"> Browser </span> </div> <button @click="toggle()" class="min-w-[120px] px-[var(--rem14)] items-center justify-center inline-flex bg-surface-3 rounded-lg text-elevated-3 font-bold" id="secondary-button"> <span class="flex items-center justify-center"> <span class="flex items-center gap-xs">Continue</span> </span> </button> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("alpine:init", () => { Alpine.data("bottomBannerMobile", (quiz) => ({ open: false, os: null, init() { const closedTimestamp = localStorage.getItem('bottomMobileBannerClosedTimestamp'); const currentTimestamp = Date.now(); const oneWeekInMilliseconds = 7 * 24 * 60 * 60 * 1000; // Check if we're on the mobile route if (window.location.pathname === '/mobile') { this.open = false; return; } this.open = true; if (closedTimestamp && currentTimestamp - closedTimestamp < oneWeekInMilliseconds) { this.open = false; } else { localStorage.removeItem('bottomMobileBannerClosedTimestamp'); } this.os = this.getOS(); this.setAppDetails(); }, setAppDetails() { if (this.os === 'iOS') { this.appUrl = 'https://apps.apple.com/gb/app/quizgecko-ai-study-quizzes/id6473546188'; this.appName = 'iPhone App'; } else if (this.os === 'Android') { this.appUrl = 'https://play.google.com/store/apps/details?id=com.quizgecko'; this.appName = 'Android App'; } else { this.appUrl = 'https://quizgecko.com/mobile'; this.appName = 'Mobile App'; } }, toggle() { this.open = !this.open; if (!this.open) { localStorage.setItem('bottomMobileBannerClosedTimestamp', Date.now()); } else { localStorage.removeItem('bottomMobileBannerClosedTimestamp'); } }, getOS() { const userAgent = window.navigator.userAgent, platform = window.navigator.platform, iosPlatforms = ['iPhone', 'iPad', 'iPod'], androidPlatforms = ['Android']; if (iosPlatforms.indexOf(platform) !== -1) { return 'iOS'; } else if (androidPlatforms.some(substring => userAgent.includes(substring))) { return 'Android'; } else { return 'other'; } } })); }); </script> <div id="modal-help" x-data="{ show: false, focusables() { // All focusable element types... let selector = 'a, button, input:not([type=\'hidden\']), textarea, select, details, [tabindex]:not([tabindex=\'-1\'])' return [...$el.querySelectorAll(selector)] // All non-disabled elements... .filter(el => !el.hasAttribute('disabled')) }, firstFocusable() { return this.focusables()[0] }, lastFocusable() { return this.focusables().slice(-1)[0] }, nextFocusable() { return this.focusables()[this.nextFocusableIndex()] || this.firstFocusable() }, prevFocusable() { return this.focusables()[this.prevFocusableIndex()] || this.lastFocusable() }, nextFocusableIndex() { return (this.focusables().indexOf(document.activeElement) + 1) % (this.focusables().length + 1) }, prevFocusableIndex() { return Math.max(0, this.focusables().indexOf(document.activeElement)) - 1 }, backOnClose: false, closeModal() { if (this.backOnClose) { window.history.back(); } window.dispatchEvent(new CustomEvent('close-modal', { detail: 'help' })); this.show = false; } }" x-init="$watch('show', value => { if (value) { document.body.classList.add('overflow-y-hidden'); } else { document.body.classList.remove('overflow-y-hidden'); } })" x-on:open-modal.window="$event.detail == 'help' ? show = true : null" x-on:close.stop="closeModal()" x-on:close-modal.window="$event.detail == 'help' ? show = false : null" x-on:keydown.escape.window="closeModal()" x-on:keydown.tab.prevent="$event.shiftKey || nextFocusable().focus()" x-on:keydown.shift.tab.prevent="prevFocusable().focus()" x-show="show" class="relative z-50" aria-labelledby="modal-title" role="dialog" aria-modal="true" style="display: none;"> <div x-show="show" class="fixed inset-0 transform transition-all" x-on:click="closeModal()" x-transition:enter="ease-out duration-200" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0"> <div class="absolute inset-0 bg-elevated-0 dark:bg-elevated-4 opacity-80"></div> </div> <div x-show="show" class="fixed inset-0 z-50 overflow-y-auto"> <div class="flex min-h-full items-center justify-center sm:p-0"> <div @click.stop x-on:click.outside=closeModal() class="relative transform bg-surface-0 dark:bg-elevated-3 text-left shadow-xl dark:shadow-none dark:border dark:border-elevated-3 transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:rounded-xl w-full h-full sm:h-auto min-h-screen sm:min-h-0"> <div class="absolute right-0 top-0 pr-3 pt-3 block"> <button class="px-4 py-2.5 text-md rounded-xl w-auto border-transparent text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 disabled:text-surface-6 hover:bg-primary-6 disabled:hover:bg-transparent focus:border-primary-6 focus:border-primary-6 active:bg-primary-6 dark:hover:bg-primary-1 dark:hover:text-surface-1 disabled:dark:hover:bg-transparent inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" type="button" x-on:click="closeModal()" color="tertiary" type="button"> <svg class="w-6 h-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"/></svg> </button> </div> <div> <div class="p-8"> <template x-if="$store.ui?.modals?.help?.title"> <h3 class="text-lg font-semibold pb-2" x-text="$store.ui?.modals?.help?.title"></h3> </template> <template x-if="$store.ui?.modals?.help?.content"> <p class="mt-3 " x-html="$store.ui?.modals?.help?.content"></p> </template> </div> <div class="flex justify-end p-4 rounded-b-xl space-x-2 bg-surface-2 dark:bg-elevated-3"> <button class="px-4 py-2.5 text-md rounded-xl w-auto bg-primary-1 border-primary-0 hover:bg-primary-3 active:bg-primary-0 focus:shadow-outline-indigo text-surface-0 disabled:bg-surface-4 disabled:text-surface-0 disabled:bg-surface-6 disabled:border-elevated-0 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" type="button" x-on:click.prevent="$dispatch('close-modal', 'help')" type="button"> Got it! </button> </div> </div> </div> </div> </div> </div> <div id="modal-limit" x-data="{ show: false, focusables() { // All focusable element types... let selector = 'a, button, input:not([type=\'hidden\']), textarea, select, details, [tabindex]:not([tabindex=\'-1\'])' return [...$el.querySelectorAll(selector)] // All non-disabled elements... .filter(el => !el.hasAttribute('disabled')) }, firstFocusable() { return this.focusables()[0] }, lastFocusable() { return this.focusables().slice(-1)[0] }, nextFocusable() { return this.focusables()[this.nextFocusableIndex()] || this.firstFocusable() }, prevFocusable() { return this.focusables()[this.prevFocusableIndex()] || this.lastFocusable() }, nextFocusableIndex() { return (this.focusables().indexOf(document.activeElement) + 1) % (this.focusables().length + 1) }, prevFocusableIndex() { return Math.max(0, this.focusables().indexOf(document.activeElement)) - 1 }, backOnClose: false, closeModal() { if (this.backOnClose) { window.history.back(); } window.dispatchEvent(new CustomEvent('close-modal', { detail: 'limit' })); this.show = false; } }" x-init="$watch('show', value => { if (value) { document.body.classList.add('overflow-y-hidden'); } else { document.body.classList.remove('overflow-y-hidden'); } })" x-on:open-modal.window="$event.detail == 'limit' ? show = true : null" x-on:close.stop="closeModal()" x-on:close-modal.window="$event.detail == 'limit' ? show = false : null" x-on:keydown.escape.window="" x-on:keydown.tab.prevent="$event.shiftKey || nextFocusable().focus()" x-on:keydown.shift.tab.prevent="prevFocusable().focus()" x-show="show" class="relative z-50" aria-labelledby="modal-title" role="dialog" aria-modal="true" style="display: none;"> <div x-show="show" class="fixed inset-0 transform transition-all" x-on:click="closeModal()" x-transition:enter="ease-out duration-200" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0"> <div class="absolute inset-0 bg-elevated-0 dark:bg-elevated-4 opacity-80"></div> </div> <div x-show="show" class="fixed inset-0 z-50 overflow-y-auto"> <div class="flex min-h-full items-center justify-center sm:p-0"> <div @click.stop class="relative transform bg-surface-0 dark:bg-elevated-3 text-left shadow-xl dark:shadow-none dark:border dark:border-elevated-3 transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:rounded-xl w-full h-full sm:h-auto min-h-screen sm:min-h-0"> <div class="absolute right-0 top-0 pr-3 pt-3 block"> <button class="px-4 py-2.5 text-md rounded-xl w-auto border-transparent text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 disabled:text-surface-6 hover:bg-primary-6 disabled:hover:bg-transparent focus:border-primary-6 focus:border-primary-6 active:bg-primary-6 dark:hover:bg-primary-1 dark:hover:text-surface-1 disabled:dark:hover:bg-transparent inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" type="button" x-on:click="closeModal()" color="tertiary" type="button"> <svg class="w-6 h-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"/></svg> </button> </div> <div> <div class="p-12"> <!-- Title --> <h3 class="text-2xl sm:text-3xl font-bold pb-2 text-center mt-2"> Upgrade to continue </h3> <div> <div class="py-1 mb-4 text-elevated-1 dark:text-surface-6 text-md text-center prose-dark"> <!-- Show custom message --> <p class="mb-4" x-text="$store.ui.modals.limitModal.message"></p> <p class="mb-7 mt-2"> </p> <div class="mx-auto max-w-sm mt-12"> <a class="px-6 py-4 text-md rounded-xl w-full bg-primary-1 border-primary-0 hover:bg-primary-3 active:bg-primary-0 focus:shadow-outline-indigo text-surface-0 disabled:bg-surface-4 disabled:text-surface-0 disabled:bg-surface-6 disabled:border-elevated-0 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center hover:text-surface-1" full="true" size="lg" href="https://quizgecko.com/plans?offer=special" > View Plans & Pricing </a> </div> </div> </div> </div> <div class="p-12 bg-surface-2 dark:bg-elevated-4 rounded-b-xl"> <div class="mb-5 -mt-4 hidden:sm-block"> <div class="mx-auto max-w-7xl px-6 lg:px-8 mt-8"> <div class="grid grid-cols-2 gap-8 lg:grid-cols-5"> <div class="flex justify-center items-center col-span-1"> <img class="block dark:hidden max-h-16 w-auto object-contain" src="https://quizgecko.com/images/logos/universities/stanford-light.png" alt="Stanford" width="158" height="48"> <img class="hidden dark:block max-h-16 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/stanford-dark.png" alt="Stanford" width="158" height="48"> </div> <div class="flex justify-center items-center col-span-1"> <img class="block dark:hidden max-h-10 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/princeton-light.png" alt="Princeton" width="158" height="48"> <img class="hidden dark:block max-h-10 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/princeton-dark.png" alt="Princeton" width="158" height="48"> </div> <div class="flex justify-center items-center col-span-1"> <img class="block dark:hidden max-h-10 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/yale-light.png" alt="Yale" width="158" height="48"> <img class="hidden dark:block max-h-10 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/yale-dark.png" alt="Yale" width="158" height="48"> </div> <div class="flex justify-center items-center col-span-1"> <img class="block dark:hidden max-h-12 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/berkeley-light.png" alt="Berkeley" width="158" height="48"> <img class="hidden dark:block max-h-12 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/berkeley-dark.png" alt="Berkeley" width="158" height="48"> </div> <div class="flex justify-center items-center col-span-2 lg:col-span-1"> <img class="block dark:hidden max-h-14 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/oxford-light.png" alt="Oxford" width="158" height="48"> <img class="hidden dark:block max-h-14 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/oxford-dark.png" alt="Oxford" width="158" height="48"> </div> </div> </div> </div> </div> </div> <div class="absolute bottom-0 left-0"> <svg width="235" height="104" viewBox="0 0 235 104" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_878_3668)"> <path d="M36.1298 79.0358C42.68 83.8622 40.8211 93.9832 40.8211 93.9832L34.4038 90.869C34.4038 90.869 35.0833 79.1206 26.3422 74.1404L36.1298 79.0358Z" fill="#FDF151" /> <path d="M26.1774 73.7554C26.2261 73.7291 26.2792 73.715 26.3331 73.714C26.3871 73.7131 26.4405 73.7254 26.4898 73.7501L36.2772 78.6454C36.2956 78.6547 36.3134 78.6656 36.3303 78.6779C43.0187 83.6061 41.2038 93.9661 41.1847 94.0703C41.1733 94.1322 41.15 94.1904 41.1165 94.2408C41.083 94.2911 41.04 94.3325 40.9907 94.3617C40.9413 94.3904 40.887 94.4065 40.8315 94.409C40.776 94.4114 40.7208 94.4001 40.6696 94.3758L34.2523 91.2616C34.1059 91.1907 34.015 91.022 34.0253 90.8418C34.0318 90.7268 34.5799 79.3135 26.1699 74.5223C26.1071 74.4865 26.0544 74.4313 26.0178 74.3631C25.9812 74.2949 25.9622 74.2163 25.963 74.1364C25.9638 74.0565 25.9843 73.9784 26.0222 73.911C26.0601 73.8437 26.1139 73.7898 26.1774 73.7554ZM35.9465 79.4126L29.8009 76.3388C32.1695 78.8281 33.3848 81.8504 34.0072 84.2514C34.7771 87.2214 34.8032 89.7399 34.7853 90.5919L40.5238 93.3769C40.7806 91.2855 41.3406 83.413 35.9465 79.4129L35.9465 79.4126Z" fill="#271A79" /> <path d="M20.3269 88.0047C22.643 83.8067 29.7051 76.4713 36.129 79.0344C36.129 79.0344 31.0388 75.7033 26.3414 74.1391C26.3414 74.1391 19.1398 72.5364 13.701 80.528L20.3269 88.0047Z" fill="#FDF151" /> <path d="M18.9084 75.1246C22.874 72.9856 26.3628 73.7116 26.4137 73.7229C26.4249 73.7254 26.436 73.7285 26.447 73.7321C31.1332 75.2923 36.265 78.6333 36.3164 78.667C36.3975 78.72 36.4582 78.8055 36.4866 78.9068C36.515 79.0081 36.5091 79.1179 36.4699 79.2145C36.431 79.3113 36.3616 79.3881 36.2754 79.4297C36.1892 79.4714 36.0924 79.4749 36.0041 79.4396C29.9187 77.0114 22.9978 83.9692 20.6447 88.2337C20.6149 88.2881 20.5746 88.3341 20.527 88.3684C20.4793 88.4026 20.4255 88.4243 20.3695 88.4316C20.3135 88.439 20.2568 88.4319 20.2035 88.4109C20.1503 88.3899 20.1019 88.3555 20.062 88.3103L13.436 80.8334C13.371 80.7601 13.3319 80.6623 13.3259 80.5585C13.32 80.4547 13.3476 80.3519 13.4037 80.2696C15.1458 77.7096 17.0779 76.1117 18.9082 75.1245L18.9084 75.1246ZM26.2543 74.5572C25.8994 74.4878 19.2872 73.3155 14.2029 80.4955L20.2652 87.3359C21.4216 85.4094 23.6353 82.6597 26.488 80.625C28.3575 79.2922 30.9694 77.9464 33.7683 78.0899C31.8633 76.9928 28.9795 75.4673 26.2543 74.5572Z" fill="#271A79" /> </g> <g clip-path="url(#clip1_878_3668)"> <path d="M208.87 107.758C201.247 105.798 199.867 95.5703 199.867 95.5703L206.838 95.9747C206.838 95.9747 209.824 107.267 219.546 108.511L208.87 107.758Z" fill="#FDF151" /> <path d="M219.818 108.81C219.78 108.854 219.735 108.888 219.685 108.91C219.635 108.932 219.581 108.941 219.527 108.938L208.851 108.184C208.831 108.183 208.811 108.179 208.791 108.174C201.007 106.174 199.513 95.7386 199.498 95.6333C199.49 95.5708 199.494 95.5071 199.51 95.4466C199.526 95.3862 199.553 95.3305 199.59 95.2838C199.628 95.2374 199.674 95.2009 199.725 95.1769C199.776 95.1528 199.831 95.1418 199.887 95.1445L206.857 95.5489C207.016 95.5581 207.153 95.6807 207.199 95.8539C207.229 95.9643 210.235 106.891 219.589 108.087C219.658 108.096 219.725 108.127 219.78 108.177C219.835 108.227 219.877 108.293 219.901 108.368C219.925 108.444 219.93 108.525 219.915 108.603C219.901 108.681 219.867 108.753 219.818 108.81ZM208.924 107.334L215.628 107.807C212.642 106.401 210.572 104.041 209.248 102.032C207.611 99.5466 206.81 97.1933 206.564 96.3867L200.331 96.0247C200.736 98.0884 202.638 105.697 208.924 107.334L208.924 107.334Z" fill="#271A79" /> <path d="M220.906 93.1396C220.032 97.9883 215.679 107.644 208.872 107.759C208.872 107.759 214.667 108.888 219.549 108.513C219.549 108.513 226.788 107.191 229.418 97.5564L220.906 93.1396Z" fill="#FDF151" /> <path d="M226.207 104.671C223.152 108.235 219.661 108.923 219.61 108.932C219.598 108.934 219.587 108.936 219.576 108.936C214.706 109.311 208.869 108.189 208.81 108.178C208.718 108.16 208.635 108.104 208.577 108.02C208.519 107.936 208.491 107.83 208.498 107.724C208.504 107.618 208.546 107.519 208.614 107.446C208.682 107.373 208.771 107.332 208.865 107.33C215.313 107.221 219.65 97.9752 220.538 93.0496C220.55 92.9868 220.573 92.9278 220.607 92.8769C220.641 92.8261 220.685 92.7847 220.735 92.7558C220.785 92.7269 220.841 92.7113 220.897 92.7101C220.953 92.7089 221.009 92.7222 221.061 92.749L229.572 97.166C229.655 97.2093 229.722 97.2857 229.76 97.3808C229.797 97.4759 229.803 97.5832 229.776 97.6825C228.934 100.769 227.617 103.027 226.207 104.671L226.207 104.671ZM219.502 108.086C219.855 108.012 226.41 106.518 228.958 97.7841L221.171 93.7432C220.682 96.005 219.456 99.4544 217.412 102.483C216.072 104.468 214.04 106.756 211.375 107.72C213.497 108.002 216.669 108.302 219.502 108.086Z" fill="#271A79" /> </g> <g clip-path="url(#clip2_878_3668)"> <path d="M117.949 107.011C113.273 114.126 118.096 122.885 118.096 122.885L123.168 117.428C123.168 117.428 118.956 106.677 125.64 98.5518L117.949 107.011Z" fill="#FDF151" /> <path d="M125.67 98.1269C125.616 98.1215 125.562 98.1292 125.511 98.1496C125.461 98.1701 125.414 98.2027 125.375 98.2453L117.684 106.704C117.67 106.72 117.657 106.737 117.644 106.755C112.87 114.021 117.724 123.021 117.774 123.111C117.803 123.165 117.843 123.21 117.89 123.244C117.936 123.278 117.989 123.3 118.044 123.308C118.099 123.315 118.155 123.309 118.208 123.289C118.261 123.27 118.309 123.237 118.35 123.194L123.422 117.738C123.537 117.613 123.571 117.419 123.507 117.254C123.466 117.149 119.48 106.66 125.91 98.8433C125.959 98.7848 125.991 98.7123 126.005 98.6338C126.018 98.5554 126.012 98.4742 125.987 98.3995C125.962 98.3249 125.919 98.2597 125.863 98.2115C125.807 98.1633 125.74 98.134 125.67 98.1269ZM118.228 107.293L123.057 101.982C121.593 105.252 121.372 108.567 121.519 111.065C121.7 114.155 122.442 116.528 122.718 117.32L118.183 122.2C117.306 120.339 114.385 113.176 118.228 107.293L118.228 107.293Z" fill="#271A79" /> <path d="M135.497 109.18C132.047 106.158 123.192 102.067 117.946 107.01C117.946 107.01 121.707 101.874 125.637 98.5509C125.637 98.5509 131.905 94.2022 139.437 99.5493L135.497 109.18Z" fill="#FDF151" /> <path d="M132.909 96.5382C128.539 96.0986 125.487 98.1581 125.443 98.1887C125.433 98.1956 125.424 98.2028 125.415 98.2105C121.494 101.525 117.697 106.687 117.659 106.739C117.599 106.82 117.568 106.925 117.572 107.031C117.576 107.137 117.615 107.238 117.681 107.313C117.747 107.388 117.836 107.433 117.929 107.438C118.023 107.443 118.114 107.408 118.187 107.34C123.156 102.658 131.764 106.45 135.269 109.52C135.313 109.559 135.365 109.587 135.42 109.6C135.475 109.613 135.532 109.612 135.587 109.597C135.642 109.582 135.693 109.553 135.736 109.512C135.78 109.471 135.815 109.42 135.839 109.362L139.779 99.7308C139.818 99.6364 139.825 99.5292 139.799 99.4295C139.773 99.3297 139.715 99.2443 139.638 99.1892C137.225 97.4763 134.927 96.7408 132.909 96.538L132.909 96.5382ZM125.846 98.9084C126.158 98.703 132.004 94.991 138.957 99.7169L135.352 108.528C133.681 107.178 130.768 105.474 127.473 104.692C125.314 104.181 122.455 103.95 119.873 105.191C121.326 103.409 123.567 100.839 125.846 98.9084Z" fill="#271A79" /> </g> <g clip-path="url(#clip3_878_3668)"> <path d="M103.326 72.7614C102.689 72.1827 102.028 71.6556 101.343 71.1824C97.4141 68.4645 92.8664 67.706 88.8666 69.1013C85.5503 70.2582 82.8494 72.7907 81.2609 76.2323C79.5997 79.832 79.2479 84.1755 80.2435 88.7934C80.6646 90.7477 81.3672 92.5276 82.3313 94.0842C83.5241 96.0098 85.8658 96.4702 87.5616 95.1122C89.2571 93.7541 89.6648 91.0921 88.4718 89.1661C88.0482 88.4825 87.7334 87.6707 87.5355 86.7535C86.3137 81.0864 88.5562 78.1332 91.062 77.259C93.0123 76.5785 95.3353 77.0212 97.4351 78.4736C99.3662 79.8095 102.071 82.6422 103.989 88.552C104.706 90.7619 106.865 91.8909 108.81 91.0731C110.755 90.2555 111.75 87.8008 111.033 85.5909C109.264 80.1419 106.624 75.7594 103.325 72.7614L103.326 72.7614Z" fill="#C084FC" /> <path d="M101.087 70.5159C101.239 70.6143 101.39 70.7153 101.54 70.8193C102.243 71.3067 102.918 71.8445 103.561 72.4295C106.903 75.4668 109.609 79.9671 111.387 85.4441C112.175 87.8712 111.078 90.5764 108.941 91.4745C108.433 91.6901 107.892 91.7889 107.35 91.7653C106.808 91.7417 106.275 91.5961 105.783 91.3369C105.29 91.0808 104.846 90.716 104.478 90.2637C104.11 89.8113 103.825 89.2803 103.638 88.7015C101.758 82.9074 99.1215 80.1404 97.2412 78.8397C95.2331 77.4503 93.0212 77.0236 91.1733 77.6684C88.8314 78.4853 86.7421 81.2747 87.9016 86.6531C88.0881 87.5184 88.3837 88.2816 88.7803 88.9217C90.0903 91.0367 89.641 93.9708 87.779 95.4624C85.9166 96.9537 83.3358 96.4464 82.0258 94.3314C81.0345 92.7309 80.3127 90.9025 79.8803 88.8967C78.8625 84.1763 79.2256 79.729 80.9299 76.0359C82.5653 72.4925 85.3453 69.8854 88.7581 68.6949C92.7069 67.3175 97.1717 67.9836 101.087 70.5159ZM105.834 90.4079C105.92 90.4634 106.008 90.5148 106.098 90.5618C106.5 90.7739 106.936 90.893 107.379 90.9123C107.823 90.9316 108.265 90.8507 108.681 90.6742C110.429 89.9394 111.327 87.726 110.682 85.7402C108.952 80.4088 106.327 76.0365 103.092 73.0961C102.469 72.5298 101.815 72.0091 101.149 71.5483C97.3101 68.8941 92.8749 68.1509 88.9775 69.5105C85.758 70.6338 83.1359 73.0917 81.5945 76.4314C79.9765 79.9375 79.6359 84.1773 80.6092 88.6927C81.0192 90.5947 81.7024 92.3265 82.6395 93.8394C83.7113 95.5696 85.8231 95.9848 87.3467 94.7647C88.8703 93.5445 89.2377 91.1438 88.1658 89.4133C87.7152 88.6859 87.381 87.8257 87.1721 86.8568C85.8882 80.9011 88.2835 77.7839 90.9535 76.8523C93.0062 76.1362 95.441 76.5955 97.6317 78.1104C99.6139 79.4818 102.387 82.3809 104.342 88.4052C104.615 89.2526 105.143 89.9621 105.833 90.4076L105.834 90.4079Z" fill="#271A79" /> <path d="M82.3353 94.0862C84.7878 98.0446 88.8366 100.272 92.6505 99.7602C95.4668 99.3823 97.7302 97.5015 98.7046 94.7294C99.6481 92.0457 99.7855 87.4989 95.0834 81.0788C94.4431 80.2036 93.7265 79.4042 92.9446 78.693C89.0184 75.1247 83.712 74.0634 78.7222 76.0323C72.4416 78.5105 68.2631 85.0757 68.0772 92.7581C68.0421 94.2135 68.1369 95.6141 68.3594 96.9214C68.7532 99.2346 70.7224 100.745 72.7578 100.295C74.7932 99.8445 76.1241 97.6047 75.7305 95.2915C75.612 94.5942 75.5619 93.8177 75.5821 92.9833C75.7025 88.0091 78.5512 85.1298 81.1773 84.0937C84.2571 82.8783 87.2977 83.7941 89.3111 86.5431C91.0884 88.9699 91.7432 90.5821 91.7061 91.2995C91.6427 92.526 89.6789 91.2708 88.4752 89.168" fill="#C084FC" /> <path d="M91.2308 76.8564C91.9081 77.2945 92.5592 77.7953 93.1789 78.3587C93.9804 79.0881 94.715 79.9075 95.3716 80.8047C100.192 87.3859 100.034 92.0948 99.0526 94.8862C98.0263 97.8062 95.649 99.7862 92.6936 100.183C88.745 100.713 84.5584 98.4158 82.0278 94.3312C81.9705 94.2388 81.9479 94.1242 81.965 94.0126C81.9821 93.9011 82.0374 93.8018 82.1188 93.7366C82.2003 93.6714 82.3011 93.6456 82.3992 93.6649C82.4973 93.6842 82.5846 93.747 82.6419 93.8395C85.0164 97.672 88.9277 99.8291 92.6065 99.3355C95.2838 98.9762 97.433 97.195 98.3556 94.5706C99.2611 91.9945 99.3784 87.61 94.7943 81.3513C94.17 80.4983 93.4716 79.7191 92.7096 79.0255C88.8368 75.5054 83.6534 74.5368 78.8444 76.4344C72.7128 78.8538 68.6335 85.2654 68.452 92.7686C68.4176 94.1933 68.5103 95.5628 68.7275 96.8392C69.0814 98.9176 70.8572 100.28 72.6861 99.8751C74.515 99.4707 75.7152 97.4508 75.3615 95.3723C75.2378 94.6446 75.1856 93.8368 75.2065 92.9713C75.3322 87.7799 78.3095 84.7727 81.0541 83.6897C84.2873 82.414 87.4817 83.3779 89.5994 86.269C91.2274 88.4919 92.1318 90.3341 92.0806 91.3234C92.0578 91.7642 91.854 92.0747 91.5214 92.1751C90.6175 92.4482 89.0538 90.9607 88.1603 89.4001C88.1328 89.3532 88.1137 89.3005 88.1042 89.2451C88.0947 89.1898 88.095 89.1328 88.105 89.0775C88.1151 89.0222 88.1346 88.9697 88.1626 88.923C88.1906 88.8764 88.2265 88.8365 88.2681 88.8056C88.3097 88.7748 88.3563 88.7537 88.4052 88.7435C88.454 88.7333 88.5041 88.7342 88.5526 88.7461C88.6012 88.7581 88.6471 88.7809 88.6878 88.8132C88.7285 88.8454 88.7631 88.8866 88.7897 88.9342C89.753 90.6168 91.029 91.4471 91.3197 91.3543C91.3236 91.3413 91.329 91.3163 91.3312 91.2742C91.3602 90.7115 90.773 89.2061 89.0222 86.8154C87.1127 84.2083 84.2257 83.3413 81.2998 84.4958C78.7925 85.4852 76.0722 88.2372 75.9571 92.9937C75.9376 93.7969 75.9853 94.5425 76.0987 95.2091C76.531 97.7497 75.0641 100.218 72.8287 100.713C70.5932 101.207 68.4228 99.5422 67.9905 97.0021C67.7628 95.665 67.6657 94.233 67.7016 92.7461C67.8919 84.8846 72.1694 78.1656 78.599 75.6284C82.8844 73.9374 87.4553 74.4145 91.2307 76.8566L91.2308 76.8564Z" fill="#271A79" /> <path d="M68.3578 96.9225C69.2879 102.388 72.6101 106.421 76.8216 107.197C80.19 107.818 83.3842 106.174 84.9592 103.007C86.2392 100.434 87.4481 94.8584 81.1598 86.4317C79.9086 84.7549 78.6771 83.3988 77.4804 82.311C70.9462 76.3719 65.4274 78.4219 63.1187 79.7821C59.9875 81.6271 57.4804 85.0753 56.0595 89.4917C54.7005 93.7152 54.4819 98.3812 55.4437 102.63C55.9603 104.911 58.0064 106.283 60.0144 105.694C62.0221 105.104 63.2312 102.777 62.7148 100.495C61.4358 94.8444 63.719 89.036 66.5681 87.3573C67.9774 86.527 71.0027 86.0203 75.4318 91.9555C78.4235 95.9648 78.62 98.2939 78.4413 98.764C78.2544 99.2561 77.8028 99.4531 77.369 99.227C76.4703 98.7579 76.0081 96.9346 75.7287 95.2926" fill="#C084FC" /> <path d="M75.2293 80.0469C76.0392 80.5708 76.8692 81.2077 77.7151 81.9764C78.9805 83.1265 80.2359 84.5322 81.4461 86.1543C87.8814 94.7783 86.614 100.546 85.2856 103.216C83.6322 106.539 80.2861 108.267 76.7609 107.617C72.3922 106.812 68.949 102.645 67.9889 97.0027C67.9714 96.8923 67.9929 96.7785 68.0487 96.6859C68.1045 96.5933 68.1902 96.5293 68.2871 96.5079C68.384 96.4865 68.4844 96.5093 68.5665 96.5714C68.6486 96.6335 68.7059 96.7299 68.7259 96.8398C69.6258 102.127 72.827 106.027 76.8818 106.775C80.0932 107.367 83.1353 105.805 84.6322 102.796C85.8642 100.32 87.0141 94.9358 80.8732 86.7066C79.6941 85.1263 78.4736 83.7591 77.2456 82.643C70.7962 76.7808 65.3382 78.9534 63.2911 80.1595C60.2437 81.955 57.8006 85.3208 56.412 89.6366C55.0789 93.7796 54.864 98.3559 55.8072 102.522C56.2715 104.573 58.1168 105.809 59.9208 105.28C61.7249 104.75 62.8152 102.651 62.3512 100.601C61.0282 94.7562 63.4207 88.7302 66.3955 86.9775C67.9039 86.0888 71.1208 85.5177 75.7182 91.6784C78.5493 95.4726 79.1039 98.0949 78.7859 98.932C78.6552 99.2757 78.4239 99.5347 78.1341 99.6614C77.8426 99.7889 77.515 99.772 77.2122 99.6142C76.3656 99.1721 75.7772 97.8249 75.36 95.3732C75.3425 95.2628 75.364 95.1489 75.4198 95.0563C75.4756 94.9637 75.5613 94.8998 75.6582 94.8784C75.7551 94.8569 75.8555 94.8797 75.9376 94.9418C76.0198 95.004 76.0771 95.1004 76.0971 95.2102C76.4543 97.3092 76.9347 98.5297 77.5258 98.8384C77.6451 98.9006 77.7625 98.9097 77.8653 98.8649C77.9662 98.8209 78.0462 98.7273 78.0966 98.5944C78.2039 98.2628 78.0186 96.0814 75.1454 92.231C70.8843 86.5209 68.0506 86.9634 66.7404 87.7353C64.0169 89.34 61.843 94.9309 63.0783 100.388C63.6455 102.893 62.3129 105.459 60.1077 106.106C57.903 106.754 55.6474 105.242 55.0799 102.736C54.0994 98.4042 54.3221 93.6485 55.7068 89.3449C57.1601 84.8278 59.7311 81.2968 62.946 79.4026C64.8524 78.2794 69.5343 76.3636 75.2291 80.0473L75.2293 80.0469Z" fill="#271A79" /> </g> <g clip-path="url(#clip4_878_3668)"> <path d="M19.815 30.9695C19.8538 30.9719 19.8925 30.975 19.9312 30.9788C21.993 31.1803 23.5157 33.2469 23.3324 35.5945C22.9612 40.3497 21.2912 44.7062 18.5029 48.1922C16.0109 51.3078 12.7471 53.6098 9.0644 54.849C1.7708 57.3032 -5.54182 55.0682 -9.56546 49.1548C-10.831 47.2947 -10.5292 44.6143 -8.89148 43.1681C-7.25325 41.7218 -4.89964 42.0575 -3.6343 43.9172C-1.51065 47.0386 2.64854 48.1178 6.95972 46.667C10.9245 45.333 15.346 41.5321 15.8665 34.8647C16.0462 32.5614 17.8017 30.843 19.815 30.9695Z" fill="#38BDF8" /> <path d="M-10.2944 44.4615C-10.0178 43.8241 -9.61727 43.2665 -9.12329 42.8313C-7.32436 41.243 -4.73019 41.6127 -3.34047 43.6553C-1.31162 46.6373 2.68888 47.6588 6.85175 46.2579C10.6977 44.9638 14.9868 41.2815 15.4904 34.8281C15.6888 32.2851 17.5966 30.403 19.8339 30.5435C20.3962 30.5767 20.9461 30.7415 21.4493 31.0277C21.9524 31.314 22.3979 31.7155 22.7581 32.2071C23.1067 32.6777 23.3698 33.2226 23.5319 33.8103C23.694 34.398 23.752 35.0168 23.7026 35.631C23.3244 40.4803 21.6209 44.923 18.7769 48.4789C16.2385 51.6527 12.9154 53.9967 9.16686 55.2582C1.72403 57.7624 -5.74636 55.4696 -9.86464 49.4169C-10.8601 47.9538 -10.9718 46.0229 -10.2944 44.4615ZM15.0764 39.6883C13.3559 43.6539 10.0805 46.0603 7.06209 47.076C2.60126 48.5772 -1.71503 47.4401 -3.93373 44.1789C-5.07073 42.5078 -7.19325 42.2053 -8.66527 43.5048C-10.1369 44.8043 -10.4089 47.2215 -9.27179 48.8929C-5.34346 54.6665 1.81156 56.8437 8.95626 54.4397C12.573 53.2227 15.7775 50.9632 18.2231 47.9054C20.9557 44.4893 22.5923 40.2196 22.9561 35.5578C22.9966 35.0554 22.9492 34.549 22.8166 34.0682C22.6839 33.5873 22.4687 33.1415 22.1834 32.7565C21.8887 32.3542 21.5241 32.0257 21.1123 31.7915C20.7006 31.5573 20.2506 31.4224 19.7904 31.3954C17.9601 31.2804 16.3995 32.8202 16.237 34.9009C16.097 36.6954 15.6834 38.2893 15.0764 39.6883Z" fill="#271A79" /> <path d="M-9.56805 49.1558C-13.0166 44.0873 -13.4194 38.4939 -10.6456 34.1938C-8.29142 30.5438 -3.95782 28.5055 0.212518 28.767C1.40883 28.842 2.5907 29.1062 3.70948 29.576C8.40848 31.5486 10.9525 36.5571 10.5151 42.9739C10.0849 49.2811 6.942 54.6874 1.66483 58.1968C-2.69768 61.0981 -8.39818 62.5602 -13.9772 62.21L-13.9974 62.2087C-16.0637 62.0773 -17.64 60.0635 -17.5183 57.7111C-17.3967 55.3596 -15.6244 53.5594 -13.5594 53.6891C-13.5528 53.6897 -13.5474 53.6899 -13.5413 53.6902C-9.39326 53.9507 -5.2245 52.9095 -2.10133 50.8325C1.0714 48.7225 2.81055 45.8657 3.04231 42.3393C3.23344 39.4319 2.34878 38.2488 1.09776 37.583C-0.913953 36.5121 -3.62664 37.1561 -4.60857 39.2308C-5.18239 40.4433 -4.99771 41.9181 -3.63681 43.9184" fill="#38BDF8" /> <path d="M-11.8668 35.6601C-11.6105 35.0691 -11.3039 34.4953 -10.9467 33.9415C-8.57338 30.2618 -4.18433 28.0634 0.234962 28.3405C1.49708 28.4197 2.71018 28.7005 3.8408 29.1752C8.70565 31.2173 11.3405 36.3873 10.8894 43.0052C10.4494 49.4565 7.24053 54.9823 1.85378 58.5643C-2.57017 61.5062 -8.34794 62.99 -13.9984 62.6351L-14.0188 62.6339C-15.118 62.564 -16.1263 62.0109 -16.8579 61.0765C-17.5895 60.142 -17.9567 58.9382 -17.8919 57.6865C-17.7583 55.1047 -15.8048 53.1198 -13.5371 53.2623C-9.44282 53.5193 -5.34966 52.499 -2.28918 50.4635C0.779397 48.4228 2.44766 45.6788 2.66912 42.308C2.86039 39.3979 1.90174 38.4816 0.938582 37.9687C-0.986642 36.9439 -3.42464 37.6273 -4.27829 39.4314C-4.61915 40.1516 -4.89275 41.3731 -3.33971 43.6556C-3.28252 43.7452 -3.2583 43.8568 -3.27216 43.9666C-3.28602 44.0765 -3.33688 44.176 -3.41397 44.2441C-3.49106 44.3122 -3.58832 44.3435 -3.68515 44.3315C-3.78198 44.3194 -3.87078 44.2649 -3.93272 44.1795C-5.29902 42.1714 -5.62721 40.4856 -4.93784 39.0285C-3.90444 36.8453 -1.00937 35.9887 1.25788 37.1957C2.92766 38.0847 3.59348 39.6803 3.41653 42.3693C3.17533 46.0377 1.3824 49.0089 -1.91264 51.2001C-5.09708 53.3178 -9.34344 54.3805 -13.5626 54.1155L-13.5875 54.1139C-15.4361 53.9978 -17.0344 55.6216 -17.1437 57.7342C-17.1966 58.7582 -16.8963 59.7432 -16.2978 60.5077C-15.6993 61.2722 -14.8743 61.7249 -13.975 61.7819L-13.9769 62.2092L-13.9551 61.7833C-8.44782 62.1291 -2.82309 60.6876 1.47689 57.8279C6.64431 54.3916 9.72154 49.1049 10.1419 42.9417C10.5657 36.726 8.1124 31.8789 3.57943 29.9758C2.51873 29.5305 1.37877 29.2669 0.191176 29.1925C-3.98143 28.9309 -8.1164 30.9926 -10.3434 34.445C-13.0122 38.5821 -12.6114 43.9838 -9.27103 48.8932C-9.24015 48.9373 -9.2173 48.988 -9.20381 49.0424C-9.19031 49.0967 -9.18644 49.1536 -9.19243 49.2097C-9.19841 49.2658 -9.21413 49.3201 -9.23866 49.3693C-9.2632 49.4185 -9.29606 49.4617 -9.33535 49.4964C-9.37463 49.5311 -9.41956 49.5566 -9.46752 49.5713C-9.51547 49.5861 -9.5655 49.5899 -9.6147 49.5825C-9.66389 49.5751 -9.71128 49.5567 -9.7541 49.5282C-9.79692 49.4998 -9.83432 49.4619 -9.86413 49.4168C-12.9794 44.8378 -13.6767 39.8307 -11.8671 35.6597L-11.8668 35.6601Z" fill="#271A79" /> </g> <g clip-path="url(#clip5_878_3668)"> <path d="M185.876 102.322C186.651 104.521 185.909 107.086 184.048 108.31C180.087 110.914 174.875 111.744 170.771 110.423C167.829 109.477 165.593 107.538 164.306 104.817C161.171 98.1852 163.46 93.2223 164.975 89.9376C166.318 87.0256 166.48 85.7778 165.465 84.4441C164.48 83.1486 160.42 81.9155 152.192 84.7506C149.926 85.5312 147.528 84.0841 146.834 81.5195C146.142 78.9541 147.417 76.2417 149.684 75.4609C164.8 70.253 170.558 75.526 172.644 79.1325C176.539 85.8643 174.15 91.2851 172.584 94.4382C170.999 97.6295 170.654 100.063 173.109 101.083C174.947 101.847 177.777 101.197 179.729 99.9129C181.777 98.5663 184.404 99.3543 185.596 101.673C185.704 101.882 185.797 102.098 185.876 102.322Z" fill="#F5C433" /> <path d="M165.802 73.4162C169.751 74.5327 171.883 76.9329 173.001 78.8661C177.203 86.1269 174.227 92.1176 172.957 94.6756C171.905 96.7926 171.551 98.3021 171.873 99.2898C172.067 99.8835 172.519 100.321 173.255 100.627C174.839 101.286 177.528 100.797 179.512 99.4923C180.602 98.7759 181.871 98.5826 183.092 98.9485C183.692 99.1265 184.255 99.4374 184.748 99.8631C185.242 100.289 185.655 100.821 185.966 101.429C186.084 101.658 186.186 101.896 186.273 102.142C187.133 104.579 186.268 107.41 184.262 108.729C180.206 111.396 174.864 112.245 170.652 110.889C167.596 109.906 165.27 107.885 163.927 105.044C160.684 98.1861 163.037 93.0863 164.593 89.7116C165.975 86.7153 165.938 85.8094 165.139 84.7595C164.179 83.4974 159.971 82.5767 152.316 85.2142C149.828 86.071 147.185 84.4768 146.423 81.6602C146.054 80.2952 146.177 78.8504 146.769 77.5916C147.361 76.3328 148.351 75.4108 149.557 74.9955C156.948 72.4491 162.151 72.384 165.802 73.4162ZM173.43 101.701C173.269 101.655 173.112 101.601 172.96 101.538C171.987 101.134 171.35 100.49 171.068 99.6251C170.648 98.3362 171.01 96.612 172.208 94.1989C173.504 91.5908 176.199 86.1641 172.284 79.3971C170.263 75.9043 164.657 70.8087 149.808 75.9242C148.821 76.2641 148.011 77.0185 147.527 78.0483C147.043 79.078 146.942 80.2603 147.243 81.377C147.867 83.6813 150.03 84.9861 152.065 84.285C160.724 81.3017 164.766 82.7817 165.789 84.1264C167.033 85.7608 166.64 87.3747 165.354 90.1616C163.881 93.3551 161.655 98.1816 164.683 104.587C165.914 107.189 168.059 109.046 170.886 109.955C174.886 111.242 179.966 110.43 183.831 107.889C185.471 106.81 186.179 104.493 185.476 102.5C185.406 102.3 185.321 102.104 185.225 101.916C184.971 101.419 184.632 100.983 184.228 100.635C183.824 100.286 183.364 100.032 182.873 99.8864C182.383 99.7377 181.871 99.7004 181.369 99.7768C180.866 99.8532 180.382 100.042 179.944 100.331C178.181 101.491 175.467 102.276 173.43 101.701L173.43 101.701Z" fill="#271A79" /> </g> <defs> <clipPath id="clip0_878_3668"> <rect width="24.4432" height="26.823" fill="white" transform="matrix(-0.853824 0.460541 -0.395578 -0.948615 43.9531 92.7666)" /> </clipPath> <clipPath id="clip1_878_3668"> <rect width="25.3222" height="25.8606" fill="white" transform="matrix(0.634844 -0.740648 0.687666 0.762409 197.309 97.9424)" /> </clipPath> <clipPath id="clip2_878_3668"> <rect width="23.3528" height="27.9201" fill="white" transform="matrix(0.984913 0.0990542 0.0792183 -1.00497 114.785 122.981)" /> </clipPath> <clipPath id="clip3_878_3668"> <rect width="49.2896" height="54.505" fill="white" transform="matrix(-0.853707 -0.552251 0.441916 -0.881407 91.707 128.071)" /> </clipPath> <clipPath id="clip4_878_3668"> <rect width="46.0044" height="33.6993" fill="white" transform="matrix(-0.393594 0.907219 -0.884393 -0.494938 26.0625 33.6123)" /> </clipPath> <clipPath id="clip5_878_3668"> <rect width="44.9665" height="34.8095" fill="white" transform="matrix(-0.962276 -0.272077 0.214733 -0.976673 184.406 114.786)" /> </clipPath> </defs> </svg> </div> </div> </div> </div> </div> <div id="modal-feedback" x-data="{ show: false, focusables() { // All focusable element types... let selector = 'a, button, input:not([type=\'hidden\']), textarea, select, details, [tabindex]:not([tabindex=\'-1\'])' return [...$el.querySelectorAll(selector)] // All non-disabled elements... .filter(el => !el.hasAttribute('disabled')) }, firstFocusable() { return this.focusables()[0] }, lastFocusable() { return this.focusables().slice(-1)[0] }, nextFocusable() { return this.focusables()[this.nextFocusableIndex()] || this.firstFocusable() }, prevFocusable() { return this.focusables()[this.prevFocusableIndex()] || this.lastFocusable() }, nextFocusableIndex() { return (this.focusables().indexOf(document.activeElement) + 1) % (this.focusables().length + 1) }, prevFocusableIndex() { return Math.max(0, this.focusables().indexOf(document.activeElement)) - 1 }, backOnClose: false, closeModal() { if (this.backOnClose) { window.history.back(); } window.dispatchEvent(new CustomEvent('close-modal', { detail: 'feedback' })); this.show = false; } }" x-init="$watch('show', value => { if (value) { document.body.classList.add('overflow-y-hidden'); } else { document.body.classList.remove('overflow-y-hidden'); } })" x-on:open-modal.window="$event.detail == 'feedback' ? show = true : null" x-on:close.stop="closeModal()" x-on:close-modal.window="$event.detail == 'feedback' ? show = false : null" x-on:keydown.escape.window="closeModal()" x-on:keydown.tab.prevent="$event.shiftKey || nextFocusable().focus()" x-on:keydown.shift.tab.prevent="prevFocusable().focus()" x-show="show" class="relative z-50" aria-labelledby="modal-title" role="dialog" aria-modal="true" style="display: none;"> <div x-show="show" class="fixed inset-0 transform transition-all" x-on:click="closeModal()" x-transition:enter="ease-out duration-200" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0"> <div class="absolute inset-0 bg-elevated-0 dark:bg-elevated-4 opacity-80"></div> </div> <div x-show="show" class="fixed inset-0 z-50 overflow-y-auto"> <div class="flex min-h-full items-center justify-center sm:p-0"> <div @click.stop x-on:click.outside=closeModal() class="relative transform bg-surface-0 dark:bg-elevated-3 text-left shadow-xl dark:shadow-none dark:border dark:border-elevated-3 transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:rounded-xl w-full h-full sm:h-auto min-h-screen sm:min-h-0"> <div class="absolute right-0 top-0 pr-3 pt-3 block"> <button class="px-4 py-2.5 text-md rounded-xl w-auto border-transparent text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 disabled:text-surface-6 hover:bg-primary-6 disabled:hover:bg-transparent focus:border-primary-6 focus:border-primary-6 active:bg-primary-6 dark:hover:bg-primary-1 dark:hover:text-surface-1 disabled:dark:hover:bg-transparent inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" type="button" x-on:click="closeModal()" color="tertiary" type="button"> <svg class="w-6 h-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"/></svg> </button> </div> <div> <div class="p-8" x-data="feedbackModal" @close-modal.window="if ($event.detail === 'feedback') resetData()" @set-feedback-data.window=" category = $event.detail.category || 'general'; quizId = $event.detail.quizId || null; rating = $event.detail.rating || null; feedback = ''; images = null; // Ensure the received category exists as an option if (category && !$refs.feedbackCategorySelect.querySelector(`option[value='${category}']`)) { let newOption = document.createElement('option'); newOption.value = category; // Create readable text (e.g., 'question_generation' -> 'Question Generation') newOption.text = category.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase()); $refs.feedbackCategorySelect.appendChild(newOption); } // Focus the textarea after Alpine updates the DOM $nextTick(() => $refs.feedbackTextarea.focus()); "> <p class="text-2xl sm:text-3xl font-bold pb-2 text-center mt-2"> Feedback </p> <div class="mt-4 prose dark:prose-dark"> <p class=""> Please use this form to submit feedback or report bugs. You can find answers to most questions in our <a class="text-primary-1 cursor-pointer dark:text-primary-1 hover:text-primary-2" href="https://help.quizgecko.com" target="_blank">Help Center.</a> </p> </div> <div class="mt-6"> <form method="POST" enctype="multipart/form-data" x-on:submit.prevent="submit()"> <input type="hidden" name="_token" value="QAgq7LTzBrMzsJfWxw7PakAuYaStPlZrykbbgoHC" autocomplete="off"> <div class="mb-4"> <label for="category" class="block text-sm font-medium "> Category </label> <!-- Add a default size --> <select class="flex-1 block w-full min-w-0 text-base text-elevated-3 dark:text-surface-4 bg-surface-3 dark:bg-elevated-4 px-4 py-3 border border-surface-5 dark:border-elevated-1 rounded-xl focus:border-primary-1 focus:ring-0 mt-1 cursor-pointer" id="category" name="category" x-model="category" x-ref="feedbackCategorySelect" > <option value="">Select a category</option> <option value="bug">General Bug</option> <option value="feedback">General feedback</option> <option value="quiz_play">Playing a quiz</option> <option value="quiz_share">Sharing a quiz</option> </select> </div> <div class="mb-4"> <label for="feedback" class="block text-sm font-medium "> Feedback </label> <textarea placeholder="Your feedback..." class="flex-1 block w-full min-w-0 text-elevated-3 dark:text-surface-4 bg-surface-3 dark:bg-elevated-4 px-4 py-3 border border-surface-5 dark:border-elevated-1 rounded-xl focus:border-primary-1 mt-1 focus:ring-0" rows="4" id="feedback" name="feedback" x-model="feedback" x-ref="feedbackTextarea"></textarea> </div> <div class="mb-4"> <label for="image" class="block text-sm font-medium "> Image (optional) </label> <input class="flex-1 block w-full min-w-0 text-elevated-3 dark:text-surface-4 bg-surface-3 dark:bg-elevated-4 px-4 py-3 rounded-xl mt-1 dark:bg-elevated-3 focus:ring-0 border border-surface-5 dark:border-elevated-1 focus:border-primary-1" type="file" id="image" name="image" x-on:change="images = Object.values($event.target.files)"> </div> <div class="flex justify-end"> <button class="px-4 py-2.5 text-md rounded-xl w-auto bg-primary-1 border-primary-0 hover:bg-primary-3 active:bg-primary-0 focus:shadow-outline-indigo text-surface-0 disabled:bg-surface-4 disabled:text-surface-0 disabled:bg-surface-6 disabled:border-elevated-0 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" type="submit" x-bind:disabled="loading" type="button"> <div x-show="loading"> <svg class="animate-spin w-5 h-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M136,32V64a8,8,0,0,1-16,0V32a8,8,0,0,1,16,0Zm37.25,58.75a8,8,0,0,0,5.66-2.35l22.63-22.62a8,8,0,0,0-11.32-11.32L167.6,77.09a8,8,0,0,0,5.65,13.66ZM224,120H192a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16Zm-45.09,47.6a8,8,0,0,0-11.31,11.31l22.62,22.63a8,8,0,0,0,11.32-11.32ZM128,184a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V192A8,8,0,0,0,128,184ZM77.09,167.6,54.46,190.22a8,8,0,0,0,11.32,11.32L88.4,178.91A8,8,0,0,0,77.09,167.6ZM72,128a8,8,0,0,0-8-8H32a8,8,0,0,0,0,16H64A8,8,0,0,0,72,128ZM65.78,54.46A8,8,0,0,0,54.46,65.78L77.09,88.4A8,8,0,0,0,88.4,77.09Z"/></svg> </div> <div x-show="!loading"> Submit </div> </button> </div> </form> </div> </div> <script> document.addEventListener('alpine:init', () => { Alpine.data('feedbackModal', () => ({ open: false, loading: false, feedback: "", category: "general", images: null, quizId: null, rating: null, init() { // Listener moved to x-data attribute }, resetData() { this.feedback = ""; this.category = "general"; this.images = null; this.quizId = null; this.rating = null; }, submit() { // Don't close the modal immediately this.loading = true; let formData = new FormData(); formData.append('feedback', this.feedback); formData.append('category', this.category); if (this.quizId) { formData.append('quiz_id', this.quizId); } // Ensure rating is appended if it was set initially if (this.rating !== null) { formData.append('rating', this.rating); } if (this.images) { formData.append('image', this.images[0]); } // Keep reference to 'this' for Axios callbacks const self = this; axios.post("/api/v1/feedback", formData, { headers: { 'Content-Type': 'multipart/form-data' } }) .then((response) => { // Close modal on success - this triggers the reset listener self.$dispatch('close-modal', 'feedback'); // Reset is handled by the close-modal listener now self.open = false; // Explicitly set open state too window.confirmModal("Submitted", "Thank you for your feedback! Our team reads all messages.", false); }) .catch((error) => { console.error("Error submitting feedback:", error); // Optionally close modal on error too, or leave it open for retry // self.$dispatch('close-modal', 'feedback'); window.confirmModal("Error", "Sorry, there was an error submitting your feedback. Please try again.", false); // Reset is handled by the close-modal listener if we close it }) .finally(() => { self.loading = false; }); } })); }); </script> </div> </div> </div> </div> </div> <div id="modal-register" x-data="{ show: false, focusables() { // All focusable element types... let selector = 'a, button, input:not([type=\'hidden\']), textarea, select, details, [tabindex]:not([tabindex=\'-1\'])' return [...$el.querySelectorAll(selector)] // All non-disabled elements... .filter(el => !el.hasAttribute('disabled')) }, firstFocusable() { return this.focusables()[0] }, lastFocusable() { return this.focusables().slice(-1)[0] }, nextFocusable() { return this.focusables()[this.nextFocusableIndex()] || this.firstFocusable() }, prevFocusable() { return this.focusables()[this.prevFocusableIndex()] || this.lastFocusable() }, nextFocusableIndex() { return (this.focusables().indexOf(document.activeElement) + 1) % (this.focusables().length + 1) }, prevFocusableIndex() { return Math.max(0, this.focusables().indexOf(document.activeElement)) - 1 }, backOnClose: false, closeModal() { if (this.backOnClose) { window.history.back(); } window.dispatchEvent(new CustomEvent('close-modal', { detail: 'register' })); this.show = false; } }" x-init="$watch('show', value => { if (value) { document.body.classList.add('overflow-y-hidden'); } else { document.body.classList.remove('overflow-y-hidden'); } })" x-on:open-modal.window="$event.detail == 'register' ? show = true : null" x-on:close.stop="closeModal()" x-on:close-modal.window="$event.detail == 'register' ? show = false : null" x-on:keydown.escape.window="closeModal()" x-on:keydown.tab.prevent="$event.shiftKey || nextFocusable().focus()" x-on:keydown.shift.tab.prevent="prevFocusable().focus()" x-show="show" class="relative z-50" aria-labelledby="modal-title" role="dialog" aria-modal="true" style="display: none;"> <div x-show="show" class="fixed inset-0 transform transition-all" x-on:click="closeModal()" x-transition:enter="ease-out duration-200" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0"> <div class="absolute inset-0 bg-elevated-0 dark:bg-elevated-4 opacity-80"></div> </div> <div x-show="show" class="fixed inset-0 z-50 overflow-y-auto"> <div class="flex min-h-full items-center justify-center sm:p-0"> <div @click.stop x-on:click.outside=closeModal() class="relative transform bg-surface-0 dark:bg-elevated-3 text-left shadow-xl dark:shadow-none dark:border dark:border-elevated-3 transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:rounded-xl w-full h-full sm:h-auto min-h-screen sm:min-h-0"> <div class="absolute right-0 top-0 pr-3 pt-3 block"> <button class="px-4 py-2.5 text-md rounded-xl w-auto border-transparent text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 disabled:text-surface-6 hover:bg-primary-6 disabled:hover:bg-transparent focus:border-primary-6 focus:border-primary-6 active:bg-primary-6 dark:hover:bg-primary-1 dark:hover:text-surface-1 disabled:dark:hover:bg-transparent inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" type="button" x-on:click="closeModal()" color="tertiary" type="button"> <svg class="w-6 h-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"/></svg> </button> </div> <div> <div class="p-8" x-data="{ showEmailForm: false }"> <p class="text-2xl sm:text-3xl font-bold pb-2 text-center mt-2"> Create your free account </p> <div class="mb-3 mt-10" x-show="!showEmailForm"> <div class="mt-6 text-center mx-auto max-w-sm"> <a x-data @click="$store.signInMethod.trackSignIn('google')" x-tooltip="Last used" x-tooltip-position="left" x-tooltip-display="$store.signInMethod.method === 'google'" href="https://quizgecko.com/auth/google/redirect" class="px-5 py-3 text-md rounded-lg w-full bg-blue-600 dark:border-blue-600 hover:bg-blue-700 hover:border-blue-600 active:bg-blue-100 focus:border-blue-600 focus:shadow-outline-gray text-surface-0 disabled:bg-blue-200 disabled:text-surface-3 inline-flex justify-center font-bold border shadow-sm disabled:cursor-not-allowed cursor-pointer disabled:shadow-none focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 mt-1 sm:w-full"> <svg class="w-6 h-6 mr-1" viewBox="0 0 533.5 544.3"> <path d="M533.5 278.4c0-18.5-1.5-37.1-4.7-55.3H272.1v104.8h147c-6.1 33.8-25.7 63.7-54.4 82.7v68h87.7c51.5-47.4 81.1-117.4 81.1-200.2z" fill="#4285f4"></path> <path d="M272.1 544.3c73.4 0 135.3-24.1 180.4-65.7l-87.7-68c-24.4 16.6-55.9 26-92.6 26-71 0-131.2-47.9-152.8-112.3H28.9v70.1c46.2 91.9 140.3 149.9 243.2 149.9z" fill="#34a853"></path> <path d="M119.3 324.3c-11.4-33.8-11.4-70.4 0-104.2V150H28.9c-38.6 76.9-38.6 167.5 0 244.4l90.4-70.1z" fill="#fbbc04"></path> <path d="M272.1 107.7c38.8-.6 76.3 14 104.4 40.8l77.7-77.7C405 24.6 339.7-.8 272.1 0 169.2 0 75.1 58 28.9 150l90.4 70.1c21.5-64.5 81.8-112.4 152.8-112.4z" fill="#ea4335"></path> </svg> <span class="ml-2"> Continue with Google </span> </a> </div> <div class="mt-2 text-center mx-auto max-w-sm"> <a href="https://quizgecko.com/auth/apple/redirect" x-data @click="$store.signInMethod.trackSignIn('apple')" x-tooltip-position="left" x-tooltip="Last used" x-tooltip-display="$store.signInMethod.method === 'apple'" class="px-5 py-3 text-md rounded-lg w-full dark:border-elevated-3 hover:bg-elevated-3 hover:border-black active:bg-surface-3 focus:border-black focus:shadow-outline-gray text-surface-0 disabled:text-surface-3 disabled:bg-surface-4 inline-flex justify-center font-bold border shadow-sm disabled:cursor-not-allowed cursor-pointer disabled:shadow-none focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 mt-1 sm:w-full bg-black"> <svg class="w-5 h-5 mr-0.5 mt-0.5" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"> <path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516.024.034 1.52.087 2.475-1.258.955-1.345.762-2.391.728-2.43Zm3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422.212-2.189 1.675-2.789 1.698-2.854.023-.065-.597-.79-1.254-1.157a3.692 3.692 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56.244.729.625 1.924 1.273 2.796.576.984 1.34 1.667 1.659 1.899.319.232 1.219.386 1.843.067.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758.347-.79.505-1.217.473-1.282Z"> </path> <path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516.024.034 1.52.087 2.475-1.258.955-1.345.762-2.391.728-2.43Zm3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422.212-2.189 1.675-2.789 1.698-2.854.023-.065-.597-.79-1.254-1.157a3.692 3.692 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56.244.729.625 1.924 1.273 2.796.576.984 1.34 1.667 1.659 1.899.319.232 1.219.386 1.843.067.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758.347-.79.505-1.217.473-1.282Z"> </path> </svg> <span class="ml-2"> Sign in with Apple </span> </a> </div> <div class="text-center mt-8"> <button class="px-4 py-2.5 text-md rounded-xl w-auto border-2 bg-surface-1 dark:bg-elevated-3 border-surface-5 dark:border-elevated-1 hover:border-primary-1 dark:hover:border-primary-1 active:bg-surface-3 dark:active:bg-elevated-2 focus:border-primary-0 focus:shadow-outline-gray dark:focus:shadow-outline-gray text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 dark:disabled:elevated-3 disabled:text-surface-6 dark:disabled:border-elevated-1 disabled:hover:border-surface-5 disabled:active:bg-surface-1 dark:disabled:active:bg-elevated-2 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" x-data="" x-tooltip="Last used" x-tooltip-position="left" x-tooltip-display="$store.signInMethod.method === 'email'" color="secondary" type="button" @click="showEmailForm = true; $store.signInMethod.trackSignIn('email')" type="button"> or continue with email </button> </div> </div> <form method="POST" action="https://quizgecko.com/register" class="" x-show="showEmailForm"> <input type="hidden" name="_token" value="QAgq7LTzBrMzsJfWxw7PakAuYaStPlZrykbbgoHC" autocomplete="off"> <div class="mt-2 mb-6"> <button class="px-3 py-2 text-sm rounded-xl w-auto border-2 bg-surface-1 dark:bg-elevated-3 border-surface-5 dark:border-elevated-1 hover:border-primary-1 dark:hover:border-primary-1 active:bg-surface-3 dark:active:bg-elevated-2 focus:border-primary-0 focus:shadow-outline-gray dark:focus:shadow-outline-gray text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 dark:disabled:elevated-3 disabled:text-surface-6 dark:disabled:border-elevated-1 disabled:hover:border-surface-5 disabled:active:bg-surface-1 dark:disabled:active:bg-elevated-2 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" color="light" size="sm" @click="showEmailForm = false" type="button"> ← Back </button> </div> <!-- Name --> <div> <label class="block text-sm text-elevated-3 font-semibold dark:text-surface-4 cursor-pointer" for="name"> Your Name </label> <input class="flex-1 block w-full min-w-0 text-elevated-3 dark:text-surface-4 bg-surface-3 dark:bg-elevated-4 px-4 py-3 rounded-xl mt-1 dark:bg-elevated-3 focus:ring-0 border border-surface-5 dark:border-elevated-1 focus:border-primary-1 block w-full mt-1" id="name" type="text" name="name" required="required" autofocus="autofocus"> </div> <!-- Email Address --> <div class="mt-4"> <label class="block text-sm text-elevated-3 font-semibold dark:text-surface-4 cursor-pointer" for="email"> Email </label> <input class="flex-1 block w-full min-w-0 text-elevated-3 dark:text-surface-4 bg-surface-3 dark:bg-elevated-4 px-4 py-3 rounded-xl mt-1 dark:bg-elevated-3 focus:ring-0 border border-surface-5 dark:border-elevated-1 focus:border-primary-1 block w-full mt-1" id="email" type="email" name="email" required="required"> </div> <!-- Password --> <div class="mt-4"> <label class="block text-sm text-elevated-3 font-semibold dark:text-surface-4 cursor-pointer" for="password"> Password </label> <input class="flex-1 block w-full min-w-0 text-elevated-3 dark:text-surface-4 bg-surface-3 dark:bg-elevated-4 px-4 py-3 rounded-xl mt-1 dark:bg-elevated-3 focus:ring-0 border border-surface-5 dark:border-elevated-1 focus:border-primary-1 block w-full mt-1" id="password" type="password" name="password" required="required" autocomplete="new-password"> </div> <!-- Confirm Password --> <div class="mt-4"> <label class="block text-sm text-elevated-3 font-semibold dark:text-surface-4 cursor-pointer" for="password_confirmation"> Confirm Password </label> <input class="flex-1 block w-full min-w-0 text-elevated-3 dark:text-surface-4 bg-surface-3 dark:bg-elevated-4 px-4 py-3 rounded-xl mt-1 dark:bg-elevated-3 focus:ring-0 border border-surface-5 dark:border-elevated-1 focus:border-primary-1 block w-full mt-1" id="password_confirmation" type="password" name="password_confirmation" required="required"> </div> <div class="flex items-center justify-end mt-4"> <a class="text-sm text-elevated-1 underline hover:text-gray-900 dark:text-surface-5 dark:hover:text-surface-3" href="https://quizgecko.com/login"> Already registered? </a> <button class="px-4 py-2.5 text-md rounded-xl w-auto bg-primary-1 border-primary-0 hover:bg-primary-3 active:bg-primary-0 focus:shadow-outline-indigo text-surface-0 disabled:bg-surface-4 disabled:text-surface-0 disabled:bg-surface-6 disabled:border-elevated-0 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center ml-4" type="submit" type="button"> Verify email → </button> </div> </form> <div class="mt-12 text-center max-w-sm mx-auto"> <p class="text-sm text-surface-6 "> By continuing, you agree to Quizgecko's <a class="underline" target="_blank" href="https://quizgecko.com/terms">Terms of Service</a> and <a href="https://quizgecko.com/privacy-policy" class="underline" target="_blank" rel="noopener noreferrer">Privacy Policy</a>. </p> </div> </div> <div class="p-8 bg-surface-2 dark:bg-elevated-4 rounded-b-xl"> <div class="mx-auto max-w-sm px-2 mt-4"> <p class="font-semibold text-elevated-1 text-lg text-center dark:text-surface-5"> Trusted by top students and educators worldwide </p> </div> <div class="mb-5 -mt-6"> <div class="mx-auto max-w-7xl px-6 lg:px-8 mt-8"> <div class="grid grid-cols-2 gap-8 lg:grid-cols-5"> <div class="flex justify-center items-center col-span-1"> <img class="block dark:hidden max-h-16 w-auto object-contain" src="https://quizgecko.com/images/logos/universities/stanford-light.png" alt="Stanford" width="158" height="48"> <img class="hidden dark:block max-h-16 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/stanford-dark.png" alt="Stanford" width="158" height="48"> </div> <div class="flex justify-center items-center col-span-1"> <img class="block dark:hidden max-h-10 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/princeton-light.png" alt="Princeton" width="158" height="48"> <img class="hidden dark:block max-h-10 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/princeton-dark.png" alt="Princeton" width="158" height="48"> </div> <div class="flex justify-center items-center col-span-1"> <img class="block dark:hidden max-h-10 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/yale-light.png" alt="Yale" width="158" height="48"> <img class="hidden dark:block max-h-10 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/yale-dark.png" alt="Yale" width="158" height="48"> </div> <div class="flex justify-center items-center col-span-1"> <img class="block dark:hidden max-h-12 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/berkeley-light.png" alt="Berkeley" width="158" height="48"> <img class="hidden dark:block max-h-12 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/berkeley-dark.png" alt="Berkeley" width="158" height="48"> </div> <div class="flex justify-center items-center col-span-2 lg:col-span-1"> <img class="block dark:hidden max-h-14 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/oxford-light.png" alt="Oxford" width="158" height="48"> <img class="hidden dark:block max-h-14 w-auto object-contain opacity-80" src="https://quizgecko.com/images/logos/universities/oxford-dark.png" alt="Oxford" width="158" height="48"> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div id="modal-confirm" x-data="{ show: false, focusables() { // All focusable element types... let selector = 'a, button, input:not([type=\'hidden\']), textarea, select, details, [tabindex]:not([tabindex=\'-1\'])' return [...$el.querySelectorAll(selector)] // All non-disabled elements... .filter(el => !el.hasAttribute('disabled')) }, firstFocusable() { return this.focusables()[0] }, lastFocusable() { return this.focusables().slice(-1)[0] }, nextFocusable() { return this.focusables()[this.nextFocusableIndex()] || this.firstFocusable() }, prevFocusable() { return this.focusables()[this.prevFocusableIndex()] || this.lastFocusable() }, nextFocusableIndex() { return (this.focusables().indexOf(document.activeElement) + 1) % (this.focusables().length + 1) }, prevFocusableIndex() { return Math.max(0, this.focusables().indexOf(document.activeElement)) - 1 }, backOnClose: false, closeModal() { if (this.backOnClose) { window.history.back(); } window.dispatchEvent(new CustomEvent('close-modal', { detail: 'confirm' })); this.show = false; } }" x-init="$watch('show', value => { if (value) { document.body.classList.add('overflow-y-hidden'); } else { document.body.classList.remove('overflow-y-hidden'); } })" x-on:open-modal.window="$event.detail == 'confirm' ? show = true : null" x-on:close.stop="closeModal()" x-on:close-modal.window="$event.detail == 'confirm' ? show = false : null" x-on:keydown.escape.window="closeModal()" x-on:keydown.tab.prevent="$event.shiftKey || nextFocusable().focus()" x-on:keydown.shift.tab.prevent="prevFocusable().focus()" x-show="show" class="relative z-50" aria-labelledby="modal-title" role="dialog" aria-modal="true" style="display: none;"> <div x-show="show" class="fixed inset-0 transform transition-all" x-on:click="closeModal()" x-transition:enter="ease-out duration-200" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0"> <div class="absolute inset-0 bg-elevated-0 dark:bg-elevated-4 opacity-80"></div> </div> <div x-show="show" class="fixed inset-0 z-50 overflow-y-auto"> <div class="flex min-h-full items-center justify-center sm:p-0"> <div @click.stop x-on:click.outside=closeModal() class="relative transform bg-surface-0 dark:bg-elevated-3 text-left shadow-xl dark:shadow-none dark:border dark:border-elevated-3 transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:rounded-xl w-full h-full sm:h-auto min-h-screen sm:min-h-0"> <div class="absolute right-0 top-0 pr-3 pt-3 block"> <button class="px-4 py-2.5 text-md rounded-xl w-auto border-transparent text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 disabled:text-surface-6 hover:bg-primary-6 disabled:hover:bg-transparent focus:border-primary-6 focus:border-primary-6 active:bg-primary-6 dark:hover:bg-primary-1 dark:hover:text-surface-1 disabled:dark:hover:bg-transparent inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" type="button" x-on:click="closeModal()" color="tertiary" type="button"> <svg class="w-6 h-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"/></svg> </button> </div> <div> <div class="p-8" x-data> <h3 class="text-lg font-semibold pb-2" x-text="$store.confirmModal.title"></h3> <p class="mt-3 " x-html="$store.confirmModal.message"></p> <div class="mt-6 flex justify-end space-x-3"> <template x-if="$store.confirmModal.showCancel"> <button class="px-4 py-2.5 text-md rounded-xl w-auto border-2 bg-surface-1 dark:bg-elevated-3 border-surface-5 dark:border-elevated-1 hover:border-primary-1 dark:hover:border-primary-1 active:bg-surface-3 dark:active:bg-elevated-2 focus:border-primary-0 focus:shadow-outline-gray dark:focus:shadow-outline-gray text-primary-1 dark:text-surface-4 hover:text-primary-1 dark:hover:text-surface-5 dark:disabled:elevated-3 disabled:text-surface-6 dark:disabled:border-elevated-1 disabled:hover:border-surface-5 disabled:active:bg-surface-1 dark:disabled:active:bg-elevated-2 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" color="secondary" @click="$store.confirmModal.onCancel()" type="button"> Cancel </button> </template> <button class="px-4 py-2.5 text-md rounded-xl w-auto bg-primary-1 border-primary-0 hover:bg-primary-3 active:bg-primary-0 focus:shadow-outline-indigo text-surface-0 disabled:bg-surface-4 disabled:text-surface-0 disabled:bg-surface-6 disabled:border-elevated-0 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" @click="$store.confirmModal.onOk()" type="button"> OK </button> </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener('alpine:init', () => { Alpine.store('confirmModal', { open: false, title: '', message: '', showCancel: true, onOk: () => {}, onCancel: () => {}, show(title, message, showCancel = true) { window.dispatchEvent(new CustomEvent('open-modal', { detail: 'confirm' })); this.title = title; this.message = message; this.showCancel = showCancel; this.open = true; }, hide() { window.dispatchEvent(new CustomEvent('close-modal', { detail: 'confirm' })); this.open = false; } }); }); window.confirmModal = (title, message, showCancel = true) => { return new Promise((resolve) => { const confirmModal = Alpine.store('confirmModal'); confirmModal.show(title, message, showCancel); confirmModal.onOk = () => { confirmModal.hide(); resolve(true); }; confirmModal.onCancel = () => { confirmModal.hide(); resolve(false); }; }); }; </script> <div x-data="{ notifications: [], add(e) { if (!e.detail.type) { e.detail.type = 'success' } this.notifications.push({ id: e.timeStamp, type: e.detail.type, content: e.detail.content, title: e.detail.title, linkText: e.detail.linkText, linkUrl: e.detail.linkUrl, }) }, remove(notification) { this.notifications = this.notifications.filter(i => i.id !== notification.id) }, }" @notify.window="add($event)" class="fixed top-2 right-0 z-50" role="status" aria-live="polite"> <!-- Show container only when there are notifications --> <div x-show="notifications.length > 0" x-transition class="flex w-full min-w-[300px] max-w-xs xl:max-w-sm flex-col space-y-4 pr-4 pb-4 sm:justify-start"> <!-- Notification --> <template x-for="notification in notifications" :key="notification.id"> <div x-data="{ show: false, init() { this.$nextTick(() => this.show = true) setTimeout(() => this.transitionOut(), 6500) }, transitionOut() { this.show = false setTimeout(() => this.remove(this.notification), 400) }, }" x-show="show" x-transition.duration.300ms class="pointer-events-auto w-full max-w-sm overflow-hidden rounded-lg bg-surface-0 dark:bg-elevated-4 shadow-lg ring-1 ring-surface-4 dark:ring-elevated-4 ring-opacity-5 p-4"> <div class="flex items-start"> <!-- Icons --> <div x-show="notification.type === 'info'" class="flex-shrink-0"> <svg class="w-6 h-6 text-surface-6 dark:text-elevated-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-4,48a12,12,0,1,1-12,12A12,12,0,0,1,124,72Zm12,112a16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40a8,8,0,0,1,0,16Z"/></svg> <span class="sr-only"> Information: </span> </div> <div x-show="notification.type === 'success'" class="flex-shrink-0"> <svg class="w-6 h-6 text-green-400 dark:text-success-1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z"/></svg> <span class="sr-only"> Success: </span> </div> <div x-show="notification.type === 'error'" class="flex-shrink-0"> <svg class="w-6 h-6 text-red-400 dark:text-error-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z"/></svg> <span class="sr-only"> Error: </span> </div> <!-- Text --> <div class="ml-3 w-0 flex-1 pt-0.5"> <p x-text="notification.title" x-show="notification.title" class="text-sm font-semibold text-elevated-3 dark:text-surface-4 mb-1"></p> <p x-text="notification.content" class="text-sm text-elevated-2 dark:text-surface-5"></p> <div class="mt-2 flex" x-show="notification.linkText"> <a class="px-3 py-2 text-sm rounded-xl w-auto bg-primary-1 border-primary-0 hover:bg-primary-3 active:bg-primary-0 focus:shadow-outline-indigo text-surface-0 disabled:bg-surface-4 disabled:text-surface-0 disabled:bg-surface-6 disabled:border-elevated-0 inline-flex justify-center font-semibold border-b-4 disabled:cursor-not-allowed cursor-pointer disabled:shadow-none mt-1 focus:shadow-outline-gray focus:ring-2 focus:ring-offset-2 focus:ring-primary-1 items-center" type="link" target="_blank" x-text="notification.linkText" size="sm" x-bind:href="notification.linkUrl" > </a> </div> </div> <!-- Remove button --> <div class="ml-4 flex flex-shrink-0"> <button @click="transitionOut()" type="button" class="inline-flex text-surface-6 dark:text-elevated-0"> <svg aria-hidden class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor"> <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path> </svg> <span class="sr-only">Close notification</span> </button> </div> </div> </div> </template> </div> </div> <footer aria-labelledby="footer-heading"> <p id="footer-heading" class="sr-only">Footer</p> <div class="mx-auto max-w-7xl px-6 pb-8 pt-16 sm:pt-24 lg:px-8 lg:pt-28"> <div class="xl:grid xl:grid-cols-3 xl:gap-10"> <div class="mt-10 xl:mt-0"> <svg class="w-8 rounded-md" width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M10.1778 7.40835C10.9606 8.07549 11.4861 7.98429 11.9672 8.0172C12.122 7.99252 12.6155 8.17517 13.3515 9.10326C13.0139 9.39671 12.2643 9.90793 11.9672 9.60515L10.7862 8.18989C10.709 8.01521 10.2704 7.97804 10.2179 8.16201C9.91186 9.23985 9.31213 8.36828 9.04421 8.60894C8.90786 8.73159 8.84016 8.93693 8.91167 9.10326C9.25301 9.89491 8.7963 9.9776 8.5217 10.1133C8.32243 10.2127 8.29192 10.4803 8.46736 10.6169C9.39482 11.2999 11.9605 12.4437 14.8033 11.5551C14.8989 11.7444 15.0666 12.238 14.9721 12.6988C14.3771 12.4098 12.8367 11.8779 11.4524 12.781C11.1401 12.9601 10.583 13.7684 10.4479 14.6323C10.3497 15.2605 10.0182 15.4196 9.89612 15.4265C9.37362 15.4405 8.75578 14.6107 8.36295 13.9798C8.22089 13.7531 7.82424 13.7522 7.76227 14.0105C7.60399 14.673 7.38851 14.7919 7.16444 14.8133C6.76208 14.8514 6.52372 15.2667 6.71727 15.6124C6.86982 15.8856 6.92131 16.0816 6.60667 16.3752C6.25674 16.7023 6.42265 17.283 6.89747 17.3806C7.46478 17.5535 8.88469 17.7955 10.0259 17.3806C11.1671 16.9657 12.167 16.1434 12.5243 15.7842C12.8788 16.0968 13.6773 16.7666 14.0352 16.9443C13.5907 17.7396 12.1293 19.3386 9.84019 19.3715C7.55108 19.4044 6.02781 18.354 5.55232 17.8247C4.95303 17.2981 3.67005 15.669 3.33242 13.3652C2.91039 10.4855 3.91483 8.64251 3.97391 8.49441C4.16888 8.00572 3.56148 7.36741 3.21283 7.76147C2.9353 8.07515 2.66875 8.42369 2.42923 8.80706C1.72021 9.76147 1.13781 11.695 1.07028 12.5836C0.960552 13.1623 0.898091 14.7557 1.52608 16.5C2.31106 18.6803 3.88948 20.1696 4.98677 20.8936C6.08406 21.6176 7.70467 22.3334 9.50254 22.4322C11.3004 22.5309 12.8028 22.1195 13.5541 21.8151C14.3053 21.5107 16.8375 20.2518 18.4497 18.7544C18.6888 18.8449 19.1047 19.197 18.8548 19.8816C18.4638 20.8775 17.8101 23.047 18.3232 23.7574C18.4052 23.9321 18.6302 23.9934 18.7942 23.8875L18.7932 23.8894C19.3644 23.5196 19.7906 23.6506 20.0833 23.8959C20.3054 24.0826 20.6477 24.0083 20.7764 23.7518C20.9605 23.3867 21.1855 23.0643 22.0169 23.054C22.3029 23.0503 22.2858 22.5913 22.0188 22.4928C21.4076 22.2661 20.7698 21.9149 20.7507 21.4531C20.7715 21.3105 20.9481 20.9561 21.4883 20.6797C22.1636 20.3341 22.5434 19.1658 22.3155 18.055C22.0876 16.9443 21.4123 15.8664 20.9481 15.3728C21.3842 14.5582 22.0775 12.3088 21.3617 9.82729C21.1507 8.7001 20.4332 7.51531 20.2897 7.34253C22.1264 4.47928 20.4754 1.36097 19.4203 0.159721C19.2192 -0.0549163 18.7033 -0.0707127 18.7033 0.220117C18.7043 1.06287 17.9091 0.724655 17.5096 0.703284C17.2998 0.692134 17.1273 0.851022 17.1273 1.05544C17.1254 1.50423 17.6021 2.02735 16.5828 2.22247C16.2663 2.2838 16.2466 2.83373 16.5113 2.99461L18.0952 3.90333C18.7033 4.29827 18.5248 4.9428 18.2332 5.26507C17.5096 4.4875 15.8924 3.82734 15.5291 3.66473C15.4777 3.64058 15.3146 3.555 15.3013 3.50018C14.5575 0.393972 10.8079 0.919957 9.15177 2.07584C7.54804 3.19456 9.30536 6.66316 10.1778 7.40835Z" fill="#4F46E5" /> </svg> <div class="mt-4 border-elevated-4/10 pt-4 md:flex md:items-center md:justify-between"> <div class="flex space-x-6 md:order-2"> <a href="https://discord.gg/HsRXwQ3S7Z" target="_blank" class="text-surface-6 hover:text-gray-500"> <span class="sr-only">Discord</span> <svg class="w-6 h-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M247.51,174.39,218,58a16.08,16.08,0,0,0-13-11.88l-36.06-5.92a16.22,16.22,0,0,0-18.26,11.88l-.21.85a4,4,0,0,0,3.27,4.93,155.62,155.62,0,0,1,24.41,5.62,8.2,8.2,0,0,1,5.62,9.7,8,8,0,0,1-10.19,5.64,155.4,155.4,0,0,0-90.8-.1,8.22,8.22,0,0,1-10.28-4.81,8,8,0,0,1,5.08-10.33,156.85,156.85,0,0,1,24.72-5.72,4,4,0,0,0,3.27-4.93l-.21-.85A16.21,16.21,0,0,0,87.08,40.21L51,46.13A16.08,16.08,0,0,0,38,58L8.49,174.39a15.94,15.94,0,0,0,9.06,18.51l67,29.71a16.17,16.17,0,0,0,21.71-9.1l3.49-9.45a4,4,0,0,0-3.27-5.35,158.13,158.13,0,0,1-28.63-6.2,8.2,8.2,0,0,1-5.61-9.67,8,8,0,0,1,10.2-5.66,155.59,155.59,0,0,0,91.12,0,8,8,0,0,1,10.19,5.65,8.19,8.19,0,0,1-5.61,9.68,157.84,157.84,0,0,1-28.62,6.2,4,4,0,0,0-3.27,5.35l3.49,9.45a16.18,16.18,0,0,0,21.71,9.1l67-29.71A15.94,15.94,0,0,0,247.51,174.39ZM92,152a12,12,0,1,1,12-12A12,12,0,0,1,92,152Zm72,0a12,12,0,1,1,12-12A12,12,0,0,1,164,152Z"/></svg> </a> <a href="https://www.tiktok.com/@quizgecko" class="text-surface-6 hover:text-elevated-0"> <span class="sr-only">Tiktok</span> <svg class="w-6 h-6" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> <path d="M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z"> </path> </svg> </a> <a href="https://instagram.com/quizgecko" class="text-surface-6 hover:text-elevated-0"> <span class="sr-only">Instagram</span> <svg class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path fill-rule="evenodd" d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z" clip-rule="evenodd" /> </svg> </a> <a href="https://twitter.com/Quizgecko" class="text-surface-6 hover:text-elevated-0"> <span class="sr-only">X</span> <svg class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path d="M13.6823 10.6218L20.2391 3H18.6854L12.9921 9.61788L8.44486 3H3.2002L10.0765 13.0074L3.2002 21H4.75404L10.7663 14.0113L15.5685 21H20.8131L13.6819 10.6218H13.6823ZM11.5541 13.0956L10.8574 12.0991L5.31391 4.16971H7.70053L12.1742 10.5689L12.8709 11.5655L18.6861 19.8835H16.2995L11.5541 13.096V13.0956Z" /> </svg> </a> <a href="https://www.facebook.com/profile.php?id=61550782041398" class="text-surface-6 hover:text-elevated-0"> <span class="sr-only">Facebook</span> <svg class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path fill-rule="evenodd" d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z" clip-rule="evenodd" /> </svg> </a> <a target="_blank" href="mailto:hello@quizgecko.com" class="text-surface-6 cursor-pointer hover:text-elevated-2 mr-2 rtl:ml-2"> <span class="sr-only">Email</span> <svg class="inline-block w-6 h-7 text-surface-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48Zm-96,85.15L52.57,64H203.43ZM98.71,128,40,181.81V74.19Zm11.84,10.85,12,11.05a8,8,0,0,0,10.82,0l12-11.05,58,53.15H52.57ZM157.29,128,216,74.18V181.82Z"/></svg> </a> <a target="_blank" href="https://chrome.google.com/webstore/detail/quizgecko/jipdeflholipfmimeegaphokjfhkbbpl" class="text-surface-6 cursor-pointer hover:text-elevated-2 mr-2 rtl:ml-2"> <span class="sr-only">Chrome</span> <svg class="w-6 h-6 text-surface-6" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="10"></circle> <circle cx="12" cy="12" r="4"></circle> <line x1="21.17" y1="8" x2="12" y2="8"> </line> <line x1="3.95" y1="6.06" x2="8.54" y2="14"> </line> <line x1="10.88" y1="21.94" x2="15.46" y2="14"> </line> </svg> </a> </div> </div> <div class="flex gap-3 mt-6 -ml-1"> <a href="https://apple.co/4a1UzYI" title="" class="inline-flex items-center justify-center w-full text-left text-surface-0 bg-elevated-4 dark:bg-elevated-2 hover:bg-elevated-1 rounded-lg focus:outline-none focus:ring-4 focus:ring-gray-300 px-2 py-1.5 sm:w-auto" role="button"> <svg aria-hidden="true" class="h-8 w-8 sm:w-10 sm:h-10" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"> <path d="M19.665 16.811a10.316 10.316 0 0 1-1.021 1.837c-.537.767-.978 1.297-1.316 1.592-.525.482-1.089.73-1.692.744-.432 0-.954-.123-1.562-.373-.61-.249-1.17-.371-1.683-.371-.537 0-1.113.122-1.73.371-.616.25-1.114.381-1.495.393-.577.025-1.154-.229-1.729-.764-.367-.32-.826-.87-1.377-1.648-.59-.829-1.075-1.794-1.455-2.891-.407-1.187-.611-2.335-.611-3.447 0-1.273.275-2.372.826-3.292a4.857 4.857 0 0 1 1.73-1.751 4.65 4.65 0 0 1 2.34-.662c.46 0 1.063.142 1.81.422s1.227.422 1.436.422c.158 0 .689-.167 1.593-.498.853-.307 1.573-.434 2.163-.384 1.6.129 2.801.759 3.6 1.895-1.43.867-2.137 2.08-2.123 3.637.012 1.213.453 2.222 1.317 3.023a4.33 4.33 0 0 0 1.315.863c-.106.307-.218.6-.336.882zM15.998 2.38c0 .95-.348 1.838-1.039 2.659-.836.976-1.846 1.541-2.941 1.452a2.955 2.955 0 0 1-.021-.36c0-.913.396-1.889 1.103-2.688.352-.404.8-.741 1.343-1.009.542-.264 1.054-.41 1.536-.435.013.128.019.255.019.381z"> </path> </svg> <div class="ml-2.5"> <span class="block text-xs font-normal leading-none"> Download on the </span> <span class="block text-sm font-bold leading-tight"> App Store </span> </div> </a> <a href="https://bit.ly/quizgecko-android" title="" class="inline-flex items-center justify-center w-full text-left text-surface-0 bg-elevated-4 dark:bg-elevated-2 hover:bg-elevated-1 rounded-lg focus:outline-none focus:ring-4 focus:ring-gray-300 px-2 py-1.5 sm:w-auto" role="button"> <svg aria-hidden="true" class="h-8 w-8 sm:w-10 sm:h-10" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"> <path d="m12.954 11.616 2.957-2.957L6.36 3.291c-.633-.342-1.226-.39-1.746-.016l8.34 8.341zm3.461 3.462 3.074-1.729c.6-.336.929-.812.929-1.34 0-.527-.329-1.004-.928-1.34l-2.783-1.563-3.133 3.132 2.841 2.84zM4.1 4.002c-.064.197-.1.417-.1.658v14.705c0 .381.084.709.236.97l8.097-8.098L4.1 4.002zm8.854 8.855L4.902 20.91c.154.059.32.09.495.09.312 0 .637-.092.968-.276l9.255-5.197-2.666-2.67z"> </path> </svg> <div class="ml-2.5"> <span class="block text-xxs font-normal leading-none"> Download on </span> <span class="block text-sm font-bold leading-tight"> Google Play </span> </div> </a> </div> </div> <div class="mt-16 grid grid-cols-2 xl:col-span-2 xl:mt-0"> <div class="md:grid md:grid-cols-2 md:gap-8"> <div> <p class="text-sm font-semibold leading-6 text-elevated-2 dark:text-surface-5"> Solutions </p> <ul role="list" class="mt-4 space-y-2"> <li> <a href="https://quizgecko.com/for/students" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Students</a> </li> <li> <a href="https://quizgecko.com/plans?offer=teacher" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Schools</a> </li> <li> <a href="https://quizgecko.com/for/business" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Business</a> </li> <li> <a href="https://quizgecko.com/for/parents" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Parents</a> </li> <li> <a href="https://quizgecko.com/for/tutors" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Tutors</a> </li> <li> <a href="https://quizgecko.com/for/homeschooling" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Homeschooling</a> </li> </ul> </div> <div class="mt-10 md:mt-0"> <p class="text-sm font-semibold leading-6 text-elevated-2 dark:text-surface-5"> Account </p> <ul role="list" class="mt-4 space-y-2"> <li> <a href="https://quizgecko.com/library" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">My Library</a> </li> <li> <a href="https://quizgecko.com/profile" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">My Profile</a> </li> <li> <a href="https://quizgecko.com/billing" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Billing</a> </li> <li> <a href="https://quizgecko.com/features" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Features</a> </li> </ul> </div> </div> <div class="md:grid md:grid-cols-2 md:gap-8"> <div> <p class="text-sm font-semibold leading-6 text-elevated-2 dark:text-surface-5"> Resources </p> <ul role="list" class="mt-4 space-y-2"> <li> <a href="https://quizgecko.com/blog" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Blog</a> </li> <li> <a href="/api" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">API</a> </li> <li> <a href="https://help.quizgecko.com" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Help Center</a> </li> <li> <a href="https://quizgecko.com/discover" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Browse Lessons</a> </li> </ul> </div> <div class="mt-10 md:mt-0"> <p class="text-sm font-semibold leading-6 text-elevated-2 dark:text-surface-5"> Policies </p> <ul role="list" class="mt-4 space-y-2"> <li> <a href="https://quizgecko.com/terms" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Terms</a> </li> <li> <a href="https://quizgecko.com/privacy-policy" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Privacy</a> </li> <li> <a href="https://quizgecko.com/copyright" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">Copyright</a> </li> <li> <a href="https://quizgecko.com/legal" class="text-sm leading-6 text-elevated-1 hover:text-elevated-0 dark:text-surface-6 dark:hover:text-surface-4">More...</a> </li> </ul> </div> </div> </div> </div> </div> <div class="mt-8 border-t border-elevated-4/10 pt-4 md:flex md:items-center md:justify-between"> <div class="text-center mx-auto max-w-xl mt-4 mb-8 text-elevated-0 dark:text-surface-6 text-sm "> <p class="mb-2 text-gray-900 dark:text-surface-5">Change Language</p> <div class="flex-wrap justify-center pt-8 sm:justify-start sm:pt-0 "> <span class="ml-2 mr-2 text-elevated-2 dark:text-surface-5">English</span> <a class="underline ml-2 mr-2 text-elevated-2 dark:text-surface-5" href="https://quizgecko.com/locale/fr">French</a> <a class="underline ml-2 mr-2 text-elevated-2 dark:text-surface-5" href="https://quizgecko.com/locale/de">German</a> <a class="underline ml-2 mr-2 text-elevated-2 dark:text-surface-5" href="https://quizgecko.com/locale/es">Spanish</a> <a class="underline ml-2 mr-2 text-elevated-2 dark:text-surface-5" href="https://quizgecko.com/locale/pt">Portuguese</a> <a class="underline ml-2 mr-2 text-elevated-2 dark:text-surface-5" href="https://quizgecko.com/locale/hi">Hindi</a> <a class="underline ml-2 mr-2 text-elevated-2 dark:text-surface-5" href="https://quizgecko.com/locale/ko">Korean</a> <a class="underline ml-2 mr-2 text-elevated-2 dark:text-surface-5" href="https://quizgecko.com/locale/zh">Chinese</a> </div> </div> </div> </footer> </div> </body> </html> <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9363f0955ec71e79',t:'MTc0NTY0ODA2NS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script><script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="8ce553fa16d77db33eb6e9e7-|49" defer></script>