File size: 50,824 Bytes
1f434f8 696d5cf 1f434f8 0d603c0 1f434f8 0d603c0 1f434f8 48c6a0e 1f434f8 62520fe fa9dbb0 b052f29 5593afd fa9dbb0 5593afd 28b18b5 5593afd d722e60 5593afd 1f434f8 5da746f 1f434f8 7c67643 1f434f8 7c67643 1f434f8 7c67643 1f434f8 5da746f 1f434f8 0d603c0 be4e588 5da746f 0d603c0 1f434f8 5da746f 1f434f8 5da746f 1f434f8 be4e588 1f434f8 37fdb99 f735234 37fdb99 f735234 37fdb99 8eedf00 37fdb99 696d5cf 1f434f8 696d5cf 37fdb99 1f434f8 37fdb99 1f434f8 ff2065e 1f434f8 d3b8adf 1f434f8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 | <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<script>
(function () {
try {
var t = localStorage.getItem("nexus_theme");
if (!t) {
t = "light";
localStorage.setItem("nexus_theme", "light");
}
document.documentElement.setAttribute("data-theme", t);
} catch (e) {
document.documentElement.setAttribute("data-theme", "light");
}
document.documentElement.setAttribute("data-nexus-bg", "plain");
try {
var vp = localStorage.getItem("nexus_visual_performance");
if (vp === "reduced") {
vp = "full";
localStorage.setItem("nexus_visual_performance", "full");
}
if (!vp) vp = localStorage.getItem("nexus_fast_mode") === "on" ? "max" : "full";
if (vp !== "full" && vp !== "max") vp = "full";
document.documentElement.setAttribute("data-visual-performance", vp);
document.documentElement.setAttribute("data-fast-mode", vp === "max" ? "on" : "off");
} catch (e2) {}
try {
var tr = localStorage.getItem("nexus_trail_preset") || "default";
if (tr && tr !== "default") document.documentElement.setAttribute("data-trail-preset", tr);
else document.documentElement.removeAttribute("data-trail-preset");
} catch (e3) {}
try {
var hp = localStorage.getItem("nexus_hover_preset") || "default";
if (hp === "magneta") hp = "magenta";
if (hp && hp !== "default") document.documentElement.setAttribute("data-hover-preset", hp);
else document.documentElement.removeAttribute("data-hover-preset");
} catch (e4) {}
try {
var ap = localStorage.getItem("nexus_atom_preset") || "default";
if (ap === "magneta") ap = "magenta";
if (ap && ap !== "default") document.documentElement.setAttribute("data-atom-preset", ap);
else document.documentElement.removeAttribute("data-atom-preset");
} catch (e5) {}
try {
var fsz = localStorage.getItem("nexus_font_size");
if (!fsz) fsz = "small";
if (fsz !== "very-small" && fsz !== "small" && fsz !== "medium" && fsz !== "large") fsz = "small";
document.documentElement.setAttribute("data-font-size", fsz);
} catch (e6) {}
})();
</script>
<title>Nexus AI — The Intelligent Study Crew</title>
<link rel="icon" href="/favicon.ico" type="image/png" sizes="any" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="style.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css" crossorigin="anonymous" onerror="this.onerror=null;this.href='/static/vendor/katex.min.css'" />
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js" onerror="this.onerror=null;this.src='/static/vendor/marked.min.js'"></script>
<script src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js" crossorigin="anonymous" onerror="this.onerror=null;this.src='/static/vendor/katex.min.js'"></script>
<script src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js" crossorigin="anonymous" onerror="this.onerror=null;this.src='/static/vendor/auto-render.min.js'"></script>
<script src="https://cdn.jsdelivr.net/npm/@emailjs/browser@4/dist/email.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
<script src="https://accounts.google.com/gsi/client" async defer></script>
<script>
</script>
</head>
<body data-nexus-page="study" data-current-view="study" data-user-logged-in="false">
<canvas id="bg-canvas"></canvas>
<div id="bg-ambient" class="bg-ambient" aria-hidden="true">
<span class="bg-ambient-spin" aria-hidden="true"></span>
</div>
<div id="root" class="nexus-loading">
<header id="app-header" class="app-header app-header--study-glass">
<div class="app-header-brand-wrap">
<button type="button" id="study-app-sidebar-toggle" class="study-appbar-hamburger clean-hover" aria-label="Toggle study sidebar" aria-expanded="true" title="Menu">
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h16"/></svg>
</button>
<div class="header-atom assistant-atom atom-3d" aria-hidden="true">
<span class="atom-nucleus"></span>
<span class="atom-ring ring-x"><span class="atom-electron"></span></span>
<span class="atom-ring ring-y"><span class="atom-electron"></span></span>
<span class="atom-ring ring-z"><span class="atom-electron"></span></span>
</div>
<div class="app-header-brand">Nexus AI</div>
</div>
<nav class="header-center-nav" aria-label="Site pages">
<a href="/" id="header-home-btn" class="header-nav-pill clean-hover header-landing-bar-mobile-hide" title="Landing page">Landing Page</a>
<span class="header-nav-pill header-nav-pill--current header-loggedin-only" id="header-study-btn" title="Study hub">Study</span>
<a href="/about" class="header-nav-pill clean-hover header-nav--desktop-only" title="About Nexus AI">About Us</a>
<a href="/pricing" class="header-nav-pill clean-hover header-nav--desktop-only" title="Pricing and plans">Plans</a>
<div class="nexus-header-dropdown header-more-wrap header-nav--mobile-only">
<button type="button" id="header-more-btn" class="header-nav-pill header-more-btn clean-hover" aria-expanded="false" aria-haspopup="true" aria-controls="header-mobile-dropdown" title="More">
More
<svg class="header-more-chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg>
</button>
<div id="header-mobile-dropdown" class="header-mobile-dropdown nexus-header-dropdown-panel" role="menu" aria-label="More navigation">
<button type="button" id="header-dropdown-landing-btn" class="header-mobile-dropdown-item header-mobile-dropdown-btn header-loggedin-only" role="menuitem">Landing Page</button>
<a href="/study" class="header-mobile-dropdown-item" role="menuitem">Study</a>
<a href="/flashcards" class="header-mobile-dropdown-item header-loggedin-only" role="menuitem">Flashcards</a>
<a href="/quiz" class="header-mobile-dropdown-item header-loggedin-only" role="menuitem">Quiz</a>
<a href="/about" class="header-mobile-dropdown-item" role="menuitem">About Us</a>
<a href="/pricing" class="header-mobile-dropdown-item" role="menuitem">Plans</a>
<button type="button" class="header-mobile-dropdown-item header-mobile-dropdown-btn header-loggedout-only" role="menuitem" id="header-mobile-auth-btn">Login/SignUp</button>
</div>
</div>
</nav>
<div class="app-header-end app-header-auth">
<button type="button" id="header-theme-toggle" class="header-icon-btn header-theme-toggle clean-hover" aria-label="Toggle light or dark theme" title="Theme">
<svg class="nexus-theme-icon-sun" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg>
<svg class="nexus-theme-icon-moon hidden" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
</button>
</div>
</header>
<div id="nexus-command-palette" class="nexus-command-palette hidden" aria-hidden="true">
<div class="nexus-command-palette-inner">
<label class="nexus-command-label" for="nexus-command-input"><span class="nexus-command-prompt" aria-hidden="true">nexus@ai</span><span class="nexus-command-dollar">$</span></label>
<input type="text" id="nexus-command-input" class="nexus-command-input" autocomplete="off" spellcheck="false" aria-autocomplete="list" aria-controls="nexus-command-dropdown" aria-label="Command line" />
</div>
<p id="nexus-command-feedback" class="nexus-command-feedback" aria-live="polite"></p>
<div id="nexus-command-dropdown" class="nexus-command-dropdown hidden" role="listbox" aria-label="Suggestions">
<div class="nexus-command-dd-head">
<span class="nexus-command-dd-header"></span>
<span class="nexus-command-dd-type"></span>
</div>
<p class="nexus-command-dd-desc"></p>
<ul class="nexus-command-dd-list"></ul>
</div>
</div>
<div id="study-area" class="study-page-embed" aria-hidden="false">
<div class="study-shell">
<header class="study-chrome-header">
<button type="button" id="study-sidebar-toggle" class="study-panel-toggle clean-hover" aria-label="Show or hide study sidebar" aria-expanded="true" title="Sidebar">
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h16"/></svg>
</button>
<span class="study-chrome-title">Study hub</span>
<div class="study-chrome-end">
<button type="button" id="study-bar-theme" class="header-icon-btn study-bar-theme clean-hover" aria-label="Toggle theme" title="Theme">
<svg class="nexus-theme-icon-sun study-bar-theme-sun" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg>
<svg class="nexus-theme-icon-moon study-bar-theme-moon hidden" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
</button>
<button type="button" id="study-close" class="study-close-soft clean-hover" aria-label="Close study hub" title="Close study hub"><span class="study-close-label">Close</span></button>
</div>
</header>
<div class="study-layout">
<aside id="study-sidebar-panel" class="study-sidebar" aria-label="Study sidebar">
<div class="study-sidebar-brand-row">
<span class="study-brand-atom assistant-atom atom-3d" aria-hidden="true">
<span class="atom-nucleus"></span>
<span class="atom-ring ring-x"><span class="atom-electron"></span></span>
<span class="atom-ring ring-y"><span class="atom-electron"></span></span>
<span class="atom-ring ring-z"><span class="atom-electron"></span></span>
</span>
<span class="study-brand-text">Study</span>
</div>
<button type="button" id="btn-new-chat" class="study-btn-new-chat clean-hover" title="Start a new chat conversation">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M12 5v14M5 12h14"/></svg>
New conversation
</button>
<div class="study-quick-links" role="group" aria-label="Study tools">
<a href="/flashcards" class="study-quick-link clean-hover" id="study-link-flashcards" title="Open flashcard decks">Flashcards</a>
<a href="/quiz" class="study-quick-link clean-hover" id="study-link-quiz" title="Open practice quizzes">Quiz</a>
</div>
<div class="study-sidebar-scroll">
<div id="study-sidebar-search-block" class="study-sidebar-extra-block">
<div class="study-section-label">Search conversations</div>
<div class="study-sidebar-search">
<svg class="study-search-icon" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg>
<input type="text" id="study-convo-search" class="study-search-input" placeholder="Filter conversation history…" autocomplete="off" />
</div>
</div>
<div class="study-section-label">Conversation history</div>
<div id="study-sidebar-conversations" class="study-conversations-list dash-conversations"></div>
<div id="study-sidebar-decks" class="study-sidebar-extra-block">
<div class="study-section-label">Flashcard decks</div>
<div id="study-sets-list" class="study-sets-list"></div>
</div>
</div>
<div class="study-sidebar-footer">
<div class="study-sidebar-stats study-sidebar-extra-block">
<div class="study-stat"><span id="study-stat-sets" class="study-stat-num">0</span><span class="study-stat-label">Decks</span></div>
<div class="study-stat"><span id="study-stat-cards" class="study-stat-num">0</span><span class="study-stat-label">Cards</span></div>
</div>
<div class="study-sidebar-footer-actions">
<button type="button" id="study-view-plans" class="study-footer-link-btn" title="View subscription plans">View plans</button>
<button type="button" id="btn-settings" class="study-footer-link-btn study-footer-link-btn--settings" title="Open settings">Settings</button>
</div>
</div>
</aside>
<main class="study-main">
<div class="study-main-inner">
<div id="study-welcome" class="study-welcome">
<div class="study-welcome-glow" aria-hidden="true"></div>
<div class="study-welcome-content">
<div class="study-welcome-icon-wrap">
<span class="study-welcome-icon-ring" aria-hidden="true"></span>
<div class="study-welcome-icon" aria-hidden="true">
<svg width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3h6a4 4 0 014 4v14a3 3 0 00-3-3H2z"/><path d="M22 3h-6a4 4 0 00-4 4v14a3 3 0 013-3h7z"/></svg>
</div>
</div>
<h2>Study with Nexus AI</h2>
<p>Your hub for decks, quizzes, and the study tutor.</p>
<div id="study-discover-blocks" class="study-discover-blocks" aria-live="polite">
<p class="study-hub-label">Quick actions</p>
<div class="study-quick-actions">
<button type="button" id="study-action-flashcards" class="study-action-tile" title="Create flashcards from chat">
<span class="study-action-icon" aria-hidden="true">
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="4" y="4" width="16" height="20" rx="2"/><path d="M8 2v4M16 2v4"/><path d="M4 10h16"/></svg>
</span>
<span class="study-action-title">Create flashcards</span>
<span class="study-action-desc">Describe a topic in chat — we’ll build a deck.</span>
</button>
<button type="button" id="study-action-quiz" class="study-action-tile" title="Take a generated quiz">
<span class="study-action-icon study-action-icon-quiz" aria-hidden="true">
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2"/><path d="M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"/><path d="M9 12l2 2 4-4"/></svg>
</span>
<span class="study-action-title">Take a quiz</span>
<span class="study-action-desc">Generate a practice quiz on any topic.</span>
</button>
</div>
<p class="study-hub-label study-hub-label-topics">Popular topics</p>
<div class="study-topic-cards">
<button type="button" class="study-topic-card" title="Use this topic in chat">WW3</button>
<button type="button" class="study-topic-card" title="Use this topic in chat">Egyptian history</button>
<button type="button" class="study-topic-card" title="Use this topic in chat">Photosynthesis</button>
<button type="button" class="study-topic-card" title="Use this topic in chat">World War II</button>
<button type="button" class="study-topic-card" title="Use this topic in chat">Derivatives</button>
<button type="button" class="study-topic-card" title="Use this topic in chat">Python basics</button>
</div>
</div>
</div>
</div>
<div id="study-carousel-wrap" class="study-carousel-wrap hidden">
<div class="study-carousel-header">
<h3 id="study-deck-title" class="study-deck-title">Deck</h3>
<span id="study-card-counter" class="study-card-counter">0 / 0</span>
</div>
<div class="study-carousel-body">
<button type="button" id="study-nav-prev" class="study-carousel-nav study-nav-prev" aria-label="Previous card" title="Previous card">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M15 18l-6-6 6-6"/></svg>
</button>
<div id="study-carousel" class="study-carousel"></div>
<button type="button" id="study-nav-next" class="study-carousel-nav study-nav-next" aria-label="Next card" title="Next card">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg>
</button>
</div>
<div id="study-carousel-dots" class="study-carousel-dots"></div>
</div>
<div class="study-chat-area" id="chat-input-area">
<div class="chat-file-drop-overlay" aria-hidden="true">
<div class="chat-file-drop-overlay__icon"></div>
<span>Drop files to attach</span>
</div>
<div id="chat-attachments" class="chat-attachments"></div>
<div id="chat-messages" class="study-chat-messages chat-messages"></div>
<div class="study-chat-composer-column">
<div class="nexus-youtube-tool" id="nexus-youtube-tool">
<button
type="button"
class="nexus-yt-toggle clean-hover"
id="nexus-yt-toggle"
aria-expanded="false"
aria-controls="nexus-yt-panel"
>
<span class="nexus-yt-toggle-icon" aria-hidden="true">
<svg width="18" height="18" viewBox="0 0 24 24" aria-hidden="true" xmlns="http://www.w3.org/2000/svg">
<rect x="0.5" y="4" width="23" height="16" rx="3.2" fill="#FF0000" />
<path d="M9.5 8.5v7L17 12z" fill="#ffffff" />
</svg>
</span>
<span class="nexus-yt-toggle-label">YouTube</span>
<svg class="nexus-yt-chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg>
</button>
<div class="nexus-yt-panel" id="nexus-yt-panel" role="region" aria-label="YouTube link" hidden>
<label class="nexus-yt-label" for="nexus-yt-url">Video link</label>
<input
type="url"
id="nexus-yt-url"
class="nexus-yt-url-input"
placeholder="https://www.youtube.com/watch?v=…"
inputmode="url"
autocomplete="off"
spellcheck="false"
/>
<div class="nexus-yt-actions">
<button type="button" class="nexus-yt-open-web clean-hover" id="nexus-yt-open-web" title="Open this video on YouTube">
Open YouTube
</button>
<button type="button" class="nexus-yt-copy clean-hover" id="nexus-yt-copy" title="Copy watch link">
Copy link
</button>
</div>
<p class="nexus-yt-hint">
Paste a link here, type what you want below (e.g. summarize, teach, quiz), then send. If the main box mentions a different video than the field, the message’s link is used for that turn.
</p>
</div>
</div>
<div class="study-chat-input-row">
<div class="study-chat-input-wrap" id="chat-input-wrap">
<button type="button" id="btn-upload" class="study-upload-btn clean-hover" aria-label="Attach PDF, image, audio, or video" title="Upload PDF, images, MP3, MP4, or other common video formats">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><rect x="4" y="4" width="16" height="16" rx="2"/><path d="M12 8v8M8 12h8"/></svg>
</button>
<input type="file" id="file-input" accept=".pdf,application/pdf,.png,.jpg,.jpeg,.gif,.webp,.heic,.heif,image/*,image/heic,image/heic-sequence,video/*,audio/*,.mp3,.mp4,.mov,.webm,.m4v,.mkv,.mpeg,.mpg,.avi,.3gp,.wmv,.ogv,.f4v" multiple hidden />
<input type="text" id="chat-input" class="study-chat-input chat-input" placeholder="What should Nexus do? (e.g. summarize, teach, explain)…" autocomplete="off" />
<button type="button" id="chat-send" class="study-send-btn clean-hover chat-input-btn" aria-label="Send message" title="Send">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
</button>
</div>
</div>
</div>
</div>
</div>
</main>
</div>
</div>
</div>
<!-- ============ ABOUT US MODAL ============ -->
<div id="modal-about" class="modal" role="dialog" aria-modal="true" aria-labelledby="modal-about-title">
<div class="modal-backdrop"></div>
<div class="modal-card glass modal-about-card">
<h2 id="modal-about-title">About Nexus AI</h2>
<p class="modal-about-subhead">Empowering Developers to Dream and Build</p>
<div class="modal-about-body">
<p>Nexus AI was born from a simple belief: every developer deserves intelligent tools that amplify their creativity rather than replace it. Our platform combines cutting-edge language models with deep code understanding to deliver a seamless, context-aware coding companion.</p>
<p>From solo learners to enterprise teams, we provide the AI infrastructure that makes writing, refactoring, and shipping code faster, safer, and more enjoyable. Our mission is to lower the barrier to great software—one commit at a time.</p>
</div>
<div class="modal-actions">
<button type="button" id="modal-about-close" class="primary-btn clean-hover">Close</button>
</div>
</div>
</div>
<div id="auth-modal" class="modal" role="dialog" aria-modal="true" aria-labelledby="auth-title">
<div class="modal-backdrop"></div>
<div class="modal-card glass auth-modal-card">
<div class="auth-aurora-clip" aria-hidden="true">
<canvas id="auth-aurora-canvas" class="auth-aurora-canvas"></canvas>
</div>
<div id="auth-panel" class="auth-panel-inner">
<h2 id="auth-title">Welcome to Nexus AI</h2>
<p class="modal-note">Log in or sign up to continue.</p>
<div class="auth-tabs">
<button type="button" class="auth-tab active" data-mode="login">Login</button>
<button type="button" class="auth-tab" data-mode="signup">Sign up</button>
</div>
<form id="auth-form" class="auth-form">
<div id="auth-signup-names" class="auth-names-row hidden">
<input type="text" id="auth-first-name" placeholder="First name" autocomplete="given-name" />
<input type="text" id="auth-second-name" placeholder="Second name" autocomplete="family-name" />
</div>
<div id="auth-country-wrap" class="hidden">
<span class="auth-country-label" id="auth-country-label-text">Choose a country:</span>
<p id="auth-country-error" class="auth-country-error hidden" role="alert"></p>
<div class="auth-country-select-shell" id="auth-country-root">
<select id="country" class="auth-country-native-select" name="country" autocomplete="country" tabindex="-1" aria-hidden="true">
<option value="" selected disabled data-flag="" data-label="">Select a country</option>
</select>
<button
type="button"
id="auth-country-trigger"
class="auth-country-custom-trigger"
aria-haspopup="listbox"
aria-expanded="false"
aria-controls="auth-country-dropdown"
aria-labelledby="auth-country-label-text auth-country-trigger-label"
>
<span id="auth-country-trigger-label" class="auth-country-custom-text is-placeholder">Select a country</span>
<span class="auth-country-select-chevron" aria-hidden="true">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 9l6 6 6-6"/></svg>
</span>
</button>
<div id="auth-country-dropdown" class="auth-country-dropdown hidden" role="listbox" aria-labelledby="auth-country-label-text">
<div class="auth-country-dropdown-search-wrap">
<input
type="search"
id="auth-country-search"
class="auth-country-dropdown-search"
placeholder="Search countries…"
autocomplete="off"
aria-label="Search countries"
/>
</div>
<div id="auth-country-options" class="auth-country-dropdown-options"></div>
</div>
</div>
</div>
<input type="email" id="auth-email" placeholder="Email" required autocomplete="email" />
<div class="auth-password-wrap">
<input type="password" id="auth-password" placeholder="Password (min 6)" required autocomplete="current-password" minlength="6" />
<button type="button" id="auth-password-toggle" class="auth-password-toggle" aria-label="Show password">
<svg class="icon-eye" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
<svg class="icon-eye-off hidden" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/><line x1="1" y1="1" x2="23" y2="23"/></svg>
</button>
</div>
<label class="auth-remember-row" id="auth-remember-row">
<input type="checkbox" id="auth-remember-me" checked />
<span>Remember me</span>
</label>
<div id="auth-forgot-block" class="auth-forgot-block">
<p class="auth-forgot-row" id="auth-forgot-row">
<button type="button" id="auth-forgot-trigger" class="auth-forgot-link clean-hover">Forgot password?</button>
</p>
<div id="auth-forgot-panel" class="auth-forgot-panel hidden">
<p id="auth-forgot-intro" class="modal-note">We’ll email you a link to set a new password.</p>
<button type="button" id="auth-forgot-submit" class="primary-btn clean-hover">Send reset link</button>
<button type="button" id="auth-forgot-resend" class="secondary-btn clean-hover hidden" aria-label="Resend reset email">Resend email</button>
<button type="button" id="auth-forgot-back" class="secondary-btn clean-hover">Back to login</button>
<p id="auth-forgot-status" class="status-text" role="status"></p>
</div>
</div>
<button type="submit" id="auth-submit" class="primary-btn clean-hover">Continue</button>
</form>
<p id="auth-error" class="status-text"></p>
<div class="auth-social-divider"><span>or continue with</span></div>
<div class="auth-social-row auth-social-row-single">
<button type="button" id="auth-google-btn" class="auth-social-btn auth-google-btn" title="Continue with Google">
<svg width="20" height="20" viewBox="0 0 24 24"><path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 01-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z" fill="#4285F4"/><path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z" fill="#34A853"/><path d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z" fill="#FBBC05"/><path d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" fill="#EA4335"/></svg>
<span>Continue with Google</span>
</button>
</div>
</div>
<div id="verify-panel" class="hidden auth-panel-inner">
<h2>Verify your email</h2>
<p id="verify-email-display" class="modal-note"></p>
<div id="otp-grid" class="otp-grid">
<input type="text" class="otp-input" inputmode="numeric" maxlength="1" />
<input type="text" class="otp-input" inputmode="numeric" maxlength="1" />
<input type="text" class="otp-input" inputmode="numeric" maxlength="1" />
<input type="text" class="otp-input" inputmode="numeric" maxlength="1" />
<input type="text" class="otp-input" inputmode="numeric" maxlength="1" />
<input type="text" class="otp-input" inputmode="numeric" maxlength="1" />
</div>
<div class="verify-actions">
<button type="button" id="verify-submit" class="primary-btn clean-hover">Verify</button>
<button type="button" id="verify-resend" class="secondary-btn clean-hover">Resend code</button>
<button type="button" id="verify-back" class="secondary-btn clean-hover">Back</button>
</div>
<p id="verify-error" class="status-text"></p>
</div>
</div>
</div>
<div id="modal-new-convo" class="modal" role="dialog" aria-modal="true" aria-labelledby="modal-new-convo-title">
<div class="modal-backdrop"></div>
<div class="modal-card glass">
<h2 id="modal-new-convo-title">New conversation</h2>
<input type="text" id="modal-new-convo-name" class="modal-input" placeholder="Name (optional — auto after 5 messages)" maxlength="80" title="Leave blank to auto-name from your topic after five messages" />
<div class="modal-actions">
<button type="button" id="modal-new-convo-cancel" class="secondary-btn clean-hover">Cancel</button>
<button type="button" id="modal-new-convo-confirm" class="primary-btn clean-hover">Create</button>
</div>
</div>
</div>
<div id="modal-delete-convo" class="modal" role="dialog" aria-modal="true" aria-labelledby="modal-delete-convo-title">
<div class="modal-backdrop"></div>
<div class="modal-card glass">
<h2 id="modal-delete-convo-title">Delete conversation?</h2>
<p id="modal-delete-convo-message" class="modal-note">This action cannot be undone.</p>
<div class="modal-actions">
<button type="button" id="modal-delete-convo-cancel" class="secondary-btn clean-hover">Cancel</button>
<button type="button" id="modal-delete-convo-confirm" class="danger-btn clean-hover">Delete</button>
</div>
</div>
</div>
<div id="modal-bulk-delete-convos" class="modal" role="dialog" aria-modal="true" aria-labelledby="modal-bulk-delete-convos-title">
<div class="modal-backdrop"></div>
<div class="modal-card glass">
<h2 id="modal-bulk-delete-convos-title">Delete selected conversations?</h2>
<p id="modal-bulk-delete-convos-message" class="modal-note">This will permanently remove the selected chats. This cannot be undone.</p>
<div class="modal-actions">
<button type="button" id="modal-bulk-delete-convos-cancel" class="secondary-btn clean-hover">Cancel</button>
<button type="button" id="modal-bulk-delete-convos-confirm" class="danger-btn clean-hover">Delete all selected</button>
</div>
</div>
</div>
<div id="modal-rename-convo" class="modal" role="dialog" aria-modal="true" aria-labelledby="modal-rename-convo-title">
<div class="modal-backdrop"></div>
<div class="modal-card glass">
<h2 id="modal-rename-convo-title">Rename conversation</h2>
<input type="text" id="modal-rename-convo-name" class="modal-input" placeholder="New name" maxlength="80" />
<div class="modal-actions">
<button type="button" id="modal-rename-convo-cancel" class="secondary-btn clean-hover">Cancel</button>
<button type="button" id="modal-rename-convo-confirm" class="primary-btn clean-hover">Rename</button>
</div>
</div>
</div>
<div id="modal-settings" class="modal" role="dialog" aria-modal="true" aria-labelledby="modal-settings-title">
<div class="modal-backdrop"></div>
<div class="modal-card glass">
<h2 id="modal-settings-title">Settings</h2>
<p class="modal-note">Customize account, identity, and appearance.</p>
<div class="settings-sections">
<div class="settings-section">
<label class="settings-row">
<span>Font size</span>
<select id="settings-font-size" class="settings-select">
<option value="very-small">Very small</option>
<option value="small" selected>Small</option>
<option value="medium">Medium</option>
<option value="large">Large</option>
</select>
</label>
<label class="settings-row">
<span>Reading mode</span>
<select id="settings-reading-mode" class="settings-select">
<option value="off">Off</option>
<option value="on">On (wider bubbles, smaller text)</option>
</select>
</label>
<label class="settings-row">
<span>Theme</span>
<select id="settings-theme" class="settings-select" title="Light or dark appearance">
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label>
<label class="settings-row">
<span>Visual performance</span>
<select id="settings-visual-performance" class="settings-select">
<option value="full">Full (default animations)</option>
<option value="max">Maximum (minimal motion & effects; best for lag)</option>
</select>
</label>
</div>
<div class="settings-section">
<h3 class="settings-section-title">Speak</h3>
<p class="settings-hint">Speech uses Gemini TTS on the server. Language follows your text automatically unless you turn auto-detect off.</p>
<label class="settings-row settings-row-checkbox">
<span>Auto-detect speak language</span>
<input type="checkbox" id="settings-tts-voice-auto" class="settings-checkbox" checked />
</label>
<label class="settings-row" id="settings-tts-lang-row">
<span>Manual voice language</span>
<select id="settings-tts-voice-lang" class="settings-select">
<option value="en">English</option>
<option value="ar">Arabic</option>
<option value="fr">French</option>
<option value="es">Spanish</option>
<option value="de">German</option>
<option value="hi">Hindi</option>
<option value="pt">Portuguese</option>
<option value="it">Italian</option>
</select>
</label>
<label class="settings-row">
<span>Voice gender</span>
<select id="settings-tts-voice-gender" class="settings-select" title="Used for Gemini TTS and browser fallback">
<option value="auto">Auto (server default)</option>
<option value="female">Female</option>
<option value="male">Male</option>
</select>
</label>
</div>
<div class="settings-section" id="settings-subscription">
<h3 class="settings-section-title">Manage subscription</h3>
<p class="settings-hint">Pick a plan or change your subscription on the checkout page.</p>
<div class="settings-plan-row">
<a class="settings-plan-link" href="/buy.html?plan=basic">Basic</a>
<a class="settings-plan-link settings-plan-link-featured" href="/buy.html?plan=standard">Standard</a>
<a class="settings-plan-link" href="/buy.html?plan=premium">Premium</a>
</div>
<button type="button" id="settings-open-plans-landing" class="secondary-btn clean-hover settings-plans-cta">Compare all plans</button>
</div>
<div class="settings-section">
<h3 class="settings-section-title">Account</h3>
<div class="settings-grid">
<button type="button" id="settings-hide-email" class="secondary-btn clean-hover">Hide email</button>
<button type="button" id="settings-hide-avatar" class="secondary-btn clean-hover">Hide avatar</button>
</div>
</div>
<div class="settings-section">
<h3 class="settings-section-title">Data</h3>
<div class="settings-grid">
<button type="button" id="settings-clear-chat" class="secondary-btn clean-hover">Clear chat view</button>
<button type="button" id="settings-export-session" class="secondary-btn clean-hover">Export session (.txt)</button>
<button type="button" id="settings-delete-account" class="danger-btn clean-hover">Delete my account and all data</button>
</div>
<p class="settings-hint">Deleting your account removes your profile, conversations, and saved progress. This cannot be undone.</p>
</div>
</div>
<div class="modal-actions">
<button type="button" id="settings-logout" class="danger-btn settings-logout-btn neon-red-logout">Log out</button>
<button type="button" id="settings-close" class="primary-btn clean-hover">Close</button>
</div>
</div>
</div>
<div id="modal-quiz" class="modal" role="dialog" aria-modal="true" aria-labelledby="modal-quiz-title">
<div class="modal-backdrop"></div>
<div class="modal-card glass quiz-modal-card">
<div class="modal-quiz-head">
<h2 id="modal-quiz-title">Quiz generator</h2>
<button type="button" id="quiz-close" class="modal-quiz-x" aria-label="Close quiz">×</button>
</div>
<div id="quiz-setup-panel">
<div class="quiz-topic-section">
<label class="quiz-section-label" for="quiz-topic">Topic</label>
<input type="text" id="quiz-topic" class="modal-input quiz-topic-input" placeholder="Topic, or a YouTube URL — we load the video and quiz you on that content" autocomplete="off" />
<div class="quiz-upload-row">
<button type="button" id="quiz-upload-btn" class="secondary-btn clean-hover quiz-upload-btn-inline">Upload file</button>
<input type="file" id="quiz-file-input" accept=".pdf,application/pdf,.png,.jpg,.jpeg,.gif,.webp" hidden />
<span id="quiz-file-name" class="quiz-file-label"></span>
</div>
</div>
<div class="quiz-type-section">
<span class="quiz-section-label">Question types</span>
<div class="quiz-type-grid" id="quiz-type-grid">
<label class="quiz-chip"><input type="checkbox" name="quiz-type" value="correct-answer" checked /><span>Multiple choice</span></label>
<label class="quiz-chip"><input type="checkbox" name="quiz-type" value="true-false" /><span>True / false</span></label>
<label class="quiz-chip"><input type="checkbox" name="quiz-type" value="complete" /><span>Fill in the blank</span></label>
<label class="quiz-chip"><input type="checkbox" name="quiz-type" value="scientific-term" /><span>Scientific term</span></label>
<label class="quiz-chip"><input type="checkbox" name="quiz-type" value="short-answer" /><span>Short answer</span></label>
<label class="quiz-chip"><input type="checkbox" name="quiz-type" value="matching" /><span>Matching</span></label>
</div>
</div>
<div class="quiz-count-section">
<span class="quiz-section-label">Number of questions</span>
<div id="quiz-count-row" class="quiz-count-row">
<button type="button" class="quiz-count-btn" data-count="5">5</button>
<button type="button" class="quiz-count-btn" data-count="10">10</button>
<button type="button" class="quiz-count-btn active" data-count="20">20</button>
<button type="button" class="quiz-count-btn" data-count="30">30</button>
<button type="button" class="quiz-count-btn quiz-count-ai" data-count="ai">AI picks</button>
</div>
</div>
<button type="button" id="quiz-generate" class="primary-btn clean-hover quiz-generate-btn nexus-btn-primary-gradient">Generate quiz</button>
</div>
<div id="quiz-loading" class="quiz-loading hidden">
<div class="quiz-loading-atom assistant-atom atom-3d" aria-hidden="true">
<span class="atom-nucleus"></span>
<span class="atom-ring ring-x"><span class="atom-electron"></span></span>
<span class="atom-ring ring-y"><span class="atom-electron"></span></span>
</div>
<p>Generating your quiz…</p>
</div>
<div id="quiz-display" class="quiz-display hidden"></div>
<div id="quiz-results" class="quiz-results hidden"></div>
<div class="quiz-modal-actions">
<button type="button" id="quiz-submit" class="primary-btn clean-hover hidden nexus-btn-primary-gradient">Submit answers</button>
<button type="button" id="quiz-retry" class="secondary-btn clean-hover hidden">Try again</button>
</div>
</div>
</div>
<div id="modal-delete-account" class="modal" role="dialog" aria-modal="true" aria-labelledby="modal-delete-account-title">
<div class="modal-backdrop"></div>
<div class="modal-card glass modal-delete-account-card">
<h2 id="modal-delete-account-title">Delete account permanently</h2>
<p class="modal-note">
This permanently deletes your profile, conversations, and saved data. This action cannot be undone.
</p>
<label for="modal-delete-account-input" class="modal-note">
Type <strong>DELETE MY ACCOUNT</strong> to confirm:
</label>
<input
type="text"
id="modal-delete-account-input"
class="modal-input"
placeholder="DELETE MY ACCOUNT"
autocomplete="off"
spellcheck="false"
/>
<p id="modal-delete-account-error" class="modal-note hidden" role="alert"></p>
<div class="modal-actions">
<button type="button" id="modal-delete-account-cancel" class="secondary-btn clean-hover">Cancel</button>
<button type="button" id="modal-delete-account-confirm" class="danger-btn clean-hover" disabled>Delete account</button>
</div>
</div>
</div>
<button type="button" id="admin-monitor-fab" class="admin-monitor-fab hidden" aria-label="Open admin monitor" title="Developer monitor">◆</button>
<div id="admin-monitor" class="admin-monitor admin-monitor--fabbed hidden" aria-label="Admin Monitor">
<div id="admin-monitor-handle" class="admin-monitor-handle">
<span>Admin Monitor</span>
<button type="button" id="admin-monitor-close" aria-label="Close monitor">×</button>
</div>
<div class="admin-monitor-body">
<div class="admin-stat"><span>Thinking Timer</span><strong id="admin-thinking-seconds">0.00s</strong></div>
<div class="admin-stat"><span>File Status</span><strong id="admin-file-status">N/A</strong></div>
<div class="admin-stat"><span>File Error</span><strong id="admin-file-error">-</strong></div>
<div class="admin-stat"><span>Active Users</span><strong id="admin-active-users">0</strong></div>
<div class="admin-stat"><span>Total Users</span><strong id="admin-total-users">0</strong></div>
<div class="admin-stat"><span>API Latency</span><strong id="admin-api-latency">0ms</strong></div>
<div class="admin-stat"><span>Quiz Submit</span><strong id="admin-quiz-submit">idle</strong></div>
<div class="admin-stat"><span>KV Storage</span><strong id="admin-kv-status">unknown</strong></div>
<div class="admin-stat"><span>KV Error</span><strong id="admin-kv-error">-</strong></div>
<div class="admin-stat admin-blob-block">
<span>Blob (client)</span>
<strong id="admin-blob-client-error" class="admin-blob-client-error" title="">-</strong>
</div>
<div class="admin-stat"><span>Gemini last err</span><strong id="admin-gemini-error" class="admin-gemini-error" title="">-</strong></div>
<div class="admin-stat admin-stat-wide"><span>Gemini Files API</span><strong id="admin-gemini-compress" class="admin-gemini-compress" title="">-</strong></div>
<div class="admin-stat"><span>Secret Key</span><strong id="admin-secret-key-status">unknown</strong></div>
<div class="admin-stat admin-tts-block">
<span>Gemini TTS</span>
<strong id="admin-tts-status">idle</strong>
<span class="admin-tts-error-label">Last error:</span>
<strong id="admin-tts-error" class="admin-tts-error" title="">-</strong>
<span class="admin-tts-error-label">Detail:</span>
<strong id="admin-tts-detail" class="admin-tts-error" title="">-</strong>
</div>
<div id="admin-activity-feed" class="admin-activity-feed"></div>
</div>
<div id="admin-monitor-resize" class="admin-monitor-resize" aria-hidden="true"></div>
</div>
</div>
<div id="account-created-overlay" class="account-created-overlay hidden" aria-live="polite" aria-hidden="true">
<div class="account-created-inner">
<div class="account-created-mark-wrap">
<svg class="account-created-svg" viewBox="0 0 120 120" aria-hidden="true">
<circle class="account-created-circle" cx="60" cy="60" r="44" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" />
<path class="account-created-check" fill="none" stroke="currentColor" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round" d="M38 62 L54 78 L86 46" />
</svg>
</div>
<p class="account-created-title">Account created</p>
</div>
</div>
<div id="nexus-theme-transition" class="nexus-theme-transition" aria-hidden="true">
<div class="nexus-theme-transition__bg" aria-hidden="true"></div>
<div class="nexus-theme-transition__orb" aria-hidden="true">
<svg class="nexus-theme-transition__svg" viewBox="0 0 120 120" aria-hidden="true">
<g class="nexus-theme-transition__sun" fill="none" stroke-width="3" stroke-linecap="round">
<circle cx="60" cy="60" r="18" fill="#fff" stroke="#0f172a" />
<path stroke="#0f172a" d="M60 28v-10M60 102v-10M28 60h-10M102 60h-10M38 38l-7-7M89 89l-7-7M38 82l-7 7M89 31l-7 7" />
</g>
<path
class="nexus-theme-transition__moon"
fill="#f8fafc"
stroke="#0f172a"
stroke-width="2.5"
d="M72 38a22 22 0 1 0 0 44 18 18 0 1 1 0-44z"
/>
</svg>
</div>
</div>
<script src="/nexus-subpage.js"></script>
<script src="animations.js"></script>
<script src="app.js"></script>
</body>
</html>
|