<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Power of Forgiveness - Student Response Visualization</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Arial', sans-serif;
background: linear-gradient(135deg, #0f0f23 0%, #1a1a3a 50%, #2d2d5f 100%);
min-height: 100vh;
color: white;
overflow-x: hidden;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
}
.header {
text-align: center;
margin-bottom: 3rem;
position: relative;
}
.title {
font-size: 3rem;
font-weight: bold;
background: linear-gradient(45deg, #ffd700, #ff6b6b, #4ecdc4);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 1rem;
animation: glow 2s ease-in-out infinite alternate;
}
.subtitle {
font-size: 1.3rem;
color: #b8b8d1;
margin-bottom: 0.5rem;
}
.impact-stat {
font-size: 2rem;
color: #4ecdc4;
font-weight: bold;
animation: pulse 2s infinite;
}
@keyframes glow {
from { filter: drop-shadow(0 0 10px rgba(255, 215, 0, 0.5)); }
to { filter: drop-shadow(0 0 20px rgba(255, 215, 0, 0.8)); }
}
@keyframes pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.05); }
}
.visualization-container {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 3rem;
margin-bottom: 3rem;
}
.chart-section {
background: rgba(255, 255, 255, 0.1);
border-radius: 20px;
padding: 2rem;
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.2);
position: relative;
overflow: hidden;
}
.chart-section::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
animation: shimmer 3s infinite;
}
@keyframes shimmer {
0% { left: -100%; }
100% { left: 100%; }
}
.response-bars {
display: flex;
flex-direction: column;
gap: 1rem;
height: 400px;
justify-content: space-between;
}
.response-item {
display: flex;
align-items: center;
gap: 1rem;
opacity: 0;
animation: slideIn 1s ease-out forwards;
}
.response-item:nth-child(1) { animation-delay: 0.2s; }
.response-item:nth-child(2) { animation-delay: 0.4s; }
.response-item:nth-child(3) { animation-delay: 0.6s; }
.response-item:nth-child(4) { animation-delay: 0.8s; }
.response-item:nth-child(5) { animation-delay: 1s; }
@keyframes slideIn {
from {
opacity: 0;
transform: translateX(-50px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
.response-label {
min-width: 140px;
font-weight: bold;
text-align: right;
}
.bar-container {
flex: 1;
height: 50px;
background: rgba(255, 255, 255, 0.1);
border-radius: 25px;
overflow: hidden;
position: relative;
}
.bar {
height: 100%;
border-radius: 25px;
position: relative;
overflow: hidden;
animation: fillBar 2s ease-out forwards;
transform-origin: left;
}
@keyframes fillBar {
from { width: 0; }
to { width: var(--width); }
}
.bar::after {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
animation: barShimmer 2s infinite;
}
@keyframes barShimmer {
0% { left: -100%; }
100% { left: 100%; }
}
.strongly-agree {
background: linear-gradient(45deg, #ff6b6b, #ffd700);
--width: 41.2%;
}
.agree {
background: linear-gradient(45deg, #4ecdc4, #45b7d1);
--width: 36.2%;
}
.neutral {
background: linear-gradient(45deg, #95a5a6, #bdc3c7);
--width: 18.6%;
}
.disagree {
background: linear-gradient(45deg, #e74c3c, #c0392b);
--width: 2.1%;
}
.strongly-disagree {
background: linear-gradient(45deg, #8e44ad, #9b59b6);
--width: 1.9%;
}
.percentage {
min-width: 60px;
font-size: 1.1rem;
font-weight: bold;
color: #ffd700;
}
.circular-progress {
position: relative;
width: 300px;
height: 300px;
margin: 0 auto;
}
.progress-ring {
transform: rotate(-90deg);
}
.progress-circle {
fill: none;
stroke-width: 20;
stroke-linecap: round;
}
.progress-bg {
stroke: rgba(255, 255, 255, 0.1);
}
.progress-bar {
stroke: url(#gradient);
stroke-dasharray: 565.48;
stroke-dashoffset: 565.48;
animation: drawCircle 3s ease-out forwards;
}
@keyframes drawCircle {
to {
stroke-dashoffset: 141.37; /* 75% of circumference */
}
}
.progress-center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
.progress-percentage {
font-size: 3rem;
font-weight: bold;
color: #ffd700;
margin-bottom: 0.5rem;
}
.progress-label {
font-size: 1rem;
color: #b8b8d1;
line-height: 1.3;
}
.transformation-icons {
display: flex;
justify-content: space-around;
margin: 2rem 0;
flex-wrap: wrap;
gap: 1rem;
}
.icon-item {
text-align: center;
padding: 1rem;
background: rgba(255, 255, 255, 0.05);
border-radius: 15px;
transition: transform 0.3s ease;
animation: float 3s ease-in-out infinite;
}
.icon-item:nth-child(even) {
animation-direction: reverse;
animation-delay: 1.5s;
}
.icon-item:hover {
transform: translateY(-10px);
}
@keyframes float {
0%, 100% { transform: translateY(0px); }
50% { transform: translateY(-10px); }
}
.icon {
font-size: 2rem;
margin-bottom: 0.5rem;
display: block;
}
.quote-section {
text-align: center;
padding: 2rem;
background: rgba(255, 255, 255, 0.05);
border-radius: 20px;
margin-top: 2rem;
border-left: 5px solid #ffd700;
}
.quote {
font-size: 1.3rem;
font-style: italic;
color: #e8e8f0;
margin-bottom: 1rem;
line-height: 1.6;
}
.quote-author {
color: #ffd700;
font-weight: bold;
}
@media (max-width: 768px) {
.visualization-container {
grid-template-columns: 1fr;
}
.title {
font-size: 2rem;
}
.response-item {
flex-direction: column;
text-align: center;
gap: 0.5rem;
}
.response-label {
min-width: auto;
text-align: center;
}
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1 class="title">The Power of Forgiveness</h1>
<p class="subtitle">Student Responses to Louis Zamperini's Transformative Story</p>
<p class="impact-stat">77.4% of students experienced the power of forgiveness</p>
</div>
<div class="visualization-container">
<div class="chart-section">
<h3 style="margin-bottom: 2rem; color: #ffd700; text-align: center;">Detailed Response Breakdown</h3>
<div class="response-bars">
<div class="response-item">
<div class="response-label">Strongly Agree</div>
<div class="bar-container">
<div class="bar strongly-agree"></div>
</div>
<div class="percentage">41.2%</div>
</div>
<div class="response-item">
<div class="response-label">Agree</div>
<div class="bar-container">
<div class="bar agree"></div>
</div>
<div class="percentage">36.2%</div>
</div>
<div class="response-item">
<div class="response-label">Neutral</div>
<div class="bar-container">
<div class="bar neutral"></div>
</div>
<div class="percentage">18.6%</div>
</div>
<div class="response-item">
<div class="response-label">Disagree</div>
<div class="bar-container">
<div class="bar disagree"></div>
</div>
<div class="percentage">2.1%</div>
</div>
<div class="response-item">
<div class="response-label">Strongly Disagree</div>
<div class="bar-container">
<div class="bar strongly-disagree"></div>
</div>
<div class="percentage">1.9%</div>
</div>
</div>
</div>
<div class="chart-section">
<h3 style="margin-bottom: 2rem; color: #ffd700; text-align: center;">Overall Impact</h3>
<div class="circular-progress">
<svg class="progress-ring" width="300" height="300">
<defs>
<linearGradient id="gradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#ff6b6b;stop-opacity:1" />
<stop offset="50%" style="stop-color:#ffd700;stop-opacity:1" />
<stop offset="100%" style="stop-color:#4ecdc4;stop-opacity:1" />
</linearGradient>
</defs>
<circle class="progress-circle progress-bg" cx="150" cy="150" r="90"></circle>
<circle class="progress-circle progress-bar" cx="150" cy="150" r="90"></circle>
</svg>
<div class="progress-center">
<div class="progress-percentage">77.4%</div>
<div class="progress-label">Students Impacted<br>by Forgiveness</div>
</div>
</div>
</div>
</div>
<div class="transformation-icons">
<div class="icon-item">
<span class="icon">💪</span>
<div>Resilience</div>
</div>
<div class="icon-item">
<span class="icon">🕊️</span>
<div>Forgiveness</div>
</div>
<div class="icon-item">
<span class="icon">🌟</span>
<div>Hope</div>
</div>
<div class="icon-item">
<span class="icon">⛓️💥</span>
<div>Breaking Chains</div>
</div>
<div class="icon-item">
<span class="icon">🦅</span>
<div>Freedom</div>
</div>
<div class="icon-item">
<span class="icon">📚</span>
<div>Growth</div>
</div>
</div>
<div class="quote-section">
<p class="quote">"The paradox of vengefulness is that it makes men dependent upon those who have harmed them, believing that their release from pain will come only when their tormentors suffer."</p>
<p class="quote-author">— Laura Hillenbrand, Unbroken</p>
</div>
</div>
</body>
</html>