Spaces:
Running on Zero
Running on Zero
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> | |
| <title>{{SHOP_NAME}}</title> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Raleway:wght@300;400;500;600&display=swap" rel="stylesheet"> | |
| <style> | |
| :root { | |
| --primary: #C9A84C; | |
| --primary-dim: rgba(201,168,76,0.15); | |
| --secondary: #E8D5A3; | |
| --accent: #A67C52; | |
| --bg: #0F0F0F; | |
| --bg-card: #1A1A1A; | |
| --bg-elevated: #222222; | |
| --text: #F0ECE3; | |
| --text-light: #B8B0A2; | |
| --text-muted: #6B6560; | |
| --border: rgba(201,168,76,0.1); | |
| --card-shadow: 0 4px 24px rgba(0,0,0,0.3); | |
| --card-radius: 16px; | |
| --nav-height: 68px; | |
| } | |
| * { margin: 0; padding: 0; box-sizing: border-box; } | |
| body { | |
| font-family: 'Raleway', sans-serif; | |
| background: var(--bg); | |
| color: var(--text); | |
| max-width: 480px; | |
| margin: 0 auto; | |
| min-height: 100vh; | |
| padding-bottom: calc(var(--nav-height) + 16px); | |
| -webkit-font-smoothing: antialiased; | |
| overflow-x: hidden; | |
| } | |
| .page { display: none; animation: fadeUp 0.4s ease; } | |
| .page.active { display: block; } | |
| @keyframes fadeUp { | |
| from { opacity: 0; transform: translateY(12px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| /* Grain texture overlay */ | |
| body::after { | |
| content: ''; | |
| position: fixed; | |
| top: 0; left: 0; right: 0; bottom: 0; | |
| background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E"); | |
| pointer-events: none; | |
| z-index: 9999; | |
| } | |
| /* ====== BOTTOM NAV ====== */ | |
| .bottom-nav { | |
| position: fixed; | |
| bottom: 0; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| width: 100%; | |
| max-width: 480px; | |
| height: var(--nav-height); | |
| background: rgba(15,15,15,0.92); | |
| backdrop-filter: blur(16px); | |
| border-top: 1px solid var(--border); | |
| display: flex; | |
| justify-content: space-around; | |
| align-items: center; | |
| z-index: 100; | |
| padding-bottom: env(safe-area-inset-bottom, 0); | |
| } | |
| .nav-item { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 3px; | |
| cursor: pointer; | |
| padding: 8px 20px; | |
| border-radius: 14px; | |
| transition: all 0.25s ease; | |
| -webkit-tap-highlight-color: transparent; | |
| user-select: none; | |
| } | |
| .nav-item svg { | |
| width: 24px; height: 24px; | |
| stroke: var(--text-muted); | |
| fill: none; stroke-width: 1.5; | |
| transition: all 0.25s ease; | |
| } | |
| .nav-item span { | |
| font-size: 10px; font-weight: 600; | |
| color: var(--text-muted); | |
| letter-spacing: 0.1em; | |
| text-transform: uppercase; | |
| transition: color 0.25s ease; | |
| } | |
| .nav-item.active svg { stroke: var(--primary); } | |
| .nav-item.active span { color: var(--primary); } | |
| /* ====== HOME ====== */ | |
| .hero { | |
| position: relative; | |
| width: 100%; | |
| height: 400px; | |
| background: linear-gradient(175deg, #1a1a1a 0%, #0a0a0a 100%); | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: flex-end; | |
| padding: 36px 28px; | |
| overflow: hidden; | |
| } | |
| .hero::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; left: 0; right: 0; bottom: 0; | |
| background: | |
| radial-gradient(circle at 30% 20%, rgba(201,168,76,0.06) 0%, transparent 50%), | |
| radial-gradient(circle at 80% 70%, rgba(166,124,82,0.04) 0%, transparent 40%); | |
| } | |
| .hero-line { | |
| width: 40px; | |
| height: 1.5px; | |
| background: var(--primary); | |
| margin-bottom: 20px; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .hero h1 { | |
| font-family: 'Cinzel', serif; | |
| font-size: 38px; | |
| font-weight: 700; | |
| color: var(--text); | |
| line-height: 1.1; | |
| letter-spacing: 0.02em; | |
| margin-bottom: 12px; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .hero-tagline { | |
| font-size: 14px; | |
| color: var(--text-light); | |
| line-height: 1.6; | |
| font-weight: 300; | |
| letter-spacing: 0.04em; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .section-title { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| padding: 0 28px; | |
| margin: 36px 0 18px; | |
| } | |
| .section-title h2 { | |
| font-family: 'Cinzel', serif; | |
| font-size: 20px; | |
| font-weight: 600; | |
| color: var(--text); | |
| letter-spacing: 0.06em; | |
| } | |
| .section-title .line { | |
| flex: 1; | |
| height: 1px; | |
| background: linear-gradient(90deg, var(--border), transparent); | |
| } | |
| /* Promo */ | |
| .promo-banner { | |
| margin: 0 24px; | |
| border-radius: var(--card-radius); | |
| overflow: hidden; | |
| box-shadow: var(--card-shadow); | |
| border: 1px solid var(--border); | |
| } | |
| .promo-banner img { | |
| width: 100%; | |
| height: auto; | |
| display: block; | |
| } | |
| .promo-banner .promo-placeholder { | |
| width: 100%; | |
| height: 200px; | |
| background: linear-gradient(135deg, #1a1a1a 0%, #2a2520 50%, #1a1510 100%); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| flex-direction: column; | |
| gap: 8px; | |
| border: 1px solid var(--border); | |
| } | |
| .promo-placeholder span { | |
| color: var(--primary); | |
| font-family: 'Cinzel', serif; | |
| font-size: 22px; | |
| font-weight: 600; | |
| letter-spacing: 0.04em; | |
| } | |
| .promo-placeholder small { | |
| color: var(--text-muted); | |
| font-size: 12px; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| } | |
| /* About */ | |
| .about-card { | |
| margin: 0 24px; | |
| padding: 28px; | |
| background: var(--bg-card); | |
| border-radius: var(--card-radius); | |
| box-shadow: var(--card-shadow); | |
| border: 1px solid var(--border); | |
| } | |
| .about-card p { | |
| font-size: 14px; | |
| line-height: 1.8; | |
| color: var(--text-light); | |
| font-weight: 300; | |
| letter-spacing: 0.02em; | |
| } | |
| /* Info pills */ | |
| .info-pills { | |
| display: flex; | |
| gap: 10px; | |
| padding: 0 24px; | |
| margin: 24px 0; | |
| flex-wrap: wrap; | |
| } | |
| .pill { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 10px 16px; | |
| background: var(--bg-card); | |
| border-radius: 100px; | |
| font-size: 12px; | |
| font-weight: 500; | |
| color: var(--text-light); | |
| border: 1px solid var(--border); | |
| letter-spacing: 0.02em; | |
| white-space: nowrap; | |
| } | |
| .pill svg { | |
| width: 15px; height: 15px; | |
| stroke: var(--primary); | |
| fill: none; stroke-width: 1.8; | |
| flex-shrink: 0; | |
| } | |
| /* Contact */ | |
| .contact-section { | |
| margin: 36px 24px 16px; | |
| padding: 24px; | |
| background: var(--bg-card); | |
| border-radius: var(--card-radius); | |
| box-shadow: var(--card-shadow); | |
| border: 1px solid var(--border); | |
| } | |
| .contact-item { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 14px; | |
| padding: 14px 0; | |
| border-bottom: 1px solid var(--border); | |
| text-decoration: none; | |
| color: inherit; | |
| transition: opacity 0.2s; | |
| } | |
| .contact-item:last-child { border-bottom: none; } | |
| .contact-item:active { opacity: 0.7; } | |
| .contact-icon { | |
| width: 40px; height: 40px; | |
| border-radius: 10px; | |
| background: var(--primary-dim); | |
| display: flex; align-items: center; justify-content: center; | |
| flex-shrink: 0; | |
| } | |
| .contact-icon svg { | |
| width: 18px; height: 18px; | |
| stroke: var(--primary); | |
| fill: none; stroke-width: 1.5; | |
| } | |
| .contact-text .label { | |
| font-size: 10px; | |
| text-transform: uppercase; | |
| letter-spacing: 0.12em; | |
| color: var(--text-muted); | |
| font-weight: 600; | |
| margin-bottom: 4px; | |
| } | |
| .contact-text .value { | |
| font-size: 14px; | |
| color: var(--text); | |
| font-weight: 400; | |
| } | |
| /* ====== MENU PAGE ====== */ | |
| .menu-header { | |
| padding: 28px 28px 20px; | |
| background: var(--bg); | |
| border-bottom: 1px solid var(--border); | |
| position: sticky; top: 0; z-index: 50; | |
| } | |
| .menu-header h1 { | |
| font-family: 'Cinzel', serif; | |
| font-size: 28px; | |
| font-weight: 600; | |
| color: var(--text); | |
| letter-spacing: 0.04em; | |
| margin-bottom: 16px; | |
| } | |
| .cat-tabs { | |
| display: flex; gap: 8px; | |
| overflow-x: auto; scrollbar-width: none; | |
| -webkit-overflow-scrolling: touch; padding-bottom: 2px; | |
| } | |
| .cat-tabs::-webkit-scrollbar { display: none; } | |
| .cat-tab { | |
| padding: 8px 18px; | |
| border-radius: 100px; | |
| font-size: 12px; font-weight: 500; | |
| color: var(--text-muted); | |
| background: var(--bg-card); | |
| border: 1px solid var(--border); | |
| cursor: pointer; white-space: nowrap; | |
| transition: all 0.25s ease; | |
| letter-spacing: 0.04em; | |
| text-transform: uppercase; | |
| -webkit-tap-highlight-color: transparent; | |
| } | |
| .cat-tab.active { | |
| background: var(--primary); | |
| color: var(--bg); | |
| border-color: var(--primary); | |
| font-weight: 600; | |
| } | |
| .menu-list { padding: 16px 24px; } | |
| .menu-category { margin-bottom: 28px; } | |
| .menu-category-title { | |
| font-family: 'Cinzel', serif; | |
| font-size: 18px; | |
| font-weight: 600; | |
| color: var(--primary); | |
| margin-bottom: 14px; | |
| letter-spacing: 0.06em; | |
| } | |
| .menu-item { | |
| display: flex; | |
| gap: 14px; | |
| padding: 14px; | |
| background: var(--bg-card); | |
| border-radius: 14px; | |
| margin-bottom: 10px; | |
| border: 1px solid var(--border); | |
| transition: transform 0.2s ease; | |
| } | |
| .menu-item:active { transform: scale(0.985); } | |
| .menu-item-img { | |
| width: 76px; height: 76px; | |
| border-radius: 12px; | |
| object-fit: cover; | |
| flex-shrink: 0; | |
| background: var(--bg-elevated); | |
| } | |
| .menu-item-info { | |
| flex: 1; | |
| display: flex; flex-direction: column; justify-content: center; | |
| min-width: 0; | |
| } | |
| .menu-item-name { | |
| font-size: 14px; font-weight: 600; | |
| color: var(--text); margin-bottom: 4px; | |
| letter-spacing: 0.02em; | |
| } | |
| .menu-item-desc { | |
| font-size: 12px; color: var(--text-muted); | |
| line-height: 1.4; margin-bottom: 6px; | |
| display: -webkit-box; | |
| -webkit-line-clamp: 2; | |
| -webkit-box-orient: vertical; | |
| overflow: hidden; | |
| font-weight: 300; | |
| } | |
| .menu-item-price { | |
| font-size: 16px; font-weight: 600; | |
| color: var(--primary); | |
| font-family: 'Cinzel', serif; | |
| letter-spacing: 0.02em; | |
| } | |
| .spacer-lg { height: 28px; } | |
| </style> | |
| </head> | |
| <body> | |
| <!-- HOME PAGE --> | |
| <div class="page active" id="page-home"> | |
| <!-- {{HOME_BLOCKS}} --> | |
| </div> | |
| <!-- MENU PAGE --> | |
| <div class="page" id="page-menu"> | |
| <div class="menu-header"> | |
| <h1>Menu</h1> | |
| <div class="cat-tabs" id="cat-tabs"> | |
| <div class="cat-tab active" data-cat="all">All</div> | |
| <!-- {{CATEGORY_TABS}} --> | |
| </div> | |
| </div> | |
| <div class="menu-list" id="menu-list"> | |
| <!-- {{MENU_ITEMS}} --> | |
| </div> | |
| </div> | |
| <!-- BOTTOM NAV --> | |
| <nav class="bottom-nav"> | |
| <div class="nav-item active" data-page="home" onclick="switchPage('home')"> | |
| <svg viewBox="0 0 24 24"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg> | |
| <span>Home</span> | |
| </div> | |
| <div class="nav-item" data-page="menu" onclick="switchPage('menu')"> | |
| <svg viewBox="0 0 24 24"><rect x="3" y="3" width="18" height="18" rx="2"/><line x1="3" y1="9" x2="21" y2="9"/><line x1="3" y1="15" x2="21" y2="15"/><line x1="9" y1="3" x2="9" y2="21"/></svg> | |
| <span>Menu</span> | |
| </div> | |
| </nav> | |
| <script> | |
| function switchPage(page) { | |
| document.querySelectorAll('.page').forEach(p => p.classList.remove('active')); | |
| document.getElementById('page-' + page).classList.add('active'); | |
| document.querySelectorAll('.nav-item').forEach(n => n.classList.remove('active')); | |
| document.querySelector('.nav-item[data-page="' + page + '"]').classList.add('active'); | |
| window.scrollTo({ top: 0, behavior: 'smooth' }); | |
| } | |
| document.addEventListener('click', function(e) { | |
| if (e.target.classList.contains('cat-tab')) { | |
| document.querySelectorAll('.cat-tab').forEach(t => t.classList.remove('active')); | |
| e.target.classList.add('active'); | |
| var cat = e.target.getAttribute('data-cat'); | |
| document.querySelectorAll('.menu-category').forEach(function(section) { | |
| section.style.display = (cat === 'all' || section.getAttribute('data-cat') === cat) ? 'block' : 'none'; | |
| }); | |
| } | |
| }); | |
| </script> | |
| </body> | |
| </html> | |