feat: initial commit for MischCRM - full private custom personal relationship manager
This commit is contained in:
1132
public/app.js
Normal file
1132
public/app.js
Normal file
File diff suppressed because it is too large
Load Diff
506
public/index.html
Normal file
506
public/index.html
Normal file
@@ -0,0 +1,506 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>MischCRM - Personal Relationship Manager</title>
|
||||
<!-- Google Fonts: Outfit & Inter -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||
<!-- Lucide Icons for premium modern look -->
|
||||
<script src="https://unpkg.com/lucide@latest"></script>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="app-container">
|
||||
<!-- Premium Sidebar -->
|
||||
<aside class="sidebar">
|
||||
<div class="logo-area">
|
||||
<div class="logo-glow"></div>
|
||||
<i data-lucide="heart-handshake" class="logo-icon"></i>
|
||||
<span class="logo-text">Misch<span>CRM</span></span>
|
||||
</div>
|
||||
|
||||
<nav class="nav-menu">
|
||||
<a href="#dashboard" class="nav-item active" data-tab="dashboard">
|
||||
<i data-lucide="layout-dashboard"></i>
|
||||
<span>Dashboard</span>
|
||||
</a>
|
||||
<a href="#friends" class="nav-item" data-tab="friends">
|
||||
<i data-lucide="users"></i>
|
||||
<span>Freunde</span>
|
||||
</a>
|
||||
<a href="#import" class="nav-item" data-tab="import">
|
||||
<i data-lucide="file-up"></i>
|
||||
<span>Obsidian Import</span>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
<div class="sidebar-footer">
|
||||
<span class="version">v1.0.0 • Mischlabs</span>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<!-- Main Content Area -->
|
||||
<main class="main-content">
|
||||
<!-- Top header bar -->
|
||||
<header class="top-bar">
|
||||
<h1 id="page-title">Dashboard</h1>
|
||||
<div class="user-profile">
|
||||
<span class="welcome-text">Willkommen, <span class="username">Ehrenmann</span></span>
|
||||
<div class="avatar-ring">
|
||||
<div class="avatar-fallback">M</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- TAB 1: DASHBOARD -->
|
||||
<section id="tab-dashboard" class="tab-pane active">
|
||||
<!-- Stats Panel -->
|
||||
<div class="stats-grid">
|
||||
<div class="stat-card glass-panel">
|
||||
<div class="stat-icon-wrapper blue">
|
||||
<i data-lucide="users"></i>
|
||||
</div>
|
||||
<div class="stat-data">
|
||||
<span class="stat-label">Gesamte Freunde</span>
|
||||
<span class="stat-value" id="stat-total-friends">0</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-card glass-panel">
|
||||
<div class="stat-icon-wrapper purple">
|
||||
<i data-lucide="calendar"></i>
|
||||
</div>
|
||||
<div class="stat-data">
|
||||
<span class="stat-label">Treffen diesen Monat</span>
|
||||
<span class="stat-value" id="stat-meetings-month">0</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-card glass-panel">
|
||||
<div class="stat-icon-wrapper gold">
|
||||
<i data-lucide="award"></i>
|
||||
</div>
|
||||
<div class="stat-data">
|
||||
<span class="stat-label">Durchschnittliche Ehre</span>
|
||||
<span class="stat-value" id="stat-avg-honor">0</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-card glass-panel">
|
||||
<div class="stat-icon-wrapper pink">
|
||||
<i data-lucide="cake"></i>
|
||||
</div>
|
||||
<div class="stat-data">
|
||||
<span class="stat-label">Geburtstage (30 Tage)</span>
|
||||
<span class="stat-value" id="stat-upcoming-birthdays">0</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-columns">
|
||||
<!-- Left Column: Quick Actions & Log Meeting -->
|
||||
<div class="dashboard-left">
|
||||
<!-- Quick Log Meeting -->
|
||||
<div class="glass-panel card-section">
|
||||
<div class="section-header">
|
||||
<h2><i data-lucide="check-square" class="header-icon"></i>Schnell-Log Treffen</h2>
|
||||
</div>
|
||||
<form id="quick-log-form" class="premium-form">
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="quick-friend-select">Freund auswählen</label>
|
||||
<select id="quick-friend-select" required>
|
||||
<option value="">Wähle einen Freund...</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="quick-date">Datum</label>
|
||||
<input type="date" id="quick-date" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="quick-activity">Was habt ihr gemacht?</label>
|
||||
<input type="text" id="quick-activity" placeholder="z. B. Gemütliches Kaltgetränk gezischt, D&D gespielt" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="quick-mood">Stimmung / Vibe</label>
|
||||
<input type="text" id="quick-mood" placeholder="z. B. Legendär, Entspannt, Super motiviert">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="quick-details">Details / Notizen</label>
|
||||
<textarea id="quick-details" rows="3" placeholder="Gibt es wichtige Lebensupdates oder Dinge, an die du dich erinnern willst?"></textarea>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary btn-full">
|
||||
<i data-lucide="plus-circle"></i> Treffen speichern
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Right Column: Urgent Contacts & Upcoming Birthdays -->
|
||||
<div class="dashboard-right">
|
||||
<!-- Urgent Contacts (Nicht lange gesehen) -->
|
||||
<div class="glass-panel card-section scrollable-list-container">
|
||||
<div class="section-header">
|
||||
<h2><i data-lucide="bell" class="header-icon"></i>Lange nicht gesehen</h2>
|
||||
</div>
|
||||
<div id="urgent-contacts-list" class="list-container">
|
||||
<!-- Loaded dynamically -->
|
||||
<div class="loading-spinner"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Upcoming Birthdays -->
|
||||
<div class="glass-panel card-section scrollable-list-container">
|
||||
<div class="section-header">
|
||||
<h2><i data-lucide="cake" class="header-icon"></i>Anstehende Geburtstage</h2>
|
||||
</div>
|
||||
<div id="upcoming-birthdays-list" class="list-container">
|
||||
<!-- Loaded dynamically -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- TAB 2: FRIENDS DIRECTORY -->
|
||||
<section id="tab-friends" class="tab-pane">
|
||||
<div class="directory-actions">
|
||||
<div class="search-bar-wrapper glass-panel">
|
||||
<i data-lucide="search" class="search-icon"></i>
|
||||
<input type="text" id="friends-search" placeholder="Suche nach Freunden, Hobbys, Wohnorten...">
|
||||
</div>
|
||||
<button class="btn btn-primary" id="btn-add-friend-modal">
|
||||
<i data-lucide="plus"></i> Freund hinzufügen
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="friends-grid" id="friends-grid">
|
||||
<!-- Loaded dynamically -->
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- TAB 3: OBSIDIAN IMPORT -->
|
||||
<section id="tab-import" class="tab-pane">
|
||||
<div class="glass-panel card-section import-container">
|
||||
<div class="section-header">
|
||||
<h2><i data-lucide="file-up" class="header-icon"></i>Obsidian Markdown Import</h2>
|
||||
<p class="section-desc">Kopiere den Inhalt deiner Obsidian Freundesnotiz (inklusive YAML Frontmatter) hier hinein, um die Daten vollautomatisch in dein CRM zu übertragen.</p>
|
||||
</div>
|
||||
|
||||
<form id="obsidian-import-form" class="premium-form">
|
||||
<div class="form-group">
|
||||
<label for="import-filename">Name der Datei (optional, z. B. Aaron Lingel.md)</label>
|
||||
<input type="text" id="import-filename" placeholder="Aaron Lingel.md">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="import-content">Markdown Inhalt</label>
|
||||
<textarea id="import-content" rows="16" placeholder="Kopiere hier den gesamten Inhalt der Obsidian-Datei hinein..." required></textarea>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary btn-full">
|
||||
<i data-lucide="cpu"></i> Datei analysieren & importieren
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div id="import-result" class="import-result-panel glass-panel hidden">
|
||||
<!-- Loaded dynamically -->
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<!-- MODAL: ADD FRIEND -->
|
||||
<div class="modal-backdrop" id="add-friend-modal">
|
||||
<div class="modal-container glass-panel">
|
||||
<div class="modal-header">
|
||||
<h2><i data-lucide="user-plus"></i> Neuer Ehrenbruder / Freund</h2>
|
||||
<button class="modal-close" id="btn-close-add-modal"><i data-lucide="x"></i></button>
|
||||
</div>
|
||||
<form id="add-friend-form" class="premium-form">
|
||||
<div class="modal-scroll-area">
|
||||
<div class="form-group">
|
||||
<label for="add-name">Name *</label>
|
||||
<input type="text" id="add-name" required placeholder="z. B. Aaron Lingel">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="add-birthday">Geburtstag</label>
|
||||
<input type="date" id="add-birthday">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="add-contact">Telefon / Kontakt</label>
|
||||
<input type="text" id="add-contact" placeholder="+49 172 ...">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="add-relationship">Beziehungsstatus</label>
|
||||
<input type="text" id="add-relationship" placeholder="z. B. FOREVER ALONE (aber hat mich)">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="add-family">Familie</label>
|
||||
<input type="text" id="add-family" placeholder="Mama Lingel und Papa Africano">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="add-address">Wohnort / Adresse</label>
|
||||
<textarea id="add-address" rows="2" placeholder="Am schlaggraben 18, 71272 renningen"></textarea>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="add-honor">Ehre (Honor)</label>
|
||||
<input type="number" id="add-honor" value="0">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="add-job">Arbeit / Studium</label>
|
||||
<input type="text" id="add-job" placeholder="z. B. Software Engineer, BWL Studium">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="add-life">Aktuelle Lebenssituation</label>
|
||||
<textarea id="add-life" rows="2" placeholder="Wie geht es ihm aktuell? Pläne?"></textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="add-hobbies">Hobbys / Interessen</label>
|
||||
<input type="text" id="add-hobbies" placeholder="D&D, Sport, Zocken">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="add-milestones">Persönliche Meilensteine</label>
|
||||
<textarea id="add-milestones" rows="2" placeholder="Neue Wohnung, Abschluss etc."></textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="add-food">Lieblingsessen/-getränk</label>
|
||||
<input type="text" id="add-food" placeholder="Pizza, Kaltgetränke">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="add-notes">Zusätzliche Infos / Notizen</label>
|
||||
<textarea id="add-notes" rows="2" placeholder="Random Infos, Eigenheiten..."></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" id="btn-cancel-add-modal">Abbrechen</button>
|
||||
<button type="submit" class="btn btn-primary">Speichern</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- MODAL: FRIEND DETAIL VIEW (ULTRA PREMIUM PROFILE) -->
|
||||
<div class="modal-backdrop" id="friend-detail-modal">
|
||||
<div class="modal-container glass-panel detail-modal-size">
|
||||
<div class="modal-header">
|
||||
<div class="modal-title-profile">
|
||||
<div class="profile-avatar" id="detail-avatar">A</div>
|
||||
<div class="profile-meta-title">
|
||||
<h2 id="detail-name">Aaron Lingel</h2>
|
||||
<span class="relationship-badge" id="detail-badge-relationship">FOREVER ALONE</span>
|
||||
</div>
|
||||
</div>
|
||||
<button class="modal-close" id="btn-close-detail-modal"><i data-lucide="x"></i></button>
|
||||
</div>
|
||||
|
||||
<div class="modal-scroll-area">
|
||||
<div class="detail-columns">
|
||||
<!-- Left Column: Core profile details -->
|
||||
<div class="detail-col-info">
|
||||
<!-- Ehre Meter (Counter) -->
|
||||
<div class="glass-panel honor-badge-section">
|
||||
<div class="honor-header">
|
||||
<i data-lucide="award" class="honor-icon"></i>
|
||||
<span>EHRENRATING</span>
|
||||
</div>
|
||||
<div class="honor-counter-row">
|
||||
<button class="btn-honor btn-minus" id="btn-honor-minus"><i data-lucide="minus"></i></button>
|
||||
<div class="honor-value-display">
|
||||
<span id="detail-honor-value">0</span>
|
||||
<span class="honor-label-sub">Ehre</span>
|
||||
</div>
|
||||
<button class="btn-honor btn-plus" id="btn-honor-plus"><i data-lucide="plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Profile Info Cards -->
|
||||
<div class="glass-panel detail-card">
|
||||
<h3><i data-lucide="contact" class="card-icon-title"></i>Allgemeine Infos</h3>
|
||||
<div class="info-list">
|
||||
<div class="info-item">
|
||||
<span class="info-label"><i data-lucide="cake"></i> Geburtstag</span>
|
||||
<span class="info-val" id="detail-birthday">-</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label"><i data-lucide="phone"></i> Kontakt</span>
|
||||
<span class="info-val" id="detail-contact">-</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label"><i data-lucide="map-pin"></i> Adresse</span>
|
||||
<span class="info-val pre-wrap" id="detail-address">-</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label"><i data-lucide="users-round"></i> Familie</span>
|
||||
<span class="info-val" id="detail-family">-</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="glass-panel detail-card">
|
||||
<h3><i data-lucide="briefcase" class="card-icon-title"></i>Lebenssituation & Meilensteine</h3>
|
||||
<div class="info-list">
|
||||
<div class="info-item-block">
|
||||
<span class="info-label">Aktuell</span>
|
||||
<div class="info-block-text" id="detail-life">-</div>
|
||||
</div>
|
||||
<div class="info-item-block">
|
||||
<span class="info-label">Hobbys & Interessen</span>
|
||||
<div class="info-block-text" id="detail-hobbies">-</div>
|
||||
</div>
|
||||
<div class="info-item-block">
|
||||
<span class="info-label">Meilensteine</span>
|
||||
<div class="info-block-text" id="detail-milestones">-</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="glass-panel detail-card">
|
||||
<h3><i data-lucide="info" class="card-icon-title"></i>Lieblingskram & Sonstiges</h3>
|
||||
<div class="info-list">
|
||||
<div class="info-item-block">
|
||||
<span class="info-label">Lieblingsessen/-getränk</span>
|
||||
<div class="info-block-text" id="detail-food">-</div>
|
||||
</div>
|
||||
<div class="info-item-block">
|
||||
<span class="info-label">Sonstiges & Eigenheiten</span>
|
||||
<div class="info-block-text" id="detail-notes">-</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Right Column: Interactive components (Timeline, Topics to discuss) -->
|
||||
<div class="detail-col-interactive">
|
||||
<!-- Topics to Discuss -->
|
||||
<div class="glass-panel interactive-section">
|
||||
<div class="section-title-row">
|
||||
<h3><i data-lucide="message-square" class="card-icon-title"></i>Dinge zum Ansprechen</h3>
|
||||
</div>
|
||||
<form id="add-topic-form" class="inline-add-form">
|
||||
<input type="text" id="new-topic-input" placeholder="Fragen oder Themen fürs nächste Treffen..." required>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i data-lucide="plus"></i></button>
|
||||
</form>
|
||||
<ul class="topics-list" id="detail-topics-list">
|
||||
<!-- Loaded dynamically -->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Log Meeting on Profile -->
|
||||
<div class="glass-panel interactive-section">
|
||||
<h3><i data-lucide="plus-circle" class="card-icon-title"></i>Treffen eintragen</h3>
|
||||
<form id="profile-log-meeting-form" class="inline-meeting-form">
|
||||
<div class="form-row">
|
||||
<input type="date" id="profile-meeting-date" required>
|
||||
<input type="text" id="profile-meeting-mood" placeholder="Stimmung (z. B. Legendär)">
|
||||
</div>
|
||||
<input type="text" id="profile-meeting-activity" placeholder="Was habt ihr gemacht?" required>
|
||||
<textarea id="profile-meeting-details" rows="2" placeholder="Updates / Details zum Gespräch..."></textarea>
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i data-lucide="plus"></i> Treffen eintragen</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Timeline of past meetings -->
|
||||
<div class="glass-panel interactive-section">
|
||||
<h3><i data-lucide="history" class="card-icon-title"></i>Historie</h3>
|
||||
<div class="timeline" id="detail-meetings-timeline">
|
||||
<!-- Loaded dynamically -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-secondary btn-danger" id="btn-delete-friend"><i data-lucide="trash-2"></i> Freund löschen</button>
|
||||
<button class="btn btn-primary" id="btn-edit-friend-trigger"><i data-lucide="edit-3"></i> Profil bearbeiten</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- MODAL: EDIT FRIEND (REUSING ADD STYLE) -->
|
||||
<div class="modal-backdrop" id="edit-friend-modal">
|
||||
<div class="modal-container glass-panel">
|
||||
<div class="modal-header">
|
||||
<h2><i data-lucide="edit"></i> Profil bearbeiten</h2>
|
||||
<button class="modal-close" id="btn-close-edit-modal"><i data-lucide="x"></i></button>
|
||||
</div>
|
||||
<form id="edit-friend-form" class="premium-form">
|
||||
<input type="hidden" id="edit-id">
|
||||
<div class="modal-scroll-area">
|
||||
<div class="form-group">
|
||||
<label for="edit-name">Name *</label>
|
||||
<input type="text" id="edit-name" required>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="edit-birthday">Geburtstag</label>
|
||||
<input type="date" id="edit-birthday">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="edit-contact">Telefon / Kontakt</label>
|
||||
<input type="text" id="edit-contact">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="edit-relationship">Beziehungsstatus</label>
|
||||
<input type="text" id="edit-relationship">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="edit-family">Familie</label>
|
||||
<input type="text" id="edit-family">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="edit-address">Wohnort / Adresse</label>
|
||||
<textarea id="edit-address" rows="2"></textarea>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="edit-honor">Ehre</label>
|
||||
<input type="number" id="edit-honor">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="edit-job">Arbeit / Studium</label>
|
||||
<input type="text" id="edit-job">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="edit-life">Aktuelle Lebenssituation</label>
|
||||
<textarea id="edit-life" rows="2"></textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="edit-hobbies">Hobbys / Interessen</label>
|
||||
<input type="text" id="edit-hobbies">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="edit-milestones">Persönliche Meilensteine</label>
|
||||
<textarea id="edit-milestones" rows="2"></textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="edit-food">Lieblingsessen/-getränk</label>
|
||||
<input type="text" id="edit-food">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="edit-notes">Zusätzliche Infos / Notizen</label>
|
||||
<textarea id="edit-notes" rows="2"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" id="btn-cancel-edit-modal">Abbrechen</button>
|
||||
<button type="submit" class="btn btn-primary">Änderungen speichern</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
1350
public/style.css
Normal file
1350
public/style.css
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user