Add 1 files
Browse files- index.html +365 -593
index.html
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
-
<title>
|
| 7 |
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700&family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
|
| 8 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
| 9 |
<style>
|
|
@@ -14,6 +14,8 @@
|
|
| 14 |
--sg-yellow: #FFD700;
|
| 15 |
--sg-white: #F5F5F5;
|
| 16 |
--sg-gray: #555555;
|
|
|
|
|
|
|
| 17 |
}
|
| 18 |
|
| 19 |
* {
|
|
@@ -38,7 +40,7 @@
|
|
| 38 |
backdrop-filter: blur(5px);
|
| 39 |
min-height: 100vh;
|
| 40 |
width: 100%;
|
| 41 |
-
background-color: rgba(255, 255, 255, 0.
|
| 42 |
}
|
| 43 |
|
| 44 |
.container {
|
|
@@ -159,6 +161,46 @@
|
|
| 159 |
font-family: 'Montserrat', sans-serif;
|
| 160 |
}
|
| 161 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 162 |
.start-btn {
|
| 163 |
background-color: var(--sg-green);
|
| 164 |
color: white;
|
|
@@ -201,7 +243,7 @@
|
|
| 201 |
.scenario-content {
|
| 202 |
display: flex;
|
| 203 |
flex-direction: column;
|
| 204 |
-
gap:
|
| 205 |
}
|
| 206 |
|
| 207 |
.scenario-text {
|
|
@@ -209,10 +251,23 @@
|
|
| 209 |
font-size: 1.1rem;
|
| 210 |
}
|
| 211 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 212 |
.options-container {
|
| 213 |
display: grid;
|
| 214 |
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
| 215 |
-
gap:
|
| 216 |
margin-top: 1rem;
|
| 217 |
}
|
| 218 |
|
|
@@ -225,7 +280,7 @@
|
|
| 225 |
transition: all 0.3s ease;
|
| 226 |
display: flex;
|
| 227 |
flex-direction: column;
|
| 228 |
-
gap: 0.
|
| 229 |
}
|
| 230 |
|
| 231 |
.option-card:hover {
|
|
@@ -250,6 +305,41 @@
|
|
| 250 |
.option-description {
|
| 251 |
font-size: 0.9rem;
|
| 252 |
color: var(--sg-gray);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 253 |
}
|
| 254 |
|
| 255 |
/* Result Screen */
|
|
@@ -272,11 +362,11 @@
|
|
| 272 |
}
|
| 273 |
|
| 274 |
.negative-result {
|
| 275 |
-
border-left: 5px solid
|
| 276 |
}
|
| 277 |
|
| 278 |
.neutral-result {
|
| 279 |
-
border-left: 5px solid
|
| 280 |
}
|
| 281 |
|
| 282 |
.result-title {
|
|
@@ -292,33 +382,108 @@
|
|
| 292 |
font-size: 1.2rem;
|
| 293 |
}
|
| 294 |
|
| 295 |
-
.impact-
|
| 296 |
-
|
|
|
|
|
|
|
|
|
|
| 297 |
}
|
| 298 |
|
| 299 |
-
.
|
| 300 |
display: flex;
|
| 301 |
-
|
| 302 |
-
|
| 303 |
-
|
| 304 |
-
color: var(--sg-gray);
|
| 305 |
}
|
| 306 |
|
| 307 |
-
.
|
| 308 |
-
|
| 309 |
-
|
| 310 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 311 |
position: relative;
|
| 312 |
-
overflow: hidden;
|
| 313 |
}
|
| 314 |
|
| 315 |
-
.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 316 |
position: absolute;
|
| 317 |
-
|
| 318 |
-
|
| 319 |
-
|
| 320 |
-
|
| 321 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 322 |
}
|
| 323 |
|
| 324 |
.next-btn {
|
|
@@ -331,6 +496,9 @@
|
|
| 331 |
cursor: pointer;
|
| 332 |
transition: all 0.3s ease;
|
| 333 |
font-weight: 500;
|
|
|
|
|
|
|
|
|
|
| 334 |
}
|
| 335 |
|
| 336 |
.next-btn:hover {
|
|
@@ -353,6 +521,45 @@
|
|
| 353 |
animation: bounce 2s infinite;
|
| 354 |
}
|
| 355 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 356 |
.certificate-btn {
|
| 357 |
background-color: var(--sg-green);
|
| 358 |
color: white;
|
|
@@ -374,6 +581,72 @@
|
|
| 374 |
transform: translateY(-3px);
|
| 375 |
}
|
| 376 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 377 |
/* Animations */
|
| 378 |
@keyframes fadeIn {
|
| 379 |
from { opacity: 0; }
|
|
@@ -403,6 +676,11 @@
|
|
| 403 |
60% { transform: translateY(-15px); }
|
| 404 |
}
|
| 405 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 406 |
/* Responsive */
|
| 407 |
@media (max-width: 768px) {
|
| 408 |
.container {
|
|
@@ -424,12 +702,45 @@
|
|
| 424 |
justify-content: center;
|
| 425 |
}
|
| 426 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 427 |
.options-container {
|
| 428 |
grid-template-columns: 1fr;
|
| 429 |
}
|
| 430 |
|
| 431 |
-
.
|
| 432 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 433 |
}
|
| 434 |
}
|
| 435 |
|
|
@@ -524,6 +835,29 @@
|
|
| 524 |
border-bottom: 2px solid var(--sg-blue);
|
| 525 |
}
|
| 526 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 527 |
.certificate-details {
|
| 528 |
display: flex;
|
| 529 |
justify-content: space-between;
|
|
@@ -552,44 +886,6 @@
|
|
| 552 |
text-align: center;
|
| 553 |
font-weight: 600;
|
| 554 |
}
|
| 555 |
-
|
| 556 |
-
.badge-collection {
|
| 557 |
-
display: flex;
|
| 558 |
-
flex-wrap: wrap;
|
| 559 |
-
gap: 1rem;
|
| 560 |
-
justify-content: center;
|
| 561 |
-
margin: 2rem 0;
|
| 562 |
-
}
|
| 563 |
-
|
| 564 |
-
.badge {
|
| 565 |
-
width: 80px;
|
| 566 |
-
height: 80px;
|
| 567 |
-
border-radius: 50%;
|
| 568 |
-
background-color: var(--sg-white);
|
| 569 |
-
display: flex;
|
| 570 |
-
justify-content: center;
|
| 571 |
-
align-items: center;
|
| 572 |
-
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
|
| 573 |
-
position: relative;
|
| 574 |
-
transition: all 0.3s ease;
|
| 575 |
-
}
|
| 576 |
-
|
| 577 |
-
.badge i {
|
| 578 |
-
font-size: 2.5rem;
|
| 579 |
-
color: var(--sg-green);
|
| 580 |
-
}
|
| 581 |
-
|
| 582 |
-
.badge:hover {
|
| 583 |
-
transform: scale(1.1);
|
| 584 |
-
}
|
| 585 |
-
|
| 586 |
-
.badge-completed {
|
| 587 |
-
background-color: var(--sg-yellow);
|
| 588 |
-
}
|
| 589 |
-
|
| 590 |
-
.badge-completed i {
|
| 591 |
-
color: white;
|
| 592 |
-
}
|
| 593 |
</style>
|
| 594 |
</head>
|
| 595 |
<body>
|
|
@@ -597,13 +893,13 @@
|
|
| 597 |
<div class="container">
|
| 598 |
<header>
|
| 599 |
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Saint-Gobain-Logo.svg/2560px-Saint-Gobain-Logo.svg.png" alt="Saint-Gobain Logo" class="logo">
|
| 600 |
-
<h1>
|
| 601 |
-
<p class="subtitle">Saint-Gobain Sustainability Challenge</p>
|
| 602 |
</header>
|
| 603 |
|
| 604 |
<div class="game-container">
|
| 605 |
<div class="game-header">
|
| 606 |
-
<div class="game-title">Sustainability
|
| 607 |
<div class="progress-container">
|
| 608 |
<div class="progress-text">Progress: <span id="progress-text">0</span>%</div>
|
| 609 |
<div class="progress-bar">
|
|
@@ -617,529 +913,5 @@
|
|
| 617 |
<div class="welcome-screen" id="welcome-screen">
|
| 618 |
<i class="fas fa-leaf welcome-icon"></i>
|
| 619 |
<div class="welcome-text">
|
| 620 |
-
<
|
| 621 |
-
<p>As a global leader in sustainable construction, Saint-Gobain is committed to reducing our environmental footprint. This interactive game will help you understand our impact and learn how you can contribute to our sustainability goals in your daily work.</p>
|
| 622 |
-
<p>Complete the challenges to earn badges and discover how small actions can make a big difference!</p>
|
| 623 |
-
</div>
|
| 624 |
-
<button class="start-btn" id="start-btn">
|
| 625 |
-
<i class="fas fa-play"></i> Begin the Journey
|
| 626 |
-
</button>
|
| 627 |
-
</div>
|
| 628 |
-
|
| 629 |
-
<!-- Scenario Screen -->
|
| 630 |
-
<div class="scenario-screen" id="scenario-screen">
|
| 631 |
-
<div class="scenario-header">
|
| 632 |
-
<i class="fas fa-question-circle scenario-icon"></i>
|
| 633 |
-
<h2 id="scenario-title">Scenario Title</h2>
|
| 634 |
-
</div>
|
| 635 |
-
|
| 636 |
-
<div class="scenario-content">
|
| 637 |
-
<p class="scenario-text" id="scenario-text">Scenario description goes here...</p>
|
| 638 |
-
|
| 639 |
-
<div class="options-container" id="options-container">
|
| 640 |
-
<!-- Options will be inserted here by JavaScript -->
|
| 641 |
-
</div>
|
| 642 |
-
</div>
|
| 643 |
-
</div>
|
| 644 |
-
|
| 645 |
-
<!-- Result Screen -->
|
| 646 |
-
<div class="result-screen" id="result-screen">
|
| 647 |
-
<div class="scenario-header">
|
| 648 |
-
<i class="fas fa-chart-line scenario-icon"></i>
|
| 649 |
-
<h2>Impact Analysis</h2>
|
| 650 |
-
</div>
|
| 651 |
-
|
| 652 |
-
<div class="result-content">
|
| 653 |
-
<div class="result-card" id="result-card">
|
| 654 |
-
<h3 class="result-title">
|
| 655 |
-
<i class="fas fa-check-circle result-icon"></i>
|
| 656 |
-
<span id="result-title">Result Title</span>
|
| 657 |
-
</h3>
|
| 658 |
-
<p id="result-description">Result description goes here...</p>
|
| 659 |
-
|
| 660 |
-
<div class="impact-meter">
|
| 661 |
-
<div class="impact-label">
|
| 662 |
-
<span>Positive</span>
|
| 663 |
-
<span>Neutral</span>
|
| 664 |
-
<span>Negative</span>
|
| 665 |
-
</div>
|
| 666 |
-
<div class="impact-bar">
|
| 667 |
-
<div class="impact-pointer" id="impact-pointer"></div>
|
| 668 |
-
</div>
|
| 669 |
-
</div>
|
| 670 |
-
</div>
|
| 671 |
-
|
| 672 |
-
<div class="result-card" id="saint-gobain-info">
|
| 673 |
-
<h3 class="result-title">
|
| 674 |
-
<i class="fas fa-building result-icon"></i>
|
| 675 |
-
Saint-Gobain's Commitment
|
| 676 |
-
</h3>
|
| 677 |
-
<p id="saint-gobain-text">Information about Saint-Gobain's initiatives related to this scenario...</p>
|
| 678 |
-
</div>
|
| 679 |
-
|
| 680 |
-
<div class="result-card" id="learn-more">
|
| 681 |
-
<h3 class="result-title">
|
| 682 |
-
<i class="fas fa-lightbulb result-icon"></i>
|
| 683 |
-
How You Can Make a Difference
|
| 684 |
-
</h3>
|
| 685 |
-
<ul id="action-items">
|
| 686 |
-
<!-- Action items will be inserted here -->
|
| 687 |
-
</ul>
|
| 688 |
-
</div>
|
| 689 |
-
|
| 690 |
-
<button class="next-btn" id="next-btn">
|
| 691 |
-
Continue <i class="fas fa-arrow-right"></i>
|
| 692 |
-
</button>
|
| 693 |
-
</div>
|
| 694 |
-
</div>
|
| 695 |
-
|
| 696 |
-
<!-- Game Complete Screen -->
|
| 697 |
-
<div class="game-complete-screen" id="game-complete-screen">
|
| 698 |
-
<div class="game-complete-content">
|
| 699 |
-
<i class="fas fa-trophy trophy-icon"></i>
|
| 700 |
-
<h2>Congratulations!</h2>
|
| 701 |
-
<p>You've completed the Saint-Gobain Sustainability Challenge. Your knowledge and commitment to sustainable practices will help us achieve our environmental goals.</p>
|
| 702 |
-
|
| 703 |
-
<div class="badge-collection" id="badge-collection">
|
| 704 |
-
<!-- Badges will be added here -->
|
| 705 |
-
</div>
|
| 706 |
-
|
| 707 |
-
<button class="certificate-btn" id="certificate-btn">
|
| 708 |
-
<i class="fas fa-certificate"></i> View Your Certificate
|
| 709 |
-
</button>
|
| 710 |
-
|
| 711 |
-
<p>Share your achievement with colleagues and continue making sustainable choices in your daily work.</p>
|
| 712 |
-
</div>
|
| 713 |
-
</div>
|
| 714 |
-
</div>
|
| 715 |
-
</div>
|
| 716 |
-
</div>
|
| 717 |
-
|
| 718 |
-
<!-- Certificate Modal -->
|
| 719 |
-
<div class="modal" id="certificate-modal">
|
| 720 |
-
<div class="modal-content">
|
| 721 |
-
<button class="close-modal" id="close-modal">×</button>
|
| 722 |
-
<div class="certificate">
|
| 723 |
-
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Saint-Gobain-Logo.svg/2560px-Saint-Gobain-Logo.svg.png" alt="Saint-Gobain Logo" class="certificate-logo">
|
| 724 |
-
<h3 class="certificate-title">Certificate of Completion</h3>
|
| 725 |
-
<p class="certificate-subtitle">Saint-Gobain Sustainability Challenge</p>
|
| 726 |
-
|
| 727 |
-
<p class="certificate-text">This certificate is awarded to recognize successful completion of the Eco Quest training program and commitment to sustainable practices at Saint-Gobain.</p>
|
| 728 |
-
|
| 729 |
-
<div class="certificate-name" id="certificate-name">Employee Name</div>
|
| 730 |
-
|
| 731 |
-
<p class="certificate-text">By completing this training, you've demonstrated understanding of Saint-Gobain's environmental initiatives and learned practical ways to reduce our ecological footprint in daily operations.</p>
|
| 732 |
-
|
| 733 |
-
<div class="certificate-details">
|
| 734 |
-
<div>Completion Date: <span id="certificate-date"></span></div>
|
| 735 |
-
<div>Score: <span id="certificate-score">100%</span></div>
|
| 736 |
-
</div>
|
| 737 |
-
|
| 738 |
-
<div class="certificate-signature">
|
| 739 |
-
<div>
|
| 740 |
-
<div class="signature-line"></div>
|
| 741 |
-
<div class="signature-name">Benoît Bazin</div>
|
| 742 |
-
<div>CEO, Saint-Gobain</div>
|
| 743 |
-
</div>
|
| 744 |
-
<div>
|
| 745 |
-
<div class="signature-line"></div>
|
| 746 |
-
<div class="signature-name">Claire Pedini</div>
|
| 747 |
-
<div>Senior VP Human Resources</div>
|
| 748 |
-
</div>
|
| 749 |
-
</div>
|
| 750 |
-
</div>
|
| 751 |
-
</div>
|
| 752 |
-
</div>
|
| 753 |
-
</div>
|
| 754 |
-
|
| 755 |
-
<script>
|
| 756 |
-
// Game Data
|
| 757 |
-
const scenarios = [
|
| 758 |
-
{
|
| 759 |
-
id: 1,
|
| 760 |
-
title: "Energy Efficiency in Manufacturing",
|
| 761 |
-
description: "You're overseeing operations at one of Saint-Gobain's manufacturing plants. The plant currently uses conventional energy sources and equipment with average efficiency ratings. What approach will you take to improve energy efficiency?",
|
| 762 |
-
options: [
|
| 763 |
-
{
|
| 764 |
-
title: "Immediate Full Upgrade",
|
| 765 |
-
icon: "fas fa-bolt",
|
| 766 |
-
description: "Invest in complete replacement of all equipment with the most energy-efficient models available",
|
| 767 |
-
result: {
|
| 768 |
-
title: "High Initial Impact",
|
| 769 |
-
description: "While this approach maximizes long-term energy savings, the immediate environmental cost of manufacturing and installing all new equipment is substantial. Saint-Gobain typically favors phased approaches that balance financial and environmental considerations.",
|
| 770 |
-
impact: 30,
|
| 771 |
-
saintGobainInfo: "Saint-Gobain's approach is to set 'Net Zero Carbon' targets with realistic timelines. The company plans to reduce energy consumption by 25% per unit produced by 2030 through phased investments in energy-efficient technologies.",
|
| 772 |
-
actions: [
|
| 773 |
-
"Consider LIFE program guidelines which recommend staged investments",
|
| 774 |
-
"Evaluate return on investment for each equipment category",
|
| 775 |
-
"Explore co-processing opportunities with renewable energy providers",
|
| 776 |
-
"Check SG's internal sustainability assessment tools before large purchases"
|
| 777 |
-
]
|
| 778 |
-
}
|
| 779 |
-
},
|
| 780 |
-
{
|
| 781 |
-
title: "Phased Smart Upgrades",
|
| 782 |
-
icon: "fas fa-calendar-check",
|
| 783 |
-
description: "Implement a staged replacement program focusing first on the least efficient equipment and adding smart controls",
|
| 784 |
-
result: {
|
| 785 |
-
title: "Balanced Sustainable Approach",
|
| 786 |
-
description: "This aligns well with Saint-Gobain's LIFE program methodology. The phased approach allows for optimal capital allocation and minimizes environmental impact from equipment replacement while achieving steady efficiency gains.",
|
| 787 |
-
impact: 80,
|
| 788 |
-
saintGobainInfo: "Saint-Gobain's LIFE (Lean, Inclusive, Green, and Fast) program encourages exactly this approach. Several plants have reduced energy use by 15-20% through careful equipment upgrades combined with operational excellence initiatives.",
|
| 789 |
-
actions: [
|
| 790 |
-
"Use Saint-Gobain's internal energy assessment tools",
|
| 791 |
-
"Participate in the company's energy efficiency workshops",
|
| 792 |
-
"Implement ISO 50001 energy management standards",
|
| 793 |
-
"Engage with the Saint-Gobain Eco-Innovation team for best practices"
|
| 794 |
-
]
|
| 795 |
-
}
|
| 796 |
-
},
|
| 797 |
-
{
|
| 798 |
-
title: "Operational Improvements Only",
|
| 799 |
-
icon: "fas fa-cogs",
|
| 800 |
-
description: "Focus only on optimizing existing operations without new equipment investments",
|
| 801 |
-
result: {
|
| 802 |
-
title: "Limited Long-Term Impact",
|
| 803 |
-
description: "While operational improvements are valuable, they alone won't achieve the transformational energy reductions needed to meet Saint-Gobain's ambitious sustainability targets. Combined approaches yield better results.",
|
| 804 |
-
impact: 50,
|
| 805 |
-
saintGobainInfo: "Saint-Gobain's PERFORM+ operational excellence program has demonstrated that while operational improvements can yield 5-10% energy savings, they're most effective when combined with technological upgrades.",
|
| 806 |
-
actions: [
|
| 807 |
-
"Start with an energy audit through SG's internal programs",
|
| 808 |
-
"Train staff on energy-efficient operational practices",
|
| 809 |
-
"Implement real-time energy monitoring dashboards",
|
| 810 |
-
"Consider small pilot projects for equipment upgrades"
|
| 811 |
-
]
|
| 812 |
-
}
|
| 813 |
-
}
|
| 814 |
-
]
|
| 815 |
-
},
|
| 816 |
-
{
|
| 817 |
-
id: 2,
|
| 818 |
-
title: "Sustainable Construction Materials",
|
| 819 |
-
description: "Your project team is selecting materials for a new commercial construction project. How will you leverage Saint-Gobain's innovation in sustainable materials to minimize environmental impact?",
|
| 820 |
-
options: [
|
| 821 |
-
{
|
| 822 |
-
title: "Traditional Materials",
|
| 823 |
-
icon: "fas fa-hammer",
|
| 824 |
-
description: "Stick with conventional materials that have predictable performance characteristics",
|
| 825 |
-
result: {
|
| 826 |
-
title: "Missed Opportunities",
|
| 827 |
-
description: "This conservative approach misses significant opportunities to reduce the building's lifetime carbon footprint. Saint-Gobain's R&D has developed numerous sustainable alternatives that maintain performance while reducing environmental impact.",
|
| 828 |
-
impact: 20,
|
| 829 |
-
saintGobainInfo: "Saint-Gobain has invested heavily in developing sustainable solutions like low-carbon glass, recycled insulation materials, and energy-efficient gypsum products. The company aims to have 100% of its solutions contributing to sustainability by 2025.",
|
| 830 |
-
actions: [
|
| 831 |
-
"Review the Saint-Gobain Sustainable Construction catalog",
|
| 832 |
-
"Attend product innovation webinars",
|
| 833 |
-
"Consult with SG technical sales specialists",
|
| 834 |
-
"Request lifecycle assessment data for materials"
|
| 835 |
-
]
|
| 836 |
-
}
|
| 837 |
-
},
|
| 838 |
-
{
|
| 839 |
-
title: "Innovative Solutions",
|
| 840 |
-
icon: "fas fa-lightbulb",
|
| 841 |
-
description: "Specify cutting-edge Saint-Gobain materials like carbon-reduced glass and recycled-content insulation",
|
| 842 |
-
result: {
|
| 843 |
-
title: "Leading-Edge Sustainability",
|
| 844 |
-
description: "This approach maximizes the sustainability benefits of the project while supporting Saint-Gobain's innovation ecosystem. Many of these materials qualify for green building certification credits.",
|
| 845 |
-
impact: 90,
|
| 846 |
-
saintGobainInfo: "Saint-Gobain's research centers worldwide focus on developing materials that contribute to low-carbon and circular construction. Recent innovations include Glass PRISM for daylight optimization and CertainTeed AirRenew insulation with formaldehyde reduction.",
|
| 847 |
-
actions: [
|
| 848 |
-
"Use Saint-Gobain's Building Life Cycle Analysis tools",
|
| 849 |
-
"Include EPDs (Environmental Product Declarations) in specifications",
|
| 850 |
-
"Explore material reuse programs",
|
| 851 |
-
"Participate in SG customer sustainability training"
|
| 852 |
-
]
|
| 853 |
-
}
|
| 854 |
-
},
|
| 855 |
-
{
|
| 856 |
-
title: "Mix of Both",
|
| 857 |
-
icon: "fas fa-balance-scale",
|
| 858 |
-
description: "Combine some innovative materials in visible areas with traditional materials elsewhere to balance cost and sustainability",
|
| 859 |
-
result: {
|
| 860 |
-
title: "Moderate Impact Approach",
|
| 861 |
-
description: "This pragmatic approach makes progress on sustainability while managing project constraints. The key is ensuring that the sustainability benefits are realized where they matter most in the building's lifecycle.",
|
| 862 |
-
impact: 60,
|
| 863 |
-
saintGobainInfo: "Saint-Gobain's multicriteria analysis tools can help identify which material substitutions deliver the greatest sustainability benefits for specific project types. Many successful projects have taken a targeted approach to material innovation.",
|
| 864 |
-
actions: [
|
| 865 |
-
"Use SG's material substitution impact calculator",
|
| 866 |
-
"Prioritize high-impact material changes first",
|
| 867 |
-
"Document sustainable choices for certification",
|
| 868 |
-
"Benchmark against similar successful projects"
|
| 869 |
-
]
|
| 870 |
-
}
|
| 871 |
-
}
|
| 872 |
-
]
|
| 873 |
-
},
|
| 874 |
-
{
|
| 875 |
-
id: 3,
|
| 876 |
-
title: "Circular Economy in Operations",
|
| 877 |
-
description: "You're managing waste streams at a production facility. How will you implement Saint-Gobain's circular economy principles to reduce waste and maximize resource efficiency?",
|
| 878 |
-
options: [
|
| 879 |
-
{
|
| 880 |
-
title: "Standard Recycling",
|
| 881 |
-
icon: "fas fa-recycle",
|
| 882 |
-
description: "Implement basic recycling of major waste streams as required by regulations",
|
| 883 |
-
result: {
|
| 884 |
-
title: "Minimum Compliance",
|
| 885 |
-
description: "While this meets basic requirements, it doesn't leverage the full potential of Saint-Gobain's circular economy initiatives. The company has set much more ambitious targets for industrial waste recovery.",
|
| 886 |
-
impact: 40,
|
| 887 |
-
saintGobainInfo: "Saint-Gobain's target is to achieve 100% recovery rate for industrial waste by 2025, going beyond basic recycling. The company has developed specialized processes for gypsum, glass, and insulation recycling.",
|
| 888 |
-
actions: [
|
| 889 |
-
"Review site waste streams with the SG sustainability team",
|
| 890 |
-
"Explore industrial symbiosis opportunities",
|
| 891 |
-
"Investigate closed-loop recycling programs",
|
| 892 |
-
"Benchmark against best-performing SG plants"
|
| 893 |
-
]
|
| 894 |
-
}
|
| 895 |
-
},
|
| 896 |
-
{
|
| 897 |
-
title: "Closed-Loop System",
|
| 898 |
-
icon: "fas fa-infinity",
|
| 899 |
-
description: "Develop a comprehensive closed-loop system that processes and reuses materials throughout the production cycle",
|
| 900 |
-
result: {
|
| 901 |
-
title: "Exemplary Circular Approach",
|
| 902 |
-
description: "This ambitious but achievable approach aligns perfectly with Saint-Gobain's circular economy goals. It may qualify for external recognition and internal excellence awards while delivering cost savings.",
|
| 903 |
-
impact: 95,
|
| 904 |
-
saintGobainInfo: "Several Saint-Gobain plants now operate near-zero-waste facilities through innovative closed-loop systems. The Gypsum business has achieved over 90% waste recovery in some plants by recycling plaster waste directly back into production.",
|
| 905 |
-
actions: [
|
| 906 |
-
"Consult with SG Circular Economy experts",
|
| 907 |
-
"Apply for SG innovation funding",
|
| 908 |
-
"Document cost savings from waste reduction",
|
| 909 |
-
"Train staff in circular economy principles"
|
| 910 |
-
]
|
| 911 |
-
}
|
| 912 |
-
},
|
| 913 |
-
{
|
| 914 |
-
title: "Partial Optimization",
|
| 915 |
-
icon: "fas fa-project-diagram",
|
| 916 |
-
description: "Focus on recycling high-volume waste streams while improving overall material efficiency",
|
| 917 |
-
result: {
|
| 918 |
-
title: "Incremental Improvement",
|
| 919 |
-
description: "This practical approach makes meaningful progress toward circular economy goals while being easier to implement than comprehensive closed-loop systems. It provides a foundation for more advanced initiatives later.",
|
| 920 |
-
impact: 70,
|
| 921 |
-
saintGobainInfo: "Saint-Gobain's circular economy roadmap includes both immediate actions and longer-term transformational projects. Many success stories begin with optimizing major waste streams before expanding to complete material loop closure.",
|
| 922 |
-
actions: [
|
| 923 |
-
"Conduct a detailed waste audit",
|
| 924 |
-
"Identify the 20% of waste streams causing 80% of impact",
|
| 925 |
-
"Implement visual management for waste reduction",
|
| 926 |
-
"Set measurable improvement targets"
|
| 927 |
-
]
|
| 928 |
-
}
|
| 929 |
-
}
|
| 930 |
-
]
|
| 931 |
-
}
|
| 932 |
-
];
|
| 933 |
-
|
| 934 |
-
// Game State
|
| 935 |
-
let currentScenario = 0;
|
| 936 |
-
let score = 0;
|
| 937 |
-
let badgesEarned = [];
|
| 938 |
-
const employeeName = "Saint-Gobain Employee"; // In a real app, this would come from user input or auth system
|
| 939 |
-
|
| 940 |
-
// DOM Elements
|
| 941 |
-
const welcomeScreen = document.getElementById('welcome-screen');
|
| 942 |
-
const scenarioScreen = document.getElementById('scenario-screen');
|
| 943 |
-
const resultScreen = document.getElementById('result-screen');
|
| 944 |
-
const gameCompleteScreen = document.getElementById('game-complete-screen');
|
| 945 |
-
|
| 946 |
-
const scenarioTitle = document.getElementById('scenario-title');
|
| 947 |
-
const scenarioText = document.getElementById('scenario-text');
|
| 948 |
-
const optionsContainer = document.getElementById('options-container');
|
| 949 |
-
|
| 950 |
-
const resultTitle = document.getElementById('result-title');
|
| 951 |
-
const resultDescription = document.getElementById('result-description');
|
| 952 |
-
const saintGobainText = document.getElementById('saint-gobain-text');
|
| 953 |
-
const actionItems = document.getElementById('action-items');
|
| 954 |
-
const impactPointer = document.getElementById('impact-pointer');
|
| 955 |
-
|
| 956 |
-
const progressText = document.getElementById('progress-text');
|
| 957 |
-
const progressBar = document.getElementById('progress-bar');
|
| 958 |
-
|
| 959 |
-
const badgeCollection = document.getElementById('badge-collection');
|
| 960 |
-
const certificateBtn = document.getElementById('certificate-btn');
|
| 961 |
-
const certificateModal = document.getElementById('certificate-modal');
|
| 962 |
-
const closeModal = document.getElementById('close-modal');
|
| 963 |
-
const certificateName = document.getElementById('certificate-name');
|
| 964 |
-
const certificateDate = document.getElementById('certificate-date');
|
| 965 |
-
|
| 966 |
-
// Initialize the game
|
| 967 |
-
document.addEventListener('DOMContentLoaded', () => {
|
| 968 |
-
// Set current date for certificate
|
| 969 |
-
const today = new Date();
|
| 970 |
-
certificateDate.textContent = today.toLocaleDateString('en-US', {
|
| 971 |
-
year: 'numeric',
|
| 972 |
-
month: 'long',
|
| 973 |
-
day: 'numeric'
|
| 974 |
-
});
|
| 975 |
-
|
| 976 |
-
// Set employee name
|
| 977 |
-
certificateName.textContent = employeeName;
|
| 978 |
-
|
| 979 |
-
// Event listeners
|
| 980 |
-
document.getElementById('start-btn').addEventListener('click', startGame);
|
| 981 |
-
document.getElementById('next-btn').addEventListener('click', nextScenario);
|
| 982 |
-
certificateBtn.addEventListener('click', showCertificate);
|
| 983 |
-
closeModal.addEventListener('click', () => {
|
| 984 |
-
certificateModal.style.display = 'none';
|
| 985 |
-
});
|
| 986 |
-
|
| 987 |
-
// Close modal when clicking outside
|
| 988 |
-
window.addEventListener('click', (e) => {
|
| 989 |
-
if (e.target === certificateModal) {
|
| 990 |
-
certificateModal.style.display = 'none';
|
| 991 |
-
}
|
| 992 |
-
});
|
| 993 |
-
});
|
| 994 |
-
|
| 995 |
-
function startGame() {
|
| 996 |
-
welcomeScreen.style.display = 'none';
|
| 997 |
-
loadScenario(currentScenario);
|
| 998 |
-
scenarioScreen.style.display = 'flex';
|
| 999 |
-
updateProgress();
|
| 1000 |
-
}
|
| 1001 |
-
|
| 1002 |
-
function loadScenario(index) {
|
| 1003 |
-
const scenario = scenarios[index];
|
| 1004 |
-
scenarioTitle.textContent = scenario.title;
|
| 1005 |
-
scenarioText.textContent = scenario.description;
|
| 1006 |
-
|
| 1007 |
-
// Clear previous options
|
| 1008 |
-
optionsContainer.innerHTML = '';
|
| 1009 |
-
|
| 1010 |
-
// Add new options
|
| 1011 |
-
scenario.options.forEach((option, i) => {
|
| 1012 |
-
const optionCard = document.createElement('div');
|
| 1013 |
-
optionCard.className = 'option-card';
|
| 1014 |
-
optionCard.innerHTML = `
|
| 1015 |
-
<i class="${option.icon} option-icon"></i>
|
| 1016 |
-
<h3 class="option-title">${option.title}</h3>
|
| 1017 |
-
<p class="option-description">${option.description}</p>
|
| 1018 |
-
`;
|
| 1019 |
-
optionCard.addEventListener('click', () => selectOption(i));
|
| 1020 |
-
optionsContainer.appendChild(optionCard);
|
| 1021 |
-
});
|
| 1022 |
-
}
|
| 1023 |
-
|
| 1024 |
-
function selectOption(optionIndex) {
|
| 1025 |
-
const scenario = scenarios[currentScenario];
|
| 1026 |
-
const option = scenario.options[optionIndex];
|
| 1027 |
-
|
| 1028 |
-
// Calculate score adjustment based on impact
|
| 1029 |
-
score += option.result.impact;
|
| 1030 |
-
|
| 1031 |
-
// Display results
|
| 1032 |
-
resultTitle.textContent = option.result.title;
|
| 1033 |
-
resultDescription.textContent = option.result.description;
|
| 1034 |
-
saintGobainText.textContent = option.result.saintGobainInfo;
|
| 1035 |
-
|
| 1036 |
-
// Set impact pointer position (0-100%)
|
| 1037 |
-
const impactPosition = option.result.impact;
|
| 1038 |
-
impactPointer.style.left = `${impactPosition}%`;
|
| 1039 |
-
|
| 1040 |
-
// Add action items
|
| 1041 |
-
actionItems.innerHTML = '';
|
| 1042 |
-
option.result.actions.forEach(action => {
|
| 1043 |
-
const li = document.createElement('li');
|
| 1044 |
-
li.textContent = action;
|
| 1045 |
-
actionItems.appendChild(li);
|
| 1046 |
-
});
|
| 1047 |
-
|
| 1048 |
-
// Set result card class based on impact
|
| 1049 |
-
const resultCard = document.getElementById('result-card');
|
| 1050 |
-
resultCard.className = 'result-card';
|
| 1051 |
-
if (impactPosition > 70) {
|
| 1052 |
-
resultCard.classList.add('positive-result');
|
| 1053 |
-
} else if (impactPosition < 40) {
|
| 1054 |
-
resultCard.classList.add('negative-result');
|
| 1055 |
-
} else {
|
| 1056 |
-
resultCard.classList.add('neutral-result');
|
| 1057 |
-
}
|
| 1058 |
-
|
| 1059 |
-
// Show result screen
|
| 1060 |
-
scenarioScreen.style.display = 'none';
|
| 1061 |
-
resultScreen.style.display = 'flex';
|
| 1062 |
-
|
| 1063 |
-
// Check if this scenario earns a badge
|
| 1064 |
-
if (impactPosition > 70) {
|
| 1065 |
-
const badge = {
|
| 1066 |
-
scenarioId: scenario.id,
|
| 1067 |
-
title: scenario.title,
|
| 1068 |
-
impact: impactPosition
|
| 1069 |
-
};
|
| 1070 |
-
badgesEarned.push(badge);
|
| 1071 |
-
}
|
| 1072 |
-
}
|
| 1073 |
-
|
| 1074 |
-
function nextScenario() {
|
| 1075 |
-
currentScenario++;
|
| 1076 |
-
|
| 1077 |
-
if (currentScenario < scenarios.length) {
|
| 1078 |
-
// Load next scenario
|
| 1079 |
-
loadScenario(currentScenario);
|
| 1080 |
-
resultScreen.style.display = 'none';
|
| 1081 |
-
scenarioScreen.style.display = 'flex';
|
| 1082 |
-
updateProgress();
|
| 1083 |
-
} else {
|
| 1084 |
-
// Game complete
|
| 1085 |
-
showGameComplete();
|
| 1086 |
-
}
|
| 1087 |
-
}
|
| 1088 |
-
|
| 1089 |
-
function showGameComplete() {
|
| 1090 |
-
resultScreen.style.display = 'none';
|
| 1091 |
-
gameCompleteScreen.style.display = 'flex';
|
| 1092 |
-
updateProgress();
|
| 1093 |
-
|
| 1094 |
-
// Display earned badges
|
| 1095 |
-
badgeCollection.innerHTML = '';
|
| 1096 |
-
|
| 1097 |
-
// Add all possible badges (showing which were earned)
|
| 1098 |
-
scenarios.forEach((scenario, i) => {
|
| 1099 |
-
const badge = document.createElement('div');
|
| 1100 |
-
badge.className = 'badge';
|
| 1101 |
-
|
| 1102 |
-
// Check if this badge was earned
|
| 1103 |
-
const earnedBadge = badgesEarned.find(b => b.scenarioId === scenario.id);
|
| 1104 |
-
if (earnedBadge) {
|
| 1105 |
-
badge.classList.add('badge-completed');
|
| 1106 |
-
}
|
| 1107 |
-
|
| 1108 |
-
// Placeholder for badge icons matching scenario topics
|
| 1109 |
-
let badgeIcon;
|
| 1110 |
-
switch (i) {
|
| 1111 |
-
case 0:
|
| 1112 |
-
badgeIcon = 'fas fa-bolt';
|
| 1113 |
-
break;
|
| 1114 |
-
case 1:
|
| 1115 |
-
badgeIcon = 'fas fa-leaf';
|
| 1116 |
-
break;
|
| 1117 |
-
case 2:
|
| 1118 |
-
badgeIcon = 'fas fa-recycle';
|
| 1119 |
-
break;
|
| 1120 |
-
default:
|
| 1121 |
-
badgeIcon = 'fas fa-star';
|
| 1122 |
-
}
|
| 1123 |
-
|
| 1124 |
-
badge.innerHTML = `<i class="${badgeIcon}"></i>`;
|
| 1125 |
-
badgeCollection.appendChild(badge);
|
| 1126 |
-
});
|
| 1127 |
-
}
|
| 1128 |
-
|
| 1129 |
-
function updateProgress() {
|
| 1130 |
-
const progress = ((currentScenario) / scenarios.length) * 100;
|
| 1131 |
-
progressText.textContent = Math.round(progress);
|
| 1132 |
-
progressBar.style.width = `${progress}%`;
|
| 1133 |
-
}
|
| 1134 |
-
|
| 1135 |
-
function showCertificate() {
|
| 1136 |
-
// Set certificate score based on average impact
|
| 1137 |
-
const avgScore = score / scenarios.length;
|
| 1138 |
-
document.getElementById('certificate-score').textContent = `${Math.round(avgScore)}%`;
|
| 1139 |
-
|
| 1140 |
-
// Show modal
|
| 1141 |
-
certificateModal.style.display = 'flex';
|
| 1142 |
-
}
|
| 1143 |
-
</script>
|
| 1144 |
-
</body>
|
| 1145 |
</html>
|
|
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>EcoQuest: Saint-Gobain Advanced Sustainability Challenge</title>
|
| 7 |
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700&family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
|
| 8 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
| 9 |
<style>
|
|
|
|
| 14 |
--sg-yellow: #FFD700;
|
| 15 |
--sg-white: #F5F5F5;
|
| 16 |
--sg-gray: #555555;
|
| 17 |
+
--sg-red: #D9534F;
|
| 18 |
+
--sg-orange: #F0AD4E;
|
| 19 |
}
|
| 20 |
|
| 21 |
* {
|
|
|
|
| 40 |
backdrop-filter: blur(5px);
|
| 41 |
min-height: 100vh;
|
| 42 |
width: 100%;
|
| 43 |
+
background-color: rgba(255, 255, 255, 0.9);
|
| 44 |
}
|
| 45 |
|
| 46 |
.container {
|
|
|
|
| 161 |
font-family: 'Montserrat', sans-serif;
|
| 162 |
}
|
| 163 |
|
| 164 |
+
.welcome-text p {
|
| 165 |
+
margin-bottom: 1rem;
|
| 166 |
+
text-align: left;
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
.employee-details {
|
| 170 |
+
background-color: #f5f5f5;
|
| 171 |
+
padding: 1.5rem;
|
| 172 |
+
border-radius: 10px;
|
| 173 |
+
width: 100%;
|
| 174 |
+
max-width: 500px;
|
| 175 |
+
text-align: left;
|
| 176 |
+
margin-bottom: 1rem;
|
| 177 |
+
}
|
| 178 |
+
|
| 179 |
+
.employee-details h3 {
|
| 180 |
+
color: var(--sg-blue);
|
| 181 |
+
margin-bottom: 0.5rem;
|
| 182 |
+
font-family: 'Montserrat', sans-serif;
|
| 183 |
+
font-size: 1.1rem;
|
| 184 |
+
}
|
| 185 |
+
|
| 186 |
+
.form-group {
|
| 187 |
+
margin-bottom: 1rem;
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
.form-group label {
|
| 191 |
+
display: block;
|
| 192 |
+
margin-bottom: 0.3rem;
|
| 193 |
+
font-weight: 500;
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
.form-group input, .form-group select {
|
| 197 |
+
width: 100%;
|
| 198 |
+
padding: 0.5rem;
|
| 199 |
+
border: 1px solid #ddd;
|
| 200 |
+
border-radius: 4px;
|
| 201 |
+
font-family: inherit;
|
| 202 |
+
}
|
| 203 |
+
|
| 204 |
.start-btn {
|
| 205 |
background-color: var(--sg-green);
|
| 206 |
color: white;
|
|
|
|
| 243 |
.scenario-content {
|
| 244 |
display: flex;
|
| 245 |
flex-direction: column;
|
| 246 |
+
gap: 1.5rem;
|
| 247 |
}
|
| 248 |
|
| 249 |
.scenario-text {
|
|
|
|
| 251 |
font-size: 1.1rem;
|
| 252 |
}
|
| 253 |
|
| 254 |
+
.scenario-card {
|
| 255 |
+
background-color: #f9f9f9;
|
| 256 |
+
border-radius: 10px;
|
| 257 |
+
padding: 1.5rem;
|
| 258 |
+
margin-bottom: 1rem;
|
| 259 |
+
}
|
| 260 |
+
|
| 261 |
+
.scenario-card h3 {
|
| 262 |
+
color: var(--sg-blue);
|
| 263 |
+
margin-bottom: 0.5rem;
|
| 264 |
+
font-family: 'Montserrat', sans-serif;
|
| 265 |
+
}
|
| 266 |
+
|
| 267 |
.options-container {
|
| 268 |
display: grid;
|
| 269 |
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
| 270 |
+
gap: 1.5rem;
|
| 271 |
margin-top: 1rem;
|
| 272 |
}
|
| 273 |
|
|
|
|
| 280 |
transition: all 0.3s ease;
|
| 281 |
display: flex;
|
| 282 |
flex-direction: column;
|
| 283 |
+
gap: 0.8rem;
|
| 284 |
}
|
| 285 |
|
| 286 |
.option-card:hover {
|
|
|
|
| 305 |
.option-description {
|
| 306 |
font-size: 0.9rem;
|
| 307 |
color: var(--sg-gray);
|
| 308 |
+
margin-bottom: 0.5rem;
|
| 309 |
+
}
|
| 310 |
+
|
| 311 |
+
.option-details {
|
| 312 |
+
font-size: 0.85rem;
|
| 313 |
+
margin-top: 0.5rem;
|
| 314 |
+
padding-top: 0.5rem;
|
| 315 |
+
border-top: 1px dashed #ccc;
|
| 316 |
+
}
|
| 317 |
+
|
| 318 |
+
.details-row {
|
| 319 |
+
display: flex;
|
| 320 |
+
justify-content: space-between;
|
| 321 |
+
margin-bottom: 0.3rem;
|
| 322 |
+
}
|
| 323 |
+
|
| 324 |
+
.details-label {
|
| 325 |
+
font-weight: 500;
|
| 326 |
+
color: var(--sg-gray);
|
| 327 |
+
}
|
| 328 |
+
|
| 329 |
+
.details-value {
|
| 330 |
+
font-weight: 500;
|
| 331 |
+
}
|
| 332 |
+
|
| 333 |
+
.cost-value {
|
| 334 |
+
color: var(--sg-blue);
|
| 335 |
+
}
|
| 336 |
+
|
| 337 |
+
.co2-value {
|
| 338 |
+
color: var(--sg-green);
|
| 339 |
+
}
|
| 340 |
+
|
| 341 |
+
.roi-value {
|
| 342 |
+
color: var(--sg-light-blue);
|
| 343 |
}
|
| 344 |
|
| 345 |
/* Result Screen */
|
|
|
|
| 362 |
}
|
| 363 |
|
| 364 |
.negative-result {
|
| 365 |
+
border-left: 5px solid var(--sg-red);
|
| 366 |
}
|
| 367 |
|
| 368 |
.neutral-result {
|
| 369 |
+
border-left: 5px solid var(--sg-orange);
|
| 370 |
}
|
| 371 |
|
| 372 |
.result-title {
|
|
|
|
| 382 |
font-size: 1.2rem;
|
| 383 |
}
|
| 384 |
|
| 385 |
+
.impact-chart {
|
| 386 |
+
display: flex;
|
| 387 |
+
flex-direction: column;
|
| 388 |
+
gap: 0.8rem;
|
| 389 |
+
margin-top: 1.5rem;
|
| 390 |
}
|
| 391 |
|
| 392 |
+
.chart-container {
|
| 393 |
display: flex;
|
| 394 |
+
height: 200px;
|
| 395 |
+
gap: 0.5rem;
|
| 396 |
+
align-items: flex-end;
|
|
|
|
| 397 |
}
|
| 398 |
|
| 399 |
+
.chart-bar {
|
| 400 |
+
flex: 1;
|
| 401 |
+
display: flex;
|
| 402 |
+
flex-direction: column;
|
| 403 |
+
justify-content: flex-end;
|
| 404 |
+
}
|
| 405 |
+
|
| 406 |
+
.chart-bar-fill {
|
| 407 |
+
height: 0%;
|
| 408 |
+
background-color: var(--sg-green);
|
| 409 |
+
border-radius: 4px 4px 0 0;
|
| 410 |
+
transition: height 1s ease-in-out;
|
| 411 |
position: relative;
|
|
|
|
| 412 |
}
|
| 413 |
|
| 414 |
+
.chart-bar-label {
|
| 415 |
+
text-align: center;
|
| 416 |
+
padding: 0.3rem;
|
| 417 |
+
font-size: 0.8rem;
|
| 418 |
+
font-weight: 500;
|
| 419 |
+
}
|
| 420 |
+
|
| 421 |
+
.chart-bar-value {
|
| 422 |
position: absolute;
|
| 423 |
+
top: -25px;
|
| 424 |
+
left: 0;
|
| 425 |
+
width: 100%;
|
| 426 |
+
text-align: center;
|
| 427 |
+
font-size: 0.75rem;
|
| 428 |
+
font-weight: 600;
|
| 429 |
+
}
|
| 430 |
+
|
| 431 |
+
.chart-legend {
|
| 432 |
+
display: flex;
|
| 433 |
+
justify-content: center;
|
| 434 |
+
gap: 1.5rem;
|
| 435 |
+
margin-top: 0.5rem;
|
| 436 |
+
}
|
| 437 |
+
|
| 438 |
+
.legend-item {
|
| 439 |
+
display: flex;
|
| 440 |
+
align-items: center;
|
| 441 |
+
gap: 0.3rem;
|
| 442 |
+
font-size: 0.8rem;
|
| 443 |
+
}
|
| 444 |
+
|
| 445 |
+
.legend-color {
|
| 446 |
+
width: 12px;
|
| 447 |
+
height: 12px;
|
| 448 |
+
border-radius: 2px;
|
| 449 |
+
}
|
| 450 |
+
|
| 451 |
+
.impact-analysis {
|
| 452 |
+
margin-top: 1.5rem;
|
| 453 |
+
display: grid;
|
| 454 |
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
| 455 |
+
gap: 1rem;
|
| 456 |
+
}
|
| 457 |
+
|
| 458 |
+
.impact-metric {
|
| 459 |
+
background-color: white;
|
| 460 |
+
padding: 1rem;
|
| 461 |
+
border-radius: 8px;
|
| 462 |
+
box-shadow: 0 2px 5px rgba(0,0,0,0.05);
|
| 463 |
+
text-align: center;
|
| 464 |
+
}
|
| 465 |
+
|
| 466 |
+
.metric-value {
|
| 467 |
+
font-size: 1.5rem;
|
| 468 |
+
font-weight: 600;
|
| 469 |
+
margin: 0.5rem 0;
|
| 470 |
+
}
|
| 471 |
+
|
| 472 |
+
.metric-label {
|
| 473 |
+
font-size: 0.8rem;
|
| 474 |
+
color: var(--sg-gray);
|
| 475 |
+
}
|
| 476 |
+
|
| 477 |
+
.metric-positive {
|
| 478 |
+
color: var(--sg-green);
|
| 479 |
+
}
|
| 480 |
+
|
| 481 |
+
.metric-negative {
|
| 482 |
+
color: var(--sg-red);
|
| 483 |
+
}
|
| 484 |
+
|
| 485 |
+
.metric-neutral {
|
| 486 |
+
color: var(--sg-orange);
|
| 487 |
}
|
| 488 |
|
| 489 |
.next-btn {
|
|
|
|
| 496 |
cursor: pointer;
|
| 497 |
transition: all 0.3s ease;
|
| 498 |
font-weight: 500;
|
| 499 |
+
display: flex;
|
| 500 |
+
align-items: center;
|
| 501 |
+
gap: 0.5rem;
|
| 502 |
}
|
| 503 |
|
| 504 |
.next-btn:hover {
|
|
|
|
| 521 |
animation: bounce 2s infinite;
|
| 522 |
}
|
| 523 |
|
| 524 |
+
.score-summary {
|
| 525 |
+
background-color: #f5f5f5;
|
| 526 |
+
padding: 1.5rem;
|
| 527 |
+
border-radius: 10px;
|
| 528 |
+
width: 100%;
|
| 529 |
+
max-width: 600px;
|
| 530 |
+
margin-bottom: 1rem;
|
| 531 |
+
}
|
| 532 |
+
|
| 533 |
+
.score-metric {
|
| 534 |
+
display: flex;
|
| 535 |
+
justify-content: space-between;
|
| 536 |
+
margin-bottom: 0.8rem;
|
| 537 |
+
padding-bottom: 0.8rem;
|
| 538 |
+
border-bottom: 1px solid #e0e0e0;
|
| 539 |
+
}
|
| 540 |
+
|
| 541 |
+
.score-metric:last-child {
|
| 542 |
+
border-bottom: none;
|
| 543 |
+
margin-bottom: 0;
|
| 544 |
+
padding-bottom: 0;
|
| 545 |
+
}
|
| 546 |
+
|
| 547 |
+
.score-label {
|
| 548 |
+
font-weight: 500;
|
| 549 |
+
}
|
| 550 |
+
|
| 551 |
+
.score-value {
|
| 552 |
+
font-weight: 600;
|
| 553 |
+
}
|
| 554 |
+
|
| 555 |
+
.total-score {
|
| 556 |
+
font-size: 1.3rem;
|
| 557 |
+
color: var(--sg-blue);
|
| 558 |
+
margin-top: 1rem;
|
| 559 |
+
padding-top: 1rem;
|
| 560 |
+
border-top: 2px solid var(--sg-blue);
|
| 561 |
+
}
|
| 562 |
+
|
| 563 |
.certificate-btn {
|
| 564 |
background-color: var(--sg-green);
|
| 565 |
color: white;
|
|
|
|
| 581 |
transform: translateY(-3px);
|
| 582 |
}
|
| 583 |
|
| 584 |
+
.badge-collection {
|
| 585 |
+
display: flex;
|
| 586 |
+
flex-wrap: wrap;
|
| 587 |
+
gap: 1.5rem;
|
| 588 |
+
justify-content: center;
|
| 589 |
+
margin: 2rem 0;
|
| 590 |
+
max-width: 800px;
|
| 591 |
+
}
|
| 592 |
+
|
| 593 |
+
.badge {
|
| 594 |
+
width: 100px;
|
| 595 |
+
height: 120px;
|
| 596 |
+
display: flex;
|
| 597 |
+
flex-direction: column;
|
| 598 |
+
align-items: center;
|
| 599 |
+
justify-content: center;
|
| 600 |
+
gap: 0.5rem;
|
| 601 |
+
padding: 1rem;
|
| 602 |
+
border-radius: 10px;
|
| 603 |
+
background-color: var(--sg-white);
|
| 604 |
+
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
|
| 605 |
+
position: relative;
|
| 606 |
+
transition: all 0.3s ease;
|
| 607 |
+
}
|
| 608 |
+
|
| 609 |
+
.badge i {
|
| 610 |
+
font-size: 2.5rem;
|
| 611 |
+
color: var(--sg-green);
|
| 612 |
+
}
|
| 613 |
+
|
| 614 |
+
.badge:hover {
|
| 615 |
+
transform: translateY(-5px);
|
| 616 |
+
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
|
| 617 |
+
}
|
| 618 |
+
|
| 619 |
+
.badge-completed {
|
| 620 |
+
background-color: var(--sg-yellow);
|
| 621 |
+
}
|
| 622 |
+
|
| 623 |
+
.badge-completed i {
|
| 624 |
+
color: white;
|
| 625 |
+
}
|
| 626 |
+
|
| 627 |
+
.badge-title {
|
| 628 |
+
font-size: 0.7rem;
|
| 629 |
+
font-weight: 600;
|
| 630 |
+
text-align: center;
|
| 631 |
+
color: var(--sg-gray);
|
| 632 |
+
}
|
| 633 |
+
|
| 634 |
+
.badge-score {
|
| 635 |
+
position: absolute;
|
| 636 |
+
top: -8px;
|
| 637 |
+
right: -8px;
|
| 638 |
+
background-color: var(--sg-blue);
|
| 639 |
+
color: white;
|
| 640 |
+
width: 25px;
|
| 641 |
+
height: 25px;
|
| 642 |
+
border-radius: 50%;
|
| 643 |
+
display: flex;
|
| 644 |
+
align-items: center;
|
| 645 |
+
justify-content: center;
|
| 646 |
+
font-size: 0.7rem;
|
| 647 |
+
font-weight: 600;
|
| 648 |
+
}
|
| 649 |
+
|
| 650 |
/* Animations */
|
| 651 |
@keyframes fadeIn {
|
| 652 |
from { opacity: 0; }
|
|
|
|
| 676 |
60% { transform: translateY(-15px); }
|
| 677 |
}
|
| 678 |
|
| 679 |
+
@keyframes grow {
|
| 680 |
+
from { height: 0%; }
|
| 681 |
+
to { height: var(--target-height); }
|
| 682 |
+
}
|
| 683 |
+
|
| 684 |
/* Responsive */
|
| 685 |
@media (max-width: 768px) {
|
| 686 |
.container {
|
|
|
|
| 702 |
justify-content: center;
|
| 703 |
}
|
| 704 |
|
| 705 |
+
.game-content {
|
| 706 |
+
padding: 1.5rem;
|
| 707 |
+
}
|
| 708 |
+
|
| 709 |
.options-container {
|
| 710 |
grid-template-columns: 1fr;
|
| 711 |
}
|
| 712 |
|
| 713 |
+
.impact-analysis {
|
| 714 |
+
grid-template-columns: 1fr 1fr;
|
| 715 |
+
}
|
| 716 |
+
|
| 717 |
+
.badge {
|
| 718 |
+
width: 80px;
|
| 719 |
+
height: 100px;
|
| 720 |
+
}
|
| 721 |
+
|
| 722 |
+
.badge i {
|
| 723 |
+
font-size: 2rem;
|
| 724 |
+
}
|
| 725 |
+
}
|
| 726 |
+
|
| 727 |
+
@media (max-width: 480px) {
|
| 728 |
+
.impact-analysis {
|
| 729 |
+
grid-template-columns: 1fr;
|
| 730 |
+
}
|
| 731 |
+
|
| 732 |
+
.badge-collection {
|
| 733 |
+
gap: 1rem;
|
| 734 |
+
}
|
| 735 |
+
|
| 736 |
+
.badge {
|
| 737 |
+
width: 70px;
|
| 738 |
+
height: 90px;
|
| 739 |
+
padding: 0.5rem;
|
| 740 |
+
}
|
| 741 |
+
|
| 742 |
+
.badge i {
|
| 743 |
+
font-size: 1.5rem;
|
| 744 |
}
|
| 745 |
}
|
| 746 |
|
|
|
|
| 835 |
border-bottom: 2px solid var(--sg-blue);
|
| 836 |
}
|
| 837 |
|
| 838 |
+
.performance-metrics {
|
| 839 |
+
display: grid;
|
| 840 |
+
grid-template-columns: repeat(3, 1fr);
|
| 841 |
+
gap: 1rem;
|
| 842 |
+
margin: 2rem 0;
|
| 843 |
+
}
|
| 844 |
+
|
| 845 |
+
.certificate-metric {
|
| 846 |
+
padding: 1rem;
|
| 847 |
+
}
|
| 848 |
+
|
| 849 |
+
.metric-number {
|
| 850 |
+
font-size: 1.8rem;
|
| 851 |
+
font-weight: 700;
|
| 852 |
+
color: var(--sg-blue);
|
| 853 |
+
margin-bottom: 0.3rem;
|
| 854 |
+
}
|
| 855 |
+
|
| 856 |
+
.metric-description {
|
| 857 |
+
font-size: 0.9rem;
|
| 858 |
+
color: var(--sg-gray);
|
| 859 |
+
}
|
| 860 |
+
|
| 861 |
.certificate-details {
|
| 862 |
display: flex;
|
| 863 |
justify-content: space-between;
|
|
|
|
| 886 |
text-align: center;
|
| 887 |
font-weight: 600;
|
| 888 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 889 |
</style>
|
| 890 |
</head>
|
| 891 |
<body>
|
|
|
|
| 893 |
<div class="container">
|
| 894 |
<header>
|
| 895 |
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Saint-Gobain-Logo.svg/2560px-Saint-Gobain-Logo.svg.png" alt="Saint-Gobain Logo" class="logo">
|
| 896 |
+
<h1>EcoQuest</h1>
|
| 897 |
+
<p class="subtitle">Saint-Gobain Advanced Sustainability Challenge</p>
|
| 898 |
</header>
|
| 899 |
|
| 900 |
<div class="game-container">
|
| 901 |
<div class="game-header">
|
| 902 |
+
<div class="game-title">Sustainability Decision Simulator</div>
|
| 903 |
<div class="progress-container">
|
| 904 |
<div class="progress-text">Progress: <span id="progress-text">0</span>%</div>
|
| 905 |
<div class="progress-bar">
|
|
|
|
| 913 |
<div class="welcome-screen" id="welcome-screen">
|
| 914 |
<i class="fas fa-leaf welcome-icon"></i>
|
| 915 |
<div class="welcome-text">
|
| 916 |
+
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 917 |
</html>
|