Ella – All-In-One Guest Engagement Platform
:root {
–primary: #4F62ED;
–primary-hover: #4352D5;
–secondary: #299B7F;
–slate-950: #020617;
–slate-900: #0f172a;
–slate-800: #1e293b;
–slate-700: #334155;
–slate-600: #475569;
–slate-500: #64748b;
–slate-400: #94a3b8;
–slate-300: #cbd5e1;
–slate-200: #e2e8f0;
–slate-100: #f1f5f9;
–slate-50: #f8fafc;
–font-sans: system-ui, -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, “Helvetica Neue”, Arial, sans-serif;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: var(–font-sans); background-color: #ffffff; color: var(–slate-800); min-height: 100vh; display: flex; flex-direction: column; justify-content: space-between; }
/* Header & Navigation */
.site-header { background: rgba(255, 255, 255, 0.95); border-bottom: 1px solid var(–slate-100); position: sticky; top: 0; z-index: 20; backdrop-filter: blur(8px); }
.nav-container { max-width: 1280px; margin: 0 auto; padding: 1rem 1.5rem; display: flex; align-items: center; justify-content: space-between; }
.brand-logo { font-size: 1.75rem; font-weight: 900; color: var(–slate-950); text-decoration: none; letter-spacing: -0.05em; }
.nav-links { display: flex; align-items: center; gap: 2rem; }
.nav-btn { background: none; border: none; cursor: pointer; font-size: 0.875rem; font-weight: 500; color: var(–slate-600); font-family: inherit; transition: color 0.2s; }
.nav-btn:hover { color: var(–slate-950); }
.nav-btn.active { color: var(–primary); font-weight: 700; }
.cta-btn { background-color: var(–primary); color: #fff; border: none; padding: 0.625rem 1.25rem; border-radius: 0.75rem; font-weight: 600; font-size: 0.875rem; cursor: pointer; transition: background-color 0.2s, transform 0.1s; }
.cta-btn:hover { background-color: var(–primary-hover); transform: translateY(-1px); }
/* Page Views */
.page-view { display: none; }
.page-view.active { display: block; }
/* Hero & Page Content */
.hero-section { max-width: 800px; margin: 0 auto; padding: 5rem 1.5rem 4rem; text-align: center; }
.hero-title { font-size: 3.5rem; font-weight: 900; color: var(–slate-950); letter-spacing: -0.04em; line-height: 1.1; margin-bottom: 1.5rem; }
.hero-subtitle { font-size: 1.25rem; color: var(–slate-600); margin-bottom: 2rem; line-height: 1.5; }
.hero-actions { display: flex; justify-content: center; gap: 1rem; }
.secondary-btn { background: #fff; border: 1px solid var(–slate-300); color: var(–slate-800); padding: 0.75rem 1.5rem; border-radius: 0.75rem; font-weight: 600; cursor: pointer; }
.secondary-btn:hover { background: var(–slate-50); }
.grid-2 { max-width: 1280px; margin: 0 auto; padding: 3rem 1.5rem; display: grid; grid-template-columns: 1fr; gap: 3rem; align-items: center; }
@media (min-width: 768px) { .grid-2 { grid-template-columns: 1fr 1fr; } }
.img-box { border-radius: 1.5rem; overflow: hidden; border: 4px solid var(–slate-100); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.05); }
.img-box img { width: 100%; height: 380px; object-fit: cover; display: block; }
.section-title { font-size: 2.25rem; font-weight: 800; color: var(–slate-950); margin-bottom: 1rem; line-height: 1.2; }
.section-desc { font-size: 1rem; color: var(–slate-600); line-height: 1.6; margin-bottom: 1.5rem; }
/* Cards Grid */
.grid-3 { max-width: 1280px; margin: 0 auto; padding: 3rem 1.5rem; display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 2rem; }
.card { background: var(–slate-50); border: 1px solid var(–slate-200); border-radius: 1.5rem; padding: 2rem; transition: transform 0.2s, box-shadow 0.2s; }
.card:hover { transform: translateY(-3px); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.05); }
.card-icon { width: 3rem; height: 3rem; border-radius: 1rem; background: rgba(79, 98, 237, 0.1); color: var(–primary); display: flex; align-items: center; justify-content: center; font-size: 1.5rem; margin-bottom: 1rem; font-weight: bold; }
.card-title { font-size: 1.25rem; font-weight: 700; color: var(–slate-950); margin-bottom: 0.5rem; }
.card-text { font-size: 0.875rem; color: var(–slate-600); line-height: 1.5; }
/* Floating Inside Scoop Drawer */
.scoop-trigger { position: fixed; bottom: 1.5rem; right: 1.5rem; z-index: 30; background: var(–slate-950); color: #fff; border: 1px solid var(–slate-700); padding: 0.75rem 1.25rem; border-radius: 9999px; font-weight: 700; font-size: 0.875rem; cursor: pointer; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2); display: flex; align-items: center; gap: 0.5rem; }
.scoop-trigger:hover { background: var(–slate-800); }
.chat-drawer { position: fixed; top: 0; right: 0; bottom: 0; width: 100%; max-width: 480px; background: #fff; box-shadow: -10px 0 30px rgba(0,0,0,0.15); z-index: 40; transform: translateX(100%); transition: transform 0.3s ease-in-out; display: flex; flex-direction: column; border-left: 1px solid var(–slate-200); }
.chat-drawer.open { transform: translateX(0); }
.drawer-header { padding: 1.25rem 1.5rem; border-bottom: 1px solid var(–slate-100); display: flex; align-items: center; justify-content: space-between; }
.drawer-title-group { display: flex; align-items: center; gap: 0.75rem; }
.avatar { width: 2.25rem; height: 2.25rem; border-radius: 50%; background: var(–slate-950); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 900; }
.badge { background: #E8F8F1; color: var(–secondary); font-size: 0.65rem; font-weight: 700; padding: 0.15rem 0.4rem; border-radius: 0.25rem; border: 1px solid #CDECE3; }
.close-btn { background: none; border: none; font-size: 1.25rem; cursor: pointer; color: var(–slate-500); padding: 0.25rem 0.5rem; }
.chips-row { padding: 0.75rem 1.25rem; background: var(–slate-50); border-bottom: 1px solid var(–slate-100); display: flex; gap: 0.5rem; overflow-x: auto; }
.chip { white-space: nowrap; padding: 0.375rem 0.875rem; border-radius: 9999px; background: #fff; border: 1px solid var(–slate-200); font-size: 0.75rem; color: var(–slate-800); cursor: pointer; font-family: inherit; }
.chip:hover { background: var(–slate-100); }
.chat-messages { flex: 1; padding: 1.5rem; overflow-y: auto; display: flex; flex-direction: column; gap: 1rem; }
.chat-msg { display: flex; gap: 0.75rem; }
.chat-msg.user { justify-content: flex-end; }
.msg-bubble { max-width: 85%; padding: 0.875rem 1.125rem; border-radius: 1rem; font-size: 0.875rem; line-height: 1.5; }
.chat-msg.ella .msg-bubble { background: var(–slate-100); color: var(–slate-800); border-top-left-radius: 0; }
.chat-msg.user .msg-bubble { background: var(–primary); color: #fff; border-top-right-radius: 0; }
.chat-input-area { padding: 1rem 1.25rem; border-top: 1px solid var(–slate-100); display: flex; gap: 0.75rem; }
.chat-input { flex: 1; padding: 0.75rem 1rem; border-radius: 0.75rem; border: 1px solid var(–slate-200); background: var(–slate-50); font-size: 0.875rem; font-family: inherit; outline: none; }
.chat-input:focus { border-color: var(–primary); }
.send-btn { background: var(–primary); color: #fff; border: none; padding: 0.75rem 1.25rem; border-radius: 0.75rem; font-weight: 700; cursor: pointer; }
/* Footer */
footer { background: var(–slate-950); color: var(–slate-400); font-size: 0.75rem; padding: 2rem 1.5rem; margin-top: 4rem; text-align: center; }
elevate your guest experience with ella
empowering independent hotels with an all-in-one guest engagement platform
Learn more
Request a demo
a personalized experience
Now the moment your guest makes a reservation they can start planning their stay, engage with your staff, and seamlessly access all your services from the ella app. By digitizing your hotel’s service offerings you can optimize your response to guest requests, personalizing their experience, and capturing even more revenue per square foot.
Learn more →
Tailored Guest Engagement Features
Designed specifically to give boutique and independent hotel guests high-touch service.
✨
Inside Scoop AI
A context-aware neighborhood insider providing curated dining recommendations and hidden spots.
🔔
Digital Room Services
Enable guests to request towels, check-outs, or room cleaning directly from their phones.
📈
Revenue Optimization
Upsell premium experiences and local partner tours dynamically throughout the stay.
High-Touch Service, Digitized
Independent hotels excel at character and local warmth. Ella bridges the gap between traditional hospitality and modern guest expectations, providing an intuitive web interface with zero app downloads required.
Our Onboarding Process
Get your property running on Ella in less than 48 hours.
1. Connect Property
Integrate with your PMS or manage via web portal.
2. Customize AI
Input your hotel amenities and neighborhood secrets.
3. Place QR Codes
Guests scan in-room or receive pre-arrival SMS links.
Schedule a Demo
Submit Request
✨ Inside Scoop
🍽️ Dinner nearby
☕ Relaxing spots
🏛️ Sights & culture
e
I’m Ella , your digital concierge and local insider. Need dining ideas or quiet hidden spots? Ask me anytime!
Send
© 2026 Ella Hospitality Inc. All rights reserved.
function showPage(pageId) {
document.querySelectorAll(‘.page-view’).forEach(p => p.classList.remove(‘active’));
document.querySelectorAll(‘.nav-btn’).forEach(b => b.classList.remove(‘active’));
const targetPage = document.getElementById(‘page-‘ + pageId);
if(targetPage) targetPage.classList.add(‘active’);
const targetNav = document.getElementById(‘nav-‘ + pageId);
if(targetNav) targetNav.classList.add(‘active’);
window.scrollTo({ top: 0, behavior: ‘smooth’ });
}
function toggleDrawer() {
document.getElementById(‘chatDrawer’).classList.toggle(‘open’);
}
function appendMsg(text, sender) {
const chatBox = document.getElementById(‘chatMessages’);
const msgDiv = document.createElement(‘div’);
msgDiv.className = ‘chat-msg ‘ + sender;
if(sender === ‘ella’) {
msgDiv.innerHTML = ‘
e
‘ + text + ‘
‘;
} else {
msgDiv.innerHTML = ‘
‘ + text + ‘
‘;
}
chatBox.appendChild(msgDiv);
chatBox.scrollTop = chatBox.scrollHeight;
}
function sendQuickPrompt(promptText) {
appendMsg(promptText, ‘user’);
setTimeout(function() {
if(promptText.toLowerCase().includes(‘dinner’)) {
appendMsg(“I recommend
L’Artisan (6 min walk). Cozy, hidden courtyard with wood-fired small plates.”, ‘ella’);
} else if(promptText.toLowerCase().includes(‘relax’)) {
appendMsg(“Visit the
Botanical Reading Garden (2 blocks away) for a quiet garden nook.”, ‘ella’);
} else {
appendMsg(“Check out
St. Jude’s Cloister Courtyard (8 min walk) for 14th-century archways free from tour crowds.”, ‘ella’);
}
}, 500);
}
function sendUserMsg() {
const input = document.getElementById(‘chatInput’);
const text = input.value.trim();
if(!text) return;
input.value = ”;
sendQuickPrompt(text);
}