Startseite: Hintergrund-Kanten weg, "Event des Jahres" neu aufgebaut
Gemeldet 27.08.2026: "es ueberschneidet den hintergrund sieht irgendwie scheisse aus." 1. HARTE KANTEN IM HINTERGRUND Das scharfe Trio-Artwork lag als CSS-Hintergrund mit "contain" hinter der Seite und endete an einer messerscharfen Linie (bei 1366x800 exakt bei 570px und 1345px); darueber/darunter lag sichtbar die verwaschene Fassung. Das las sich wie ein aufgeklebtes Band quer ueber der Seite. Jetzt ein echtes <img>, das an seinen EIGENEN Raendern weich in die verwaschene Ebene uebergeht. Entscheidend: Die Maske haengt am Bild, nicht am Fenster -- als CSS-Hintergrund war das unmoeglich, weil die Kante je nach Fensterformat wandert. 2. "EVENT DES JAHRES" -- 700px tote Flaeche Eine 480px schmale Kachel sass zentriert in einer 1180px breiten Kiste, die selbst Rahmen und Hintergrund trug: drei Rahmen ineinander um einen einzigen Inhalt, links und rechts je 350px Leere. Jetzt volle Breite mit Bild links / Text rechts, die umgebende Kiste ist rahmenlos. Hoehe von 656px auf 332px, ohne dass Inhalt verloren geht -- das Bild ist dabei doppelt so gross wie vorher. 3. Welt-Kacheln mit einer Spur Milchglas und feinem Lichtsaum, damit sie zur Szene gehoeren statt als flache Rechtecke daraufzuliegen. BEIM BAUEN GEFUNDEN UND KORRIGIERT: Der erste Entwurf hat die versteckte zweite Event-Kachel wieder sichtbar gemacht (leere Kachel mit einsamem "Mehr erfahren"). Ursache ist die im Code zweimal dokumentierte Falle: ".jahres-event-card[hidden]" ist genau so stark wie eine Zwei-Klassen-Regel und verliert gegen die spaetere. Deshalb steht in den neuen Regeln ueberall :not([hidden]). Versionsnummern von main.css/main.js hochgesetzt -- Assets werden mit max-age=14400 ausgeliefert, sonst haette Dogi die Aenderung bis zu vier Stunden nicht gesehen. Geprueft: pruef-handy (56), pruef-barrierefrei (60), pruef-design (0 Fundstellen), pruef-blickfang (13), pruef-assets (67), pruef-musik (17) -- alle gruen. Der Musik-Knopf holt seine Farben jetzt aus dem <img> statt aus dem CSS-Hintergrund (main.js), sonst waere er ausgerechnet auf der Startseite auf die Ersatzfarbe zurueckgefallen. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
<meta name="robots" content="noindex" />
|
||||
<title>Seite nicht gefunden — DOGFATHER UNIVERSE</title>
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -42,6 +42,6 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-404.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Unterstütze Dogfather dauerhaft mit der DogiCrew 🩵 und sammle exklusive Treueprämien — die Teddy-Kollektion entsteht in Kooperation mit VanVan." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -605,7 +605,7 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-abonnieren.js?v=20260828c"></script>
|
||||
<script src="assets/js/supporter.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
(function () {
|
||||
const S = window.DogiSupporter;
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
<meta name="robots" content="noindex" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -134,6 +134,6 @@
|
||||
</main>
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Detailansicht einer Aktion oder eines Projekts von Team Dogi." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -53,7 +53,7 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/data-aktionen.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-aktion-detail.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const params = new URLSearchParams(location.search);
|
||||
|
||||
+164
-29
@@ -1835,15 +1835,34 @@ header.site-header {
|
||||
kein Grid-Kind), zeigt bewusst IMMER genau zwei Events nebeneinander. Gleiche
|
||||
Karten-/Tag-Optik wie die 3 Welt-Kacheln, damit es wie ein natürlicher Abschluss des
|
||||
Grids wirkt statt wie ein fremdes Element. */
|
||||
/* Die umgebende Kiste ist seit 27.08.2026 rahmenlos. Vorher trug sie
|
||||
Hintergrund UND Rahmen, und die Event-Karte darin trug beides noch
|
||||
einmal — zwei Rahmen um denselben Inhalt, dazwischen tote Fläche. Die
|
||||
Karte allein trägt das Design jetzt besser; die Überschrift steht frei
|
||||
darüber. */
|
||||
.jahres-events {
|
||||
margin-top: 1.2rem;
|
||||
background: var(--card-bg);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius);
|
||||
padding: 1.6rem;
|
||||
box-shadow: var(--shadow);
|
||||
margin-top: 1.8rem;
|
||||
background: none;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
.jahres-events-head { margin-bottom: .9rem; }
|
||||
/* Ohne die umgebende Kiste stand die Überschrift als nackter Text
|
||||
zwischen zwei Kacheln und wirkte verloren. Als goldene Plakette gehört
|
||||
sie sichtbar zur Event-Karte darunter — gedecktes Gold, kein grelles
|
||||
Leuchten (Projektregel: augenschonend). */
|
||||
.jahres-events-head .tag {
|
||||
display: inline-block;
|
||||
padding: .34rem .95rem;
|
||||
border-radius: 999px;
|
||||
border: 1px solid rgba(212, 175, 55, .38);
|
||||
background: rgba(212, 175, 55, .09);
|
||||
color: #e8c465;
|
||||
font-size: .82rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: .04em;
|
||||
}
|
||||
.jahres-events-head { margin-bottom: 1.2rem; }
|
||||
.jahres-events-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
@@ -1875,11 +1894,19 @@ header.site-header {
|
||||
overflow: hidden;
|
||||
isolation: isolate;
|
||||
padding: 1.2rem 1.4rem;
|
||||
border-radius: calc(var(--radius) - 4px);
|
||||
border-radius: var(--radius);
|
||||
border: 1px solid rgba(212, 175, 55, .35);
|
||||
/* Die Karte steht jetzt ohne umgebende Kiste direkt über dem Artwork
|
||||
und muss ihren Hintergrund selbst mitbringen — vorher genügte ein
|
||||
Hauch Weiß, weil die Kiste darunter ohnehin deckend war. Deckend
|
||||
genug für ruhigen Lesetext, mit einer Spur Milchglas, damit die Karte
|
||||
zur Seite gehört statt wie ein Aufkleber darauf zu liegen. */
|
||||
background:
|
||||
radial-gradient(circle at 15% 0%, rgba(212, 175, 55, .08), transparent 55%),
|
||||
rgba(255, 255, 255, .02);
|
||||
radial-gradient(circle at 12% 0%, rgba(212, 175, 55, .10), transparent 58%),
|
||||
linear-gradient(180deg, rgba(19, 23, 31, .90), rgba(13, 16, 22, .94));
|
||||
-webkit-backdrop-filter: blur(6px);
|
||||
backdrop-filter: blur(6px);
|
||||
box-shadow: 0 14px 40px rgba(0, 0, 0, .38);
|
||||
transition: border-color .2s ease, transform .2s ease, box-shadow .2s ease;
|
||||
}
|
||||
.jahres-event-card:hover, .jahres-event-card:focus-visible {
|
||||
@@ -1909,15 +1936,69 @@ header.site-header {
|
||||
.jahres-event-card h3 { margin: 0 0 .4rem; font-size: 1.15rem; }
|
||||
.jahres-event-card p { margin: 0 0 .6rem; color: var(--text-muted); font-size: .93rem; line-height: 1.55; }
|
||||
.jahres-event-mehr { color: #e8c465; font-weight: 600; font-size: .88rem; }
|
||||
/* Genau EIN aktives Event: zentrierte, etwas größere Einzelkachel statt
|
||||
halbleerem Zwei-Spalten-Raster (Nutzer-Wunsch: "spezieller"). */
|
||||
.jahres-events-grid-einzeln {
|
||||
grid-template-columns: 1fr;
|
||||
max-width: 480px;
|
||||
margin: 0 auto;
|
||||
/* Genau EIN aktives Event (27.08.2026 neu gebaut).
|
||||
|
||||
VORHER: eine 480px schmale Kachel, zentriert in einer 1180px breiten
|
||||
Kiste. Links und rechts davon standen je 350px totes Dunkelgrau, und
|
||||
weil die Kiste selbst schon Rahmen und Hintergrund hatte, saß eine
|
||||
gerahmte Karte in einer gerahmten Kiste in einem Container — drei
|
||||
Rahmen ineinander um einen einzigen Inhalt ("sieht irgendwie scheisse
|
||||
aus", 27.08.2026).
|
||||
|
||||
JETZT: Die Karte nimmt die volle Breite ein und teilt sich in Bild
|
||||
links / Text rechts. Das Bild ist das Beste am Event -- es bekommt
|
||||
Platz statt Briefmarkenformat, und die leere Fläche verschwindet, weil
|
||||
der Text sie füllt. Ab 900px abwärts wird daraus wieder
|
||||
untereinander, sonst würden beide Spalten zu schmal. */
|
||||
.jahres-events-grid-einzeln { grid-template-columns: 1fr; }
|
||||
/* ⚠️ :not([hidden]) ist hier PFLICHT, nicht Deko.
|
||||
".jahres-event-card[hidden]{display:none}" weiter oben hat die Stärke
|
||||
Klasse+Attribut. Eine Regel "Klasse Klasse" wie diese hier ist exakt
|
||||
gleich stark und steht später in der Datei — sie hätte das Verstecken
|
||||
also ausgehebelt und die zweite, leere Event-Kachel wieder sichtbar
|
||||
gemacht. Genau das ist beim ersten Entwurf passiert (im Bild stand
|
||||
eine leere Kachel mit einsamem "Mehr erfahren →"). Im Code stand die
|
||||
Warnung davor schon zweimal; sie stimmt. */
|
||||
.jahres-events-grid-einzeln .jahres-event-card:not([hidden]) {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
|
||||
/* Zeilen nach Inhalt, Block als Ganzes mittig: sonst verteilt das
|
||||
Raster Datum/Titel/Text/Link über die volle Bildhöhe und der Text
|
||||
steht auseinandergezogen wie eine Liste statt als Absatz. */
|
||||
grid-template-rows: repeat(4, max-content);
|
||||
align-content: center;
|
||||
column-gap: 1.7rem;
|
||||
row-gap: .1rem;
|
||||
padding: 1.5rem;
|
||||
}
|
||||
.jahres-events-grid-einzeln .jahres-event-bild:not([hidden]) {
|
||||
margin-bottom: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
min-height: 230px;
|
||||
aspect-ratio: auto;
|
||||
align-self: stretch;
|
||||
object-fit: cover;
|
||||
}
|
||||
/* Datum, Titel, Text und "Mehr erfahren" bilden die zweite Spalte. Sie
|
||||
stehen im HTML als Geschwister nebeneinander, deshalb hier ein eigenes
|
||||
Unter-Raster statt eines zusätzlichen <div> im Markup — so bleibt die
|
||||
Vorlage in der Verwaltung unverändert. */
|
||||
.jahres-events-grid-einzeln .jahres-event-datum { grid-column: 2; margin-bottom: .15rem; }
|
||||
.jahres-events-grid-einzeln .jahres-event-card h3 { grid-column: 2; font-size: 1.5rem; margin-bottom: .5rem; }
|
||||
.jahres-events-grid-einzeln .jahres-event-card p { grid-column: 2; font-size: 1rem; margin-bottom: .8rem; }
|
||||
.jahres-events-grid-einzeln .jahres-event-mehr { grid-column: 2; justify-self: start; }
|
||||
.jahres-events-grid-einzeln .jahres-event-bild:not([hidden]) { grid-column: 1; grid-row: 1 / -1; }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.jahres-events-grid-einzeln .jahres-event-card:not([hidden]) { grid-template-columns: 1fr; grid-template-rows: none; gap: .9rem; padding: 1.2rem 1.3rem; }
|
||||
.jahres-events-grid-einzeln .jahres-event-datum,
|
||||
.jahres-events-grid-einzeln .jahres-event-card h3,
|
||||
.jahres-events-grid-einzeln .jahres-event-card p,
|
||||
.jahres-events-grid-einzeln .jahres-event-mehr { grid-column: 1; }
|
||||
.jahres-events-grid-einzeln .jahres-event-bild:not([hidden]) { grid-column: 1; grid-row: auto; height: auto; min-height: 0; aspect-ratio: 16/9; }
|
||||
.jahres-events-grid-einzeln .jahres-event-card h3 { font-size: 1.25rem; }
|
||||
}
|
||||
.jahres-events-grid-einzeln .jahres-event-card { padding: 1.6rem 1.8rem; }
|
||||
.jahres-events-grid-einzeln .jahres-event-card h3 { font-size: 1.3rem; }
|
||||
/* Optionales Admin-Bild pro Event (20.08.2026, "Event des Jahres" jetzt in
|
||||
der Verwaltung pflegbar) — bleibt per [hidden] unsichtbar, solange kein
|
||||
Bild gesetzt ist, damit die textbasierten Standard-Karten unverändert
|
||||
@@ -2843,21 +2924,51 @@ footer.site-footer {
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
}
|
||||
/* Untere Ebene: dieselbe Szene verwaschen als Cover — füllt jeden Rand,
|
||||
den das scharfe Bild freilässt. */
|
||||
.hero-artwork::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
/* Zwei Ebenen: das scharfe Artwork komplett sichtbar (contain — auf
|
||||
dieser Seite läuft der Text ÜBER dem Bild mit Polarlicht-Effekten,
|
||||
ein Banner-oberhalb-des-Texts-Layout wie auf den anderen Seiten
|
||||
würde das Design zerstören). Darunter dieselbe Szene verwaschen als
|
||||
Cover, die jeden Rand auffüllt, den "contain" freilässt — dadurch
|
||||
wirkt es trotzdem randlos, obwohl die scharfen Pixel garantiert
|
||||
nie beschnitten werden. */
|
||||
background-image: url("../img/universe-trio.jpg?v=20260820h"), url("../img/universe-trio-blur.jpg?v=20260820h");
|
||||
background-size: contain, cover;
|
||||
background-position: center, center;
|
||||
background-repeat: no-repeat, no-repeat;
|
||||
background-image: url("../img/universe-trio-blur.jpg?v=20260820h");
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
/* Obere Ebene: das scharfe Artwork, ungeschnitten und mittig — wie zuvor
|
||||
"contain", nur eben als echtes Bild (siehe Begründung in index.html).
|
||||
|
||||
DER ENTSCHEIDENDE TEIL IST DIE MASKE (27.08.2026):
|
||||
|
||||
Vorher endete das scharfe Bild an einer messerscharfen Kante, oben wie
|
||||
unten (bei 1366x800 z.B. exakt bei 570px und 1345px) — dort traf helles,
|
||||
scharfes Bild auf dunklen, verwaschenen Untergrund. Das las sich nicht
|
||||
als Hintergrund, sondern als Fremdkörper quer über der Seite.
|
||||
|
||||
Die Maske blendet das scharfe Bild an seinen EIGENEN Rändern weich in
|
||||
die verwaschene Fassung darunter über. Weil sie am Bild hängt und nicht
|
||||
am Fenster, sitzt der Übergang auf jedem Bildschirm richtig — genau das
|
||||
war mit einem CSS-Hintergrund nicht möglich, dessen Kante je nach
|
||||
Fensterformat wandert. Unten wird großzügiger ausgeblendet als oben,
|
||||
weil dort die Kacheln liegen: Je ruhiger es unter ihnen wird, desto
|
||||
klarer heben sie sich ab. */
|
||||
.hero-artwork-scharf {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
margin: auto;
|
||||
width: auto;
|
||||
height: auto;
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
-webkit-mask-image:
|
||||
linear-gradient(to bottom, transparent 0%, #000 9%, #000 72%, transparent 100%),
|
||||
linear-gradient(to right, transparent 0%, #000 7%, #000 93%, transparent 100%);
|
||||
mask-image:
|
||||
linear-gradient(to bottom, transparent 0%, #000 9%, #000 72%, transparent 100%),
|
||||
linear-gradient(to right, transparent 0%, #000 7%, #000 93%, transparent 100%);
|
||||
-webkit-mask-composite: source-in;
|
||||
mask-composite: intersect;
|
||||
}
|
||||
.hero-artwork::after {
|
||||
content: "";
|
||||
@@ -2895,6 +3006,30 @@ footer.site-footer {
|
||||
/* Die drei Welten-Karten (DogFather/HasiDog/Manager) unter dem Hero
|
||||
sollen ebenfalls etwas größer wirken, wie auf Wunsch — Text war auf
|
||||
großen Bildschirmen zu klein. */
|
||||
/* Die drei Welt-Kacheln liegen direkt auf dem Artwork. Als flache
|
||||
dunkle Rechtecke wirkten sie wie ausgeschnitten und aufgeklebt
|
||||
(27.08.2026). Jetzt: eine Spur Milchglas und ein feiner Lichtsaum
|
||||
oben, wie ihn eine Fläche bekommt, auf die Licht von vorne fällt —
|
||||
dadurch gehören sie sichtbar zur selben Szene. Deckkraft bleibt hoch
|
||||
genug, dass der Text ruhig lesbar bleibt (Projektregel: augenschonend
|
||||
vor Effekt). */
|
||||
.hero-cinematic .hero-grid .card {
|
||||
position: relative;
|
||||
background: linear-gradient(180deg, rgba(22, 26, 35, .88), rgba(14, 17, 23, .92));
|
||||
border-color: rgba(255, 255, 255, .11);
|
||||
-webkit-backdrop-filter: blur(7px);
|
||||
backdrop-filter: blur(7px);
|
||||
box-shadow: 0 14px 38px rgba(0, 0, 0, .40);
|
||||
}
|
||||
.hero-cinematic .hero-grid .card::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0; left: 12%; right: 12%;
|
||||
height: 1px;
|
||||
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .30), transparent);
|
||||
pointer-events: none;
|
||||
}
|
||||
.hero-cinematic .hero-grid .card:hover { box-shadow: 0 18px 46px rgba(0, 0, 0, .5); }
|
||||
.hero-cinematic .hero-grid .tag { font-size: .8rem; }
|
||||
.hero-cinematic .hero-grid h3 { font-size: 1.45rem; }
|
||||
.hero-cinematic .hero-grid p { font-size: 1.05rem; }
|
||||
|
||||
@@ -827,6 +827,13 @@
|
||||
const banner = document.querySelector(".hero-banner img");
|
||||
if (banner && banner.getAttribute("src")) return banner;
|
||||
|
||||
/* Startseite seit 27.08.2026: Das Trio-Artwork ist ein echtes <img>
|
||||
(vorher ein CSS-Hintergrund im ::before, siehe main.css). Ohne diese
|
||||
Zeile fände die Farbsuche dort nichts mehr und der Musik-Knopf fiele
|
||||
ausgerechnet auf der Startseite auf die Ersatzfarbe zurück. */
|
||||
const artworkBild = document.querySelector(".hero-artwork img");
|
||||
if (artworkBild && artworkBild.getAttribute("src")) return artworkBild;
|
||||
|
||||
const artwork = document.querySelector(".hero-artwork");
|
||||
if (artwork) {
|
||||
const hintergrund = getComputedStyle(artwork, "::before").backgroundImage;
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Du bist Streamer und suchst einen Manager? Bewirb dich als Creator bei Spicy Media." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -72,6 +72,6 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/forms.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-bewerben-creator.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<meta name="twitter:description" content="Kooperationsanfrage an Manager DogFather / Spicy Media." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -70,6 +70,6 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/forms.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-bewerben-kooperation.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Werde Modi bei Team Dogi — DogFathers persönliches Community-Team." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -81,6 +81,6 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/forms.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-bewerben-modi.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Werde Scout für DogFather bei der Spicy Media Agentur — finde neue Talente." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -73,6 +73,6 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/forms.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-bewerben-scout.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Werde Teil vom Team: Modi bei Team Dogi, Scout oder Creator bei Spicy Media, oder Kooperation anfragen." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -86,6 +86,6 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-bewerben.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 303 KiB After Width: | Height: | Size: 304 KiB |
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Der Husky an DogFathers Seite — das tierische Gesicht der HasiDog-Welt." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -86,6 +86,6 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-casper.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Team Dogi ist Familie — die Community rund um DogFather und HasiDog." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -85,6 +85,6 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-community.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Content Creator, die Teil von DogFather / Spicy Media sind." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -62,7 +62,7 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/data-creator.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-creator.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", async () => {
|
||||
const grid = document.getElementById("creator-grid");
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Wer ist DogFather wirklich? Persönlichkeit, Werte und die Geschichte hinter dem Content." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -159,6 +159,6 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-dogfather.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="DogFather" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<style>
|
||||
/* =====================================================================
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="HasiDog: Maskottchen, Musikprojekt und die verspielte, familiäre Seite von Team Dogi." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -187,6 +187,6 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-hasidog.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-4
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="DOGFATHER UNIVERSE: die Heimat von DogFather als Streamer, der HasiDog-Community und Manager DogFather bei Spicy Media." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -30,8 +30,20 @@
|
||||
<main>
|
||||
<!-- ================= HERO ================= -->
|
||||
<section class="hero hero-cinematic">
|
||||
<!-- Großes Trio-Artwork als Kino-Hintergrund (DogFather · Dogi · HasiDog) -->
|
||||
<div class="hero-artwork" aria-hidden="true"></div>
|
||||
<!-- Großes Trio-Artwork als Kino-Hintergrund (DogFather · Dogi · HasiDog).
|
||||
|
||||
Das scharfe Bild ist seit 27.08.2026 ein echtes <img> statt eines
|
||||
CSS-Hintergrunds. Grund: Als Hintergrund mit "contain" endete es an
|
||||
einer harten Kante, und darunter/darüber lag sichtbar die verwaschene
|
||||
Fassung — es sah aus wie ein aufgeklebtes Band quer über der Seite
|
||||
("es überschneidet den hintergrund"). Ein echtes Bild lässt sich an
|
||||
seinen eigenen Rändern weich ausblenden, egal wie breit der
|
||||
Bildschirm ist; ein CSS-Hintergrund kann das nicht, weil die Kante
|
||||
dort je nach Fensterformat woanders liegt. -->
|
||||
<div class="hero-artwork" aria-hidden="true">
|
||||
<img class="hero-artwork-scharf" src="assets/img/universe-trio.jpg?v=20260820h"
|
||||
width="1600" height="900" alt="" fetchpriority="high" decoding="async" />
|
||||
</div>
|
||||
|
||||
<div class="hero-atmosphere" aria-hidden="true">
|
||||
<span class="atmosphere-blend"></span>
|
||||
@@ -293,7 +305,7 @@
|
||||
<script src="assets/js/data-modis.js?v=20260828c"></script>
|
||||
<script src="assets/js/data-scouts.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-index.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
// Gleiche URL wie in assets/js/forms.js / postfach.html — läuft seit
|
||||
// 05.08.2026 auf dem eigenen Server statt auf Cloudflare Workers.
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Kontakt, Impressum und Datenschutz von DOGFATHER UNIVERSE." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -127,6 +127,6 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-kontakt.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Alle Social-Media- und Musik-Links von DogFather an einem Ort — plus QR-Codes." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -146,7 +146,7 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-links.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
(function () {
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="DogFather als Manager bei der Spicy Media Agency: Scouts, Creator und faire Zusammenarbeit." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -141,7 +141,7 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/data-manager.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-manager.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
// "Weitere Manager" (21.08.2026) -- siehe Kommentar bei #weitere-manager-root
|
||||
// oben. Aktuell IMMER window.MANAGERS === [] (siehe data-manager.js), Inhalt
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Fotos und Videos rund um Husky Casper an einem Ort." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -63,6 +63,6 @@
|
||||
<script src="assets/js/data-videos.js?v=20260828c"></script>
|
||||
<script src="assets/js/medien-welt.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-medien-casper.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Fotos, Videos und Events aus DogFathers Welt an einem Ort." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -70,6 +70,6 @@
|
||||
<script src="assets/js/data-aktionen.js?v=20260828c"></script>
|
||||
<script src="assets/js/medien-welt.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-medien-dogfather.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Fotos, Videos und Events aus der HasiDog-Welt an einem Ort." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -70,6 +70,6 @@
|
||||
<script src="assets/js/data-aktionen.js?v=20260828c"></script>
|
||||
<script src="assets/js/medien-welt.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-medien-hasidog.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="robots" content="noindex" /> <!-- generische URL, echte Team-Seiten verlinken hierher -->
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -135,7 +135,7 @@
|
||||
<script src="assets/js/data-creator.js?v=20260828c"></script>
|
||||
<script src="assets/js/data-manager.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-profil.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", async () => {
|
||||
const slug = new URLSearchParams(location.search).get("p") || "";
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
/* =====================================================================
|
||||
Welche Bilder sind größer, als sie je angezeigt werden?
|
||||
|
||||
Sammelt über alle öffentlichen Seiten (Desktop UND Handy) für jedes
|
||||
<img> die größte Anzeigebreite -- mal Pixeldichte, damit Retina zählt.
|
||||
Vergleicht das mit der echten Dateibreite. Ein Bild, das mehr als das
|
||||
2,5-fache seiner größten Anzeige misst, ist ein Kandidat zum
|
||||
Verkleinern: Es überträgt Pixel, die nie ein Auge erreicht.
|
||||
|
||||
NUR <img>. CSS-Hintergründe (bg-*.jpg) füllen den Bildschirm und
|
||||
werden getrennt betrachtet.
|
||||
===================================================================== */
|
||||
import { chromium } from "playwright";
|
||||
import { statSync, readFileSync, existsSync } from "node:fs";
|
||||
|
||||
const BASIS = "https://dogfather-universe.com";
|
||||
const SEITEN = [
|
||||
"/", "/dogfather.html", "/hasidog.html", "/manager.html", "/casper.html",
|
||||
"/vanvan.html", "/tt-muddi.html", "/zeitreise.html", "/streamer.html",
|
||||
"/community.html", "/stimmen.html", "/streamplan.html", "/team-modis.html",
|
||||
"/team-scouts.html", "/creator.html", "/werte.html", "/bewerben.html",
|
||||
"/kontakt.html", "/links.html", "/supporter.html", "/abonnieren.html",
|
||||
"/medien-dogfather.html", "/medien-hasidog.html", "/medien-casper.html",
|
||||
];
|
||||
|
||||
/* Dateibreite eines lokalen JPG/PNG lesen (ohne Bibliothek). */
|
||||
function breiteVon(pfad) {
|
||||
if (!existsSync(pfad)) return 0;
|
||||
const s = readFileSync(pfad);
|
||||
if (s[0] === 0xFF && s[1] === 0xD8) { // JPEG
|
||||
let i = 2;
|
||||
while (i < s.length) {
|
||||
if (s[i] !== 0xFF) { i++; continue; }
|
||||
const m = s[i + 1];
|
||||
if (m >= 0xC0 && m <= 0xC3) return s.readUInt16BE(i + 7);
|
||||
i += 2 + s.readUInt16BE(i + 2);
|
||||
}
|
||||
} else if (s.slice(0, 8).equals(Buffer.from([0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A]))) { // PNG
|
||||
return s.readUInt32BE(16);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
const browser = await chromium.launch();
|
||||
const maxAnzeige = new Map(); // dateiname -> maxBreite (CSS-px * DPR)
|
||||
|
||||
for (const vp of [{ width: 1280, height: 900 }, { width: 390, height: 844 }]) {
|
||||
for (const pfad of SEITEN) {
|
||||
const s = await browser.newPage({ viewport: vp });
|
||||
try {
|
||||
await s.goto(BASIS + pfad, { waitUntil: "networkidle", timeout: 30000 });
|
||||
await s.waitForTimeout(300);
|
||||
const m = await s.evaluate(() => {
|
||||
const raus = {};
|
||||
for (const im of document.querySelectorAll("img")) {
|
||||
const src = (im.currentSrc || im.src || "");
|
||||
if (!src.includes("/assets/img/")) continue; // nur eigene Bilder
|
||||
const name = src.split("/assets/img/")[1].split("?")[0];
|
||||
const r = im.getBoundingClientRect();
|
||||
if (r.width < 2) continue;
|
||||
const px = Math.round(r.width * (window.devicePixelRatio || 1));
|
||||
raus[name] = Math.max(raus[name] || 0, px);
|
||||
}
|
||||
return raus;
|
||||
});
|
||||
for (const [k, v] of Object.entries(m)) maxAnzeige.set(k, Math.max(maxAnzeige.get(k) || 0, v));
|
||||
} catch { /* egal */ }
|
||||
await s.close();
|
||||
}
|
||||
}
|
||||
await browser.close();
|
||||
|
||||
const kandidaten = [];
|
||||
for (const [name, anzeige] of maxAnzeige) {
|
||||
const pfad = "assets/img/" + name;
|
||||
const dateiBreite = breiteVon(pfad);
|
||||
if (!dateiBreite || !existsSync(pfad)) continue;
|
||||
const kb = Math.round(statSync(pfad).size / 1024);
|
||||
const faktor = dateiBreite / Math.max(anzeige, 1);
|
||||
/* 2,5-fach als Schwelle: 2x deckt Retina, der Rest ist Puffer gegen
|
||||
Layout-Schwankungen. Nur nennen, was auch spürbar wiegt (>=120 KB). */
|
||||
if (faktor >= 2.5 && kb >= 120) {
|
||||
kandidaten.push({ name, dateiBreite, anzeige, faktor: faktor.toFixed(1), kb, ziel: Math.min(dateiBreite, anzeige * 2) });
|
||||
}
|
||||
}
|
||||
kandidaten.sort((a, b) => b.kb - a.kb);
|
||||
|
||||
console.log(`\n${maxAnzeige.size} <img>-Bilder gesehen. Überdimensioniert (>= 2,5x Anzeige, >= 120 KB):\n`);
|
||||
if (!kandidaten.length) console.log(" keine -- alle Bilder passen zu ihrer Anzeigegröße.");
|
||||
for (const k of kandidaten) {
|
||||
console.log(` ${k.kb.toString().padStart(4)} KB ${k.name.padEnd(26)} Datei ${k.dateiBreite}px, angezeigt ${k.anzeige}px (${k.faktor}x) -> Ziel ${k.ziel}px`);
|
||||
}
|
||||
const summe = kandidaten.reduce((a, k) => a + k.kb, 0);
|
||||
if (kandidaten.length) console.log(`\n Summe der Kandidaten: ${summe} KB`);
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Rabattcodes von Dogis Partnern für Team Dogi — spar bares Geld bei ausgewählten Marken." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -132,7 +132,7 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-rabattcodes.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
(function () {
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Was die Community und das Team über DogFather sagen." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -108,7 +108,7 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/data-stimmen-avatare.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-stimmen.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script src="assets/js/bild-vorbereiten.js?v=20260828c"></script>
|
||||
<script src="assets/js/stimmen.js?v=20260828c"></script>
|
||||
</body>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Die persönliche Geschichte hinter DogFather — Filipe, Streamer, Manager bei Spicy Media und Hundepapa von Husky Casper." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -218,6 +218,6 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-streamer.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Wann geht DogFather live? Streamplan und Livebereich." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -127,7 +127,7 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-streamplan.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script src="assets/js/streamplan.js?v=20260828c"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
<meta name="theme-color" content="#0b0d10" />
|
||||
<meta name="robots" content="noindex" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -517,7 +517,7 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-supporter.js?v=20260828c"></script>
|
||||
<script src="assets/js/supporter.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
(function () {
|
||||
const S = window.DogiSupporter;
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="VanVan, Diene, Funny, Miss und Marina — das Modi-/Core-Team von Team Dogi." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -74,7 +74,7 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/data-modis.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-team-modis.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const grid = document.getElementById("modis-grid");
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Die Scouts von Team Dogi bei Spicy Media." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -51,7 +51,7 @@
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/data-scouts.js?v=20260828c"></script>
|
||||
<script src="assets/js/i18n-team-scouts.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const grid = document.getElementById("scouts-grid");
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Eine persönliche Widmung von Dogi an Tili — seine TikTok-Muddi, die erste und bis heute einzige Streamerin, die ihm all die Zeit treu geblieben ist." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -154,6 +154,6 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-tt-muddi.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="VanVan erzählt ihre Geschichte: wie sie zu Team Dogi kam, wer sie ist und was DogFather und Team Dogi ihr bedeuten." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -176,6 +176,6 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-vanvan.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<link rel="apple-touch-icon" href="assets/img/apple-touch-icon-admin.png" />
|
||||
<meta name="apple-mobile-web-app-title" content="DogiCrew-Verwaltung" />
|
||||
<meta name="theme-color" content="#0e0a16" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -1290,7 +1290,7 @@
|
||||
<script src="assets/js/data-creator.js?v=20260828c"></script>
|
||||
<script src="assets/js/data-manager.js?v=20260828c"></script>
|
||||
<script src="assets/js/data-stimmen-avatare.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<!-- Versionsnummer bewusst hochgesetzt (27.08.2026): Caddy liefert Assets mit
|
||||
max-age=14400, ein Browser hätte die alte Anmelde-Logik sonst bis zu vier
|
||||
Stunden weiterbenutzt und Dogi wäre trotz Umstellung weiter ohne Code
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Die Werte, nach denen DogFather als Manager bei Spicy Media arbeitet." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -114,6 +114,6 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-werte.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@
|
||||
<meta name="twitter:description" content="Die Geschichte von DogFather in einer interaktiven Zeitleiste." />
|
||||
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
||||
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/main.css?v=20260827hero" />
|
||||
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=20260828c" />
|
||||
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=20260828c" />
|
||||
@@ -238,7 +238,7 @@
|
||||
|
||||
<div id="site-footer"></div>
|
||||
<script src="assets/js/i18n-zeitreise.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260828c"></script>
|
||||
<script src="assets/js/main.js?v=20260827hero"></script>
|
||||
<script>
|
||||
/* Wachstums-Reveal: Äste blenden sich beim Scrollen sanft ein — passt
|
||||
zum "wachsenden Baum"-Konzept dieser Seite. Rein page-lokal, betrifft
|
||||
|
||||
Reference in New Issue
Block a user