PageSourceSearch

https://olakecafe.com/

html olakecafe.com collected 2026-09-27 12:45:44 UTC 21,663 bytes, 522 lines download raw bytes

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    
7    <title>Kelowna Cake Shop | O-Lake Cafe & Bistro | Mille Crepe Cakes</title>
8    <meta name="description" content="O-Lake Cafe & Bistro in Kelowna. Handcrafted mille crepe cakes, artisan coffee, high tea and private dining. The best cake shop in Kelowna for artisan desserts.">
9    <meta name="keywords" content="crepe cake, cake shop Kelowna, bakery, private dining, O-Lake, kelowna cake shop, high tea, bistro Kelowna">
10    <link rel="canonical" href="https://www.olakecafe.com/">
11
12    
12<script type="application/ld+json">
13    {
14      "@context": "https://schema.org",
15      "@type": "Bakery",
16      "name": "O-Lake Cafe & Bistro",
17      "image": "https://www.olakecafe.com/pic/top-front-pg.png",
18      "address": {
19        "@type": "PostalAddress",
20        "streetAddress": "375 Lawrence Ave",
21        "addressLocality": "Kelowna",
22        "addressRegion": "BC",
23        "postalCode": "V1Y 9W5",
24        "addressCountry": "CA"
25      },
26      "geo": {
27        "@type": "GeoCoordinates",
28        "latitude": 49.8863,
29        "longitude": -119.4966
30      },
31      "url": "https://www.olakecafe.com",
32      "telephone": "+12505026666",
33      "priceRange": "$$"
34    }
35    </script>
35
36
37    <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600&family=Inter:wght@300;400&display=swap" rel="stylesheet">
38    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
39
40    <style>
41        :root {
42            --bg-color: #f7f4fb;
43            --text-main: #2c2c2c;
44            --accent-soft: #e8e8e8;
45            --serif: 'Cormorant Garamond', serif;
46            --sans: 'Inter', sans-serif;
47        }
48
49        * { margin:0; padding:0; box-sizing:border-box; }
50
51        body {
52            font-family: var(--sans);
53            background: var(--bg-color);
54            color: var(--text-main);
55            line-height:1.6;
56            overflow-x:hidden;
57        }
58
59        /* HEADER */
60        header {
61            position: fixed;
62            top: 0;
63            width: 100%;
64            background: rgba(255, 255, 255, 0.95);
65            backdrop-filter: blur(8px);
66            display: flex;
67            justify-content: space-between;
68            align-items: center;
69            padding: 15px 20px;
70            z-index: 1000;
71            box-shadow: 0 2px 10px rgba(0,0,0,0.05);
72        }
73
74        .logo { 
75            font-family: var(--serif); 
76            font-size: 1.2rem; 
77            font-weight: 600; 
78            color: var(--text-main); 
79            text-decoration: none; 
80            z-index: 1001;
81        }
82
83        /* MOBILE MENU TOGGLE */
84        .menu-toggle {
85            display: none;
86            font-size: 1.5rem;
87            cursor: pointer;
88            color: var(--text-main);
89            z-index: 1001;
90        }
91
92        nav a { 
93            margin-left: 12px; 
94            text-transform: uppercase; 
95            font-size: 0.7rem; 
96            font-weight: 600; 
97            letter-spacing: 1px; 
98            text-decoration: none; 
99            color: inherit; 
100            transition: 0.3s;
101        }
102
103        nav a:hover { color: #888; }
104
105        @media (min-width: 769px) {
106            header { padding: 20px 50px; }
107            .logo { font-size: 1.6rem; }
108            nav a { font-size: 0.75rem; margin-left: 30px; }
109        }
110
111        @media (max-width: 768px) {
112            .menu-toggle { display: block; }
113            nav {
114                display: none;
115                position: absolute;
116                top: 0;
117                left: 0;
118                width: 100%;
119                height: 100vh;
120                background: white;
121                flex-direction: column;
122                justify-content: center;
123                align-items: center;
124                z-index: 1000;
125            }
126            nav.active { display: flex; }
127            nav a { margin: 20px 0; font-size: 1.2rem; margin-left: 0; }
128        }
129
130        /* HERO */
131        #hero {
132            width:100%;
133            min-height:80vh;
134            display:flex;
135            align-items:center;
136            justify-content:center;
137            text-align:center;
138            padding: 120px 20px 60px;
139            background: linear-gradient(rgba(255,255,255,0.35), rgba(255,255,255,0.35)), url("./pic/top-front-pg.png");
140            background-size:cover;
141            background-position:center;
142        }
143
144        .hero-content h1 { font-family:var(--serif); font-size: 2.5rem; line-height: 1.1; margin-bottom:15px; }
145        .btn { display:block; margin: 15px auto 0; width: 100%; max-width: 250px; padding:16px 35px; background:#2c2c2c; color:#fff; text-decoration:none; font-size:0.9rem; transition: 0.3s; border-radius: 4px; }
146        .btn:hover { background: #000; }
147        .btn-outline { background:transparent; border:1px solid #2c2c2c; color:#2c2c2c; }
148        .btn-outline:hover { background: #2c2c2c; color: #fff; }
149
150        /* CATEGORY MENU */
151        .category-menu {
152            display: flex;
153            justify-content: center;
154            gap: 20px; 
155            margin-bottom: 30px; 
156            border-bottom: 1px solid var(--accent-soft);
157            padding-bottom: 15px;
158            flex-wrap: wrap;
159        }
160
161        .category-btn {
162            background: none;
163            border: none;
164            font-family: var(--sans);
165            font-size: 0.75rem; 
166            font-weight: 400;
167            text-transform: uppercase;
168            letter-spacing: 2px;
169            cursor: pointer;
170            color: #888;
171            padding: 10px 5px;
172            position: relative;
173            transition: 0.3s;
174        }
175
176        .category-btn:hover { color: var(--text-main); }
177        .category-btn.active { color: var(--text-main); font-weight: 600; }
178        .category-btn.active::after {
179            content: '';
180            position: absolute;
181            bottom: -16px;
182            left: 0;
183            width: 100%;
184            height: 2px;
185            background: var(--text-main);
186        }
187
188        /* SLIDER CONTAINER */
189        .slider-wrapper {
190            position: relative;
191            max-width: 1550px; 
192            margin: 0 auto;
193            overflow: hidden;
194            padding: 20px 70px; 
195        }
196
197        .slider-container {
198            display: flex;
199            transition: transform 0.5s ease-in-out;
200            gap: 18px;
201        }
202
203        .slider-item {
204            flex: 0 0 calc(20% - 15px); 
205            aspect-ratio: 1 / 1;
206            overflow: hidden;
207            cursor: pointer;
208            border-radius: 6px;
209            background: #eee;
210            box-shadow: 0 4px 15px rgba(0,0,0,0.05);
211        }
212
213        .slider-item img {
214            width: 100%;
215            height: 100%;
216            object-fit: cover;
217            display: block;
218            transition: transform 0.4s ease;
219        }
220
221        .slider-item:hover img { transform: scale(1.08); }
222
223        .slider-nav {
224            position: absolute;
225            top: 50%;
226            left: 0;
227            width: 100%;
228            display: flex;
229            justify-content: space-between;
230            transform: translateY(-50%);
231            pointer-events: none;
232            z-index: 10;
233        }
234
235        .nav-btn {
236            width: 45px;
237            height: 45px;
238            background: #fff;
239            border: 1px solid #eee;
240            border-radius: 50%;
241            cursor: pointer;
242            pointer-events: auto;
243            display: flex;
244            align-items: center;
245            justify-content: center;
246            box-shadow: 0 4px 10px rgba(0,0,0,0.1);
247            transition: 0.3s;
248            margin: 0 15px;
249        }
250
251        .nav-btn:hover { 
252            background: var(--text-main); 
253            color: #fff;
254            transform: scale(1.1);
255        }
256
257        /* LIGHTBOX */
258        #lightbox { display: none; position: fixed; z-index: 2000; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.92); justify-content: center; align-items: center; cursor: zoom-out; }
259        #lightbox img { max-width: 90%; max-height: 85vh; border-radius: 4px; animation: zoomIn 0.3s ease; }
260        @keyframes zoomIn { from { transform: scale(0.9); opacity: 0; } to { transform: scale(1); opacity: 1; } }
261        .close-btn { position: absolute; top: 20px; right: 30px; color: white; font-size: 40px; cursor: pointer; }
262
263        /* SECTIONS */
264        section { padding: 80px 0; }
265        .container-85 { width: 95%; max-width: 1700px; margin: 0 auto; }
266        .container { max-width:1100px; margin:0 auto; padding: 0 20px; }
267        .section-title { text-align:center; font-family:var(--serif); font-size: 2.2rem; margin-bottom: 30px; }
268
269        /* CONTACT */
270        #contact { background: #f4fbfe; }
271        .contact-container { display:flex; flex-direction: row; gap:60px; align-items: flex-start; }
272        .contact-info { flex: 1; }
273        .contact-form { flex: 1.5; }
274        .info-group { margin-bottom: 30px; }
275        .info-group h4 { font-family: var(--serif); font-size: 1.4rem; margin-bottom: 12px; border-bottom: 1px solid #ddd; display: inline-block; }
276        .hours-list { list-style: none; margin-top: 5px; }
277        .hours-list li { display: flex; justify-content: space-between; max-width: 300px; margin-bottom: 8px; font-size: 1rem; }
278        .social-links { margin-top: 25px; display: flex; gap: 25px; }
279        .social-links a { font-size: 1.8rem; color: var(--text-main); transition: 0.3s; }
280        .form-row { display: flex; gap: 15px; margin-bottom: 5px; }
281        input, textarea { width:100%; padding:16px; margin-bottom:15px; border:1px solid #e8e8e8; border-radius: 4px; font-family: var(--sans); }
282        .submit-btn { width:100%; padding:16px; background:#2c2c2c; color:#fff; border:none; border-radius: 4px; cursor:pointer; font-weight: 600; transition: 0.3s; }
283        .submit-btn:hover { background: #000; }
284        #result { display: none; margin-top: 20px; padding: 15px; background: #e3f3f9; border-radius: 4px; text-align: center; }
285
286        footer { text-align:center; padding:60px 20px; border-top:1px solid #e8e8e8; }
287        .footer-logo { font-family:var(--serif); font-size:1.8rem; margin-bottom:10px; }
288
289        @media (max-width: 992px) {
290            .contact-container { flex-direction: column; gap: 40px; }
291            .form-row { flex-direction: column; gap: 0; }
292        }
293
294        @media (max-width: 768px) {
295            .slider-wrapper { padding: 0 40px; }
296            .slider-item { flex: 0 0 calc(50% - 10px); }
297            .category-menu { gap: 10px; }
298        }
299    </style>
300</head>
301
302<body>
303
304<header>
305    <a href="index.html" class="logo">O-Lake Cafe & Bistro</a>
306    
307    <div class="menu-toggle" id="mobile-menu-btn">
308        <i class="fas fa-bars"></i>
309    </div>
310
311    <nav id="nav-menu">
312        <a href="story.html">Our Story</a>        
313        <a href="#gallery">Gallery</a>
314        <a href="private.html">Reservation</a>
315	<a href="https://www.clover.com/online-ordering/olake-cafebistro-kelowna/" target="_blank">Online Ordering</a>
316        <a href="https://o-lake-cafe-bistro.myshopify.com/" target="_blank">Online Shop</a>
317        <a href="#contact">Contact</a>
318    </nav>
319</header>
320
321<main>
322    <section id="hero">
323        <div class="hero-content">
324            <h1>Elegant High Tea & Handcrafted Cakes at O-Lake Kelowna</h1>
325            <p>Indulge in handcrafted desserts, fine teas, and unforgettable moments.</p>
326            <div class="hero-btns">
327                <a href="https://shop.olakecafe.com" class="btn" target="_blank">Online Shop</a>
328                <a href="private.html" class="btn btn-outline">Reservation</a>
329            </div>
330        </div>
331    </section>
332
333    <section id="gallery" style="background: #e2eff7;">
334        <div class="container-85">
335            <h2 class="section-title">Our Kelowna Cake Collection</h2>
336            
337            <div class="category-menu">
338                <button class="category-btn active" onclick="filterGallery('Special', this)">Special</button>
339                <button class="category-btn" onclick="filterGallery('Festival', this)">Festival</button>
340                <button class="category-btn" onclick="filterGallery('Fruit', this)">Fruit</button>
341                <button class="category-btn" onclick="filterGallery('Chinese', this)">Chinese</button>
342            </div>
343
344            <div class="slider-wrapper">
345                <div class="slider-container" id="gallery-container"></div>
346                <div class="slider-nav">
347                    <button class="nav-btn" onclick="moveSlider(-1)"><i class="fas fa-chevron-left"></i></button>
348                    <button class="nav-btn" onclick="moveSlider(1)"><i class="fas fa-chevron-right"></i></button>
349                </div>
350            </div>
351        </div>
352    </section>
353
354    <section id="contact">
355        <div class="container">
356            <h2 class="section-title">Visit Us in Kelowna</h2>
357            <div class="contact-container">
358                <div class="contact-info">
359                    <div class="info-group">
360                        <h4>Location</h4>
361                        <address style="font-style: normal; margin-top: 10px;">
362                            <p>375 Lawrence Ave, Kelowna, BC V1Y 9W5</p>
363                            <p><strong>Tel:</strong> <a href="tel:+12505026666" style="text-decoration: none; color: inherit;">+1 250-502-6666</a></p>
364                        </address>
365                    </div>
366
367                    <div class="info-group">
368                        <h4>Opening Hours</h4>
369                        <ul class="hours-list">
370                            <li><span>Mon - Sat:</span> <span>10:00 AM – 5:00 PM</span></li>
371                            <li><span>Sun:</span> <span>11:00 AM – 4:00 PM</span></li>
372                        </ul>
373                    </div>
374
375                    <div class="social-links">
376                        <a href="https://www.facebook.com/p/O-Lake-Cafe-and-Bistro-61550093820668/" target="_blank"><i class="fab fa-facebook-f"></i></a>
377                        <a href="https://www.instagram.com/o_lakecafe/" target="_blank"><i class="fab fa-instagram"></i></a>
378                    </div>
379                </div>
380
381                <div class="contact-form">
382                    <form id="contact-form">
383                        <input type="hidden" name="access_key" value="2026487c-20ed-4622-9523-ab0aff874ca5">
384                        <input type="hidden" name="from_name" value="O-lake inquiry">
385                        <input type="hidden" name="subject" value="General inquiry - O-Lake Bistro">
386                        <div class="form-row">
387                            <input type="text" name="name" placeholder="Your Name" required>
388                            <input type="email" name="email" placeholder="Your Email" required>
389                        </div>
390                        <textarea name="message" rows="5" placeholder="Message" required></textarea>
391                        <button type="submit" class="submit-btn">Send Message</button>
392                    </form>
393                    <div id="result"></div>
394                </div>
395            </div>
396        </div>
397    </section>
398</main>
399
400<div id="lightbox" onclick="closeLightbox()" aria-hidden="true">
401    <span class="close-btn">&times;</span>
402    <img id="lightbox-img" src="" alt="Enlarged Cake View">
403</div>
404
405<footer>
406    <div class="footer-logo">O-Lake Cafe & Bistro</div>
407    <p>© 2026 All rights reserved.</p>
408</footer>
409
410<script>
411    // --- NAVIGATION LOGIC ---
412    const menuBtn = document.getElementById('mobile-menu-btn');
413    const navMenu = document.getElementById('nav-menu');
414
415    menuBtn.addEventListener('click', () => {
416        navMenu.classList.toggle('active');
417        const icon = menuBtn.querySelector('i');
418        icon.classList.toggle('fa-bars');
419        icon.classList.toggle('fa-times');
420    });
421
422    document.querySelectorAll('#nav-menu a').forEach(link => {
423        link.addEventListener('click', () => {
424            navMenu.classList.remove('active');
425            const icon = menuBtn.querySelector('i');
426            icon.classList.add('fa-bars');
427            icon.classList.remove('fa-times');
428        });
429    });
430
431    // --- GALLERY LOGIC ---
432    let currentSlide = 0;
433    const cakeData = {
434        "Special": ["./cakepic/Special/cake1.png", "./cakepic/Special/cake2.png", "./cakepic/Special/cake3.png", "./cakepic/Special/cake4.png", "./cakepic/Special/cake5.png", "./cakepic/Special/cake6.png", "./cakepic/Special/cake7.png", "./cakepic/Special/cake8.png", "./cakepic/Special/cake9.png", "./cakepic/Special/cake10.png", "./cakepic/Special/cake11.png", "./cakepic/Special/cake12.png", "./cakepic/Special/cake13.png", "./cakepic/Special/cake14.png", "./cakepic/Special/cake15.png", "./cakepic/Special/cake16.png"],
435        "Festival": ["./cakepic/Festival/cake1.png", "./cakepic/Festival/cake2.png", "./cakepic/Festival/cake3.png", "./cakepic/Festival/cake4.png", "./cakepic/Festival/cake5.png", "./cakepic/Festival/cake6.png"],
436        "Fruit": ["./cakepic/Fruit/cake1.png", "./cakepic/Fruit/cake2.png", "./cakepic/Fruit/cake3.png", "./cakepic/Fruit/cake4.png"],
437        "Chinese": ["./cakepic/Chinese/cake1.png", "./cakepic/Chinese/cake2.png", "./cakepic/Chinese/cake3.png"]
438    };
439
440    const galleryContainer = document.getElementById('gallery-container');
441
442    function filterGallery(category, btnElement) {
443        document.querySelectorAll('.category-btn').forEach(btn => btn.classList.remove('active'));
444        if (btnElement) btnElement.classList.add('active');
445        
446        galleryContainer.innerHTML = '';
447        currentSlide = 0;
448        galleryContainer.style.transform = `translateX(0)`;
449
450        const photos = cakeData[category] || [];
451        photos.forEach(path => {
452            const item = document.createElement('div');
453            item.className = 'slider-item';
454            item.onclick = function() { openLightbox(path); };
455            const img = document.createElement('img');
456            img.src = path;
457            // Added Kelowna to image alt text for better SEO context
458            img.alt = "Kelowna " + category + " Cake";
459            item.appendChild(img);
460            galleryContainer.appendChild(item);
461        });
462    }
463
464    function moveSlider(direction) {
465        const items = document.querySelectorAll('.slider-item');
466        if (items.length === 0) return;
467        const itemsToShow = window.innerWidth > 768 ? 5 : 2;
468        const maxSlides = Math.max(0, items.length - itemsToShow);
469        
470        currentSlide += direction;
471        if (currentSlide < 0) currentSlide = 0;
472        if (currentSlide > maxSlides) currentSlide = maxSlides;
473        
474        const gap = 18;
475        const itemWidth = items[0].offsetWidth;
476        galleryContainer.style.transform = `translateX(-${currentSlide * (itemWidth + gap)}px)`;
477    }
478
479    window.onload = () => filterGallery('Special', document.querySelector('.category-btn'));
480
481    const lightbox = document.getElementById('lightbox');
482    const lightboxImg = document.getElementById('lightbox-img');
483    function openLightbox(src) { lightboxImg.src = src; lightbox.style.display = 'flex'; document.body.style.overflow = 'hidden'; }
484    function closeLightbox() { lightbox.style.display = 'none'; document.body.style.overflow = 'auto'; }
485
486    // FORM SUBMISSION
487    const form = document.getElementById('contact-form');
488    const result = document.getElementById('result');
489
490    form.addEventListener('submit', function(e) {
491        e.preventDefault();
492        const formData = new FormData(form);
493        const object = Object.fromEntries(formData);
494        const json = JSON.stringify(object);
495
496        result.innerHTML = "Sending...";
497        result.style.display = "block";
498
499        fetch('https://api.web3forms.com/submit', {
500                method: 'POST',
501                headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
502                body: json
503            })
504            .then(async (response) => {
505                let json = await response.json();
506                if (response.status == 200) {
507                    result.innerHTML = "Message sent successfully!";
508                    form.reset();
509                } else {
510                    result.innerHTML = json.message || "Something went wrong.";
511                }
512            })
513            .catch(error =>
513 { result.innerHTML = "Error connecting to service."; })
514            .then(function() {
515                setTimeout(() => { result.style.display = "none"; }, 5000);
516            });
517    });
518</script>
518
519
520<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"4b19e64b548b44b287498a3ddfd66d00","r":1,"spa":2}' crossorigin="anonymous"></script>
520
521</body>
522</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.