Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>CSGO.MTSL Savefile-Editor</title> | |
| <meta name="viewport" content="width=device-width,initial-scale=1"> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <style> | |
| :root { | |
| --primary: #0ea5e9; | |
| --secondary: #6366f1; | |
| --err: #ef4444; | |
| --ok: #22c55e; | |
| } | |
| .bg-primary-500 { background-color: var(--primary); } | |
| .bg-secondary-500 { background-color: var(--secondary); } | |
| .text-primary-700 { color: #0369a1; } | |
| .text-secondary-600 { color: #4f46e5; } | |
| .border-secondary-400 { border-color: #818cf8; } | |
| .bg-primary-100 { background-color: #e0f2fe; } | |
| .shadow-primary-300 { box-shadow: 0 4px 14px #bae6fd; } | |
| .text-primary-500 { color: var(--primary); } | |
| .text-err-600 { color: var(--err); } | |
| .bg-ok-400 { background-color: var(--ok); } | |
| .bg-err-600 { background-color: var(--err); } | |
| .toast { | |
| position: fixed; | |
| bottom: 1.5rem; | |
| left: 50%; | |
| transform: translateX(-50%) translateY(200%); | |
| transition: transform .3s ease; | |
| z-index: 50; | |
| } | |
| .toast.show { transform: translateX(-50%) translateY(0); } | |
| </style> | |
| </head> | |
| <body class="bg-gradient-to-br from-slate-50 to-slate-100 min-h-screen flex items-center justify-center p-4"> | |
| <div class="w-full max-w-4xl"> | |
| <header class="mb-4 text-center"> | |
| <h1 class="text-2xl font-bold text-primary-700">CSGO.MTSL Savefile-Editor</h1> | |
| <p class="text-sm text-primary-500 mt-1">1. Lade Save → 2. JSON editieren → 3. Speichern → 4. Spiel neu laden.</p> | |
| </header> | |
| <main class="bg-primary-100 rounded-xl shadow-primary-300 p-6 grid gap-6"> | |
| <section class="grid md:grid-cols-2 gap-4"> | |
| <div> | |
| <label class="block text-sm font-semibold text-secondary-600 mb-1">Raw Save (Base64)</label> | |
| <textarea id="raw" rows="10" class="w-full border border-secondary-400 rounded p-2 text-sm font-mono resize-y" spellcheck="false"></textarea> | |
| <input type="file" id="uploader" class="hidden" accept=".txt"> | |
| </div> | |
| <div> | |
| <label class="block text-sm font-semibold text-secondary-600 mb-1">Decoded JSON</label> | |
| <textarea id="json" rows="10" class="w-full border border-secondary-400 rounded p-2 text-sm font-mono resize-y" spellcheck="false"></textarea> | |
| </div> | |
| </section> | |
| <div id="msg" class="text-sm h-5"></div> | |
| <section class="flex flex-wrap gap-3 justify-center"> | |
| <button id="loadStorage" class="px-4 py-2 rounded bg-primary-500 text-white hover:bg-opacity-90">Load from Storage</button> | |
| <button id="pretty" class="px-4 py-2 rounded bg-secondary-500 text-white hover:bg-opacity-90">Pretty Print</button> | |
| <button id="minify" class="px-4 py-2 rounded bg-secondary-500 text-white hover:bg-opacity-90">Minify</button> | |
| <button id="encode" class="px-4 py-2 rounded bg-primary-500 text-white hover:bg-opacity-90">Encode & Save</button> | |
| <button id="download" class="px-4 py-2 rounded bg-secondary-500 text-white hover:bg-opacity-90">Download .txt</button> | |
| <button id="upload" class="px-4 py-2 rounded bg-secondary-500 text-white hover:bg-opacity-90">Upload .txt</button> | |
| </section> | |
| </main> | |
| <footer class="text-center mt-4 text-xs text-primary-500">Nutze auf eigene Gef | |
| </body> | |
| </html> |