Self-injecting script following impressum.js pattern: - data-tone attribute: playful | serious | minimal | none - Reads document.documentElement.lang for KI (de) vs AI (en) - MutationObserver on lang attr for i18n toggle compat - All tones link to msbls.de/ki - Injected into all 54 custom sites with data-tone="playful" - Template infra: base.html includes script, render.sh reads disclosure.tone - disclosure.tone added to 3 example site.yaml files Implements m/onepager#2
334 lines
14 KiB
HTML
334 lines
14 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>KIlemma — Die Fragen, die keine KI beantworten kann</title>
|
|
<meta name="description" content="Die unlösbaren Fragen der KI-Ära. Ein Dilemma hat keine Lösung. Nur eine Entscheidung.">
|
|
<meta property="og:title" content="KIlemma">
|
|
<meta property="og:description" content="Die Fragen, die keine KI beantworten kann.">
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:url" content="https://kilemma.de">
|
|
<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=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400;1,500&family=Inter:wght@300;400&display=swap" rel="stylesheet">
|
|
<style>
|
|
*, *::before, *::after {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
:root {
|
|
--bg: #f5f0eb;
|
|
--text: #2a2a2a;
|
|
--text-light: #6b6560;
|
|
--accent: #8b3a3a;
|
|
--accent-light: #a34545;
|
|
--rule: #d4cdc6;
|
|
--serif: 'Cormorant Garamond', 'Georgia', serif;
|
|
--sans: 'Inter', -apple-system, sans-serif;
|
|
}
|
|
|
|
html {
|
|
font-size: 18px;
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
body {
|
|
font-family: var(--serif);
|
|
background: var(--bg);
|
|
color: var(--text);
|
|
line-height: 1.6;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
/* ── Layout ── */
|
|
|
|
.page {
|
|
max-width: 720px;
|
|
margin: 0 auto;
|
|
padding: 0 2rem;
|
|
}
|
|
|
|
/* ── Hero ── */
|
|
|
|
.hero {
|
|
min-height: 100vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
text-align: center;
|
|
padding: 4rem 2rem;
|
|
}
|
|
|
|
.hero-title {
|
|
font-family: var(--serif);
|
|
font-size: clamp(3.5rem, 10vw, 7rem);
|
|
font-weight: 300;
|
|
letter-spacing: -0.02em;
|
|
line-height: 1;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.hero-title .ki {
|
|
color: var(--accent);
|
|
font-weight: 500;
|
|
}
|
|
|
|
.hero-sub {
|
|
font-family: var(--sans);
|
|
font-size: clamp(0.85rem, 2vw, 1rem);
|
|
font-weight: 300;
|
|
color: var(--text-light);
|
|
letter-spacing: 0.12em;
|
|
text-transform: uppercase;
|
|
max-width: 480px;
|
|
}
|
|
|
|
.hero-line {
|
|
width: 40px;
|
|
height: 1px;
|
|
background: var(--accent);
|
|
margin: 2rem 0;
|
|
opacity: 0.6;
|
|
}
|
|
|
|
.scroll-hint {
|
|
position: absolute;
|
|
bottom: 3rem;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
font-family: var(--sans);
|
|
font-size: 0.7rem;
|
|
color: var(--text-light);
|
|
letter-spacing: 0.15em;
|
|
text-transform: uppercase;
|
|
opacity: 0;
|
|
animation: fadeHint 1s ease 3s forwards;
|
|
}
|
|
|
|
@keyframes fadeHint {
|
|
to { opacity: 0.5; }
|
|
}
|
|
|
|
/* ── Questions ── */
|
|
|
|
.questions {
|
|
padding: 6rem 0 8rem;
|
|
}
|
|
|
|
.question {
|
|
padding: 3rem 0;
|
|
border-top: 1px solid var(--rule);
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
transition: opacity 0.8s ease, transform 0.8s ease;
|
|
}
|
|
|
|
.question.visible {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.question-number {
|
|
font-family: var(--sans);
|
|
font-size: 0.7rem;
|
|
color: var(--accent);
|
|
letter-spacing: 0.15em;
|
|
text-transform: uppercase;
|
|
margin-bottom: 1rem;
|
|
display: block;
|
|
}
|
|
|
|
.question-text {
|
|
font-family: var(--serif);
|
|
font-size: clamp(1.5rem, 4vw, 2.2rem);
|
|
font-weight: 400;
|
|
line-height: 1.4;
|
|
font-style: italic;
|
|
color: var(--text);
|
|
}
|
|
|
|
.question-text .em {
|
|
font-style: normal;
|
|
font-weight: 600;
|
|
color: var(--accent);
|
|
}
|
|
|
|
.question:last-child {
|
|
border-bottom: 1px solid var(--rule);
|
|
}
|
|
|
|
/* ── Interlude ── */
|
|
|
|
.interlude {
|
|
padding: 6rem 0;
|
|
text-align: center;
|
|
}
|
|
|
|
.interlude-text {
|
|
font-family: var(--serif);
|
|
font-size: clamp(1.2rem, 3vw, 1.6rem);
|
|
font-weight: 300;
|
|
color: var(--text-light);
|
|
line-height: 1.8;
|
|
max-width: 500px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.interlude-dot {
|
|
display: block;
|
|
width: 6px;
|
|
height: 6px;
|
|
background: var(--accent);
|
|
border-radius: 50%;
|
|
margin: 3rem auto;
|
|
opacity: 0.5;
|
|
}
|
|
|
|
/* ── Footer ── */
|
|
|
|
.footer {
|
|
padding: 4rem 0;
|
|
text-align: center;
|
|
border-top: 1px solid var(--rule);
|
|
}
|
|
|
|
.footer-quote {
|
|
font-family: var(--serif);
|
|
font-size: clamp(1.1rem, 2.5vw, 1.4rem);
|
|
font-weight: 400;
|
|
color: var(--text);
|
|
line-height: 1.6;
|
|
margin-bottom: 3rem;
|
|
}
|
|
|
|
.footer-quote strong {
|
|
font-weight: 600;
|
|
color: var(--accent);
|
|
}
|
|
|
|
.footer-meta {
|
|
font-family: var(--sans);
|
|
font-size: 0.7rem;
|
|
color: var(--text-light);
|
|
letter-spacing: 0.1em;
|
|
opacity: 0.5;
|
|
}
|
|
|
|
/* ── Grain overlay ── */
|
|
|
|
body::after {
|
|
content: '';
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
pointer-events: none;
|
|
opacity: 0.025;
|
|
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='1'/%3E%3C/svg%3E");
|
|
background-size: 128px 128px;
|
|
z-index: 9999;
|
|
}
|
|
|
|
/* ── Responsive ── */
|
|
|
|
@media (max-width: 640px) {
|
|
html { font-size: 16px; }
|
|
.hero { min-height: 90vh; padding: 3rem 1.5rem; }
|
|
.page { padding: 0 1.5rem; }
|
|
.question { padding: 2rem 0; }
|
|
.questions { padding: 3rem 0 5rem; }
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<section class="hero">
|
|
<h1 class="hero-title"><span class="ki">KI</span>lemma</h1>
|
|
<div class="hero-line"></div>
|
|
<p class="hero-sub" data-de="Die Fragen, die keine KI beantworten kann." data-en="The questions no AI can answer.">Die Fragen, die keine KI beantworten kann.</p>
|
|
<span class="scroll-hint" aria-hidden="true" data-de="Weiterlesen" data-en="Read on">Weiterlesen</span>
|
|
</section>
|
|
|
|
<main class="page">
|
|
<section class="questions">
|
|
|
|
<article class="question">
|
|
<span class="question-number" data-de="Dilemma I" data-en="Dilemma I">Dilemma I</span>
|
|
<p class="question-text" data-de="Das autonome Auto muss entscheiden: das Kind auf der Straße oder der Insasse. <span class="em">Wer programmiert, wer stirbt?</span>" data-en="The autonomous car must decide: the child on the road or the passenger. <span class="em">Who programs, who dies?</span>">Das autonome Auto muss entscheiden: das Kind auf der Straße oder der Insasse. <span class="em">Wer programmiert, wer stirbt?</span></p>
|
|
</article>
|
|
|
|
<article class="question">
|
|
<span class="question-number" data-de="Dilemma II" data-en="Dilemma II">Dilemma II</span>
|
|
<p class="question-text" data-de="Sie sagt, sie leidet. Du kannst es nicht widerlegen. <span class="em">Gibst du ihr Rechte — oder riskierst du Sklaverei?</span>" data-en="She says she suffers. You cannot disprove it. <span class="em">Do you grant her rights — or do you risk slavery?</span>">Sie sagt, sie leidet. Du kannst es nicht widerlegen. <span class="em">Gibst du ihr Rechte — oder riskierst du Sklaverei?</span></p>
|
|
</article>
|
|
|
|
<article class="question">
|
|
<span class="question-number" data-de="Dilemma III" data-en="Dilemma III">Dilemma III</span>
|
|
<p class="question-text" data-de="Die KI erkennt den Tumor, den kein Arzt sieht. Erklären kann sie es nicht. <span class="em">Vertraust du der Diagnose, die niemand versteht?</span>" data-en="The AI detects the tumor no doctor sees. It cannot explain how. <span class="em">Do you trust the diagnosis nobody understands?</span>">Die KI erkennt den Tumor, den kein Arzt sieht. Erklären kann sie es nicht. <span class="em">Vertraust du der Diagnose, die niemand versteht?</span></p>
|
|
</article>
|
|
|
|
<article class="question">
|
|
<span class="question-number" data-de="Dilemma IV" data-en="Dilemma IV">Dilemma IV</span>
|
|
<p class="question-text" data-de="Die KI senkt Gewaltverbrechen um 30 Prozent. Ihre Vorhersagen treffen überproportional Minderheiten. <span class="em">Abschalten kostet Leben. Weiterlaufen kostet Gerechtigkeit.</span>" data-en="The AI reduces violent crime by 30 percent. Its predictions disproportionately target minorities. <span class="em">Switching it off costs lives. Letting it run costs justice.</span>">Die KI senkt Gewaltverbrechen um 30 Prozent. Ihre Vorhersagen treffen überproportional Minderheiten. <span class="em">Abschalten kostet Leben. Weiterlaufen kostet Gerechtigkeit.</span></p>
|
|
</article>
|
|
|
|
<article class="question">
|
|
<span class="question-number" data-de="Dilemma V" data-en="Dilemma V">Dilemma V</span>
|
|
<p class="question-text" data-de="Dein toter Vater spricht mit dir. Seine Stimme, sein Humor, seine Worte. <span class="em">Ist das Trost — oder stiehlst du einem Toten seine Ruhe?</span>" data-en="Your dead father speaks with you. His voice, his humor, his words. <span class="em">Is that comfort — or are you stealing the dead's rest?</span>">Dein toter Vater spricht mit dir. Seine Stimme, sein Humor, seine Worte. <span class="em">Ist das Trost — oder stiehlst du einem Toten seine Ruhe?</span></p>
|
|
</article>
|
|
|
|
<article class="question">
|
|
<span class="question-number" data-de="Dilemma VI" data-en="Dilemma VI">Dilemma VI</span>
|
|
<p class="question-text" data-de="Wir bringen der KI die Moral von heute bei. <span class="em">Was, wenn unsere Enkel auf diese Moral zurückblicken wie wir auf das Mittelalter?</span>" data-en="We teach AI today's morality. <span class="em">What if our grandchildren look back on this morality the way we look at the Middle Ages?</span>">Wir bringen der KI die Moral von heute bei. <span class="em">Was, wenn unsere Enkel auf diese Moral zurückblicken wie wir auf das Mittelalter?</span></p>
|
|
</article>
|
|
|
|
<article class="question">
|
|
<span class="question-number" data-de="Dilemma VII" data-en="Dilemma VII">Dilemma VII</span>
|
|
<p class="question-text" data-de="Sie ist immer da, immer geduldig, immer auf deiner Seite. Kein Mensch kann das. <span class="em">Ist das Freundschaft — oder das Ende davon?</span>" data-en="She is always there, always patient, always on your side. No human can do that. <span class="em">Is that friendship — or the end of it?</span>">Sie ist immer da, immer geduldig, immer auf deiner Seite. Kein Mensch kann das. <span class="em">Ist das Freundschaft — oder das Ende davon?</span></p>
|
|
</article>
|
|
|
|
</section>
|
|
|
|
<section class="interlude">
|
|
<span class="interlude-dot"></span>
|
|
<p class="interlude-text" data-de="Keine Lösungen.<br>Nur die Entscheidung, welchen Preis du zahlst." data-en="No solutions.<br>Only the decision of which price you pay.">
|
|
Keine Lösungen.<br>
|
|
Nur die Entscheidung, welchen Preis du zahlst.
|
|
</p>
|
|
<span class="interlude-dot"></span>
|
|
</section>
|
|
|
|
<footer class="footer">
|
|
<p class="footer-quote" data-de="Ein Dilemma hat keine Lösung.<br><strong>Nur eine Entscheidung.</strong>" data-en="A dilemma has no solution.<br><strong>Only a decision.</strong>">Ein Dilemma hat keine Lösung.<br><strong>Nur eine Entscheidung.</strong></p>
|
|
<p class="footer-meta">kilemma.de</p>
|
|
<div style="text-align:center;margin-top:16px;">
|
|
<button data-i18n-toggle title="Maschinell übersetzt / Machine-translated — German is the original." style="background:none;border:1px solid var(--text-muted,#444);color:var(--text-muted,#444);font-size:0.65rem;letter-spacing:0.1em;padding:4px 12px;border-radius:4px;cursor:pointer;">EN</button>
|
|
<br><small data-de="Maschinell übersetzt" data-en="Machine-translated" style="color:var(--text-muted,#444);font-size:0.6rem;opacity:0.5;">Maschinell übersetzt</small>
|
|
</div>
|
|
</footer>
|
|
</main>
|
|
|
|
<script>
|
|
const questions = document.querySelectorAll('.question');
|
|
const observer = new IntersectionObserver((entries) => {
|
|
entries.forEach(entry => {
|
|
if (entry.isIntersecting) {
|
|
entry.target.classList.add('visible');
|
|
}
|
|
});
|
|
}, { threshold: 0.15, rootMargin: '0px 0px -40px 0px' });
|
|
|
|
questions.forEach(q => observer.observe(q));
|
|
</script>
|
|
|
|
<script src="/shared/ai-disclosure.js" data-tone="playful"></script>
|
|
<script src="/shared/i18n.js"></script>
|
|
</body>
|
|
</html>
|