Arnedk commited on
Commit
a06d83d
·
verified ·
1 Parent(s): 0aca2f6

you were supposed to clone https://kvdkvisualstudio.wixsite.com/kvdk-visual-studio take another look

Browse files
Files changed (7) hide show
  1. README.md +7 -4
  2. components/footer.js +117 -0
  3. components/navbar.js +102 -0
  4. components/theme-toggle.js +50 -0
  5. index.html +104 -19
  6. script.js +33 -0
  7. style.css +199 -16
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Kvdk Visual Studio Clone
3
- emoji: 🏢
4
- colorFrom: gray
5
  colorTo: gray
 
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: KVDK Visual Studio Clone 🎨✨
3
+ colorFrom: red
 
4
  colorTo: gray
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/footer.js ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ footer {
7
+ background-color: black;
8
+ color: white;
9
+ padding: 3rem 0;
10
+ }
11
+
12
+ .footer-container {
13
+ max-width: 1200px;
14
+ margin: 0 auto;
15
+ padding: 0 2rem;
16
+ display: grid;
17
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
18
+ gap: 2rem;
19
+ }
20
+
21
+ .footer-logo {
22
+ font-size: 1.5rem;
23
+ font-weight: 700;
24
+ margin-bottom: 1rem;
25
+ }
26
+
27
+ .footer-links h3 {
28
+ margin-bottom: 1.5rem;
29
+ font-size: 1.2rem;
30
+ }
31
+
32
+ .footer-links ul {
33
+ list-style: none;
34
+ padding: 0;
35
+ }
36
+
37
+ .footer-links li {
38
+ margin-bottom: 0.8rem;
39
+ }
40
+
41
+ .footer-links a {
42
+ color: white;
43
+ text-decoration: none;
44
+ transition: color 0.3s ease;
45
+ }
46
+
47
+ .footer-links a:hover {
48
+ color: #ff0000;
49
+ }
50
+
51
+ .social-links {
52
+ display: flex;
53
+ gap: 1rem;
54
+ margin-top: 1rem;
55
+ }
56
+
57
+ .social-links a {
58
+ color: white;
59
+ font-size: 1.2rem;
60
+ transition: color 0.3s ease;
61
+ }
62
+
63
+ .social-links a:hover {
64
+ color: #ff0000;
65
+ }
66
+
67
+ .copyright {
68
+ text-align: center;
69
+ margin-top: 3rem;
70
+ padding-top: 1.5rem;
71
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
72
+ }
73
+ </style>
74
+
75
+ <footer>
76
+ <div class="footer-container">
77
+ <div class="footer-about">
78
+ <div class="footer-logo">KVDK VISUAL STUDIO</div>
79
+ <p>Creative visual solutions for your brand.</p>
80
+ <div class="social-links">
81
+ <a href="#"><i class="fab fa-instagram"></i></a>
82
+ <a href="#"><i class="fab fa-facebook-f"></i></a>
83
+ <a href="#"><i class="fab fa-twitter"></i></a>
84
+ <a href="#"><i class="fab fa-linkedin-in"></i></a>
85
+ </div>
86
+ </div>
87
+
88
+ <div class="footer-links">
89
+ <h3>Quick Links</h3>
90
+ <ul>
91
+ <li><a href="/">Home</a></li>
92
+ <li><a href="/about">About</a></li>
93
+ <li><a href="/portfolio">Portfolio</a></li>
94
+ <li><a href="/services">Services</a></li>
95
+ <li><a href="/contact">Contact</a></li>
96
+ </ul>
97
+ </div>
98
+
99
+ <div class="footer-links">
100
+ <h3>Contact</h3>
101
+ <ul>
102
+ <li><i class="fas fa-envelope"></i> info@kvdk.com</li>
103
+ <li><i class="fas fa-phone"></i> +1 (555) 123-4567</li>
104
+ <li><i class="fas fa-map-marker-alt"></i> 123 Studio St, City</li>
105
+ </ul>
106
+ </div>
107
+ </div>
108
+
109
+ <div class="copyright">
110
+ &copy; ${new Date().getFullYear()} KVDK Visual Studio. All rights reserved.
111
+ </div>
112
+ </footer>
113
+ `;
114
+ }
115
+ }
116
+
117
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ nav {
7
+ position: fixed;
8
+ width: 100%;
9
+ top: 0;
10
+ left: 0;
11
+ background-color: white;
12
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
13
+ z-index: 1000;
14
+ padding: 1rem 0;
15
+ transition: all 0.3s ease;
16
+ }
17
+
18
+ .nav-container {
19
+ display: flex;
20
+ justify-content: space-between;
21
+ align-items: center;
22
+ max-width: 1200px;
23
+ margin: 0 auto;
24
+ padding: 0 2rem;
25
+ }
26
+
27
+ .logo {
28
+ font-size: 1.5rem;
29
+ font-weight: 700;
30
+ text-decoration: none;
31
+ color: black;
32
+ }
33
+
34
+ .nav-links {
35
+ display: flex;
36
+ gap: 2rem;
37
+ }
38
+
39
+ .nav-link {
40
+ text-decoration: none;
41
+ color: black;
42
+ font-weight: 500;
43
+ position: relative;
44
+ padding: 0.5rem 0;
45
+ }
46
+
47
+ .nav-link:after {
48
+ content: '';
49
+ position: absolute;
50
+ width: 0;
51
+ height: 2px;
52
+ bottom: 0;
53
+ left: 0;
54
+ background-color: black;
55
+ transition: width 0.3s ease;
56
+ }
57
+
58
+ .nav-link:hover:after {
59
+ width: 100%;
60
+ }
61
+
62
+ .mobile-menu-btn {
63
+ display: none;
64
+ background: none;
65
+ border: none;
66
+ font-size: 1.5rem;
67
+ cursor: pointer;
68
+ }
69
+
70
+ @media (max-width: 768px) {
71
+ .nav-links {
72
+ display: none;
73
+ }
74
+
75
+ .mobile-menu-btn {
76
+ display: block;
77
+ }
78
+ }
79
+ </style>
80
+
81
+ <nav>
82
+ <div class="nav-container">
83
+ <a href="/" class="logo">KVDK</a>
84
+
85
+ <div class="nav-links">
86
+ <a href="/" class="nav-link">Home</a>
87
+ <a href="/about" class="nav-link">About</a>
88
+ <a href="/portfolio" class="nav-link">Portfolio</a>
89
+ <a href="/services" class="nav-link">Services</a>
90
+ <a href="/contact" class="nav-link">Contact</a>
91
+ </div>
92
+
93
+ <button class="mobile-menu-btn">
94
+ <i class="fas fa-bars"></i>
95
+ </button>
96
+ </div>
97
+ </nav>
98
+ `;
99
+ }
100
+ }
101
+
102
+ customElements.define('custom-navbar', CustomNavbar);
components/theme-toggle.js ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomThemeToggle extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .theme-toggle {
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ width: 40px;
11
+ height: 40px;
12
+ border-radius: 50%;
13
+ cursor: pointer;
14
+ transition: all 0.3s ease;
15
+ background: transparent;
16
+ border: none;
17
+ color: currentColor;
18
+ }
19
+ .theme-toggle:hover {
20
+ background: rgba(0,0,0,0.1);
21
+ }
22
+ .dark .theme-toggle:hover {
23
+ background: rgba(255,255,255,0.1);
24
+ }
25
+ </style>
26
+ <button class="theme-toggle focus:outline-none" aria-label="Toggle dark mode">
27
+ <i data-feather="sun" class="hidden dark:block"></i>
28
+ <i data-feather="moon" class="dark:hidden"></i>
29
+ </button>
30
+ `;
31
+
32
+ const button = this.shadowRoot.querySelector('.theme-toggle');
33
+ button.addEventListener('click', () => {
34
+ const html = document.documentElement;
35
+ if (html.classList.contains('dark')) {
36
+ html.classList.remove('dark');
37
+ localStorage.setItem('theme', 'light');
38
+ } else {
39
+ html.classList.add('dark');
40
+ localStorage.setItem('theme', 'dark');
41
+ }
42
+ feather.replace();
43
+ });
44
+
45
+ // Initialize feather icons
46
+ feather.replace();
47
+ }
48
+ }
49
+
50
+ customElements.define('custom-theme-toggle', CustomThemeToggle);
index.html CHANGED
@@ -1,19 +1,104 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>KVDK Visual Studio</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <script src="components/navbar.js"></script>
10
+ <script src="components/footer.js"></script>
11
+ </head>
12
+ <body>
13
+ <custom-navbar></custom-navbar>
14
+
15
+ <main>
16
+ <!-- Hero Section -->
17
+ <section class="hero">
18
+ <div class="hero-content">
19
+ <h1>KVDK VISUAL STUDIO</h1>
20
+ <p>Creative Visual Solutions</p>
21
+ </div>
22
+ </section>
23
+
24
+ <!-- About Section -->
25
+ <section class="about">
26
+ <div class="container">
27
+ <h2>ABOUT</h2>
28
+ <p>KVDK Visual Studio is a creative studio specializing in visual storytelling through photography, videography, and digital design.</p>
29
+ <a href="/about" class="btn">Learn More</a>
30
+ </div>
31
+ </section>
32
+
33
+ <!-- Portfolio Section -->
34
+ <section class="portfolio">
35
+ <div class="container">
36
+ <h2>PORTFOLIO</h2>
37
+ <div class="portfolio-grid">
38
+ <div class="portfolio-item">
39
+ <img src="http://static.photos/black/640x360/1" alt="Project 1">
40
+ <div class="portfolio-overlay">
41
+ <h3>Project Title</h3>
42
+ </div>
43
+ </div>
44
+ <div class="portfolio-item">
45
+ <img src="http://static.photos/white/640x360/2" alt="Project 2">
46
+ <div class="portfolio-overlay">
47
+ <h3>Project Title</h3>
48
+ </div>
49
+ </div>
50
+ <div class="portfolio-item">
51
+ <img src="http://static.photos/minimal/640x360/3" alt="Project 3">
52
+ <div class="portfolio-overlay">
53
+ <h3>Project Title</h3>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ <a href="/portfolio" class="btn">View All</a>
58
+ </div>
59
+ </section>
60
+
61
+ <!-- Services Section -->
62
+ <section class="services">
63
+ <div class="container">
64
+ <h2>SERVICES</h2>
65
+ <div class="services-grid">
66
+ <div class="service-card">
67
+ <i class="fas fa-camera"></i>
68
+ <h3>Photography</h3>
69
+ <p>Professional photography services for all your needs.</p>
70
+ </div>
71
+ <div class="service-card">
72
+ <i class="fas fa-video"></i>
73
+ <h3>Videography</h3>
74
+ <p>High-quality video production and editing.</p>
75
+ </div>
76
+ <div class="service-card">
77
+ <i class="fas fa-paint-brush"></i>
78
+ <h3>Design</h3>
79
+ <p>Creative design solutions for your brand.</p>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </section>
84
+
85
+ <!-- Contact Section -->
86
+ <section class="contact">
87
+ <div class="container">
88
+ <h2>CONTACT</h2>
89
+ <form>
90
+ <input type="text" placeholder="Name">
91
+ <input type="email" placeholder="Email">
92
+ <textarea placeholder="Message"></textarea>
93
+ <button type="submit" class="btn">Send Message</button>
94
+ </form>
95
+ </div>
96
+ </section>
97
+ </main>
98
+
99
+ <custom-footer></custom-footer>
100
+
101
+ <script src="script.js"></script>
102
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
103
+ </body>
104
+ </html>
script.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Mobile menu toggle
2
+ document.addEventListener('DOMContentLoaded', function() {
3
+ const mobileMenuBtn = document.querySelector('.mobile-menu-btn');
4
+ const navLinks = document.querySelector('.nav-links');
5
+
6
+ if (mobileMenuBtn) {
7
+ mobileMenuBtn.addEventListener('click', function() {
8
+ navLinks.style.display = navLinks.style.display === 'flex' ? 'none' : 'flex';
9
+ });
10
+ }
11
+
12
+ // Smooth scrolling for anchor links
13
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
14
+ anchor.addEventListener('click', function(e) {
15
+ e.preventDefault();
16
+ document.querySelector(this.getAttribute('href')).scrollIntoView({
17
+ behavior: 'smooth'
18
+ });
19
+ });
20
+ });
21
+
22
+ // Navbar scroll effect
23
+ window.addEventListener('scroll', function() {
24
+ const nav = document.querySelector('nav');
25
+ if (window.scrollY > 50) {
26
+ nav.style.background = 'rgba(255, 255, 255, 0.95)';
27
+ nav.style.boxShadow = '0 2px 10px rgba(0, 0, 0, 0.1)';
28
+ } else {
29
+ nav.style.background = 'white';
30
+ nav.style.boxShadow = 'none';
31
+ }
32
+ });
33
+ });
style.css CHANGED
@@ -1,28 +1,211 @@
 
 
 
 
 
 
 
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
  h1 {
7
- font-size: 16px;
8
- margin-top: 0;
 
 
 
 
 
 
 
9
  }
10
 
11
  p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
 
 
 
 
 
 
 
 
 
 
 
 
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
 
 
 
 
 
 
 
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Base Styles */
2
+ :root {
3
+ --primary-color: #000000;
4
+ --secondary-color: #ffffff;
5
+ --accent-color: #ff0000;
6
+ --text-color: #333333;
7
+ --light-gray: #f5f5f5;
8
+ }
9
+
10
  body {
11
+ font-family: 'Helvetica Neue', Arial, sans-serif;
12
+ margin: 0;
13
+ padding: 0;
14
+ color: var(--text-color);
15
+ line-height: 1.6;
16
+ }
17
+
18
+ .container {
19
+ width: 90%;
20
+ max-width: 1200px;
21
+ margin: 0 auto;
22
+ padding: 2rem 0;
23
+ }
24
+
25
+ /* Typography */
26
+ h1, h2, h3, h4, h5, h6 {
27
+ font-weight: 700;
28
+ margin: 0 0 1rem 0;
29
  }
30
 
31
  h1 {
32
+ font-size: 3rem;
33
+ text-transform: uppercase;
34
+ }
35
+
36
+ h2 {
37
+ font-size: 2rem;
38
+ text-transform: uppercase;
39
+ margin-bottom: 2rem;
40
+ text-align: center;
41
  }
42
 
43
  p {
44
+ margin-bottom: 1.5rem;
45
+ }
46
+
47
+ /* Buttons */
48
+ .btn {
49
+ display: inline-block;
50
+ padding: 0.8rem 2rem;
51
+ background-color: var(--primary-color);
52
+ color: var(--secondary-color);
53
+ text-decoration: none;
54
+ border: none;
55
+ cursor: pointer;
56
+ transition: all 0.3s ease;
57
+ text-transform: uppercase;
58
+ font-weight: 600;
59
+ letter-spacing: 1px;
60
  }
61
 
62
+ .btn:hover {
63
+ background-color: var(--accent-color);
64
+ color: var(--secondary-color);
 
 
 
65
  }
66
 
67
+ /* Hero Section */
68
+ .hero {
69
+ height: 100vh;
70
+ background: url('http://static.photos/black/1200x630/1') no-repeat center center/cover;
71
+ position: relative;
72
+ display: flex;
73
+ align-items: center;
74
+ justify-content: center;
75
+ color: var(--secondary-color);
76
+ text-align: center;
77
  }
78
+
79
+ .hero-content {
80
+ z-index: 2;
81
+ }
82
+
83
+ .hero::before {
84
+ content: '';
85
+ position: absolute;
86
+ top: 0;
87
+ left: 0;
88
+ width: 100%;
89
+ height: 100%;
90
+ background-color: rgba(0, 0, 0, 0.5);
91
+ }
92
+
93
+ /* About Section */
94
+ .about {
95
+ padding: 4rem 0;
96
+ text-align: center;
97
+ }
98
+
99
+ /* Portfolio Section */
100
+ .portfolio {
101
+ background-color: var(--light-gray);
102
+ padding: 4rem 0;
103
+ }
104
+
105
+ .portfolio-grid {
106
+ display: grid;
107
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
108
+ gap: 1.5rem;
109
+ margin-bottom: 2rem;
110
+ }
111
+
112
+ .portfolio-item {
113
+ position: relative;
114
+ overflow: hidden;
115
+ aspect-ratio: 16/9;
116
+ }
117
+
118
+ .portfolio-item img {
119
+ width: 100%;
120
+ height: 100%;
121
+ object-fit: cover;
122
+ transition: transform 0.3s ease;
123
+ }
124
+
125
+ .portfolio-overlay {
126
+ position: absolute;
127
+ bottom: 0;
128
+ left: 0;
129
+ right: 0;
130
+ background-color: rgba(0, 0, 0, 0.7);
131
+ color: white;
132
+ padding: 1rem;
133
+ transform: translateY(100%);
134
+ transition: transform 0.3s ease;
135
+ }
136
+
137
+ .portfolio-item:hover .portfolio-overlay {
138
+ transform: translateY(0);
139
+ }
140
+
141
+ .portfolio-item:hover img {
142
+ transform: scale(1.05);
143
+ }
144
+
145
+ /* Services Section */
146
+ .services {
147
+ padding: 4rem 0;
148
+ }
149
+
150
+ .services-grid {
151
+ display: grid;
152
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
153
+ gap: 2rem;
154
+ }
155
+
156
+ .service-card {
157
+ text-align: center;
158
+ padding: 2rem;
159
+ border: 1px solid #eee;
160
+ transition: all 0.3s ease;
161
+ }
162
+
163
+ .service-card:hover {
164
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
165
+ }
166
+
167
+ .service-card i {
168
+ font-size: 2.5rem;
169
+ margin-bottom: 1rem;
170
+ color: var(--accent-color);
171
+ }
172
+
173
+ /* Contact Section */
174
+ .contact {
175
+ background-color: var(--light-gray);
176
+ padding: 4rem 0;
177
+ }
178
+
179
+ .contact form {
180
+ max-width: 600px;
181
+ margin: 0 auto;
182
+ display: grid;
183
+ gap: 1rem;
184
+ }
185
+
186
+ .contact input,
187
+ .contact textarea {
188
+ width: 100%;
189
+ padding: 0.8rem;
190
+ border: 1px solid #ddd;
191
+ }
192
+
193
+ .contact textarea {
194
+ min-height: 150px;
195
+ }
196
+
197
+ /* Responsive */
198
+ @media (max-width: 768px) {
199
+ h1 {
200
+ font-size: 2rem;
201
+ }
202
+
203
+ h2 {
204
+ font-size: 1.5rem;
205
+ }
206
+
207
+ .portfolio-grid,
208
+ .services-grid {
209
+ grid-template-columns: 1fr;
210
+ }
211
+ }