Files
xxx-sphere-web/bin/main/static/help/chastity.html
Mario 4f2048bdc8
Some checks failed
Host-Based Deploy (Java 21 Fix) / build-and-run (push) Has been cancelled
Weiter gebaut
2026-04-25 16:56:35 +02:00

214 lines
14 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/img/icon.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hilfe Chastity Game xXx Sphere</title>
<link rel="stylesheet" href="/css/variables.css">
<link rel="stylesheet" href="/css/style.css">
<style>
.hilfe-header { margin-bottom: 2rem; }
.hilfe-header h1 { font-size: 1.6rem; margin: 0 0 0.4rem 0; }
.hilfe-header p { color: var(--color-muted); font-size: 0.92rem; margin: 0; line-height: 1.6; }
.hilfe-section { background: var(--color-card); border: 1px solid var(--color-secondary); border-radius: 10px; margin-bottom: 0.75rem; overflow: hidden; }
.hilfe-section-header { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; padding: 1rem 1.25rem; cursor: pointer; user-select: none; transition: background 0.15s; }
.hilfe-section-header:hover { background: rgba(255,255,255,0.03); }
.hilfe-section-title { display: flex; align-items: center; gap: 0.6rem; font-size: 1rem; font-weight: 600; }
.hilfe-section-arrow { font-size: 0.75rem; color: var(--color-muted); transition: transform 0.2s; }
.hilfe-section.open .hilfe-section-arrow { transform: rotate(90deg); }
.hilfe-section-body { display: none; padding: 0 1.25rem 1.25rem; border-top: 1px solid var(--color-secondary); }
.hilfe-section.open .hilfe-section-body { display: block; }
.hilfe-section-body p { font-size: 0.9rem; color: var(--color-muted); line-height: 1.7; margin: 0.9rem 0 0; }
.hilfe-section-body p:first-child { margin-top: 1rem; }
.hilfe-steps { list-style: none; padding: 0; margin: 1rem 0 0; display: flex; flex-direction: column; gap: 0.75rem; }
.hilfe-steps li { list-style: none; display: flex; align-items: flex-start; gap: 0.85rem; font-size: 0.9rem; color: var(--color-muted); line-height: 1.6; }
.hilfe-steps li::before { display: none; }
.hilfe-steps li .step-num { flex-shrink: 0; width: 1.6rem; height: 1.6rem; border-radius: 50%; background: var(--color-primary); color: #fff; font-size: 0.75rem; font-weight: 700; display: flex; align-items: center; justify-content: center; margin-top: 0.1rem; }
.hilfe-hint { background: rgba(var(--color-primary-rgb, 120,80,200), 0.08); border-left: 3px solid var(--color-primary); border-radius: 0 8px 8px 0; padding: 0.75rem 1rem; font-size: 0.88rem; color: var(--color-muted); line-height: 1.6; margin-top: 1rem; }
.hilfe-hint strong { color: var(--color-text); }
.hilfe-warn { background: rgba(231,76,60,0.08); border-left: 3px solid #e74c3c; border-radius: 0 8px 8px 0; padding: 0.75rem 1rem; font-size: 0.88rem; color: var(--color-muted); line-height: 1.6; margin-top: 1rem; }
.hilfe-warn strong { color: #e74c3c; }
.hilfe-info { background: var(--color-secondary); border-radius: 8px; padding: 0.75rem 1rem; font-size: 0.88rem; color: var(--color-muted); line-height: 1.6; margin-top: 1rem; }
.hilfe-table { width: 100%; border-collapse: collapse; font-size: 0.88rem; margin-top: 1rem; }
.hilfe-table th { text-align: left; color: var(--color-text); font-weight: 600; padding: 0.4rem 0.75rem 0.4rem 0; border-bottom: 1px solid var(--color-secondary); }
.hilfe-table td { color: var(--color-muted); padding: 0.5rem 0.75rem 0.5rem 0; border-bottom: 1px solid rgba(255,255,255,0.05); vertical-align: top; line-height: 1.5; }
.hilfe-table tr:last-child td { border-bottom: none; }
.hilfe-badge { display: inline-block; background: var(--color-secondary); border-radius: 4px; padding: 0.1rem 0.45rem; font-size: 0.78rem; font-weight: 600; color: var(--color-muted); vertical-align: middle; }
.back-link { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.85rem; color: var(--color-muted); text-decoration: none; margin-bottom: 1.25rem; transition: color 0.15s; }
.back-link:hover { color: var(--color-text); }
</style>
</head>
<body class="app">
<div class="main">
<div class="content">
<a href="/help/overview.html" class="back-link"> Zurück zur Hilfe-Übersicht</a>
<div class="hilfe-header">
<h1>🔒 Chastity Game</h1>
<p>Alles rund um Locks, Keyholder, Karten und Aufgaben im Chastity Game.</p>
</div>
<div class="hilfe-section open" id="sec-intro">
<div class="hilfe-section-header" onclick="toggleSection('sec-intro')">
<span class="hilfe-section-title">📖 Was ist das Chastity Game?</span>
<span class="hilfe-section-arrow"></span>
</div>
<div class="hilfe-section-body">
<p>
Das Chastity Game ist ein interaktives Rollenspiel für zwei Personen: eine Person übernimmt die Rolle des <strong>Wearers</strong> (trägt das Gerät), die andere die des <strong>Keyholders</strong> (verwaltet den Schlüssel).
</p>
<p>
Der Keyholder bestimmt, wann das Lock geöffnet wird entweder nach einem festen Datum, durch das Ziehen von Karten, oder durch Community-Votes. Der Wearer kann Aufgaben erhalten, die den Verlauf des Spiels beeinflussen.
</p>
<div class="hilfe-hint">
<strong>Hinweis:</strong> Für die automatische Steuerung einer physischen TTLock-Schlüsselbox ist ein Premium-Abonnement erforderlich. Mehr dazu unter <a href="/help/ttlock.html">TTLock-Hilfe</a>.
</div>
</div>
</div>
<div class="hilfe-section" id="sec-newlock">
<div class="hilfe-section-header" onclick="toggleSection('sec-newlock')">
<span class="hilfe-section-title">🚀 Neues Lock starten</span>
<span class="hilfe-section-arrow"></span>
</div>
<div class="hilfe-section-body">
<p>So startest du als Wearer ein neues Lock:</p>
<ol class="hilfe-steps">
<li><span class="step-num">1</span><span>Navigiere zu <strong>Chastity → Neues Lock</strong>.</span></li>
<li><span class="step-num">2</span><span>Vergib einen Namen für dein Lock (z. B. „Mein erstes Lock").</span></li>
<li><span class="step-num">3</span><span>Wähle einen Modus: <span class="hilfe-badge">Keyholder</span>, <span class="hilfe-badge">TimeLock</span> oder <span class="hilfe-badge">Community</span>.</span></li>
<li><span class="step-num">4</span><span>Lege optional Aufgaben und Karten fest, die den Verlauf beeinflussen.</span></li>
<li><span class="step-num">5</span><span>Bestätige mit <em>Lock starten</em>. Das Lock ist jetzt aktiv.</span></li>
</ol>
<div class="hilfe-warn">
<strong>Achtung:</strong> Ein aktives Lock kann nicht einfach abgebrochen werden. Stelle sicher, dass du und dein Keyholder sich über die Bedingungen einig sind.
</div>
</div>
</div>
<div class="hilfe-section" id="sec-keyholder">
<div class="hilfe-section-header" onclick="toggleSection('sec-keyholder')">
<span class="hilfe-section-title">🗝️ Die Rolle als Keyholder</span>
<span class="hilfe-section-arrow"></span>
</div>
<div class="hilfe-section-body">
<p>
Als Keyholder verwaltest du das Lock einer anderen Person. Du wirst per Einladungslink oder direkt über den Nutzernamen des Wearers zugewiesen.
</p>
<table class="hilfe-table">
<thead><tr><th>Aktion</th><th>Beschreibung</th></tr></thead>
<tbody>
<tr><td><span class="hilfe-badge">Öffnen</span></td><td>Gibt den Schlüssel / Öffnungscode frei. Bei TTLock wird der Code automatisch an die Box übermittelt.</td></tr>
<tr><td><span class="hilfe-badge">Verlängern</span></td><td>Fügt dem Lock zusätzliche Zeit hinzu.</td></tr>
<tr><td><span class="hilfe-badge">Aufgabe vergeben</span></td><td>Schickt dem Wearer eine neue Aufgabe. Nichterfüllung kann Strafzeit bedeuten.</td></tr>
<tr><td><span class="hilfe-badge">Verstoß melden</span></td><td>Protokolliert einen Regelverstoß und kann Zeit hinzufügen.</td></tr>
</tbody>
</table>
<div class="hilfe-hint">
<strong>Tipp:</strong> Unter <strong>Keyholder → Übersicht</strong> siehst du alle Locks, für die du verantwortlich bist, inklusive Laufzeit und offener Aufgaben.
</div>
</div>
</div>
<div class="hilfe-section" id="sec-karten">
<div class="hilfe-section-header" onclick="toggleSection('sec-karten')">
<span class="hilfe-section-title">🃏 Karten und Aufgaben</span>
<span class="hilfe-section-arrow"></span>
</div>
<div class="hilfe-section-body">
<p>
Karten sind ein zufälliges Element im Chastity Game. Beim Einrichten eines Locks kann ein Kartenstapel aktiviert werden. Der Wearer zieht in festgelegten Abständen eine Karte das Ergebnis kann die Laufzeit verlängern, verkürzen oder eine Aufgabe auslösen.
</p>
<table class="hilfe-table">
<thead><tr><th>Kartentyp</th><th>Auswirkung</th></tr></thead>
<tbody>
<tr><td><span class="hilfe-badge">+Zeit</span></td><td>Fügt dem Lock zusätzliche Zeit hinzu (z. B. +1 Tag).</td></tr>
<tr><td><span class="hilfe-badge">Zeit</span></td><td>Verkürzt die verbleibende Laufzeit.</td></tr>
<tr><td><span class="hilfe-badge">Aufgabe</span></td><td>Löst eine zufällige Aufgabe aus, die erfüllt werden muss.</td></tr>
<tr><td><span class="hilfe-badge">Freeze</span></td><td>Laufzeit wird für einen definierten Zeitraum eingefroren.</td></tr>
<tr><td><span class="hilfe-badge">Reset</span></td><td>Setzt die Laufzeit auf den ursprünglichen Wert zurück.</td></tr>
</tbody>
</table>
<p>
Eigene Karten und Aufgaben kannst du unter <strong>Chastity → Aufgaben</strong> verwalten und den Vorlagen-Pool nach Belieben erweitern.
</p>
</div>
</div>
<div class="hilfe-section" id="sec-timelock">
<div class="hilfe-section-header" onclick="toggleSection('sec-timelock')">
<span class="hilfe-section-title">⏱️ TimeLock erklärt</span>
<span class="hilfe-section-arrow"></span>
</div>
<div class="hilfe-section-body">
<p>
Ein TimeLock läuft ohne Keyholder die Öffnung erfolgt automatisch, sobald der eingestellte Endzeitpunkt erreicht ist. Es gibt keinen manuellen Eingriff.
</p>
<div class="hilfe-warn">
<strong>Achtung:</strong> Bei einem TimeLock ohne Keyholder gibt es keine manuelle Freigabe vor Ablauf der Zeit. Plane daher immer eine Notfalloption ein (z. B. physischer Ersatzschlüssel an vertrauenswürdiger Person).
</div>
<div class="hilfe-hint">
<strong>Hinweis:</strong> Für die automatische TTLock-Öffnung zum Ablaufzeitpunkt muss die TTLock-Integration korrekt eingerichtet sein. Weitere Informationen: <a href="/help/ttlock.html">TTLock-Hilfe</a>.
</div>
</div>
</div>
<div class="hilfe-section" id="sec-faq1">
<div class="hilfe-section-header" onclick="toggleSection('sec-faq1')">
<span class="hilfe-section-title">❓ Kann ich ein Lock vorzeitig beenden?</span>
<span class="hilfe-section-arrow"></span>
</div>
<div class="hilfe-section-body">
<p>
Ein Lock kann nur dann vorzeitig beendet werden, wenn der Keyholder die Freigabe erteilt. Bei einem TimeLock ohne Keyholder ist dies nicht möglich außer über einen physischen Ersatzschlüssel.
</p>
<div class="hilfe-info">
Im Notfall steht die TTLock-Notfallöffnung zur Verfügung. Mehr dazu: <a href="/help/ttlock.html#sec-faq2">TTLock Notfall-Öffnung</a>.
</div>
</div>
</div>
<div class="hilfe-section" id="sec-faq2">
<div class="hilfe-section-header" onclick="toggleSection('sec-faq2')">
<span class="hilfe-section-title">❓ Wie finde ich einen Keyholder?</span>
<span class="hilfe-section-arrow"></span>
</div>
<div class="hilfe-section-body">
<p>
Unter <strong>Chastity → Keyholder finden</strong> kannst du nach registrierten Keyholdern suchen und eine Anfrage stellen. Der Keyholder muss die Anfrage bestätigen, bevor das Lock aktiv wird.
</p>
<p>
Alternativ kannst du deinen Keyholder direkt über seinen Nutzernamen einladen, wenn ihr euch bereits kennt.
</p>
</div>
</div>
</div>
</div>
<script src="/js/icons.js"></script>
<script src="/js/nav.js"></script>
<script>
function toggleSection(id) {
document.getElementById(id).classList.toggle('open');
}
function openFromHash() {
const hash = window.location.hash.slice(1);
if (!hash) return;
const el = document.getElementById(hash);
if (el && el.classList.contains('hilfe-section')) {
el.classList.add('open');
setTimeout(() => el.scrollIntoView({ behavior: 'smooth', block: 'start' }), 50);
}
}
document.addEventListener('DOMContentLoaded', openFromHash);
window.addEventListener('hashchange', openFromHash);
</script>
</body>
</html>