Filipe: „ich hätte das gerne oben also nicht in dieser kachel sondern über der kachel wo die videos laufen werden und das soll extrem perfektioniert werden." WARUM DAS MEHR IST ALS EIN UMHÄNGEN Die Register standen INNERHALB des einklappbaren Teils. Wer die Regie zuklappte, um mehr Bild zu haben, hatte sie nicht mehr — und genau dann braucht man sie. Oben ändert sich ihre Aufgabe: aus dem Inhaltsverzeichnis einer Schublade wird eine Steuerleiste über der Sendung. Daraus folgen vier Dinge, die vorher nicht nötig waren: 1. EIN REGISTER MACHT DIE ZUGEKLAPPTE REGIE AUF. Vorher wechselte nur der Reiter, die Tafel lag im zugeklappten Teil — sichtbar passierte nichts. Nur auf, nie zu: Zugemacht wird mit dem Griff. Ein Knopf, der beim zweiten Druck das Gegenteil tut, versteckt irgendwann etwas, das jemand gerade liest. 2. SIE BRICHT NICHT UM, SIE ROLLT. Sieben Register in zwei Zeilen kosten am oberen Rand rund 90 px — und zwar dem Video. Gemessen: eine Zeile auf 1440 px wie auf 390 px, dort mit Einrasten und weichen Rändern als Auskunft, dass es weitergeht. 3. SIE LÖST EIN, WAS `role="tablist"` VERSPRICHT. Pfeiltasten wandern, Pos1/Ende springen, genau ein Register liegt in der Tabulatorfolge. Steht die Rolle im Markup und tut das Programm es nicht, sagt ein Vorleser etwas an, was nicht stimmt — schlimmer als keine Rolle. Gemessen wird das gedrückt, nicht gelesen: fünf Tastendrücke, und Fokus, Auswahl und offene Tafel müssen jedes Mal dasselbe sagen. 4. EINE GLEITENDE MARKE zeigt, wo man steht — Glas mit Lichtkante, darunter ein roter Streifen zur offenen Tafel. Ist die Regie zugeklappt, wird er leise: Der Streifen führt dann nirgendwohin. Dazu ein Schild „Regie" links (am Handy weg), damit die sieben Wörter am oberen Rand nicht wie eine zweite Navigation aussehen. DER FEHLER, DER MICH ZWEI ANLÄUFE GEKOSTET HAT Die Leiste war im Browser 1 px hoch, ihre Register standen 55 px hoch daneben und ragten über das Video. Ursache: 900 Zeilen weiter unten stand eine ZWEITE `grid-template-rows` für `.saal` (aus der Zeit, als der Saal zwei Zeilen hatte). Sie stand später und gewann — die Leiste landete in der `1fr`-Zeile und bekam null Pixel. Und fast hätte ich das Falsche repariert: Beim Durchprobieren habe ich `style.gridTemplateRows` gesetzt — ein Stilattribut schlägt jede Regel im Stilblatt. Damit „funktionierten" `auto` und `min-content` gleich gut, weil beide die zweite Regel aushebelten, und es sah nach einem Unterschied zwischen den beiden aus. Erst nach dem Entfernen der Doppelung hat die Gegenprobe gezeigt: `auto` tut es genauso. Eine Probe, die mehr ändert als das, wonach man sucht, beantwortet eine andere Frage. Es gibt jetzt eine Prüfung, dass genau EINE Regel die Zeilen des Saals bestimmt. ZWEI WEITERE FUNDE AUS DER MESSUNG Am Handy blieben bei offener Regie 131 px für das Bild — ein Streifen. Mein erster Versuch (62dvh → 52dvh) machte es auf 75 px SCHLECHTER: Die Ursache lag woanders, die Leiste des Pults bricht dort in vier Zeilen um und ist rund 200 px hoch, wovon ein Anteil der Fensterhöhe nichts wissen kann. Mit `min(52dvh, 19rem)` sind es 210 px. Und die Spendenkarte wurde als „steht aus dem Bild heraus" gemeldet: 413 statt 430 px, links −1. 413 ist genau das 0,96-fache — die Messung hatte die Karte im Ausblenden erwischt. Sie wartet jetzt auf `data-da="ja"` und misst nur, was ganz da ist. GEPRUEFT pruef-reaktion 280 (vorher 260), 0 Fehler — Abschnitt 18 neu. mess-reaktion: Rückgabewert 0, kein ACHTUNG; misst die Leiste jetzt auf 1440 und auf 390 px, samt Tastatur und Aufklappen. Dazu grün: handy, buehne, struktur, css-klassen, tippziele. Co-Authored-By: Claude Opus 5 <[email protected]>
349 lines
15 KiB
HTML
349 lines
15 KiB
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||
<title>Draußen · Das Rudel</title>
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||
<meta name="theme-color" content="#06090f" />
|
||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281412" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281412" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202609281412" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202609281412" />
|
||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609281412" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202609281412" />
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202609281412" />
|
||
</head>
|
||
|
||
<body class="start">
|
||
|
||
<div class="schleier" aria-hidden="true"></div>
|
||
|
||
<header class="kopfleiste">
|
||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||
</svg>
|
||
<span class="zurueck-knopf__text">Zurück</span>
|
||
</button>
|
||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Das Rudel</a> · Draußen</span></p>
|
||
<div class="kopfleiste__rechts">
|
||
<span class="wer" id="wer">…</span>
|
||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="inhalt inhalt--breit">
|
||
|
||
<section class="kopf-zeile">
|
||
<div>
|
||
<p class="marke">Das Rudel · Draußen</p>
|
||
<h1 class="titel">Draußen</h1>
|
||
<p class="unterzeile">
|
||
Ob gerade gestreamt wird, wo du Dogi sonst findest — und wo dein
|
||
Rabatt wartet.
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ==================================================================
|
||
WARUM DIESE SEITE AM 21.09.2026 UMGEBAUT WURDE
|
||
|
||
Filipe: "mach was anderes aus dieser seite oder mach es viel
|
||
krass und geiler, den wir haben ja jetzt den treff chat also ist
|
||
das schon fast unnoetig ... erstell was was mich von den socken
|
||
schmeisst. es soll wirklich sogar ein wow effekt fuer die
|
||
community ergeben." Dazu die eine Auflage: die Kachel bleibt.
|
||
|
||
WAS SIE VORHER WAR: zwei Karten mit zwei Adressen. Sauber
|
||
gebaut -- und trotzdem kam niemand ein zweites Mal wieder. Wer im
|
||
Rudel ist, kennt die Website. Den Rabattcode merkt man sich beim
|
||
ersten Mal.
|
||
|
||
DIE FRAGE, DIE WIRKLICH JEMAND HAT, IST EINE ANDERE: Laeuft er
|
||
gerade? Und wenn nicht -- wie lange noch? Darauf gab es im Rudel
|
||
bisher keine Antwort, obwohl das Haus sie seit dem 20.08. kennt:
|
||
postfach.dogfather-universe.com/live-status, derselbe Dienst, von
|
||
dem der oeffentliche Streamplan lebt.
|
||
|
||
DER PULS OBEN IST DESHALB KEIN SCHMUCK. Er ist der Grund, diese
|
||
Seite zu oeffnen -- und der Grund, morgen wiederzukommen.
|
||
============================================================== -->
|
||
|
||
<!-- ==================================================================
|
||
DER PULS
|
||
|
||
DREI LAGEN, NICHT ZWEI. Ein Ampelbauteil kennt ueblicherweise
|
||
"live" und "nicht live". Das ist eine Luege, sobald der Dienst
|
||
nicht erreichbar ist: Dann steht dort "nicht live", obwohl
|
||
niemand nachgesehen hat, und jemand verpasst einen Stream, weil
|
||
eine Seite so getan hat, als wuesste sie es.
|
||
|
||
Deshalb `data-lage` mit vier Werten:
|
||
laedt -- wir fragen gerade
|
||
live -- er sendet, mit Titel und Weg hin
|
||
wartet -- er sendet nicht, mit Countdown
|
||
unklar -- wir konnten nicht nachsehen, und sagen das
|
||
|
||
In "unklar" laeuft der Countdown WEITER. Er braucht kein Netz --
|
||
die naechste 20-Uhr-Marke ergibt sich aus der Uhr des Geraets.
|
||
Eine Stoerung beim Live-Dienst nimmt der Seite also nur die eine
|
||
Auskunft, die wirklich von ihm abhaengt, nicht den Rest.
|
||
|
||
Der Ring fuellt sich ueber den ganzen Tag bis zur naechsten
|
||
Sendezeit. Er zeigt damit dasselbe wie die Zahl, aber ohne Lesen:
|
||
Ein fast voller Ring heisst "gleich".
|
||
============================================================== -->
|
||
<section class="puls" id="puls" data-lage="laedt" aria-live="polite">
|
||
<div class="puls__aura" aria-hidden="true"></div>
|
||
|
||
<div class="puls__ring-feld">
|
||
<svg class="puls__ring" viewBox="0 0 120 120" aria-hidden="true">
|
||
<circle class="puls__ring-bahn" cx="60" cy="60" r="52" />
|
||
<circle class="puls__ring-fortschritt" id="puls-bogen" cx="60" cy="60" r="52" />
|
||
</svg>
|
||
<span class="puls__punkt" aria-hidden="true"></span>
|
||
</div>
|
||
|
||
<div class="puls__text">
|
||
<p class="puls__marke" id="puls-marke">DogFather auf TikTok</p>
|
||
<p class="puls__lage" id="puls-lage">Wir sehen gerade nach …</p>
|
||
<p class="puls__zahl" id="puls-zahl">–:–:–</p>
|
||
<p class="puls__klein" id="puls-klein">Alle Zeiten in deiner Ortszeit.</p>
|
||
</div>
|
||
|
||
<!-- DER KNOPF STEHT NEBEN DEM TEXT, NICHT DARIN (21.09.2026).
|
||
|
||
Am Rechner ist die Karte ueber 1200 px breit; lag der Knopf im
|
||
Textblock, klebte er links unten und rechts blieb die halbe
|
||
Karte leer. Als eigenes Geschwister rutscht er mit
|
||
`margin-left: auto` an den rechten Rand -- dorthin, wo der
|
||
Daumen am Handy und der Blick am Rechner ohnehin hinwandern.
|
||
|
||
Am Handy bricht die Karte in eine Spalte um, und er steht
|
||
wieder unter dem Text. Dafuer sorgt derselbe Umbruch, der auch
|
||
den Ring nach oben setzt -- keine zweite Regel. -->
|
||
<a class="puls__knopf" id="puls-knopf"
|
||
href="https://www.tiktok.com/@dogfather0804"
|
||
target="_blank" rel="noopener noreferrer" hidden>Jetzt zuschauen →</a>
|
||
</section>
|
||
|
||
<!-- ==================================================================
|
||
DAS BESONDERE EVENT
|
||
|
||
Dieselbe Quelle wie beim oeffentlichen Streamplan
|
||
(/special-event). Traegt die Verwaltung eines ein, erscheint
|
||
dieser Kasten; sonst ist er nicht da.
|
||
|
||
ER IST VERSTECKT UND NICHT LEER: Ein Kasten mit "kein Event
|
||
geplant" belegt jeden Tag Platz, um an den meisten Tagen nichts
|
||
zu sagen -- und genau deshalb liest ihn niemand mehr an dem Tag,
|
||
an dem doch etwas drinsteht.
|
||
============================================================== -->
|
||
<section class="event" id="event" hidden>
|
||
<span class="event__zeichen" aria-hidden="true">★</span>
|
||
<div class="event__text">
|
||
<p class="event__marke">Besonderes Live-Event</p>
|
||
<h2 class="event__titel" id="event-titel"></h2>
|
||
<p class="event__zahl" id="event-zahl"></p>
|
||
</div>
|
||
<a class="event__knopf" id="event-knopf" href="#"
|
||
target="_blank" rel="noopener noreferrer" hidden>Mehr erfahren →</a>
|
||
</section>
|
||
|
||
<!-- ==================================================================
|
||
DIE KANAELE
|
||
|
||
Die drei Accounts kommen vom Server (/workspace/api/draussen) und
|
||
stehen hier NICHT im Quelltext. Sie haengen dort an derselben
|
||
Liste, die auch die Aufgabenverteilung benutzt.
|
||
|
||
WARUM DAS WICHTIG IST: Am 21.09.2026 stand in dieser Liste
|
||
"@hasidog00804" -- eine Null zu viel, der Account existiert
|
||
nicht. Zwei Pruefungen hatten den Tippfehler abgeschrieben und
|
||
waren deshalb gruen. Eine dritte Abschrift hier waere ein toter
|
||
Link gewesen, den niemand meldet, weil niemand weiss, dass er
|
||
falsch ist.
|
||
|
||
SOLANGE NICHTS DA IST, STEHT HIER AUCH NICHTS -- kein Geruest aus
|
||
grauen Kaesten. Geht der Abruf schief, erscheint ein Satz, der
|
||
sagt, was los ist, statt einer leeren Reihe, die aussieht, als
|
||
gaebe es keine Kanaele.
|
||
============================================================== -->
|
||
<section class="kanaele" id="kanaele" hidden>
|
||
<h2 class="kanaele__titel">Wo du ihn sonst findest</h2>
|
||
<div class="kanaele__reihe" id="kanaele-reihe"></div>
|
||
<p class="kanaele__fehler" id="kanaele-fehler" hidden>
|
||
Die Kanäle konnten gerade nicht geladen werden. Versuch es später
|
||
noch einmal — an deinem Gerät liegt es nicht.
|
||
</p>
|
||
</section>
|
||
|
||
<!-- ==================================================================
|
||
DIE ZWEI SEITEN (seit 19.09.2026, unveraendert in der Sache)
|
||
|
||
DER CODE IST ECHT UND WURDE NACHGESEHEN, nicht abgeschrieben:
|
||
Er steht in partnercodes.json von VanVans Shop als DOGI10, 10
|
||
Prozent, aktiv, ohne Ablaufdatum, mit der Notiz "Zum weitergeben
|
||
an Community, Zuschauer, Freunde etc." -- und mit
|
||
"giltAufSale": false. Genau deshalb steht der Satz zu den
|
||
reduzierten Artikeln hier drunter. Ein Rabatt, der an der Kasse
|
||
anders ausfaellt als angekuendigt, kostet mehr Vertrauen, als
|
||
er Umsatz bringt.
|
||
|
||
Der zweite Code in derselben Datei ist als "Nur fuer Filipe
|
||
persoenlich" vermerkt und steht deshalb NIRGENDWO auf dieser
|
||
Seite.
|
||
============================================================== -->
|
||
|
||
<h2 class="seiten-titel">Unsere Seiten</h2>
|
||
|
||
<div class="seiten-gitter">
|
||
|
||
<!-- ---- DOGFATHER UNIVERSE ------------------------------------ -->
|
||
<article class="aussen aussen--dogi" data-weg="https://dogfather-universe.com/">
|
||
<div class="aussen__schein" aria-hidden="true"></div>
|
||
<!-- DIE SCHWEBENDEN LOGOS (19.09.2026).
|
||
|
||
Filipe: "die sollen paar mal sein in der kacheln und so wie
|
||
schweben, sich ganz leicht bewegen."
|
||
|
||
VIER STUECK, VERSCHIEDEN GROSS UND VERSCHIEDEN SCHNELL. Alle
|
||
gleich waere ein Muster, und ein Muster sieht nach Tapete
|
||
aus. Verschieden heisst: Man nimmt Tiefe wahr, ohne dass
|
||
etwas ablenkt.
|
||
|
||
Sie tragen KEINE Farbe: Das PNG ist eine Maske, die Farbe
|
||
kommt aus dem CSS (--aussen-ton). Deshalb passt dasselbe
|
||
Logo in jede Kachel, egal welchen Ton sie hat.
|
||
|
||
`aria-hidden`, weil sie nichts sagen -- wer die Seite
|
||
vorlesen laesst, soll nicht viermal "Logo" hoeren. -->
|
||
<div class="logo-feld" aria-hidden="true">
|
||
<span class="logo-feld__stueck" data-n="1"></span>
|
||
<span class="logo-feld__stueck" data-n="2"></span>
|
||
<span class="logo-feld__stueck" data-n="3"></span>
|
||
<span class="logo-feld__stueck" data-n="4"></span>
|
||
</div>
|
||
<div class="aussen__kopf">
|
||
<span class="aussen__zeichen" aria-hidden="true">
|
||
<svg viewBox="0 0 24 24">
|
||
<circle cx="12" cy="12" r="8.4" />
|
||
<path d="M3.6 12h16.8M12 3.6c2.4 2.5 2.4 13.9 0 16.8M12 3.6c-2.4 2.5-2.4 13.9 0 16.8" />
|
||
</svg>
|
||
</span>
|
||
<div>
|
||
<p class="aussen__marke">Die Website</p>
|
||
<h3 class="aussen__titel">DogFather Universe</h3>
|
||
</div>
|
||
</div>
|
||
<p class="aussen__satz">
|
||
Die Heimat von DogFather als Streamer, der HasiDog-Community
|
||
und seiner Arbeit als Manager bei Spicy Media.
|
||
</p>
|
||
|
||
<!-- WAS ES DORT GIBT -- ABGELESEN, NICHT AUSGEDACHT.
|
||
Die Punkte stammen aus der Navigation von
|
||
dogfather-universe.com (streamplan.html, hasidog.html,
|
||
zeitreise.html, stimmen.html). Eine erfundene Aufzählung
|
||
wäre beim ersten Klick als Lüge aufgeflogen.
|
||
|
||
UND SIE SIND KEINE LINKS: Die ganze Karte führt zur
|
||
Startseite; einzelne Links darin würden diesen Klick
|
||
zerschneiden und wären auf dem Handy außerdem zu kleine
|
||
Ziele. -->
|
||
<ul class="aussen__liste">
|
||
<li>Der Streamplan – wann was läuft</li>
|
||
<li>HasiDog: die Community rund um Dogi</li>
|
||
<li>Die Zeitreise durch alles Bisherige</li>
|
||
<li>Stimmen von Leuten, die dabei waren</li>
|
||
</ul>
|
||
|
||
<p class="aussen__weg">
|
||
<span class="aussen__adresse">dogfather-universe.com</span>
|
||
<a class="aussen__knopf" href="https://dogfather-universe.com/"
|
||
target="_blank" rel="noopener noreferrer">Seite öffnen →</a>
|
||
</p>
|
||
</article>
|
||
|
||
<!-- ---- VANVANS SHOP ------------------------------------------ -->
|
||
<article class="aussen aussen--shop" data-weg="https://vans-diy-bastelbedarf.com/">
|
||
<div class="aussen__schein" aria-hidden="true"></div>
|
||
<div class="logo-feld" aria-hidden="true">
|
||
<span class="logo-feld__stueck" data-n="1"></span>
|
||
<span class="logo-feld__stueck" data-n="2"></span>
|
||
<span class="logo-feld__stueck" data-n="3"></span>
|
||
<span class="logo-feld__stueck" data-n="4"></span>
|
||
</div>
|
||
<div class="aussen__kopf">
|
||
<span class="aussen__zeichen" aria-hidden="true">
|
||
<svg viewBox="0 0 24 24">
|
||
<path d="M5 8h14l-1.1 11.2a1.4 1.4 0 0 1-1.4 1.3H7.5a1.4 1.4 0 0 1-1.4-1.3z" />
|
||
<path d="M9 8V6.4a3 3 0 0 1 6 0V8" />
|
||
</svg>
|
||
</span>
|
||
<div>
|
||
<p class="aussen__marke">Der Shop</p>
|
||
<!-- NAME UND BESCHREIBUNG STAMMEN VON DER SEITE SELBST
|
||
(og:site_name und meta description). Meine erste Fassung
|
||
hieß „Van's DIY Bastelbedarf" und nannte „Perlen,
|
||
Anhänger, Werkzeug" — beides ausgedacht und beides
|
||
falsch. Der Laden heißt mit „&", und er verkauft vor
|
||
allem Handgemachtes. -->
|
||
<h3 class="aussen__titel">Van's DIY & Bastelbedarf</h3>
|
||
</div>
|
||
</div>
|
||
<p class="aussen__satz">
|
||
VanVans eigener Laden: handgemachte Häkelwerke, Plushies,
|
||
Schmuck und Bastelzubehör.
|
||
</p>
|
||
|
||
<!-- Der Rabatt. Eigener Block, weil er das Wichtigste auf
|
||
dieser Karte ist -- und kopierbar, weil niemand einen Code
|
||
abtippen soll, den er sich vorher merken muss. -->
|
||
<div class="gutschein">
|
||
<p class="gutschein__zeile">
|
||
<span class="gutschein__prozent">10 %</span>
|
||
<span class="gutschein__wofuer">für alle aus der Community</span>
|
||
</p>
|
||
<button type="button" class="gutschein__code" id="code-knopf"
|
||
data-code="DOGI10"
|
||
aria-label="Rabattcode DOGI10 kopieren">
|
||
<span class="gutschein__wort">DOGI10</span>
|
||
<span class="gutschein__hinweis" id="code-hinweis">tippen zum Kopieren</span>
|
||
</button>
|
||
<p class="gutschein__klein">
|
||
Beim Bestellen im Feld für den Gutscheincode eintragen.
|
||
Gilt nicht auf bereits reduzierte Artikel.
|
||
</p>
|
||
</div>
|
||
|
||
<p class="aussen__weg">
|
||
<span class="aussen__adresse">vans-diy-bastelbedarf.com</span>
|
||
<a class="aussen__knopf" href="https://vans-diy-bastelbedarf.com/"
|
||
target="_blank" rel="noopener noreferrer">Shop öffnen →</a>
|
||
</p>
|
||
</article>
|
||
|
||
</div>
|
||
|
||
<p class="seiten-fuss">
|
||
Alles hier öffnet sich in einem neuen Fenster — das Rudel bleibt
|
||
also offen.
|
||
</p>
|
||
|
||
</main>
|
||
|
||
<script src="assets/js/nachfrage.js?v=202609281412" defer></script>
|
||
|
||
<script src="assets/js/wahl.js?v=202609281412" defer></script>
|
||
<script src="assets/js/bereiche.js?v=202609281412" defer></script>
|
||
<script src="assets/js/installieren.js?v=202609281412" defer></script>
|
||
<script src="assets/js/kopf.js?v=202609281412" defer></script>
|
||
<script src="assets/js/glocke.js?v=202609281412" defer></script>
|
||
<script src="assets/js/live.js?v=202609281412" defer></script>
|
||
<script src="assets/js/unsere-seiten.js?v=202609281412" defer></script>
|
||
</body>
|
||
</html>
|