Changes to tales-and-pixels.scroll.pub

root
root
25 days ago
Initial commit
body.html
Changed around line 1
+
+
+
+
+
+
+
+
+
+
+
+
+

Two Worlds Await

+

Discover a gripping novel and an immersive CRPG

+
+
+
+
+
+

The Whispers of Aldermere

+
+
+
+

"In a world where memories become reality..."

+

An epic tale of forgotten magic and dangerous truths, coming soon to your favorite bookstore.

+
+ Mystery
+ Fantasy
+ Adventure
+
+
+
+
+
+
+
+
+
+

Chronicles of the Forgotten Realm

+
+
+
+

"Your choices shape a world in chaos"

+

A deep, narrative-driven CRPG with tactical combat and meaningful choices.

+
+ RPG
+ Tactical
+ Story-Rich
+
+
+
+
+
+
+
+
+
+ ×
+

Stay Updated

+
+
+
+
+
+
+
+
+
+
+

Tales & Pixels

+
+
+
+
index.scroll
Changed around line 1
+ buildHtml
+ baseUrl https://tales-and-pixels.scroll.pub
+ metaTags
+ editButton /edit.html
+ title Tales & Pixels - Novel & CRPG Teasers
+ style.css
+ body.html
+ script.js
prompt.json
Changed around line 1
+ {
+ "id": "msg_01UdwtnVTVNHgmmhmVjdgiq7",
+ "type": "message",
+ "role": "assistant",
+ "model": "claude-3-5-sonnet-20241022",
+ "content": [
+ {
+ "type": "text",
+ "text": "I'll create a mystical and engaging dual-teaser website. For the domain, I suggest:\n\n---domain---\ntales-and-pixels.scroll.pub\n\n---index.scroll---\nbuildHtml\nbaseUrl https://tales-and-pixels.scroll.pub\nmetaTags\neditButton /edit.html\ntitle Tales & Pixels - Novel & CRPG Teasers\nstyle.css\nbody.html\nscript.js\n\n---body.html---\n
\n \n
\n\n
\n
\n
\n

Two Worlds Await

\n

Discover a gripping novel and an immersive CRPG

\n
\n
\n\n
\n
\n

The Whispers of Aldermere

\n
\n
\n
\n

\"In a world where memories become reality...\"

\n

An epic tale of forgotten magic and dangerous truths, coming soon to your favorite bookstore.

\n
\n Mystery\n Fantasy\n Adventure\n
\n \n
\n
\n
\n
\n\n
\n
\n

Chronicles of the Forgotten Realm

\n
\n
\n
\n

\"Your choices shape a world in chaos\"

\n

A deep, narrative-driven CRPG with tactical combat and meaningful choices.

\n
\n RPG\n Tactical\n Story-Rich\n
\n \n
\n
\n
\n
\n\n
\n
\n ×\n

Stay Updated

\n
\n \n \n
\n
\n
\n
\n\n
\n
\n

Tales & Pixels

\n \n
\n
\n\n---style.css---\n:root {\n --primary-color: #2a1b3d;\n --secondary-color: #44318d;\n --accent-color: #a4b3b6;\n --text-light: #e8e8e8;\n --text-dark: #2a2a2a;\n --transition: all 0.3s ease;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: 'Segoe UI', system-ui, sans-serif;\n line-height: 1.6;\n color: var(--text-dark);\n overflow-x: hidden;\n}\n\n.main-header {\n position: fixed;\n width: 100%;\n z-index: 1000;\n background: rgba(42, 27, 61, 0.95);\n backdrop-filter: blur(10px);\n}\n\nnav {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 5%;\n}\n\n.logo {\n color: var(--text-light);\n font-size: 1.5rem;\n font-weight: bold;\n}\n\n.nav-links {\n display: flex;\n list-style: none;\n gap: 2rem;\n}\n\n.nav-links a {\n color: var(--text-light);\n text-decoration: none;\n transition: var(--transition);\n}\n\n.nav-links a:hover {\n color: var(--accent-color);\n}\n\n.toggle-nav {\n display: none;\n background: none;\n border: none;\n color: var(--text-light);\n font-size: 1.5rem;\n cursor: pointer;\n}\n\n#hero {\n height: 100vh;\n background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n color: var(--text-light);\n}\n\n.hero-content h1 {\n font-size: 4rem;\n margin-bottom: 1rem;\n animation: fadeInUp 1s ease-out;\n}\n\n.hero-content p {\n font-size: 1.5rem;\n animation: fadeInUp 1s ease-out 0.3s backwards;\n}\n\n.teaser-section {\n padding: 5rem 0;\n min-height: 100vh;\n display: flex;\n align-items: center;\n}\n\n#novel {\n background: linear-gradient(45deg, #1a1a1a, #2a1b3d);\n color: var(--text-light);\n}\n\n#game {\n background: linear-gradient(45deg, #44318d, #2a1b3d);\n color: var(--text-light);\n}\n\n.content-wrapper {\n width: 90%;\n max-width: 1200px;\n margin: 0 auto;\n}\n\n.teaser-content {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 4rem;\n align-items: center;\n}\n\n.teaser-image {\n height: 400px;\n border-radius: 10px;\n background-size: cover;\n background-position: center;\n box-shadow: 0 10px 30px rgba(0,0,0,0.3);\n transition: var(--transition);\n}\n\n.teaser-image:hover {\n transform: scale(1.02);\n}\n\n.novel-image {\n background-image: url('data:image/svg+xml,');\n}\n\n.game-image {\n background-image: url('data:image/svg+xml,');\n}\n\n.tagline {\n font-size: 1.5rem;\n font-style: italic;\n margin-bottom: 1rem;\n color: var(--accent-color);\n}\n\n.feature-list {\n display: flex;\n gap: 1rem;\n margin: 2rem 0;\n}\n\n.feature-list span {\n padding: 0.5rem 1rem;\n background: rgba(255,255,255,0.1);\n border-radius: 20px;\n font-size: 0.9rem;\n}\n\n.notify-btn {\n padding: 1rem 2rem;\n border: none;\n border-radius: 25px;\n background: var(--accent-color);\n color: var(--text-dark);\n cursor: pointer;\n transition: var(--transition);\n}\n\n.notify-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 5px 15px rgba(0,0,0,0.3);\n}\n\n.modal {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0,0,0,0.8);\n z-index: 1001;\n}\n\n.modal-content {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: var(--primary-color);\n padding: 2rem;\n border-radius: 10px;\n color: var(--text-light);\n width: 90%;\n max-width: 400px;\n}\n\n.close-modal {\n position: absolute;\n right: 1rem;\n top: 1rem;\n cursor: pointer;\n}\n\n#notify-form {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n margin-top: 1rem;\n}\n\n#notify-form input {\n padding: 0.8rem;\n border: none;\n border-radius: 5px;\n}\n\nfooter {\n background: var(--primary-color);\n color: var(--text-light);\n padding: 2rem 0;\n text-align: center;\n}\n\n.social-links {\n margin-top: 1rem;\n}\n\n.social-links a {\n color: var(--text-light);\n text-decoration: none;\n margin: 0 0.5rem;\n font-size: 1.2rem;\n}\n\n@keyframes fadeInUp {\n from {\n opacity: 0;\n transform: translateY(20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@media (max-width: 768px) {\n .toggle-nav {\n display: block;\n }\n\n .nav-links {\n display: none;\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n background: var(--primary-color);\n flex-direction: column;\n padding: 1rem 0;\n text-align: center;\n }\n\n .nav-links.active {\n display: flex;\n }\n\n .teaser-content {\n grid-template-columns: 1fr;\n gap: 2rem;\n }\n\n .hero-content h1 {\n font-size: 2.5rem;\n }\n\n .hero-content p {\n font-size: 1.2rem;\n }\n}\n\n---script.js---\ndocument.addEventListener('DOMContentLoaded', () => {\n const toggleNav = document.querySelector('.toggle-nav');\n const navLinks = document.querySelector('.nav-links');\n const modal = document.getElementById('notification-modal');\n const closeModal = document.querySelector('.close-modal');\n const notifyForm = document.getElementById('notify-form');\n const notifyBtns = document.querySelectorAll('.notify-btn');\n\n // Mobile navigation toggle\n toggleNav.addEventListener('click', () => {\n navLinks.classList.toggle('active');\n });\n\n // Smooth scrolling for navigation links\n document.querySelectorAll('a[href^=\"#\"]').forEach(anchor => {\n anchor.addEventListener('click', function (e) {\n e.preventDefault();\n const target = document.querySelector(this.getAttribute('href'));\n if (target) {\n target.scrollIntoView({\n behavior: 'smooth'\n });\n navLinks.classList.remove('active');\n }\n });\n });\n\n // Modal handling\n notifyBtns.forEach(btn => {\n btn.addEventListener('click', () => {\n modal.style.display = 'block';\n });\n });\n\n closeModal.addEventListener('click', () => {\n modal.style.display = 'none';\n });\n\n window.addEventListener('click', (e) => {\n if (e.target === modal) {\n modal.style.display = 'none';\n }\n });\n\n // Form submission\n notifyForm.addEventListener('submit', (e) => {\n e.preventDefault();\n const email = e.target.querySelector('input[type=\"email\"]').value;\n // Here you would typically send the email to your backend\n console.log('Subscription email:', email);\n modal.style.display = 'none';\n alert('Thank you for subscribing!');\n notifyForm.reset();\n });\n\n // Parallax effect on scroll\n window.addEventListener('scroll', () => {\n const scrolled = window.pageYOffset;\n document.querySelectorAll('.teaser-image').forEach(image => {\n const speed = 0.5;\n image.style.transform = `translateY(${scrolled * speed}px)`;\n });\n });\n});\n\n---end---\n\nThis creates a stunning, modern website with smooth animations, parallax effects, and a professional design that works well for both the novel and CRPG teasers. The site features:\n\n1. A dramatic hero section\n2. Separate sections for the novel and game\n3. Animated transitions and hover effects\n4. Modal for email collection\n5. Mobile-responsive design\n6. Smooth scrolling navigation\n7. Parallax scrolling effects\n8. Accessibility features\n9. SEO-friendly structure\n10. Clean, modern aesthetic with a dark theme\n\nThe design uses a sophisticated color scheme and modern layout techniques while maintaining high performance by avoiding external dependencies. The JavaScript is kept minimal but provides essential interactivity and smooth animations."
+ }
+ ],
+ "stop_reason": "end_turn",
+ "stop_sequence": null,
+ "usage": {
+ "input_tokens": 290,
+ "cache_creation_input_tokens": 0,
+ "cache_read_input_tokens": 0,
+ "output_tokens": 3643
+ }
+ }
readme.scroll
Changed around line 1
+ # tales-and-pixels.scroll.pub
+ Website generated by Claude from prompt: Ateaser website for a novel and a teaser werbsite for a crpg
script.js
Changed around line 1
+ document.addEventListener('DOMContentLoaded', () => {
+ const toggleNav = document.querySelector('.toggle-nav');
+ const navLinks = document.querySelector('.nav-links');
+ const modal = document.getElementById('notification-modal');
+ const closeModal = document.querySelector('.close-modal');
+ const notifyForm = document.getElementById('notify-form');
+ const notifyBtns = document.querySelectorAll('.notify-btn');
+
+ // Mobile navigation toggle
+ toggleNav.addEventListener('click', () => {
+ navLinks.classList.toggle('active');
+ });
+
+ // Smooth scrolling for navigation links
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
+ anchor.addEventListener('click', function (e) {
+ e.preventDefault();
+ const target = document.querySelector(this.getAttribute('href'));
+ if (target) {
+ target.scrollIntoView({
+ behavior: 'smooth'
+ });
+ navLinks.classList.remove('active');
+ }
+ });
+ });
+
+ // Modal handling
+ notifyBtns.forEach(btn => {
+ btn.addEventListener('click', () => {
+ modal.style.display = 'block';
+ });
+ });
+
+ closeModal.addEventListener('click', () => {
+ modal.style.display = 'none';
+ });
+
+ window.addEventListener('click', (e) => {
+ if (e.target === modal) {
+ modal.style.display = 'none';
+ }
+ });
+
+ // Form submission
+ notifyForm.addEventListener('submit', (e) => {
+ e.preventDefault();
+ const email = e.target.querySelector('input[type="email"]').value;
+ // Here you would typically send the email to your backend
+ console.log('Subscription email:', email);
+ modal.style.display = 'none';
+ alert('Thank you for subscribing!');
+ notifyForm.reset();
+ });
+
+ // Parallax effect on scroll
+ window.addEventListener('scroll', () => {
+ const scrolled = window.pageYOffset;
+ document.querySelectorAll('.teaser-image').forEach(image => {
+ const speed = 0.5;
+ image.style.transform = `translateY(${scrolled * speed}px)`;
+ });
+ });
+ });
style.css
Changed around line 1
+ :root {
+ --primary-color: #2a1b3d;
+ --secondary-color: #44318d;
+ --accent-color: #a4b3b6;
+ --text-light: #e8e8e8;
+ --text-dark: #2a2a2a;
+ --transition: all 0.3s ease;
+ }
+
+ * {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ }
+
+ body {
+ font-family: 'Segoe UI', system-ui, sans-serif;
+ line-height: 1.6;
+ color: var(--text-dark);
+ overflow-x: hidden;
+ }
+
+ .main-header {
+ position: fixed;
+ width: 100%;
+ z-index: 1000;
+ background: rgba(42, 27, 61, 0.95);
+ backdrop-filter: blur(10px);
+ }
+
+ nav {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 1rem 5%;
+ }
+
+ .logo {
+ color: var(--text-light);
+ font-size: 1.5rem;
+ font-weight: bold;
+ }
+
+ .nav-links {
+ display: flex;
+ list-style: none;
+ gap: 2rem;
+ }
+
+ .nav-links a {
+ color: var(--text-light);
+ text-decoration: none;
+ transition: var(--transition);
+ }
+
+ .nav-links a:hover {
+ color: var(--accent-color);
+ }
+
+ .toggle-nav {
+ display: none;
+ background: none;
+ border: none;
+ color: var(--text-light);
+ font-size: 1.5rem;
+ cursor: pointer;
+ }
+
+ #hero {
+ height: 100vh;
+ background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ color: var(--text-light);
+ }
+
+ .hero-content h1 {
+ font-size: 4rem;
+ margin-bottom: 1rem;
+ animation: fadeInUp 1s ease-out;
+ }
+
+ .hero-content p {
+ font-size: 1.5rem;
+ animation: fadeInUp 1s ease-out 0.3s backwards;
+ }
+
+ .teaser-section {
+ padding: 5rem 0;
+ min-height: 100vh;
+ display: flex;
+ align-items: center;
+ }
+
+ #novel {
+ background: linear-gradient(45deg, #1a1a1a, #2a1b3d);
+ color: var(--text-light);
+ }
+
+ #game {
+ background: linear-gradient(45deg, #44318d, #2a1b3d);
+ color: var(--text-light);
+ }
+
+ .content-wrapper {
+ width: 90%;
+ max-width: 1200px;
+ margin: 0 auto;
+ }
+
+ .teaser-content {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 4rem;
+ align-items: center;
+ }
+
+ .teaser-image {
+ height: 400px;
+ border-radius: 10px;
+ background-size: cover;
+ background-position: center;
+ box-shadow: 0 10px 30px rgba(0,0,0,0.3);
+ transition: var(--transition);
+ }
+
+ .teaser-image:hover {
+ transform: scale(1.02);
+ }
+
+ .novel-image {
+ background-image: url('data:image/svg+xml,');
+ }
+
+ .game-image {
+ background-image: url('data:image/svg+xml,');
+ }
+
+ .tagline {
+ font-size: 1.5rem;
+ font-style: italic;
+ margin-bottom: 1rem;
+ color: var(--accent-color);
+ }
+
+ .feature-list {
+ display: flex;
+ gap: 1rem;
+ margin: 2rem 0;
+ }
+
+ .feature-list span {
+ padding: 0.5rem 1rem;
+ background: rgba(255,255,255,0.1);
+ border-radius: 20px;
+ font-size: 0.9rem;
+ }
+
+ .notify-btn {
+ padding: 1rem 2rem;
+ border: none;
+ border-radius: 25px;
+ background: var(--accent-color);
+ color: var(--text-dark);
+ cursor: pointer;
+ transition: var(--transition);
+ }
+
+ .notify-btn:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 5px 15px rgba(0,0,0,0.3);
+ }
+
+ .modal {
+ display: none;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0,0,0,0.8);
+ z-index: 1001;
+ }
+
+ .modal-content {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ background: var(--primary-color);
+ padding: 2rem;
+ border-radius: 10px;
+ color: var(--text-light);
+ width: 90%;
+ max-width: 400px;
+ }
+
+ .close-modal {
+ position: absolute;
+ right: 1rem;
+ top: 1rem;
+ cursor: pointer;
+ }
+
+ #notify-form {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+ margin-top: 1rem;
+ }
+
+ #notify-form input {
+ padding: 0.8rem;
+ border: none;
+ border-radius: 5px;
+ }
+
+ footer {
+ background: var(--primary-color);
+ color: var(--text-light);
+ padding: 2rem 0;
+ text-align: center;
+ }
+
+ .social-links {
+ margin-top: 1rem;
+ }
+
+ .social-links a {
+ color: var(--text-light);
+ text-decoration: none;
+ margin: 0 0.5rem;
+ font-size: 1.2rem;
+ }
+
+ @keyframes fadeInUp {
+ from {
+ opacity: 0;
+ transform: translateY(20px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+ }
+
+ @media (max-width: 768px) {
+ .toggle-nav {
+ display: block;
+ }
+
+ .nav-links {
+ display: none;
+ position: absolute;
+ top: 100%;
+ left: 0;
+ width: 100%;
+ background: var(--primary-color);
+ flex-direction: column;
+ padding: 1rem 0;
+ text-align: center;
+ }
+
+ .nav-links.active {
+ display: flex;
+ }
+
+ .teaser-content {
+ grid-template-columns: 1fr;
+ gap: 2rem;
+ }
+
+ .hero-content h1 {
+ font-size: 2.5rem;
+ }
+
+ .hero-content p {
+ font-size: 1.2rem;
+ }
+ }