EMPTY.TOKYO
Sign in

// Pastes

Test

Public
@leon@leonhtml349 lines1 viewsMay 31, 2026, 7:03 AM
↓ Raw
// HTML349 lines · 20112 chars
1<!DOCTYPE html>
2<html lang="de">
3<head>
4 <meta charset="UTF-8" />
5 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6 <meta name="robots" content="noindex, nofollow" />
7 <title>Impressum</title>
8 <style>
9 :root {
10 --bg: #f4f4f5;
11 --surface: #ffffff;
12 --text: #18181b;
13 --muted: #6b7280;
14 --accent: #3b82f6;
15 --border: #e4e4e7;
16 --shadow: 0 1px 3px rgba(0,0,0,.06), 0 8px 24px rgba(0,0,0,.04);
17 --radius: 12px;
18 }
19 html[data-theme="dark"] {
20 --bg: #09090b;
21 --surface: #161618;
22 --text: #fafafa;
23 --muted: #a1a1aa;
24 --accent: #60a5fa;
25 --border: #27272a;
26 --shadow: 0 1px 3px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.3);
27 }
28 *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
29 html { -webkit-text-size-adjust: 100%; }
30 body {
31 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
32 background: var(--bg);
33 color: var(--text);
34 line-height: 1.75;
35 padding: 1.5rem 1rem 4rem;
36 transition: background .25s ease, color .25s ease;
37 }
38 .topbar {
39 max-width: 780px;
40 margin: 0 auto 1.25rem;
41 display: flex;
42 align-items: center;
43 justify-content: space-between;
44 gap: .75rem;
45 flex-wrap: wrap;
46 }
47 .lang-switcher { display: flex; gap: .35rem; flex-wrap: wrap; }
48 .lang-btn {
49 background: var(--surface);
50 border: 1px solid var(--border);
51 color: var(--muted);
52 border-radius: 7px;
53 padding: .3rem .65rem;
54 font-size: .78rem;
55 font-weight: 600;
56 cursor: pointer;
57 transition: background .15s, color .15s, border-color .15s;
58 letter-spacing: .03em;
59 font-family: inherit;
60 }
61 .lang-btn:hover { border-color: var(--accent); color: var(--accent); }
62 .lang-btn.active { background: var(--accent); border-color: var(--accent); color: #fff; }
63 .theme-btn {
64 background: var(--surface);
65 border: 1px solid var(--border);
66 border-radius: 7px;
67 width: 38px;
68 height: 32px;
69 font-size: 1rem;
70 cursor: pointer;
71 line-height: 1;
72 transition: background .15s, border-color .15s;
73 display: inline-flex;
74 align-items: center;
75 justify-content: center;
76 }
77 .theme-btn:hover { border-color: var(--accent); }
78 main {
79 max-width: 780px;
80 margin: 0 auto;
81 background: var(--surface);
82 border-radius: var(--radius);
83 padding: 2.75rem 2.5rem;
84 box-shadow: var(--shadow);
85 border: 1px solid var(--border);
86 transition: background .25s ease, border-color .25s ease;
87 }
88 .domain-badge {
89 display: inline-block;
90 background: var(--bg);
91 border: 1px solid var(--border);
92 color: var(--muted);
93 border-radius: 99px;
94 padding: .25rem .8rem;
95 font-size: .76rem;
96 font-weight: 600;
97 margin-bottom: 1.5rem;
98 letter-spacing: .04em;
99 font-variant-numeric: tabular-nums;
100 }
101 h1 { font-size: 1.9rem; font-weight: 700; margin-bottom: 1rem; letter-spacing: -.01em; }
102 .domains-note {
103 background: var(--bg);
104 border: 1px solid var(--border);
105 border-radius: 8px;
106 padding: .75rem 1rem;
107 font-size: .88rem;
108 color: var(--text) !important;
109 margin-bottom: 1.5rem;
110 }
111 h2 { font-size: 1.05rem; font-weight: 600; margin: 1.85rem 0 .55rem; }
112 p { margin-bottom: .9rem; color: var(--muted); font-size: .93rem; }
113 p strong { color: var(--text); }
114 a { color: var(--accent); text-decoration: none; }
115 a:hover { text-decoration: underline; }
116 .contact-line {
117 margin-top: 1.75rem;
118 padding-top: 1.25rem;
119 border-top: 1px solid var(--border);
120 font-size: .88rem;
121 }
122 footer {
123 text-align: center;
124 margin-top: 2rem;
125 font-size: .78rem;
126 color: var(--muted);
127 }
128 @media (max-width: 560px) {
129 main { padding: 1.75rem 1.3rem; }
130 h1 { font-size: 1.55rem; }
131 }
132 </style>
133</head>
134<body>
135 <div class="topbar">
136 <nav class="lang-switcher" id="langSwitcher" aria-label="Sprache / Language"></nav>
137 <button class="theme-btn" id="themeBtn" type="button" aria-label="Theme umschalten">🌙</button>
138 </div>
139
140 <main id="content">
141 <noscript>
142 <h1>Impressum</h1>
143 <p>Diese Seite benötigt JavaScript für die mehrsprachige Anzeige. Kontakt: admin@durchdacht.me</p>
144 </noscript>
145 </main>
146
147 <script>
148 "use strict";
149
150 /* ── Übersetzungen (alle Texte als Template-Strings → keine Quote-Konflikte) ── */
151 const T = {
152 de: {
153 title: `Impressum`,
154 domainsNote: `Dieses Impressum gilt für die Websites <strong>durchdacht.me</strong>, <strong>empty.tokyo</strong> und <strong>fld.wtf</strong>.`,
155 tmgHead: `Angaben gemäß § 5 TMG`,
156 tmgBody: `<strong>ENTFALLEN</strong>, weil: Meine Website dient lediglich dem Eigeninteresse.`,
157 tmgNote: `Wenn Sie Ihre Webseite ausschließlich zu privaten Zwecken betreiben, müssen Sie keine rechtlichen Formalien für die Gestaltung Ihres Impressums einhalten. § 5 TMG spricht explizit von „geschäftsmäßigen Online-Diensten", die ein verpflichtendes Impressum vorsehen. Einige Internetseiten weisen einen eindeutig privaten Charakter auf. Zu diesen zählen in erster Linie Blogs, in denen Sie Ihre privaten Erfahrungen und Gedanken mit anderen Nutzern teilen. Auch Webseiten über Ihr liebstes Hobby oder Fan-Seiten werden häufig als rein privates Projekt angesehen.`,
158 disclaimerHead: `Haftungsausschluss (Disclaimer)`,
159 contentHead: `Haftung für Inhalte`,
160 contentBody: `Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.`,
161 linksHead: `Haftung für Links`,
162 linksBody: `Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.`,
163 copyrightHead: `Urheberrecht`,
164 copyrightBody: `Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.`,
165 contact: `Kontakt`,
166 source: `Quelle`,
167 },
168 en: {
169 title: `Legal Notice`,
170 domainsNote: `This legal notice applies to the websites <strong>durchdacht.me</strong>, <strong>empty.tokyo</strong> and <strong>fld.wtf</strong>.`,
171 tmgHead: `Information pursuant to § 5 TMG`,
172 tmgBody: `<strong>NOT APPLICABLE</strong>, because: This website serves personal interest only.`,
173 tmgNote: `If you operate your website exclusively for private purposes, you are not required to comply with any legal formalities regarding your legal notice. § 5 TMG explicitly refers to "commercially operated online services" that require a mandatory legal notice. Some websites have a clearly private character — primarily blogs in which you share personal experiences and thoughts, websites about your favourite hobby, or fan pages, which are generally regarded as purely private projects.`,
174 disclaimerHead: `Disclaimer`,
175 contentHead: `Liability for Content`,
176 contentBody: `As a service provider, we are responsible for our own content on these pages in accordance with § 7 para. 1 TMG under general law. According to §§ 8 to 10 TMG, however, we are not obligated to monitor transmitted or stored third-party information or to investigate circumstances indicating illegal activity. Obligations to remove or block the use of information under general law remain unaffected. Liability in this regard is only possible from the point in time at which we become aware of a specific legal violation. Upon becoming aware of corresponding violations, we will remove this content immediately.`,
177 linksHead: `Liability for Links`,
178 linksBody: `Our website contains links to external third-party websites over whose content we have no influence. Therefore we cannot assume any liability for these external contents. The respective provider or operator of the linked pages is always responsible for their content. The linked pages were checked for possible legal violations at the time of linking. Illegal content was not recognisable at the time of linking. Permanent monitoring of the linked pages without concrete evidence of a legal violation is, however, not reasonable. Upon becoming aware of legal violations, we will remove such links immediately.`,
179 copyrightHead: `Copyright`,
180 copyrightBody: `The content and works on these pages created by the site operator are subject to German copyright law. Duplication, processing, distribution, and any form of commercialisation of such material beyond the scope of copyright law require the prior written consent of the respective author or creator. Downloads and copies of this site are only permitted for private, non-commercial use. Insofar as content on this site was not created by the operator, the copyrights of third parties are respected and third-party content is identified as such. Should you become aware of a copyright infringement, please inform us accordingly. We will remove such content immediately upon becoming aware of any violations.`,
181 contact: `Contact`,
182 source: `Source`,
183 },
184 ru: {
185 title: `Выходные данные`,
186 domainsNote: `Эти выходные данные распространяются на сайты <strong>durchdacht.me</strong>, <strong>empty.tokyo</strong> и <strong>fld.wtf</strong>.`,
187 tmgHead: `Сведения согласно § 5 TMG`,
188 tmgBody: `<strong>НЕ ПРИМЕНЯЕТСЯ</strong>, поскольку: Данный сайт служит исключительно личным интересам.`,
189 tmgNote: `Если вы ведёте сайт исключительно в личных целях, вы не обязаны соблюдать юридические формальности при оформлении выходных данных. § 5 TMG прямо указывает на «коммерческие онлайн-сервисы», для которых обязательно наличие выходных данных. Некоторые сайты носят явно личный характер — прежде всего блоги, в которых вы делитесь личным опытом и мыслями, сайты о вашем хобби или фан-страницы, которые обычно рассматриваются как сугубо личные проекты.`,
190 disclaimerHead: `Отказ от ответственности`,
191 contentHead: `Ответственность за содержание`,
192 contentBody: `Как поставщик услуг мы несём ответственность за собственный контент на этих страницах в соответствии с § 7 абз. 1 TMG. Согласно §§ 8–10 TMG мы не обязаны отслеживать передаваемую или хранимую информацию третьих лиц или расследовать обстоятельства, указывающие на противоправную деятельность. Обязанности по удалению или блокировке информации согласно общему праву остаются в силе. Ответственность возможна лишь с момента получения сведений о конкретном нарушении закона. При обнаружении соответствующих нарушений мы незамедлительно удалим такой контент.`,
193 linksHead: `Ответственность за ссылки`,
194 linksBody: `Наш сайт содержит ссылки на внешние сайты третьих лиц, на содержание которых мы не имеем влияния, и поэтому не можем принять на себя ответственность за эти материалы. Ответственность за содержание связанных страниц всегда несёт соответствующий поставщик или оператор. Связанные страницы были проверены на предмет возможных правовых нарушений на момент создания ссылки — незаконных материалов обнаружено не было. Постоянный контроль без конкретных признаков нарушения закона не представляется целесообразным. При обнаружении нарушений мы незамедлительно удалим такие ссылки.`,
195 copyrightHead: `Авторские права`,
196 copyrightBody: `Контент и произведения, созданные операторами сайта, подпадают под действие германского авторского права. Тиражирование, обработка, распространение и любые виды коммерческого использования таких материалов требуют предварительного письменного согласия соответствующего автора. Загрузки и копии сайта разрешены только для частного некоммерческого использования. Контент, созданный третьими лицами, обозначен как таковой, и их авторские права соблюдаются. Если вы обнаружите нарушение авторских прав, просим сообщить нам — мы незамедлительно удалим соответствующий контент.`,
197 contact: `Контакт`,
198 source: `Источник`,
199 },
200 zh: {
201 title: `法律声明`,
202 domainsNote: `本法律声明适用于以下网站:<strong>durchdacht.me</strong>、<strong>empty.tokyo</strong> 和 <strong>fld.wtf</strong>。`,
203 tmgHead: `根据 § 5 TMG 的信息披露`,
204 tmgBody: `<strong>不适用</strong>,原因如下:本网站仅供个人兴趣使用。`,
205 tmgNote: `如果您仅出于私人目的运营网站,则无需遵守有关法律声明的任何法律形式要求。§ 5 TMG 明确指的是需要强制性法律声明的"商业在线服务"。部分网站具有明显的私人性质,主要包括您与他人分享私人经历和想法的博客,以及关于您爱好的网站或粉丝页面,这些通常被视为纯粹的私人项目。`,
206 disclaimerHead: `免责声明`,
207 contentHead: `内容责任`,
208 contentBody: `作为服务提供商,我们根据 § 7 第 1 款 TMG 对本页面上的自有内容负责。然而,根据 §§ 8 至 10 TMG,我们没有义务监控传输或存储的第三方信息,也没有义务调查表明非法活动的情况。依据一般法律删除或封锁信息的义务不受影响。但此方面的责任仅在知晓具体违法行为后才可能产生。一旦获悉相应违规行为,我们将立即删除相关内容。`,
209 linksHead: `链接责任`,
210 linksBody: `我们的网站包含指向第三方外部网站的链接,我们对其内容没有任何影响,因此不对这些外部内容承担任何责任。链接页面的内容始终由相应提供商或运营商负责。链接页面在链接时已检查是否存在潜在违法行为,链接时未发现违法内容。但在没有具体侵权迹象的情况下,对链接页面进行持续监控是不合理的。一旦获悉违法行为,我们将立即删除此类链接。`,
211 copyrightHead: `版权`,
212 copyrightBody: `本网站运营商在本页面上创建的内容和作品受德国版权法保护。在版权法范围之外对此类材料进行复制、处理、分发及任何形式的商业利用,均需获得相应作者或创作者的书面许可。本网站的下载和副本仅允许用于私人、非商业目的。如本网站内容非运营商所创建,则尊重第三方版权,并特别标注第三方内容。如您发现版权侵权问题,请及时通知我们。一旦获悉违法行为,我们将立即删除相关内容。`,
213 contact: `联系方式`,
214 source: `来源`,
215 },
216 };
217
218 const LANGS = [
219 { code: "de", label: "DE" },
220 { code: "en", label: "EN" },
221 { code: "ru", label: "RU" },
222 { code: "zh", label: "中文" },
223 ];
224
225 /* Land → Sprache */
226 const COUNTRY_LANG = {
227 DE:"de", AT:"de", CH:"de", LI:"de", LU:"de",
228 RU:"ru", BY:"ru", KZ:"ru", KG:"ru", TJ:"ru", UZ:"ru", AM:"ru", AZ:"ru", GE:"ru", MD:"ru", UA:"ru",
229 CN:"zh", TW:"zh", HK:"zh", MO:"zh", SG:"zh",
230 };
231
232 const htmlEl = document.documentElement;
233
234 /* ── Theme ── */
235 const themeBtn = document.getElementById("themeBtn");
236 function applyTheme(t) {
237 htmlEl.setAttribute("data-theme", t);
238 themeBtn.textContent = t === "dark" ? "☀️" : "🌙";
239 try { localStorage.setItem("theme", t); } catch (e) {}
240 }
241 (function initTheme() {
242 let saved = null;
243 try { saved = localStorage.getItem("theme"); } catch (e) {}
244 if (saved === "dark" || saved === "light") { applyTheme(saved); return; }
245 const prefersDark = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
246 applyTheme(prefersDark ? "dark" : "light");
247 })();
248 themeBtn.addEventListener("click", function () {
249 applyTheme(htmlEl.getAttribute("data-theme") === "dark" ? "light" : "dark");
250 });
251 /* Folge dem System, solange keine manuelle Wahl gespeichert ist */
252 if (window.matchMedia) {
253 window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", function (e) {
254 let saved = null;
255 try { saved = localStorage.getItem("theme"); } catch (err) {}
256 if (!saved) applyTheme(e.matches ? "dark" : "light");
257 });
258 }
259
260 /* ── Sprache ── */
261 let savedLang = null;
262 try { savedLang = localStorage.getItem("lang"); } catch (e) {}
263 let currentLang = (savedLang && T[savedLang]) ? savedLang : "de";
264
265 const switcher = document.getElementById("langSwitcher");
266 LANGS.forEach(function (l) {
267 const btn = document.createElement("button");
268 btn.type = "button";
269 btn.className = "lang-btn";
270 btn.textContent = l.label;
271 btn.dataset.code = l.code;
272 btn.addEventListener("click", function () { setLang(l.code, true); });
273 switcher.appendChild(btn);
274 });
275
276 function highlightLang() {
277 switcher.querySelectorAll(".lang-btn").forEach(function (b) {
278 b.classList.toggle("active", b.dataset.code === currentLang);
279 });
280 }
281
282 function setLang(code, persist) {
283 if (!T[code]) code = "en";
284 currentLang = code;
285 if (persist) { try { localStorage.setItem("lang", code); } catch (e) {} }
286 htmlEl.lang = code;
287 highlightLang();
288 renderContent();
289 }
290
291 /* ── Domain ── */
292 function getDomain() {
293 const h = (window.location.hostname || "").toLowerCase();
294 if (h.indexOf("empty.tokyo") !== -1) return "empty.tokyo";
295 if (h.indexOf("fld.wtf") !== -1) return "fld.wtf";
296 return "durchdacht.me";
297 }
298
299 /* ── Render ── */
300 function renderContent() {
301 const t = T[currentLang];
302 const domain = getDomain();
303 document.title = t.title + " · " + domain;
304 document.getElementById("content").innerHTML =
305 '<span class="domain-badge">' + domain + '</span>' +
306 '<h1>' + t.title + '</h1>' +
307 '<p class="domains-note">' + t.domainsNote + '</p>' +
308 '<h2>' + t.tmgHead + '</h2>' +
309 '<p>' + t.tmgBody + '</p>' +
310 '<p>' + t.tmgNote + '</p>' +
311 '<h2>' + t.disclaimerHead + '</h2>' +
312 '<h2>' + t.contentHead + '</h2>' +
313 '<p>' + t.contentBody + '</p>' +
314 '<h2>' + t.linksHead + '</h2>' +
315 '<p>' + t.linksBody + '</p>' +
316 '<h2>' + t.copyrightHead + '</h2>' +
317 '<p>' + t.copyrightBody + '</p>' +
318 '<p class="contact-line">' + t.contact +
319 ': <a href="mailto:admin@durchdacht.me">admin@durchdacht.me</a></p>' +
320 '<footer>' + t.source +
321 ': <a href="https://www.e-recht24.de" target="_blank" rel="noopener noreferrer">e-recht24.de</a></footer>';
322 }
323
324 /* Sofort rendern – Seite ist nie leer */
325 highlightLang();
326 renderContent();
327
328 /* ── IP-Spracherkennung (nur Erstbesuch ohne gespeicherte Wahl) ── */
329 (function detectLangByIP() {
330 if (savedLang && T[savedLang]) return;
331 const ctrl = new AbortController();
332 const timer = setTimeout(function () { ctrl.abort(); }, 3000);
333 fetch("https://api.country.is/", { signal: ctrl.signal })
334 .then(function (r) { return r.json(); })
335 .then(function (d) {
336 clearTimeout(timer);
337 const lang = COUNTRY_LANG[(d && d.country) || ""] || "en";
338 setLang(lang, false);
339 })
340 .catch(function () {
341 clearTimeout(timer);
342 /* Fallback: Browsersprache, sonst Englisch */
343 const nav = (navigator.language || "en").slice(0, 2).toLowerCase();
344 setLang(T[nav] ? nav : "en", false);
345 });
346 })();
347 </script>
348</body>
349</html>