223015b kap2: demos + barn rgb/cmyk
- 18 demos aus refactor/didaktik-rewrite-2026 cherry-picked (aliasing-paar, byte-fuer-byte, container-vs-codec, drei-dateien, jpeg-pipeline, kap02-05-eroeffner, kb-vs-kib, nyquist-diagram, pivot-signal-zu-byte, psychoakustik/psychovisualitaet-grafik, raster-vs-vektor, summary-kap02, summary-organizer, usb-c-drei-achsen) - barn-rgb.png + barn-cmyk.png neu generiert (analog zu ybcbr.webp, kanaltrennung mit korrekter k-extraktion) - lv-original-vs-fake.jpg + 02-bild-audio-video.md slides wired up
This commit is contained in:
@@ -0,0 +1,254 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Eine Datei reist — und erzählt</title>
|
||||
<style>
|
||||
:root {
|
||||
--dark: #1a1a2e;
|
||||
--muted: #6b7280;
|
||||
--soft: #f8fafc;
|
||||
--border: #cbd5e1;
|
||||
--hl: #d63384;
|
||||
--visible: #2563eb;
|
||||
--hidden: #7c3aed;
|
||||
--transit: #ea580c;
|
||||
}
|
||||
html, body { margin: 0; padding: 0; background: #fff; font-family: system-ui, -apple-system, sans-serif; color: var(--dark); }
|
||||
body { padding: 28px 40px; }
|
||||
h1 { text-align: center; margin: 0 0 6px; font-size: 1.85rem; }
|
||||
.sub { text-align: center; color: var(--muted); margin-bottom: 22px; font-size: 1.05rem; }
|
||||
.sub strong { color: var(--dark); }
|
||||
|
||||
.scene {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1.2fr;
|
||||
gap: 22px;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.panel {
|
||||
border: 2px solid;
|
||||
border-radius: 12px;
|
||||
padding: 16px 18px;
|
||||
background: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
}
|
||||
.panel.visible { border-color: var(--visible); }
|
||||
.panel.hidden { border-color: var(--hidden); }
|
||||
|
||||
.panel-head { display: flex; justify-content: space-between; align-items: baseline; }
|
||||
.panel-tag {
|
||||
font-size: 0.7rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
color: var(--muted);
|
||||
}
|
||||
.panel-name { font-size: 1.25rem; font-weight: 700; }
|
||||
.panel.visible .panel-name { color: var(--visible); }
|
||||
.panel.hidden .panel-name { color: var(--hidden); }
|
||||
|
||||
.photo {
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
border: 1px solid var(--border);
|
||||
display: block;
|
||||
}
|
||||
|
||||
.photo-meta {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-family: ui-monospace, monospace;
|
||||
font-size: 0.78rem;
|
||||
color: var(--muted);
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
.exif-list {
|
||||
display: grid;
|
||||
grid-template-columns: 130px 1fr;
|
||||
gap: 4px 12px;
|
||||
font-size: 0.86rem;
|
||||
line-height: 1.4;
|
||||
}
|
||||
.exif-key {
|
||||
font-size: 0.7rem;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
color: var(--muted);
|
||||
padding-top: 3px;
|
||||
}
|
||||
.exif-val { font-family: ui-monospace, monospace; color: var(--dark); }
|
||||
.exif-val.gps { color: var(--hl); font-weight: 700; }
|
||||
|
||||
.transit-strip {
|
||||
max-width: 1200px;
|
||||
margin: 18px auto 0;
|
||||
border: 2px solid var(--transit);
|
||||
border-radius: 12px;
|
||||
padding: 14px 18px;
|
||||
background: #fff;
|
||||
display: grid;
|
||||
grid-template-columns: auto 1fr;
|
||||
gap: 16px;
|
||||
align-items: center;
|
||||
}
|
||||
.transit-tag {
|
||||
font-size: 0.7rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
color: var(--transit);
|
||||
writing-mode: vertical-rl;
|
||||
transform: rotate(180deg);
|
||||
text-align: center;
|
||||
}
|
||||
.transit-body { display: flex; flex-direction: column; gap: 8px; }
|
||||
.transit-route {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
font-size: 0.92rem;
|
||||
font-weight: 700;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.hop {
|
||||
background: var(--soft);
|
||||
border: 1.5px solid var(--border);
|
||||
padding: 4px 10px;
|
||||
border-radius: 6px;
|
||||
font-family: ui-monospace, monospace;
|
||||
font-size: 0.82rem;
|
||||
color: var(--dark);
|
||||
}
|
||||
.hop.origin { border-color: var(--visible); color: var(--visible); }
|
||||
.hop.dest { border-color: var(--visible); color: var(--visible); }
|
||||
.hop.edge { border-color: var(--transit); color: var(--transit); }
|
||||
.arrow { color: var(--muted); font-family: ui-monospace, monospace; }
|
||||
.transit-headers {
|
||||
font-family: ui-monospace, monospace;
|
||||
font-size: 0.78rem;
|
||||
color: var(--muted);
|
||||
line-height: 1.5;
|
||||
}
|
||||
.transit-headers strong { color: var(--dark); }
|
||||
|
||||
.verdict {
|
||||
margin-top: 18px;
|
||||
max-width: 1200px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
border: 2px solid var(--hl);
|
||||
border-radius: 12px;
|
||||
padding: 14px 22px;
|
||||
}
|
||||
.verdict-q { font-size: 1.1rem; font-weight: 700; color: var(--hl); }
|
||||
.verdict-a { font-size: 0.93rem; color: var(--dark); margin-top: 4px; }
|
||||
.verdict-a strong { color: var(--hl); }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Eine Datei reist — und erzählt</h1>
|
||||
<div class="sub">Ein Smartphone-Foto geht von <strong>Stuttgart</strong> nach <strong>Tokyo</strong>. Was sieht der Empfänger — und was bekommt er noch dazu?</div>
|
||||
|
||||
<div class="scene">
|
||||
|
||||
<div class="panel visible">
|
||||
<div class="panel-head">
|
||||
<span class="panel-name">Inhalt</span>
|
||||
<span class="panel-tag">Was du siehst</span>
|
||||
</div>
|
||||
|
||||
<svg class="photo" viewBox="0 0 420 280" preserveAspectRatio="xMidYMid slice">
|
||||
<defs>
|
||||
<linearGradient id="sky" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#fde68a"/>
|
||||
<stop offset="55%" stop-color="#fda4af"/>
|
||||
<stop offset="100%" stop-color="#9333ea"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="hills" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#312e81"/>
|
||||
<stop offset="100%" stop-color="#0f172a"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect x="0" y="0" width="420" height="280" fill="url(#sky)"/>
|
||||
<circle cx="320" cy="105" r="32" fill="#fff7ed" opacity="0.95"/>
|
||||
<path d="M0,200 L60,170 L110,185 L160,160 L210,178 L260,150 L310,172 L360,148 L420,168 L420,280 L0,280 Z" fill="url(#hills)"/>
|
||||
<path d="M0,225 L50,210 L100,222 L150,205 L200,220 L250,202 L300,218 L350,200 L420,215 L420,280 L0,280 Z" fill="#1e1b4b" opacity="0.7"/>
|
||||
<rect x="80" y="225" width="14" height="42" fill="#0f172a"/>
|
||||
<rect x="180" y="232" width="10" height="35" fill="#0f172a"/>
|
||||
<rect x="240" y="220" width="18" height="48" fill="#0f172a"/>
|
||||
<rect x="300" y="234" width="11" height="34" fill="#0f172a"/>
|
||||
<rect x="86" y="232" width="3" height="3" fill="#fbbf24"/>
|
||||
<rect x="188" y="240" width="2" height="2" fill="#fbbf24"/>
|
||||
<rect x="248" y="228" width="3" height="3" fill="#fbbf24"/>
|
||||
<rect x="307" y="240" width="2" height="2" fill="#fbbf24"/>
|
||||
</svg>
|
||||
|
||||
<div class="photo-meta">
|
||||
<span>HEIC · 4032 × 3024</span>
|
||||
<span>3,2 MB</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel hidden">
|
||||
<div class="panel-head">
|
||||
<span class="panel-name">Gepäck</span>
|
||||
<span class="panel-tag">Was die Datei über sich weiß</span>
|
||||
</div>
|
||||
|
||||
<div class="exif-list">
|
||||
<div class="exif-key">Kamera</div>
|
||||
<div class="exif-val">Apple iPhone 15 Pro · 24 mm · ƒ/1.78</div>
|
||||
|
||||
<div class="exif-key">Belichtung</div>
|
||||
<div class="exif-val">1/250 s · ISO 100 · EV 0</div>
|
||||
|
||||
<div class="exif-key">Aufgenommen</div>
|
||||
<div class="exif-val">2026-04-12 · 18:47:12 · +02:00</div>
|
||||
|
||||
<div class="exif-key">GPS</div>
|
||||
<div class="exif-val gps">48.7847° N · 9.1825° E · 248 m<br><span style="font-weight:400">(Stuttgart, Königstraße 28)</span></div>
|
||||
|
||||
<div class="exif-key">Software</div>
|
||||
<div class="exif-val">iOS 18.4.1 · HDR · Live Photo</div>
|
||||
|
||||
<div class="exif-key">Farbprofil</div>
|
||||
<div class="exif-val">Display P3</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="transit-strip">
|
||||
<div class="transit-tag">Weg</div>
|
||||
<div class="transit-body">
|
||||
<div class="transit-route">
|
||||
<span class="hop origin">Stuttgart</span>
|
||||
<span class="arrow">→</span>
|
||||
<span class="hop">DNS</span>
|
||||
<span class="arrow">→</span>
|
||||
<span class="hop">TLS 1.3</span>
|
||||
<span class="arrow">→</span>
|
||||
<span class="hop edge">CDN-Edge Tokyo</span>
|
||||
<span class="arrow">→</span>
|
||||
<span class="hop dest">Tokyo</span>
|
||||
</div>
|
||||
<div class="transit-headers">
|
||||
<strong>HTTP/3 200 OK</strong> · content-type: image/heic · content-length: 3 220 480 · <strong>RTT 47 ms</strong> · cache: HIT (Edge tok-7) · age: 312 s
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="verdict">
|
||||
<div class="verdict-q">Eine Datei = Inhalt + Gepäck + Weg.</div>
|
||||
<div class="verdict-a"><strong>Inhalt</strong> sieht der Empfänger. <strong>Gepäck</strong> verrät, wer sie gemacht hat — und wo. <strong>Weg</strong> entscheidet, wie schnell sie ankommt. Drei Schichten, eine Datei.</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user