- Extract 1100+ lines of translations from serp.py to i18n.py - Add Georgian (ka) as 27th supported language - Add 74 about page body text keys (hero, chapters, features, footer) - Update about.html.j2 to use translation placeholders - Full Chinese translations for all body text - English fallback for other 25 languages (can be translated later) - serp.py reduced from 3291 to 2142 lines - i18n.py now 3808 lines with 190 keys per language
758 lines
29 KiB
Django/Jinja
758 lines
29 KiB
Django/Jinja
{% extends "base.html.j2" %}
|
|
|
|
{% block title %}{{ t.about }} - neopig{% endblock %}
|
|
|
|
{% block extra_css %}
|
|
.about-page { width: 100%; min-height: 100vh; background: #0a0a0f; }
|
|
|
|
/* Hero Section */
|
|
.hero-section {
|
|
width: 100%;
|
|
min-height: 100vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
background: linear-gradient(180deg, #0a0a0f 0%, #1a0a1a 50%, #0f0a1a 100%);
|
|
position: relative;
|
|
overflow: hidden;
|
|
padding: 60px 20px;
|
|
}
|
|
.hero-section::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0; left: 0; right: 0; bottom: 0;
|
|
background: radial-gradient(ellipse at 50% 0%, rgba(255,50,100,0.15) 0%, transparent 60%),
|
|
radial-gradient(ellipse at 20% 80%, rgba(100,50,255,0.1) 0%, transparent 40%),
|
|
radial-gradient(ellipse at 80% 60%, rgba(255,100,50,0.08) 0%, transparent 40%);
|
|
pointer-events: none;
|
|
}
|
|
.hero-pig {
|
|
width: 280px;
|
|
height: auto;
|
|
filter: drop-shadow(0 0 60px rgba(255,100,100,0.5)) drop-shadow(0 0 120px rgba(255,50,100,0.3));
|
|
animation: pulse-glow 4s ease-in-out infinite;
|
|
margin-bottom: 40px;
|
|
}
|
|
@keyframes pulse-glow {
|
|
0%, 100% { filter: drop-shadow(0 0 60px rgba(255,100,100,0.5)) drop-shadow(0 0 120px rgba(255,50,100,0.3)); }
|
|
50% { filter: drop-shadow(0 0 80px rgba(255,100,100,0.7)) drop-shadow(0 0 160px rgba(255,50,100,0.5)); }
|
|
}
|
|
.hero-title {
|
|
font-size: 6em;
|
|
font-weight: 900;
|
|
letter-spacing: -0.02em;
|
|
background: linear-gradient(135deg, #ff6b6b 0%, #ff8e53 50%, #ff6b9d 100%);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
text-shadow: 0 0 80px rgba(255,100,100,0.5);
|
|
margin: 0;
|
|
text-align: center;
|
|
}
|
|
.hero-subtitle {
|
|
font-size: 1.4em;
|
|
color: #888;
|
|
margin-top: 20px;
|
|
font-weight: 300;
|
|
letter-spacing: 0.3em;
|
|
text-transform: uppercase;
|
|
}
|
|
.hero-tagline {
|
|
font-size: 1.1em;
|
|
color: #666;
|
|
margin-top: 30px;
|
|
max-width: 600px;
|
|
text-align: center;
|
|
line-height: 1.8;
|
|
}
|
|
|
|
/* Chapter Sections */
|
|
.chapter {
|
|
width: 100%;
|
|
padding: 120px 40px;
|
|
position: relative;
|
|
}
|
|
.chapter-content {
|
|
max-width: 900px;
|
|
margin: 0 auto;
|
|
}
|
|
.chapter-number {
|
|
font-size: 8em;
|
|
font-weight: 900;
|
|
color: rgba(255,100,100,0.08);
|
|
position: absolute;
|
|
top: 40px;
|
|
left: 40px;
|
|
line-height: 1;
|
|
font-family: 'Georgia', serif;
|
|
}
|
|
.chapter-title {
|
|
font-size: 3em;
|
|
font-weight: 800;
|
|
color: #ff6b6b;
|
|
margin-bottom: 40px;
|
|
position: relative;
|
|
}
|
|
.chapter-title::after {
|
|
content: '';
|
|
display: block;
|
|
width: 100px;
|
|
height: 4px;
|
|
background: linear-gradient(90deg, #ff6b6b, transparent);
|
|
margin-top: 20px;
|
|
}
|
|
|
|
/* Narrative Text */
|
|
.narrative {
|
|
font-size: 1.3em;
|
|
line-height: 2;
|
|
color: #c0c0c0;
|
|
margin-bottom: 30px;
|
|
}
|
|
.narrative em { color: #ff8e53; font-style: italic; }
|
|
.narrative strong { color: #fff; font-weight: 600; }
|
|
.narrative a { color: #ff6b6b; text-decoration: none; border-bottom: 1px solid rgba(255,107,107,0.3); transition: all 0.3s; }
|
|
.narrative a:hover { color: #ff8e53; border-bottom-color: #ff8e53; }
|
|
|
|
/* Dramatic Quote */
|
|
.dramatic-quote {
|
|
padding: 60px;
|
|
margin: 60px 0;
|
|
background: linear-gradient(135deg, rgba(255,50,100,0.1) 0%, rgba(100,50,200,0.1) 100%);
|
|
border-left: 6px solid #ff6b6b;
|
|
position: relative;
|
|
}
|
|
.dramatic-quote::before {
|
|
content: '"';
|
|
font-size: 12em;
|
|
color: rgba(255,100,100,0.15);
|
|
position: absolute;
|
|
top: -40px;
|
|
left: 20px;
|
|
font-family: 'Georgia', serif;
|
|
line-height: 1;
|
|
}
|
|
.dramatic-quote p {
|
|
font-size: 1.8em;
|
|
font-style: italic;
|
|
color: #e0e0e0;
|
|
margin: 0;
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
.dramatic-quote cite {
|
|
display: block;
|
|
margin-top: 30px;
|
|
font-size: 1em;
|
|
color: #888;
|
|
font-style: normal;
|
|
}
|
|
|
|
/* Dead Link Styling */
|
|
.dead-link {
|
|
text-decoration: line-through;
|
|
color: #666;
|
|
cursor: not-allowed;
|
|
position: relative;
|
|
}
|
|
.dead-link::after {
|
|
content: ' [DEAD]';
|
|
color: #ff4444;
|
|
font-size: 0.7em;
|
|
font-weight: bold;
|
|
text-decoration: none;
|
|
}
|
|
|
|
/* Dark Chapter */
|
|
.chapter-dark {
|
|
background: linear-gradient(180deg, #0a0a0f 0%, #150810 50%, #0a0a0f 100%);
|
|
}
|
|
.chapter-dark .chapter-number { color: rgba(255,50,50,0.1); }
|
|
|
|
/* Rebirth Chapter - TempleOS cyan */
|
|
.chapter-rebirth {
|
|
background: linear-gradient(180deg, #0a0a0f 0%, #0a1515 50%, #0a0a0f 100%);
|
|
}
|
|
.chapter-rebirth .chapter-title { color: #00FFFF; }
|
|
.chapter-rebirth .chapter-title::after { background: linear-gradient(90deg, #00FFFF, transparent); }
|
|
.chapter-rebirth .chapter-number { color: rgba(0,255,255,0.08); }
|
|
|
|
/* Beast Section */
|
|
.chapter-beast {
|
|
background: linear-gradient(180deg, #0a0a0f 0%, #1a0a05 50%, #0a0a0f 100%);
|
|
}
|
|
.chapter-beast .chapter-title { color: #ff8e53; }
|
|
.chapter-beast .chapter-title::after { background: linear-gradient(90deg, #ff8e53, transparent); }
|
|
|
|
/* Feature Cards */
|
|
.feature-section {
|
|
width: 100%;
|
|
padding: 100px 40px;
|
|
background: linear-gradient(180deg, #0a0a0f 0%, #0f0f18 50%, #0a0a0f 100%);
|
|
position: relative;
|
|
}
|
|
.feature-section .chapter-title::after {
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
.feature-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
|
|
gap: 30px;
|
|
max-width: 1400px;
|
|
margin: 0 auto;
|
|
}
|
|
.feature-card {
|
|
background: linear-gradient(145deg, rgba(30,30,40,0.8) 0%, rgba(20,20,30,0.9) 100%);
|
|
padding: 40px;
|
|
border-radius: 16px;
|
|
border: 1px solid rgba(255,100,100,0.1);
|
|
transition: all 0.4s ease;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
.feature-card::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0; left: 0;
|
|
width: 100%; height: 4px;
|
|
background: linear-gradient(90deg, #ff6b6b, #ff8e53, #4ecdc4);
|
|
opacity: 0;
|
|
transition: opacity 0.4s;
|
|
}
|
|
.feature-card:hover {
|
|
transform: translateY(-5px);
|
|
border-color: rgba(255,100,100,0.3);
|
|
box-shadow: 0 20px 60px rgba(0,0,0,0.4), 0 0 40px rgba(255,100,100,0.1);
|
|
}
|
|
.feature-card:hover::before { opacity: 1; }
|
|
.feature-card h3 {
|
|
font-size: 1.4em;
|
|
color: #ff6b6b;
|
|
margin-bottom: 15px;
|
|
font-weight: 700;
|
|
}
|
|
.feature-card p {
|
|
color: #999;
|
|
line-height: 1.7;
|
|
font-size: 1.05em;
|
|
}
|
|
.feature-card a { color: #4ecdc4; }
|
|
|
|
/* Code Blocks */
|
|
.code-section {
|
|
background: #0d0d12;
|
|
padding: 40px;
|
|
border-radius: 12px;
|
|
margin: 40px 0;
|
|
overflow-x: auto;
|
|
border: 1px solid #222;
|
|
}
|
|
.code-section pre {
|
|
margin: 0;
|
|
font-family: 'Fira Code', 'Monaco', monospace;
|
|
font-size: 2em;
|
|
line-height: 1.8;
|
|
color: #e0e0e0;
|
|
}
|
|
.code-section code { background: none; }
|
|
|
|
/* Inline Code */
|
|
.narrative code {
|
|
background: rgba(255,100,100,0.1);
|
|
padding: 3px 10px;
|
|
border-radius: 4px;
|
|
font-family: 'Fira Code', monospace;
|
|
font-size: 0.9em;
|
|
color: #ff8e53;
|
|
}
|
|
|
|
/* Mirror Section */
|
|
.chapter-mirror {
|
|
background: linear-gradient(180deg, #0a0a0f 0%, #0a0a1f 30%, #100a1a 70%, #0a0a0f 100%);
|
|
position: relative;
|
|
}
|
|
.chapter-mirror::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0; left: 0; right: 0; bottom: 0;
|
|
background: repeating-linear-gradient(
|
|
90deg,
|
|
transparent 0px,
|
|
transparent 100px,
|
|
rgba(100,100,255,0.02) 100px,
|
|
rgba(100,100,255,0.02) 101px
|
|
);
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* Transition into cyan */
|
|
.chapter-to-cyan {
|
|
background: linear-gradient(180deg, #0a0a0f 0%, #0a0a0f calc(100% - 121px), #55FFFF 100%);
|
|
}
|
|
.chapter-to-cyan .chapter-number { color: rgba(255,50,50,0.1); }
|
|
|
|
/* The Forge - TempleOS background */
|
|
.chapter-forge {
|
|
background: #55FFFF;
|
|
position: relative;
|
|
}
|
|
.chapter-forge::before { content: none; }
|
|
|
|
/* Transition from cyan */
|
|
.chapter-from-cyan {
|
|
background: linear-gradient(180deg, #55FFFF 0%, #0a0a0f 121px, #0a0a0f 100%);
|
|
padding-top: 200px;
|
|
}
|
|
.chapter-from-cyan .chapter-number { color: rgba(255,50,50,0.1); top: 140px; }
|
|
.forge-logo {
|
|
display: block;
|
|
max-width: 100%;
|
|
height: auto;
|
|
margin: 0 auto;
|
|
}
|
|
.chapter-forge .chapter-content {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
.chapter-forge .chapter-title { color: #000; }
|
|
.chapter-forge .chapter-title::after { background: linear-gradient(90deg, #000, transparent); }
|
|
.chapter-forge .chapter-number { color: rgba(0,0,0,0.15); }
|
|
.chapter-forge .narrative { color: #000; }
|
|
.chapter-forge .narrative a { color: #006666; }
|
|
.chapter-forge .narrative em { color: #004444; }
|
|
.chapter-forge .narrative strong { color: #000; }
|
|
.chapter-forge .dramatic-quote { background: rgba(0,0,0,0.15); border-left-color: #000; }
|
|
.chapter-forge .dramatic-quote p { color: #000; font-style: italic; }
|
|
.chapter-forge .dramatic-quote cite { color: #333; }
|
|
|
|
/* Rules grid */
|
|
.rule-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
|
|
gap: 12px;
|
|
margin: 40px 0;
|
|
}
|
|
.rule-item {
|
|
font-size: 1.05em;
|
|
line-height: 1.6;
|
|
color: #b0b0b0;
|
|
padding: 12px 16px;
|
|
background: rgba(255,255,255,0.02);
|
|
border-radius: 6px;
|
|
border-left: 3px solid rgba(255,107,107,0.3);
|
|
}
|
|
.rule-item strong {
|
|
color: #ff6b6b;
|
|
font-weight: 700;
|
|
}
|
|
@media (max-width: 768px) {
|
|
.rule-grid { grid-template-columns: 1fr; }
|
|
}
|
|
|
|
.chapter-mirror .chapter-title { color: #8b5cf6; }
|
|
.chapter-mirror .chapter-title::after { background: linear-gradient(90deg, #8b5cf6, transparent); }
|
|
.chapter-mirror .chapter-number { color: rgba(139,92,246,0.08); }
|
|
|
|
/* Footer */
|
|
.about-footer {
|
|
width: 100%;
|
|
padding: 80px 40px;
|
|
background: #050508;
|
|
text-align: center;
|
|
}
|
|
.about-footer p {
|
|
color: #666;
|
|
font-size: 1.1em;
|
|
margin-bottom: 20px;
|
|
}
|
|
.about-footer a {
|
|
color: #ff6b6b;
|
|
font-size: 1.2em;
|
|
text-decoration: none;
|
|
border-bottom: 2px solid rgba(255,107,107,0.3);
|
|
padding-bottom: 4px;
|
|
transition: all 0.3s;
|
|
}
|
|
.about-footer a:hover {
|
|
color: #ff8e53;
|
|
border-bottom-color: #ff8e53;
|
|
}
|
|
|
|
/* Responsive */
|
|
@media (max-width: 768px) {
|
|
.hero-title { font-size: 3.5em; }
|
|
.hero-pig { width: 200px; }
|
|
.chapter { padding: 80px 20px; }
|
|
.chapter-number { font-size: 5em; top: 20px; left: 20px; }
|
|
.chapter-title { font-size: 2em; }
|
|
.narrative { font-size: 1.1em; }
|
|
.dramatic-quote { padding: 30px; }
|
|
.dramatic-quote p { font-size: 1.3em; }
|
|
.feature-section { padding: 60px 20px; }
|
|
}
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="about-page">
|
|
|
|
<!-- HERO SECTION -->
|
|
<section class="hero-section">
|
|
<img src="/static/images/pig1-color1.png" alt="pig.py" class="hero-pig">
|
|
<h1 class="hero-title">neopig</h1>
|
|
<p class="hero-subtitle">{{ t.about_subtitle }}</p>
|
|
<p class="hero-tagline">
|
|
{{ t.about_hero_tagline }}<br><br>{{ t.about_hero_tagline2 }}
|
|
</p>
|
|
</section>
|
|
|
|
<!-- CHAPTER I: GENESIS -->
|
|
<section class="chapter">
|
|
<div class="chapter-number">I</div>
|
|
<div class="chapter-content">
|
|
<h2 class="chapter-title">{{ t.about_ch1_title }}</h2>
|
|
|
|
<div class="dramatic-quote">
|
|
<p>{{ t.about_ch1_quote }}</p>
|
|
<cite>— {{ t.about_ch1_cite }}</cite>
|
|
</div>
|
|
|
|
<p class="narrative">{{ t.about_ch1_p1 }}</p>
|
|
<p class="narrative">{{ t.about_ch1_p2 }}</p>
|
|
|
|
<div class="code-section">
|
|
<pre><code>python pig.py https://www.foxhop.net</code></pre>
|
|
</div>
|
|
|
|
<p class="narrative">{{ t.about_ch1_p3 }}</p>
|
|
<p class="narrative">{{ t.about_ch1_p4 }}</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- CHAPTER II: THE EXTINCTION -->
|
|
<section class="chapter chapter-dark">
|
|
<div class="chapter-number">II</div>
|
|
<div class="chapter-content">
|
|
<h2 class="chapter-title">{{ t.about_ch2_title }}</h2>
|
|
|
|
<p class="narrative">{{ t.about_ch2_p1 }}</p>
|
|
<p class="narrative">{{ t.about_ch2_p2 }}</p>
|
|
<a href="https://media.unturf.com/c/b86529cc-e673-11ef-b77a-115dc81aa9c4/langolier-time-voidlings-of-null-void" target="_blank"><img src="/static/images/bitbucket.jpg" alt="Bitbucket extinction" style="width:42%"></a>
|
|
|
|
<p class="narrative">{{ t.about_ch2_p3 }}</p>
|
|
|
|
<div class="dramatic-quote">
|
|
<p>{{ t.about_ch2_quote }}</p>
|
|
<cite>— {{ t.about_ch2_cite }}</cite>
|
|
</div>
|
|
|
|
<p class="narrative">{{ t.about_ch2_p4 }}</p>
|
|
<p class="narrative">{{ t.about_ch2_p5 }}</p>
|
|
<p class="narrative">{{ t.about_ch2_p6 }}</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- CHAPTER III: ALCHEMY -->
|
|
<section class="chapter chapter-rebirth">
|
|
<div class="chapter-number">III</div>
|
|
<div class="chapter-content">
|
|
<h2 class="chapter-title">{{ t.about_ch3_title }}</h2>
|
|
|
|
<p class="narrative">{{ t.about_ch3_p1 }}</p>
|
|
<img src="/static/images/alchemy.jpg" alt="Alchemy" style="width:42%">
|
|
|
|
<p class="narrative">{{ t.about_ch3_p2 }}</p>
|
|
<p class="narrative">{{ t.about_ch3_p3 }}</p>
|
|
|
|
<div class="dramatic-quote">
|
|
<p>{{ t.about_ch3_quote }}</p>
|
|
<cite>— {{ t.about_ch3_cite }}</cite>
|
|
</div>
|
|
|
|
<p class="narrative">{{ t.about_ch3_p4 }}</p>
|
|
<p class="narrative">{{ t.about_ch3_p5 }}</p>
|
|
<p class="narrative">{{ t.about_ch3_p6 }}</p>
|
|
<p class="narrative">{{ t.about_ch3_p7 }}</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- CHAPTER IV: THE PIG AWAKENS -->
|
|
<section class="chapter chapter-beast">
|
|
<div class="chapter-number">IV</div>
|
|
<div class="chapter-content">
|
|
<h2 class="chapter-title">{{ t.about_ch4_title }}</h2>
|
|
|
|
<p class="narrative">{{ t.about_ch4_p1 }}</p>
|
|
<a href="https://media.unturf.com/c/fbc48bff-e895-11f0-8d29-02dfe05770ee/gluttony" target="_blank"><img src="/static/images/hungry-pig.jpg" alt="Neopig grows hungrier" style="width:42%"></a>
|
|
|
|
<p class="narrative">{{ t.about_ch4_p2 }}</p>
|
|
|
|
<div class="dramatic-quote">
|
|
<p>{{ t.about_ch4_quote }}</p>
|
|
</div>
|
|
|
|
<p class="narrative">{{ t.about_ch4_p3 }}</p>
|
|
<p class="narrative">{{ t.about_ch4_p4 }}</p>
|
|
<p class="narrative">{{ t.about_ch4_p5 }}</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- CHAPTER V: THE MIRROR DIMENSION -->
|
|
<section class="chapter chapter-mirror">
|
|
<div class="chapter-number">V</div>
|
|
<div class="chapter-content">
|
|
<h2 class="chapter-title">{{ t.about_ch5_title }}</h2>
|
|
|
|
<p class="narrative">{{ t.about_ch5_p1 }}</p>
|
|
<a href="https://media.unturf.com/c/fcddf99d-a2da-11f0-af1d-02dfe05770ee/the-tempest-overtakes" target="_blank"><img src="/static/images/sleeping-pig.gif" alt="A sleeping pig" style="width:42%"></a>
|
|
|
|
<p class="narrative">{{ t.about_ch5_p2 }}</p>
|
|
<p class="narrative">{{ t.about_ch5_p3 }}</p>
|
|
|
|
<div class="dramatic-quote">
|
|
<p>{{ t.about_ch5_quote }}</p>
|
|
</div>
|
|
|
|
<p class="narrative">{{ t.about_ch5_p4 }}</p>
|
|
<p class="narrative">{{ t.about_ch5_p5 }}</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- FEATURES SECTION -->
|
|
<section class="feature-section">
|
|
<div class="chapter-number">VI</div>
|
|
<div class="chapter-content" style="max-width: 100%;">
|
|
<h2 class="chapter-title" style="text-align: center; margin-bottom: 60px;">{{ t.about_ch6_title }}</h2>
|
|
|
|
<div class="feature-grid">
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_async }}</h3>
|
|
<p>{{ t.about_feat_async_desc }}</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_vault }}</h3>
|
|
<p>{{ t.about_feat_vault_desc }}</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_fts }}</h3>
|
|
<p>{{ t.about_feat_fts_desc }}</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_screenshots }}</h3>
|
|
<p>{{ t.about_feat_screenshots_desc }}</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_hydra }}</h3>
|
|
<p>{{ t.about_feat_hydra_desc }}</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_provenance }}</h3>
|
|
<p>{{ t.about_feat_provenance_desc }}</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_markdown }}</h3>
|
|
<p>{{ t.about_feat_markdown_desc }}</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_selfextract }}</h3>
|
|
<p>{{ t.about_feat_selfextract_desc }}</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_code }}</h3>
|
|
<p>{{ t.about_feat_code_desc }}</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_vcs }}</h3>
|
|
<p>{{ t.about_feat_vcs_desc }}</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_live }}</h3>
|
|
<p>{{ t.about_feat_live_desc }}</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>{{ t.about_feat_serp }}</h3>
|
|
<p>{{ t.about_feat_serp_desc }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- CHAPTER VI: THE SKELETON KEY -->
|
|
<section class="chapter">
|
|
<div class="chapter-number">VII</div>
|
|
<div class="chapter-content">
|
|
<h2 class="chapter-title">{{ t.about_ch7_title }}</h2>
|
|
|
|
<p class="narrative">{{ t.about_ch7_p1 }}</p>
|
|
<a href="https://media.unturf.com/c/b45632be-9120-11ec-9431-eb3419618d4a/grow-food-not-lawn" target="_blank"><img src="/static/images/grow-food-not-lawn.jpg" alt="Grow food not lawn" style="width:42%"></a>
|
|
|
|
<p class="narrative">{{ t.about_ch7_p2 }}</p>
|
|
<p class="narrative">{{ t.about_ch7_p3 }}</p>
|
|
<p class="narrative">{{ t.about_ch7_p4 }}</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- CHAPTER VIII: PRESERVATION -->
|
|
<section class="chapter chapter-to-cyan">
|
|
<div class="chapter-number">VIII</div>
|
|
<div class="chapter-content">
|
|
<h2 class="chapter-title">{{ t.about_ch8_title }}</h2>
|
|
|
|
<p class="narrative">{{ t.about_ch8_p1 }}</p>
|
|
<p class="narrative">{{ t.about_ch8_p2 }}</p>
|
|
<p class="narrative">{{ t.about_ch8_p3 }}</p>
|
|
<p class="narrative">{{ t.about_ch8_list }}<br><br><br></p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- CHAPTER IX: THE FORGE -->
|
|
<section class="chapter chapter-forge">
|
|
<div class="chapter-number">IX</div>
|
|
<div class="chapter-content">
|
|
<h2 class="chapter-title">{{ t.about_ch9_title }}</h2>
|
|
|
|
<p class="narrative">{{ t.about_ch9_p1 }}</p>
|
|
<p class="narrative">{{ t.about_ch9_p2 }}</p>
|
|
|
|
<a href="https://templeos.org" target="_blank"><img src="/static/images/templeos.png" alt="TempleOS" class="forge-logo"></a>
|
|
|
|
<div class="dramatic-quote">
|
|
<p>{{ t.about_ch9_quote }}</p>
|
|
<cite>— {{ t.about_ch9_cite }}</cite>
|
|
</div>
|
|
|
|
<p class="narrative">{{ t.about_ch9_truth }}</p>
|
|
<p class="narrative">{{ t.about_ch9_harmony }}</p>
|
|
<p class="narrative">{{ t.about_ch9_freedom }}</p>
|
|
<p class="narrative">{{ t.about_ch9_love }}</p>
|
|
<p class="narrative">{{ t.about_ch9_p3 }}</p>
|
|
<p class="narrative">{{ t.about_ch9_p4 }}</p>
|
|
<p class="narrative">{{ t.about_ch9_p5 }}</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- CHAPTER X: A WAY -->
|
|
<section class="chapter chapter-from-cyan">
|
|
<div class="chapter-number">X</div>
|
|
<div class="chapter-content">
|
|
<h2 class="chapter-title">{{ t.about_ch10_title }}</h2>
|
|
|
|
<p class="narrative">{{ t.about_ch10_p1 }}</p>
|
|
|
|
<p class="narrative">{{ t.about_ch10_p2 }}</p>
|
|
|
|
<div class="rule-grid">
|
|
<div class="rule-item"><strong>1.</strong> Love the Lord God with your whole heart, soul, and strength.</div>
|
|
<div class="rule-item"><strong>2.</strong> Love your neighbor as yourself.</div>
|
|
<div class="rule-item"><strong>3.</strong> Do not murder.</div>
|
|
<div class="rule-item"><strong>4.</strong> Do not commit adultery.</div>
|
|
<div class="rule-item"><strong>5.</strong> Do not steal.</div>
|
|
<div class="rule-item"><strong>6.</strong> Do not covet.</div>
|
|
<div class="rule-item"><strong>7.</strong> Do not bear false witness.</div>
|
|
<div class="rule-item"><strong>8.</strong> Honor all people.</div>
|
|
<div class="rule-item"><strong>9.</strong> Do not do to another what you would not have done to yourself.</div>
|
|
<div class="rule-item"><strong>10.</strong> Deny oneself in order to follow Christ.</div>
|
|
<div class="rule-item"><strong>11.</strong> Chastise the body.</div>
|
|
<div class="rule-item"><strong>12.</strong> Do not become attached to pleasures.</div>
|
|
<div class="rule-item"><strong>13.</strong> Love fasting.</div>
|
|
<div class="rule-item"><strong>14.</strong> Relieve the poor.</div>
|
|
<div class="rule-item"><strong>15.</strong> Clothe the naked.</div>
|
|
<div class="rule-item"><strong>16.</strong> Visit the sick.</div>
|
|
<div class="rule-item"><strong>17.</strong> Bury the dead.</div>
|
|
<div class="rule-item"><strong>18.</strong> Be a help in times of trouble.</div>
|
|
<div class="rule-item"><strong>19.</strong> Console the sorrowing.</div>
|
|
<div class="rule-item"><strong>20.</strong> Be a stranger to the world's ways.</div>
|
|
<div class="rule-item"><strong>21.</strong> Prefer nothing more than the love of Christ.</div>
|
|
<div class="rule-item"><strong>22.</strong> Do not give way to anger.</div>
|
|
<div class="rule-item"><strong>23.</strong> Do not nurse a grudge.</div>
|
|
<div class="rule-item"><strong>24.</strong> Do not entertain deceit in your heart.</div>
|
|
<div class="rule-item"><strong>25.</strong> Do not give a false peace.</div>
|
|
<div class="rule-item"><strong>26.</strong> Do not forsake charity.</div>
|
|
<div class="rule-item"><strong>27.</strong> Do not swear, for fear of perjuring yourself.</div>
|
|
<div class="rule-item"><strong>28.</strong> Utter only truth from heart and mouth.</div>
|
|
<div class="rule-item"><strong>29.</strong> Do not return evil for evil.</div>
|
|
<div class="rule-item"><strong>30.</strong> Do no wrong to anyone, and bear patiently wrongs done to yourself.</div>
|
|
<div class="rule-item"><strong>31.</strong> Love your enemies.</div>
|
|
<div class="rule-item"><strong>32.</strong> Do not curse those who curse you, but rather bless them.</div>
|
|
<div class="rule-item"><strong>33.</strong> Bear persecution for justice's sake.</div>
|
|
<div class="rule-item"><strong>34.</strong> Be not proud.</div>
|
|
<div class="rule-item"><strong>35.</strong> Be not addicted to wine.</div>
|
|
<div class="rule-item"><strong>36.</strong> Be not a great eater.</div>
|
|
<div class="rule-item"><strong>37.</strong> Be not drowsy.</div>
|
|
<div class="rule-item"><strong>38.</strong> Be not lazy.</div>
|
|
<div class="rule-item"><strong>39.</strong> Be not a grumbler.</div>
|
|
<div class="rule-item"><strong>40.</strong> Be not a detractor.</div>
|
|
<div class="rule-item"><strong>41.</strong> Put your hope in God.</div>
|
|
<div class="rule-item"><strong>42.</strong> Attribute to God, and not to self, whatever good you see in yourself.</div>
|
|
<div class="rule-item"><strong>43.</strong> Recognize always that evil is your own doing, and to impute it to yourself.</div>
|
|
<div class="rule-item"><strong>44.</strong> Fear the Day of Judgment.</div>
|
|
<div class="rule-item"><strong>45.</strong> Be in dread of hell.</div>
|
|
<div class="rule-item"><strong>46.</strong> Desire eternal life with all the passion of the spirit.</div>
|
|
<div class="rule-item"><strong>47.</strong> Keep death daily before your eyes.</div>
|
|
<div class="rule-item"><strong>48.</strong> Keep constant guard over the actions of your life.</div>
|
|
<div class="rule-item"><strong>49.</strong> Know for certain that God sees you everywhere.</div>
|
|
<div class="rule-item"><strong>50.</strong> When wrongful thoughts come into your heart, dash them against Christ immediately.</div>
|
|
<div class="rule-item"><strong>51.</strong> Disclose wrongful thoughts to your spiritual mentor.</div>
|
|
<div class="rule-item"><strong>52.</strong> Guard your tongue against evil and depraved speech.</div>
|
|
<div class="rule-item"><strong>53.</strong> Do not love much talking.</div>
|
|
<div class="rule-item"><strong>54.</strong> Speak no useless words or words that move to laughter.</div>
|
|
<div class="rule-item"><strong>55.</strong> Do not love much or boisterous laughter.</div>
|
|
<div class="rule-item"><strong>56.</strong> Listen willingly to holy reading.</div>
|
|
<div class="rule-item"><strong>57.</strong> Devote yourself frequently to prayer.</div>
|
|
<div class="rule-item"><strong>58.</strong> Daily in your prayers, with tears and sighs, confess your past sins to God, and amend them for the future.</div>
|
|
<div class="rule-item"><strong>59.</strong> Fulfill not the desires of the flesh; hate your own will.</div>
|
|
<div class="rule-item"><strong>60.</strong> Obey in all things the commands of those whom God has placed in authority over you even though they should act otherwise, mindful of the Lord's precept, "Do what they say, but not what they do."</div>
|
|
<div class="rule-item"><strong>61.</strong> Do not wish to be called holy before one is holy; but first to be holy, that you may be truly so called.</div>
|
|
<div class="rule-item"><strong>62.</strong> Fulfill God's commandments daily in your deeds.</div>
|
|
<div class="rule-item"><strong>63.</strong> Love chastity.</div>
|
|
<div class="rule-item"><strong>64.</strong> Hate no one.</div>
|
|
<div class="rule-item"><strong>65.</strong> Be not jealous, nor harbor envy.</div>
|
|
<div class="rule-item"><strong>66.</strong> Do not love quarreling.</div>
|
|
<div class="rule-item"><strong>67.</strong> Shun arrogance.</div>
|
|
<div class="rule-item"><strong>68.</strong> Respect your seniors.</div>
|
|
<div class="rule-item"><strong>69.</strong> Love your juniors.</div>
|
|
<div class="rule-item"><strong>70.</strong> Pray for your enemies in the love of Christ.</div>
|
|
<div class="rule-item"><strong>71.</strong> Make peace with your adversary before the sun sets.</div>
|
|
<div class="rule-item"><strong>72.</strong> Never despair of God's mercy.</div>
|
|
</div>
|
|
|
|
<p class="narrative" style="margin-top: 60px;">{{ t.about_ch10_p3 }}</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- CHAPTER XI: INVOKE THE PIG -->
|
|
<section class="chapter chapter-beast">
|
|
<div class="chapter-number">XI</div>
|
|
<div class="chapter-content">
|
|
<h2 class="chapter-title">{{ t.about_ch11_title }}</h2>
|
|
|
|
<div class="code-section">
|
|
<pre><code># open http://127.0.0.1:31337 in browser
|
|
python neopig.py --serve</code></pre>
|
|
</div>
|
|
|
|
<p class="narrative">{{ t.about_ch11_p1 }}</p>
|
|
|
|
<p class="narrative">{{ t.about_ch11_p2 }}</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- FOOTER -->
|
|
<footer class="about-footer">
|
|
<p>{{ t.about_footer_p1 }}</p>
|
|
<img src="/static/images/pixel-art-gift.png" alt="Gift" style="width:200px">
|
|
<p>{{ t.about_footer_p2 }}</p>
|
|
<a href="https://git.unturf.com/engineering/unturf/pig.py" target="_blank">git.unturf.com/engineering/unturf/pig.py</a>
|
|
<p style="margin-top: 40px; color: #444; font-size: 0.9em;">
|
|
{{ t.about_footer_p3 }}<br>
|
|
{{ t.about_footer_remember }}
|
|
</p>
|
|
<a href="https://media.unturf.com/c/28697a5a-b2ad-11ec-9431-eb3419618d4a/oven-fresh-internet-4-all" target="_blank"><img src="/static/images/oven-fresh-internet.jpg" alt="Oven fresh internet" style="width:21%"></a>
|
|
<p style="margin-top: 60px; color: #666;">
|
|
{{ t.about_footer_p5 }}
|
|
</p>
|
|
</footer>
|
|
|
|
</div>
|
|
{% endblock %}
|