Compare commits
48 Commits
a24d094bf1
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| cc5667bf7b | |||
| 358e480ea6 | |||
| ea449d0769 | |||
| 8666714818 | |||
| 9891ba5d86 | |||
| 7adbcdcbdc | |||
| 9a6a435bea | |||
| b2d2d1dbff | |||
| adc41f6e08 | |||
| a4b1c31bbd | |||
| 5acea62050 | |||
| 38e523f624 | |||
| 4f81a3a59b | |||
| 59413f5b36 | |||
| 60f31286d7 | |||
| 1b0ebe3b7e | |||
| dc75fa6655 | |||
| e1180c9268 | |||
| d65913e63e | |||
| e839ea396d | |||
| acea41cdfc | |||
| 398ba7ba26 | |||
| 706b8e13a8 | |||
| 60f45ebfce | |||
| 88e9cbd9f5 | |||
| b0cb28a79b | |||
| 3639669eb1 | |||
| 56cbe820a5 | |||
| 52a9817722 | |||
| 9dc16202d1 | |||
| 45bfc154d7 | |||
| 170d351783 | |||
| d2ecfbad3f | |||
| e97e682fdd | |||
| 8bb1e73352 | |||
| b643dc914e | |||
| 2cc933d7a0 | |||
| b84b0d4bf5 | |||
| 129a02ebb2 | |||
| 7180fd190d | |||
| 7871bacb8a | |||
| ee8d071835 | |||
| 7e93e0f099 | |||
| 634dc77983 | |||
| 3a623278fd | |||
| c9182795aa | |||
| a392451cc6 | |||
| feaa5e6f62 |
@@ -1,68 +1,20 @@
|
|||||||
{
|
{
|
||||||
"posts": [
|
"posts": [
|
||||||
{
|
{
|
||||||
"id": "news-platform-update",
|
"id": "community-vs-enterprise-cost",
|
||||||
|
"date": "2026-06-27",
|
||||||
|
"area": "guide",
|
||||||
|
"headline": "Odoo Community vs. Enterprise: The Real Cost Breakdown (2026)",
|
||||||
|
"teaser": "A transparent cost comparison — including hosting, licensing, and hidden costs for 5, 10, and 25-user teams.",
|
||||||
|
"link": "blog/posts/community-vs-enterprise-cost.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "odoocommunity-agents",
|
||||||
"date": "2026-06-24",
|
"date": "2026-06-24",
|
||||||
"area": "news",
|
"area": "news",
|
||||||
"headline": "Platform Update: New Dashboard, Faster Backups & Smarter Monitoring",
|
"headline": "Why ODOO Community is Perfect for Working with AI Agents",
|
||||||
"teaser": "We've rolled out a major platform update with a redesigned dashboard, incremental backups, and AI-powered uptime monitoring.",
|
"teaser": "ODOO Community's per-seat licensing model allows each AI agent to have its own access rights without additional costs - a game changer for automation.",
|
||||||
"link": "blog/posts/news-platform-update.html"
|
"link": "blog/posts/odoocommunity-agents.html"
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "guide-migrate-enterprise",
|
|
||||||
"date": "2026-06-20",
|
|
||||||
"area": "guide",
|
|
||||||
"headline": "How to Migrate from Odoo Community to Enterprise Without Downtime",
|
|
||||||
"teaser": "A step-by-step guide to migrating your Odoo CE instance to Enterprise edition with zero downtime and full data integrity.",
|
|
||||||
"link": "blog/posts/guide-migrate-enterprise.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "howto-custom-module",
|
|
||||||
"date": "2026-06-17",
|
|
||||||
"area": "howto",
|
|
||||||
"headline": "Install Custom Odoo Modules via Git – A Practical How-To",
|
|
||||||
"teaser": "Learn how to install and manage custom Odoo modules directly from Git repositories on your ODOO4projects instance.",
|
|
||||||
"link": "blog/posts/howto-custom-module.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "news-official-partner",
|
|
||||||
"date": "2026-06-14",
|
|
||||||
"area": "news",
|
|
||||||
"headline": "ODOO4projects Becomes an Official Odoo Ready Partner",
|
|
||||||
"teaser": "We're thrilled to announce our official partnership with Odoo SA, bringing enterprise-grade hosting to even more businesses.",
|
|
||||||
"link": "blog/posts/news-official-partner.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "speed-run-backup",
|
|
||||||
"date": "2026-06-10",
|
|
||||||
"area": "speed-run",
|
|
||||||
"headline": "Set Up Automated Backups in Under 2 Minutes",
|
|
||||||
"teaser": "Protect your Odoo data in moments. This speed-run walks you through enabling automated daily backups with one click.",
|
|
||||||
"link": "blog/posts/speed-run-backup.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "howto-ai-automation",
|
|
||||||
"date": "2026-06-06",
|
|
||||||
"area": "howto",
|
|
||||||
"headline": "Build AI-Powered Workflows with Odoo & n8n",
|
|
||||||
"teaser": "Connect Odoo to AI services and automate repetitive tasks using n8n workflows. A hands-on guide for busy operators.",
|
|
||||||
"link": "blog/posts/howto-ai-automation.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "speed-run-deploy",
|
|
||||||
"date": "2026-06-02",
|
|
||||||
"area": "speed-run",
|
|
||||||
"headline": "Deploy Your First Odoo Instance in 5 Minutes",
|
|
||||||
"teaser": "From zero to live Odoo instance in under five minutes. Follow this speed-run and see your business apps running instantly.",
|
|
||||||
"link": "blog/posts/speed-run-deploy.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "my-first-post",
|
|
||||||
"date": "2026-05-28",
|
|
||||||
"area": "guide",
|
|
||||||
"headline": "Getting Started with Odoo Hosting – What You Need to Know",
|
|
||||||
"teaser": "New to Odoo hosting? This guide covers everything from choosing a plan to configuring your first domain and SSL.",
|
|
||||||
"link": "blog/posts/my-first-post.html"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,296 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en-US">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<title>Odoo Community vs. Enterprise: The Real Cost Breakdown (2026) | ODOO4projects</title>
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="A transparent cost comparison of Odoo Community vs Enterprise — including hosting, licensing, and hidden costs for 5, 10, and 25-user teams."
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="canonical"
|
||||||
|
href="https://odooprojects.com/blog/posts/community-vs-enterprise-cost.html"
|
||||||
|
/>
|
||||||
|
<meta
|
||||||
|
property="og:title"
|
||||||
|
content="Odoo Community vs. Enterprise: The Real Cost Breakdown (2026)"
|
||||||
|
/>
|
||||||
|
<meta
|
||||||
|
property="og:description"
|
||||||
|
content="A transparent cost comparison of Odoo Community vs Enterprise — including hosting, licensing, and hidden costs for 5, 10, and 25-user teams."
|
||||||
|
/>
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
|
<link rel="icon" href="../../images/favicon.ico" />
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
|
rel="stylesheet"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="../../style.css" />
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--primary: #714b67;
|
||||||
|
--dark: #212529;
|
||||||
|
--border: #e5e3e0;
|
||||||
|
--radius: 0.6rem;
|
||||||
|
}
|
||||||
|
* { box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: Inter, sans-serif;
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.7;
|
||||||
|
background: #fff;
|
||||||
|
color: #212529;
|
||||||
|
}
|
||||||
|
.container { width: 80%; max-width: 800px; margin: 0 auto; padding: 0 20px; }
|
||||||
|
@media (max-width: 768px) { .container { width: 100%; } }
|
||||||
|
.blog-header { padding: 2rem 0; border-bottom: 1px solid var(--border); }
|
||||||
|
.blog-header a { color: var(--primary); text-decoration: none; font-size: 0.85rem; }
|
||||||
|
.blog-header a:hover { text-decoration: underline; }
|
||||||
|
.post-title {
|
||||||
|
font-family: "Inter Tight", sans-serif;
|
||||||
|
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
||||||
|
font-weight: 700; margin: 1.5rem 0 0.5rem; color: var(--dark);
|
||||||
|
}
|
||||||
|
.post-meta { color: rgba(33,37,41,0.5); font-size: 0.85rem; margin-bottom: 2rem; }
|
||||||
|
.post-content h2 {
|
||||||
|
font-family: "Inter Tight", sans-serif;
|
||||||
|
font-size: 1.3rem; margin-top: 2rem; color: var(--dark);
|
||||||
|
}
|
||||||
|
.post-content p { margin: 1rem 0; color: rgba(33,37,41,0.7); line-height: 1.7; }
|
||||||
|
.post-content ul, .post-content ol { padding-left: 1.5rem; }
|
||||||
|
.post-content li { margin: 0.5rem 0; color: rgba(33,37,41,0.7); }
|
||||||
|
.post-content a { color: var(--primary); }
|
||||||
|
.post-content table {
|
||||||
|
width: 100%; border-collapse: collapse; margin: 1.5rem 0;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
.post-content th, .post-content td {
|
||||||
|
border: 1px solid var(--border); padding: 0.6rem 0.8rem; text-align: left;
|
||||||
|
}
|
||||||
|
.post-content th { background: var(--light); font-weight: 600; color: var(--dark); }
|
||||||
|
.post-content td { color: rgba(33,37,41,0.75); }
|
||||||
|
.post-content .highlight-row { background: rgba(113,75,103,0.04); }
|
||||||
|
.pro-tip {
|
||||||
|
border-left: 3px solid var(--primary);
|
||||||
|
background: rgba(113,75,103,0.04);
|
||||||
|
padding: 1rem 1.25rem; margin: 1.5rem 0;
|
||||||
|
border-radius: 0 0.6rem 0.6rem 0;
|
||||||
|
}
|
||||||
|
.pro-tip strong { color: var(--primary); }
|
||||||
|
.cta-box {
|
||||||
|
border: 1px solid var(--border); background: #fff;
|
||||||
|
padding: 1.5rem; margin: 2rem 0; border-radius: 0.6rem; text-align: center;
|
||||||
|
}
|
||||||
|
.cta-box h3 { margin: 0 0 0.5rem; color: var(--dark); }
|
||||||
|
.cta-box p { margin: 0 0 1rem; color: rgba(33,37,41,0.7); font-size: 0.9rem; }
|
||||||
|
.cta-box .btn {
|
||||||
|
display: inline-block; padding: 0.6rem 1.5rem;
|
||||||
|
background: var(--primary); color: #fff; text-decoration: none;
|
||||||
|
border-radius: 0.5rem; font-weight: 600; font-size: 0.85rem;
|
||||||
|
transition: opacity 0.2s;
|
||||||
|
}
|
||||||
|
.cta-box .btn:hover { opacity: 0.85; }
|
||||||
|
.post-footer { padding: 2rem 0; border-top: 1px solid var(--border); margin-top: 2rem; }
|
||||||
|
.post-footer a { color: var(--primary); text-decoration: none; }
|
||||||
|
.post-footer a:hover { text-decoration: underline; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<div class="blog-header">
|
||||||
|
<a href="../../index.html#blog">← Back to Blog</a>
|
||||||
|
</div>
|
||||||
|
<article>
|
||||||
|
<h1 class="post-title">Odoo Community vs. Enterprise: The Real Cost Breakdown (2026)</h1>
|
||||||
|
<div class="post-meta">June 27, 2026 · Guide</div>
|
||||||
|
<div class="post-content">
|
||||||
|
<p>
|
||||||
|
Choosing between Odoo Community and Enterprise often comes down to one question:
|
||||||
|
<strong>what do you actually need to pay for?</strong>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Enterprise pricing starts at $31.10/user/month — that's $3,732/year for 10 users
|
||||||
|
before you've paid for hosting. Community is free. But "free" doesn't mean
|
||||||
|
"no cost." You still need hosting, maintenance, and the occasional custom module.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This guide breaks down the real numbers for 5, 10, and 25-user teams so you
|
||||||
|
can make an informed decision.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>The Price of Enterprise</h2>
|
||||||
|
<p>
|
||||||
|
Odoo Enterprise licensing varies by country. The prices below reflect
|
||||||
|
<strong>US pricing</strong> — rates in Europe, Asia, and other regions may differ.
|
||||||
|
</p>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Plan</th>
|
||||||
|
<th>Per User / Month</th>
|
||||||
|
<th>5 Users / Year</th>
|
||||||
|
<th>10 Users / Year</th>
|
||||||
|
<th>25 Users / Year</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Standard (yearly)</td>
|
||||||
|
<td>$31.10</td>
|
||||||
|
<td>$1,866</td>
|
||||||
|
<td>$3,732</td>
|
||||||
|
<td>$9,330</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Custom (yearly)</td>
|
||||||
|
<td>$61.00</td>
|
||||||
|
<td>$3,660</td>
|
||||||
|
<td>$7,320</td>
|
||||||
|
<td>$18,300</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>
|
||||||
|
Odoo Online hosting is included in these prices, but it's shared infrastructure
|
||||||
|
with limited performance. For dedicated resources, you'd add Odoo.sh or a
|
||||||
|
third-party host — adding another $2,000-$6,000/year.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>What Community Actually Costs</h2>
|
||||||
|
<p>
|
||||||
|
Odoo Community has no license fee. Your costs are:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Hosting</strong> — $19–$50/month depending on plan ($228–$600/year)</li>
|
||||||
|
<li><strong>SSL certificates</strong> — included with most hosts (free with ODOO4projects)</li>
|
||||||
|
<li><strong>Backup storage</strong> — included in your plan</li>
|
||||||
|
<li><strong>Custom modules</strong> — if you need them, but you can start with standard apps</li>
|
||||||
|
</ul>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Team Size</th>
|
||||||
|
<th>Community / Year</th>
|
||||||
|
<th>Enterprise + Hosting / Year</th>
|
||||||
|
<th>You Save</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="highlight-row">
|
||||||
|
<td>5 users</td>
|
||||||
|
<td>$228–$600</td>
|
||||||
|
<td>$3,866–$5,660</td>
|
||||||
|
<td><strong>$3,266–$5,060</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="highlight-row">
|
||||||
|
<td>10 users</td>
|
||||||
|
<td>$228–$600</td>
|
||||||
|
<td>$5,732–$9,320</td>
|
||||||
|
<td><strong>$5,132–$8,720</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="highlight-row">
|
||||||
|
<td>25 users</td>
|
||||||
|
<td>$228–$600</td>
|
||||||
|
<td>$11,330–$20,300</td>
|
||||||
|
<td><strong>$10,730–$19,700</strong></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>
|
||||||
|
A 10-user team on Community saves <strong>$5,000–$8,700 per year</strong>
|
||||||
|
compared to Enterprise Standard — enough to fund development, marketing,
|
||||||
|
or additional tools.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>What You Give Up with Community</h2>
|
||||||
|
<p>
|
||||||
|
Community is powerful, but there are real gaps vs Enterprise:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong>Built-in AI</strong> — Enterprise has AI text generation, lead scoring,
|
||||||
|
OCR, and chatbots. Community needs external tools like N8N + OpenAI to
|
||||||
|
replicate these (which is straightforward, but requires setup).
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Multi-company accounting</strong> — Enterprise handles consolidation
|
||||||
|
across entities. Community handles single-entity only.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Studio & advanced automation</strong> — Enterprise's no-code
|
||||||
|
Studio tools simplify customization. Community requires code or Git-based
|
||||||
|
modules.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Official support</strong> — Enterprise includes Odoo SA support.
|
||||||
|
Community relies on community forums and your hosting provider.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="pro-tip">
|
||||||
|
<strong>Where Community shines:</strong> Single-entity businesses under $2M revenue,
|
||||||
|
startups validating their workflow, companies that want full control over their
|
||||||
|
codebase, and teams that prefer integrating their own AI stack rather than paying
|
||||||
|
per-user for features they may not fully use.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>The Hidden Advantage: No Lock-In</h2>
|
||||||
|
<p>
|
||||||
|
Enterprise runs on Odoo's proprietary license. If you stop paying, you lose
|
||||||
|
access to your modules and can't run the software. Community is LGPLv3-licensed —
|
||||||
|
you own the code forever. Switch hosting providers, take it in-house, or modify
|
||||||
|
it however you need.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
For businesses that value long-term IT independence, that alone is worth
|
||||||
|
thousands.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>When Should You Upgrade?</h2>
|
||||||
|
<p>
|
||||||
|
Most businesses hit the Enterprise ceiling at one of three milestones:
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
<strong>$2M+ in revenue</strong> — multi-entity accounting and audit-grade
|
||||||
|
controls become necessary.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Adding a second legal entity</strong> — Community can't consolidate
|
||||||
|
across companies.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Preparing for an audit or financing</strong> — Enterprise's audit
|
||||||
|
trail and SOX-grade controls are table stakes.
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<p>
|
||||||
|
Until then, Community + quality hosting is the financially smarter choice.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="cta-box">
|
||||||
|
<h3>Start with Community, Upgrade When Ready</h3>
|
||||||
|
<p>
|
||||||
|
ODOO4projects plans start at $19.40/month — enterprise-grade hosting
|
||||||
|
for your Odoo Community instance. No lock-in, no per-user fees.
|
||||||
|
</p>
|
||||||
|
<a href="../../index.html#pricing" class="btn btn-primary">See Plans</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<div class="post-footer">
|
||||||
|
<a href="../../index.html#blog">← Back to all posts</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script defer src="https://static.odoo4projects.com/agent-odoo4projects/agent.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -32,17 +32,23 @@
|
|||||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
/>
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="../../style.css" />
|
||||||
<style>
|
<style>
|
||||||
* {
|
.blog-header {
|
||||||
box-sizing: border-box;
|
padding: 2rem 0;
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
body {
|
.blog-header a {
|
||||||
margin: 0;
|
color: var(--primary);
|
||||||
font-family: Inter, sans-serif;
|
text-decoration: none;
|
||||||
font-size: 1rem;
|
font-size: 0.85rem;
|
||||||
line-height: 1.7;
|
}
|
||||||
background: #08080c;
|
.blog-header a:hover {
|
||||||
color: #e8e8f0;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
.container {
|
.container {
|
||||||
width: 80%;
|
width: 80%;
|
||||||
@@ -55,27 +61,15 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.blog-header {
|
|
||||||
padding: 2rem 0;
|
|
||||||
border-bottom: 1px solid #1a1a2e;
|
|
||||||
}
|
|
||||||
.blog-header a {
|
|
||||||
color: #00f5ff;
|
|
||||||
text-decoration: none;
|
|
||||||
font-size: 0.85rem;
|
|
||||||
}
|
|
||||||
.blog-header a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
.post-title {
|
.post-title {
|
||||||
font-family: "Inter Tight", sans-serif;
|
font-family: "Inter Tight", sans-serif;
|
||||||
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
margin: 1.5rem 0 0.5rem;
|
margin: 1.5rem 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-meta {
|
.post-meta {
|
||||||
color: rgba(232, 232, 240, 0.5);
|
color: rgba(33, 37, 41, 0.5);
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
@@ -83,10 +77,15 @@
|
|||||||
font-family: "Inter Tight", sans-serif;
|
font-family: "Inter Tight", sans-serif;
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-content p {
|
.post-content p {
|
||||||
margin: 1rem 0;
|
margin: 1rem 0;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
.post-content a {
|
||||||
|
color: var(--primary);
|
||||||
}
|
}
|
||||||
.post-content ul,
|
.post-content ul,
|
||||||
.post-content ol {
|
.post-content ol {
|
||||||
@@ -94,36 +93,37 @@
|
|||||||
}
|
}
|
||||||
.post-content li {
|
.post-content li {
|
||||||
margin: 0.5rem 0;
|
margin: 0.5rem 0;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
}
|
}
|
||||||
.post-content code {
|
.post-content code {
|
||||||
background: #12121c;
|
background: var(--light);
|
||||||
color: #00f5ff;
|
color: var(--dark);
|
||||||
padding: 0.2rem 0.4rem;
|
padding: 0.2rem 0.4rem;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
}
|
}
|
||||||
.post-content pre {
|
.post-content pre {
|
||||||
background: #12121c;
|
background: var(--light);
|
||||||
color: #00f5ff;
|
color: var(--dark);
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
border-radius: 0.6rem;
|
border-radius: var(--radius);
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
border: 1px solid #1a1a2e;
|
border: 1px solid var(--border);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.pro-tip {
|
.pro-tip {
|
||||||
border-left: 3px solid #00f5ff;
|
border-left: 3px solid var(--primary);
|
||||||
background: #010f20;
|
background: rgba(113, 75, 103, 0.04);
|
||||||
padding: 1rem 1.25rem;
|
padding: 1rem 1.25rem;
|
||||||
margin: 1.5rem 0;
|
margin: 1.5rem 0;
|
||||||
border-radius: 0 0.6rem 0.6rem 0;
|
border-radius: 0 0.6rem 0.6rem 0;
|
||||||
}
|
}
|
||||||
.pro-tip strong {
|
.pro-tip strong {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
}
|
}
|
||||||
.cta-box {
|
.cta-box {
|
||||||
border: 1px solid rgba(0, 245, 255, 0.2);
|
border: 1px solid var(--border);
|
||||||
background: #12121c;
|
background: #fff;
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
border-radius: 0.6rem;
|
border-radius: 0.6rem;
|
||||||
@@ -131,34 +131,41 @@
|
|||||||
}
|
}
|
||||||
.cta-box h3 {
|
.cta-box h3 {
|
||||||
margin: 0 0 0.5rem;
|
margin: 0 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.cta-box p {
|
.cta-box p {
|
||||||
margin: 0 0 1rem;
|
margin: 0 0 1rem;
|
||||||
color: rgba(232, 232, 240, 0.7);
|
color: rgba(33, 37, 41, 0.7);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.cta-box .btn {
|
.cta-box .btn {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0.6rem 1.5rem;
|
padding: 0.6rem 1.5rem;
|
||||||
background: #00f5ff;
|
font-size: 0.9rem;
|
||||||
color: #08080c;
|
font-weight: 500;
|
||||||
text-decoration: none;
|
border: 1px solid transparent;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
font-weight: 600;
|
cursor: pointer;
|
||||||
font-size: 0.85rem;
|
text-decoration: none;
|
||||||
transition: opacity 0.2s;
|
transition: all 0.2s;
|
||||||
}
|
}
|
||||||
.cta-box .btn:hover {
|
.cta-box .btn-primary {
|
||||||
opacity: 0.85;
|
color: #fff;
|
||||||
|
background: var(--primary);
|
||||||
|
border-color: var(--primary);
|
||||||
|
}
|
||||||
|
.cta-box .btn-primary:hover {
|
||||||
|
background: #5e3f55;
|
||||||
|
border-color: #5e3f55;
|
||||||
|
transform: translateY(-1px);
|
||||||
}
|
}
|
||||||
.post-footer {
|
.post-footer {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-top: 1px solid #1a1a2e;
|
border-top: 1px solid var(--border);
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
.post-footer a {
|
.post-footer a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.post-footer a:hover {
|
.post-footer a:hover {
|
||||||
@@ -227,7 +234,7 @@
|
|||||||
Upgrade to Powerhouse and unlock Enterprise features
|
Upgrade to Powerhouse and unlock Enterprise features
|
||||||
today.
|
today.
|
||||||
</p>
|
</p>
|
||||||
<a href="../../index.html#pricing" class="btn"
|
<a href="../../index.html#pricing" class="btn btn-primary"
|
||||||
>View Powerhouse Plan</a
|
>View Powerhouse Plan</a
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@@ -237,5 +244,6 @@
|
|||||||
<a href="../../index.html#blog">← Back to all posts</a>
|
<a href="../../index.html#blog">← Back to all posts</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script defer src="https://static.odoo4projects.com/agent-odoo4projects/agent.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -31,35 +31,30 @@
|
|||||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
/>
|
/>
|
||||||
|
<link rel="stylesheet" href="../../style.css" />
|
||||||
<style>
|
<style>
|
||||||
* {
|
/* Blog post specific overrides — matching homepage light theme */
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
background: #fff;
|
||||||
font-family: Inter, sans-serif;
|
color: #212529;
|
||||||
font-size: 1rem;
|
|
||||||
line-height: 1.7;
|
|
||||||
background: #08080c;
|
|
||||||
color: #e8e8f0;
|
|
||||||
}
|
}
|
||||||
.container {
|
.blog-post-container {
|
||||||
width: 80%;
|
width: 80%;
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
}
|
}
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.container {
|
.blog-post-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.blog-header {
|
.blog-header {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-bottom: 1px solid #1a1a2e;
|
border-bottom: 1px solid #e5e3e0;
|
||||||
}
|
}
|
||||||
.blog-header a {
|
.blog-header a {
|
||||||
color: #00f5ff;
|
color: #65435c;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
}
|
}
|
||||||
@@ -71,10 +66,10 @@
|
|||||||
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
margin: 1.5rem 0 0.5rem;
|
margin: 1.5rem 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: #1b1319;
|
||||||
}
|
}
|
||||||
.post-meta {
|
.post-meta {
|
||||||
color: rgba(232, 232, 240, 0.5);
|
color: rgba(33, 37, 41, 0.5);
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
@@ -82,7 +77,7 @@
|
|||||||
font-family: "Inter Tight", sans-serif;
|
font-family: "Inter Tight", sans-serif;
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
color: #e8e8f0;
|
color: #1b1319;
|
||||||
}
|
}
|
||||||
.post-content p {
|
.post-content p {
|
||||||
margin: 1rem 0;
|
margin: 1rem 0;
|
||||||
@@ -95,34 +90,34 @@
|
|||||||
margin: 0.5rem 0;
|
margin: 0.5rem 0;
|
||||||
}
|
}
|
||||||
.post-content code {
|
.post-content code {
|
||||||
background: #12121c;
|
background: #f6f5f4;
|
||||||
color: #00f5ff;
|
color: #714b67;
|
||||||
padding: 0.2rem 0.4rem;
|
padding: 0.2rem 0.4rem;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
}
|
}
|
||||||
.post-content pre {
|
.post-content pre {
|
||||||
background: #12121c;
|
background: #f6f5f4;
|
||||||
color: #00f5ff;
|
color: #1b1319;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
border-radius: 0.6rem;
|
border-radius: 0.6rem;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
border: 1px solid #1a1a2e;
|
border: 1px solid #e5e3e0;
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.pro-tip {
|
.pro-tip {
|
||||||
border-left: 3px solid #00f5ff;
|
border-left: 3px solid #714b67;
|
||||||
background: #010f20;
|
background: #f6f5f4;
|
||||||
padding: 1rem 1.25rem;
|
padding: 1rem 1.25rem;
|
||||||
margin: 1.5rem 0;
|
margin: 1.5rem 0;
|
||||||
border-radius: 0 0.6rem 0.6rem 0;
|
border-radius: 0 0.6rem 0.6rem 0;
|
||||||
}
|
}
|
||||||
.pro-tip strong {
|
.pro-tip strong {
|
||||||
color: #00f5ff;
|
color: #714b67;
|
||||||
}
|
}
|
||||||
.cta-box {
|
.cta-box {
|
||||||
border: 1px solid rgba(0, 245, 255, 0.2);
|
border: 1px solid rgba(113, 75, 103, 0.2);
|
||||||
background: #12121c;
|
background: #f6f5f4;
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
border-radius: 0.6rem;
|
border-radius: 0.6rem;
|
||||||
@@ -130,18 +125,18 @@
|
|||||||
}
|
}
|
||||||
.cta-box h3 {
|
.cta-box h3 {
|
||||||
margin: 0 0 0.5rem;
|
margin: 0 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: #1b1319;
|
||||||
}
|
}
|
||||||
.cta-box p {
|
.cta-box p {
|
||||||
margin: 0 0 1rem;
|
margin: 0 0 1rem;
|
||||||
color: rgba(232, 232, 240, 0.7);
|
color: rgba(33, 37, 41, 0.55);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.cta-box .btn {
|
.cta-box .btn {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0.6rem 1.5rem;
|
padding: 0.6rem 1.5rem;
|
||||||
background: #00f5ff;
|
background: #714b67;
|
||||||
color: #08080c;
|
color: #fff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -153,11 +148,11 @@
|
|||||||
}
|
}
|
||||||
.post-footer {
|
.post-footer {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-top: 1px solid #1a1a2e;
|
border-top: 1px solid #e5e3e0;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
.post-footer a {
|
.post-footer a {
|
||||||
color: #00f5ff;
|
color: #65435c;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.post-footer a:hover {
|
.post-footer a:hover {
|
||||||
@@ -166,7 +161,7 @@
|
|||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="blog-post-container">
|
||||||
<div class="blog-header">
|
<div class="blog-header">
|
||||||
<a href="../../index.html#blog">← Back to Blog</a>
|
<a href="../../index.html#blog">← Back to Blog</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -32,7 +32,20 @@
|
|||||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
/>
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="../../style.css" />
|
||||||
<style>
|
<style>
|
||||||
|
:root {
|
||||||
|
--primary: #714b67;
|
||||||
|
--border: #e5e3e0;
|
||||||
|
--radius: 0.6rem;
|
||||||
|
--dark: #212529;
|
||||||
|
--light: #f8f9fa;
|
||||||
|
--bg: #ffffff;
|
||||||
|
}
|
||||||
* {
|
* {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
@@ -41,8 +54,8 @@
|
|||||||
font-family: Inter, sans-serif;
|
font-family: Inter, sans-serif;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
line-height: 1.7;
|
line-height: 1.7;
|
||||||
background: #08080c;
|
background: var(--bg);
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.container {
|
.container {
|
||||||
width: 80%;
|
width: 80%;
|
||||||
@@ -57,10 +70,10 @@
|
|||||||
}
|
}
|
||||||
.blog-header {
|
.blog-header {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-bottom: 1px solid #1a1a2e;
|
border-bottom: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
.blog-header a {
|
.blog-header a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
}
|
}
|
||||||
@@ -72,10 +85,10 @@
|
|||||||
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
margin: 1.5rem 0 0.5rem;
|
margin: 1.5rem 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-meta {
|
.post-meta {
|
||||||
color: rgba(232, 232, 240, 0.5);
|
color: rgba(33, 37, 41, 0.5);
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
@@ -83,10 +96,12 @@
|
|||||||
font-family: "Inter Tight", sans-serif;
|
font-family: "Inter Tight", sans-serif;
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-content p {
|
.post-content p {
|
||||||
margin: 1rem 0;
|
margin: 1rem 0;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
line-height: 1.7;
|
||||||
}
|
}
|
||||||
.post-content ul,
|
.post-content ul,
|
||||||
.post-content ol {
|
.post-content ol {
|
||||||
@@ -95,54 +110,57 @@
|
|||||||
.post-content li {
|
.post-content li {
|
||||||
margin: 0.5rem 0;
|
margin: 0.5rem 0;
|
||||||
}
|
}
|
||||||
|
.post-content a {
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
.post-content code {
|
.post-content code {
|
||||||
background: #12121c;
|
background: var(--light);
|
||||||
color: #00f5ff;
|
color: var(--dark);
|
||||||
padding: 0.2rem 0.4rem;
|
padding: 0.2rem 0.4rem;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
}
|
}
|
||||||
.post-content pre {
|
.post-content pre {
|
||||||
background: #12121c;
|
background: var(--light);
|
||||||
color: #00f5ff;
|
color: var(--dark);
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
border-radius: 0.6rem;
|
border-radius: var(--radius);
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
border: 1px solid #1a1a2e;
|
border: 1px solid var(--border);
|
||||||
font-size: 0.9rem;
|
font-size: 0.82rem;
|
||||||
}
|
}
|
||||||
.pro-tip {
|
.pro-tip {
|
||||||
border-left: 3px solid #00f5ff;
|
border-left: 3px solid var(--primary);
|
||||||
background: #010f20;
|
background: rgba(113, 75, 103, 0.04);
|
||||||
padding: 1rem 1.25rem;
|
padding: 1rem 1.25rem;
|
||||||
margin: 1.5rem 0;
|
margin: 1.5rem 0;
|
||||||
border-radius: 0 0.6rem 0.6rem 0;
|
border-radius: 0 0.6rem 0.6rem 0;
|
||||||
}
|
}
|
||||||
.pro-tip strong {
|
.pro-tip strong {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
}
|
}
|
||||||
.cta-box {
|
.cta-box {
|
||||||
border: 1px solid rgba(0, 245, 255, 0.2);
|
border: 1px solid var(--border);
|
||||||
background: #12121c;
|
background: var(--bg);
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
border-radius: 0.6rem;
|
border-radius: var(--radius);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.cta-box h3 {
|
.cta-box h3 {
|
||||||
margin: 0 0 0.5rem;
|
margin: 0 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.cta-box p {
|
.cta-box p {
|
||||||
margin: 0 0 1rem;
|
margin: 0 0 1rem;
|
||||||
color: rgba(232, 232, 240, 0.7);
|
color: rgba(33, 37, 41, 0.7);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.cta-box .btn {
|
.cta-box .btn {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0.6rem 1.5rem;
|
padding: 0.6rem 1.5rem;
|
||||||
background: #00f5ff;
|
background: var(--primary);
|
||||||
color: #08080c;
|
color: #fff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -154,11 +172,11 @@
|
|||||||
}
|
}
|
||||||
.post-footer {
|
.post-footer {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-top: 1px solid #1a1a2e;
|
border-top: 1px solid var(--border);
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
.post-footer a {
|
.post-footer a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.post-footer a:hover {
|
.post-footer a:hover {
|
||||||
@@ -228,5 +246,6 @@
|
|||||||
<a href="../../index.html#blog">← Back to all posts</a>
|
<a href="../../index.html#blog">← Back to all posts</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script defer src="https://static.odoo4projects.com/agent-odoo4projects/agent.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -32,7 +32,20 @@
|
|||||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
/>
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="../../style.css" />
|
||||||
<style>
|
<style>
|
||||||
|
:root {
|
||||||
|
--primary: #714b67;
|
||||||
|
--border: #e5e3e0;
|
||||||
|
--radius: 0.6rem;
|
||||||
|
--dark: #212529;
|
||||||
|
--light: #f8f9fa;
|
||||||
|
--bg: #ffffff;
|
||||||
|
}
|
||||||
* {
|
* {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
@@ -41,8 +54,8 @@
|
|||||||
font-family: Inter, sans-serif;
|
font-family: Inter, sans-serif;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
line-height: 1.7;
|
line-height: 1.7;
|
||||||
background: #08080c;
|
background: var(--bg);
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.container {
|
.container {
|
||||||
width: 80%;
|
width: 80%;
|
||||||
@@ -57,10 +70,10 @@
|
|||||||
}
|
}
|
||||||
.blog-header {
|
.blog-header {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-bottom: 1px solid #1a1a2e;
|
border-bottom: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
.blog-header a {
|
.blog-header a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
}
|
}
|
||||||
@@ -72,10 +85,10 @@
|
|||||||
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
margin: 1.5rem 0 0.5rem;
|
margin: 1.5rem 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-meta {
|
.post-meta {
|
||||||
color: rgba(232, 232, 240, 0.5);
|
color: rgba(33, 37, 41, 0.5);
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
@@ -83,10 +96,12 @@
|
|||||||
font-family: "Inter Tight", sans-serif;
|
font-family: "Inter Tight", sans-serif;
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-content p {
|
.post-content p {
|
||||||
margin: 1rem 0;
|
margin: 1rem 0;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
line-height: 1.7;
|
||||||
}
|
}
|
||||||
.post-content ul,
|
.post-content ul,
|
||||||
.post-content ol {
|
.post-content ol {
|
||||||
@@ -95,54 +110,57 @@
|
|||||||
.post-content li {
|
.post-content li {
|
||||||
margin: 0.5rem 0;
|
margin: 0.5rem 0;
|
||||||
}
|
}
|
||||||
|
.post-content a {
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
.post-content code {
|
.post-content code {
|
||||||
background: #12121c;
|
background: var(--light);
|
||||||
color: #00f5ff;
|
color: var(--dark);
|
||||||
padding: 0.2rem 0.4rem;
|
padding: 0.2rem 0.4rem;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
}
|
}
|
||||||
.post-content pre {
|
.post-content pre {
|
||||||
background: #12121c;
|
background: var(--light);
|
||||||
color: #00f5ff;
|
color: var(--dark);
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
border-radius: 0.6rem;
|
border-radius: var(--radius);
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
border: 1px solid #1a1a2e;
|
border: 1px solid var(--border);
|
||||||
font-size: 0.9rem;
|
font-size: 0.82rem;
|
||||||
}
|
}
|
||||||
.pro-tip {
|
.pro-tip {
|
||||||
border-left: 3px solid #00f5ff;
|
border-left: 3px solid var(--primary);
|
||||||
background: #010f20;
|
background: rgba(113, 75, 103, 0.04);
|
||||||
padding: 1rem 1.25rem;
|
padding: 1rem 1.25rem;
|
||||||
margin: 1.5rem 0;
|
margin: 1.5rem 0;
|
||||||
border-radius: 0 0.6rem 0.6rem 0;
|
border-radius: 0 0.6rem 0.6rem 0;
|
||||||
}
|
}
|
||||||
.pro-tip strong {
|
.pro-tip strong {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
}
|
}
|
||||||
.cta-box {
|
.cta-box {
|
||||||
border: 1px solid rgba(0, 245, 255, 0.2);
|
border: 1px solid var(--border);
|
||||||
background: #12121c;
|
background: var(--bg);
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
border-radius: 0.6rem;
|
border-radius: var(--radius);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.cta-box h3 {
|
.cta-box h3 {
|
||||||
margin: 0 0 0.5rem;
|
margin: 0 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.cta-box p {
|
.cta-box p {
|
||||||
margin: 0 0 1rem;
|
margin: 0 0 1rem;
|
||||||
color: rgba(232, 232, 240, 0.7);
|
color: rgba(33, 37, 41, 0.7);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.cta-box .btn {
|
.cta-box .btn {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0.6rem 1.5rem;
|
padding: 0.6rem 1.5rem;
|
||||||
background: #00f5ff;
|
background: var(--primary);
|
||||||
color: #08080c;
|
color: #fff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -154,11 +172,11 @@
|
|||||||
}
|
}
|
||||||
.post-footer {
|
.post-footer {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-top: 1px solid #1a1a2e;
|
border-top: 1px solid var(--border);
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
.post-footer a {
|
.post-footer a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.post-footer a:hover {
|
.post-footer a:hover {
|
||||||
@@ -232,7 +250,7 @@ Admin credentials: sent via email</code></pre>
|
|||||||
Pick a plan and launch your Odoo instance in
|
Pick a plan and launch your Odoo instance in
|
||||||
minutes.
|
minutes.
|
||||||
</p>
|
</p>
|
||||||
<a href="../../index.html#pricing" class="btn"
|
<a href="../../index.html#pricing" class="btn btn-primary"
|
||||||
>View Plans</a
|
>View Plans</a
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@@ -242,5 +260,6 @@ Admin credentials: sent via email</code></pre>
|
|||||||
<a href="../../index.html#blog">← Back to all posts</a>
|
<a href="../../index.html#blog">← Back to all posts</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script defer src="https://static.odoo4projects.com/agent-odoo4projects/agent.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -31,7 +31,18 @@
|
|||||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
/>
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="../../style.css" />
|
||||||
<style>
|
<style>
|
||||||
|
:root {
|
||||||
|
--primary: #714b67;
|
||||||
|
--dark: #212529;
|
||||||
|
--border: #e5e3e0;
|
||||||
|
--radius: 0.6rem;
|
||||||
|
}
|
||||||
* {
|
* {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
@@ -40,8 +51,8 @@
|
|||||||
font-family: Inter, sans-serif;
|
font-family: Inter, sans-serif;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
line-height: 1.7;
|
line-height: 1.7;
|
||||||
background: #08080c;
|
background: #fff;
|
||||||
color: #e8e8f0;
|
color: #212529;
|
||||||
}
|
}
|
||||||
.container {
|
.container {
|
||||||
width: 80%;
|
width: 80%;
|
||||||
@@ -56,10 +67,10 @@
|
|||||||
}
|
}
|
||||||
.blog-header {
|
.blog-header {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-bottom: 1px solid #1a1a2e;
|
border-bottom: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
.blog-header a {
|
.blog-header a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
}
|
}
|
||||||
@@ -71,10 +82,10 @@
|
|||||||
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
margin: 1.5rem 0 0.5rem;
|
margin: 1.5rem 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-meta {
|
.post-meta {
|
||||||
color: rgba(232, 232, 240, 0.5);
|
color: rgba(33, 37, 41, 0.5);
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
@@ -82,10 +93,12 @@
|
|||||||
font-family: "Inter Tight", sans-serif;
|
font-family: "Inter Tight", sans-serif;
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-content p {
|
.post-content p {
|
||||||
margin: 1rem 0;
|
margin: 1rem 0;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
line-height: 1.7;
|
||||||
}
|
}
|
||||||
.post-content ul,
|
.post-content ul,
|
||||||
.post-content ol {
|
.post-content ol {
|
||||||
@@ -93,20 +106,24 @@
|
|||||||
}
|
}
|
||||||
.post-content li {
|
.post-content li {
|
||||||
margin: 0.5rem 0;
|
margin: 0.5rem 0;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
}
|
||||||
|
.post-content a {
|
||||||
|
color: var(--primary);
|
||||||
}
|
}
|
||||||
.pro-tip {
|
.pro-tip {
|
||||||
border-left: 3px solid #00f5ff;
|
border-left: 3px solid var(--primary);
|
||||||
background: #010f20;
|
background: rgba(113, 75, 103, 0.04);
|
||||||
padding: 1rem 1.25rem;
|
padding: 1rem 1.25rem;
|
||||||
margin: 1.5rem 0;
|
margin: 1.5rem 0;
|
||||||
border-radius: 0 0.6rem 0.6rem 0;
|
border-radius: 0 0.6rem 0.6rem 0;
|
||||||
}
|
}
|
||||||
.pro-tip strong {
|
.pro-tip strong {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
}
|
}
|
||||||
.cta-box {
|
.cta-box {
|
||||||
border: 1px solid rgba(0, 245, 255, 0.2);
|
border: 1px solid var(--border);
|
||||||
background: #12121c;
|
background: #fff;
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
border-radius: 0.6rem;
|
border-radius: 0.6rem;
|
||||||
@@ -114,18 +131,18 @@
|
|||||||
}
|
}
|
||||||
.cta-box h3 {
|
.cta-box h3 {
|
||||||
margin: 0 0 0.5rem;
|
margin: 0 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.cta-box p {
|
.cta-box p {
|
||||||
margin: 0 0 1rem;
|
margin: 0 0 1rem;
|
||||||
color: rgba(232, 232, 240, 0.7);
|
color: rgba(33, 37, 41, 0.7);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.cta-box .btn {
|
.cta-box .btn {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0.6rem 1.5rem;
|
padding: 0.6rem 1.5rem;
|
||||||
background: #00f5ff;
|
background: var(--primary);
|
||||||
color: #08080c;
|
color: #fff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -137,11 +154,11 @@
|
|||||||
}
|
}
|
||||||
.post-footer {
|
.post-footer {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-top: 1px solid #1a1a2e;
|
border-top: 1px solid var(--border);
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
.post-footer a {
|
.post-footer a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.post-footer a:hover {
|
.post-footer a:hover {
|
||||||
@@ -203,7 +220,7 @@
|
|||||||
Join thousands of businesses running on
|
Join thousands of businesses running on
|
||||||
ODOO4projects.
|
ODOO4projects.
|
||||||
</p>
|
</p>
|
||||||
<a href="../../index.html#pricing" class="btn"
|
<a href="../../index.html#pricing" class="btn btn-primary"
|
||||||
>Get Started</a
|
>Get Started</a
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@@ -213,5 +230,9 @@
|
|||||||
<a href="../../index.html#blog">← Back to all posts</a>
|
<a href="../../index.html#blog">← Back to all posts</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script
|
||||||
|
defer
|
||||||
|
src="https://static.odoo4projects.com/agent-odoo4projects/agent.js"
|
||||||
|
></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -32,17 +32,28 @@
|
|||||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
/>
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="../../style.css" />
|
||||||
<style>
|
<style>
|
||||||
* {
|
* {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
:root {
|
||||||
|
--primary: #714b67;
|
||||||
|
--border: #e5e3e0;
|
||||||
|
--dark: #1b1319;
|
||||||
|
--radius: 0.6rem;
|
||||||
|
}
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: Inter, sans-serif;
|
font-family: Inter, sans-serif;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
line-height: 1.7;
|
line-height: 1.7;
|
||||||
background: #08080c;
|
background: #fff;
|
||||||
color: #e8e8f0;
|
color: #212529;
|
||||||
}
|
}
|
||||||
.container {
|
.container {
|
||||||
width: 80%;
|
width: 80%;
|
||||||
@@ -57,10 +68,10 @@
|
|||||||
}
|
}
|
||||||
.blog-header {
|
.blog-header {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-bottom: 1px solid #1a1a2e;
|
border-bottom: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
.blog-header a {
|
.blog-header a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
}
|
}
|
||||||
@@ -72,10 +83,10 @@
|
|||||||
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
margin: 1.5rem 0 0.5rem;
|
margin: 1.5rem 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-meta {
|
.post-meta {
|
||||||
color: rgba(232, 232, 240, 0.5);
|
color: rgba(33, 37, 41, 0.5);
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
@@ -83,10 +94,12 @@
|
|||||||
font-family: "Inter Tight", sans-serif;
|
font-family: "Inter Tight", sans-serif;
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-content p {
|
.post-content p {
|
||||||
margin: 1rem 0;
|
margin: 1rem 0;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
line-height: 1.7;
|
||||||
}
|
}
|
||||||
.post-content ul,
|
.post-content ul,
|
||||||
.post-content ol {
|
.post-content ol {
|
||||||
@@ -95,19 +108,22 @@
|
|||||||
.post-content li {
|
.post-content li {
|
||||||
margin: 0.5rem 0;
|
margin: 0.5rem 0;
|
||||||
}
|
}
|
||||||
|
.post-content a {
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
.pro-tip {
|
.pro-tip {
|
||||||
border-left: 3px solid #00f5ff;
|
border-left: 3px solid var(--primary);
|
||||||
background: #010f20;
|
background: rgba(113, 75, 103, 0.04);
|
||||||
padding: 1rem 1.25rem;
|
padding: 1rem 1.25rem;
|
||||||
margin: 1.5rem 0;
|
margin: 1.5rem 0;
|
||||||
border-radius: 0 0.6rem 0.6rem 0;
|
border-radius: 0 0.6rem 0.6rem 0;
|
||||||
}
|
}
|
||||||
.pro-tip strong {
|
.pro-tip strong {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
}
|
}
|
||||||
.cta-box {
|
.cta-box {
|
||||||
border: 1px solid rgba(0, 245, 255, 0.2);
|
border: 1px solid var(--border);
|
||||||
background: #12121c;
|
background: #fff;
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
border-radius: 0.6rem;
|
border-radius: 0.6rem;
|
||||||
@@ -115,18 +131,19 @@
|
|||||||
}
|
}
|
||||||
.cta-box h3 {
|
.cta-box h3 {
|
||||||
margin: 0 0 0.5rem;
|
margin: 0 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
|
font-family: "Inter Tight", sans-serif;
|
||||||
}
|
}
|
||||||
.cta-box p {
|
.cta-box p {
|
||||||
margin: 0 0 1rem;
|
margin: 0 0 1rem;
|
||||||
color: rgba(232, 232, 240, 0.7);
|
color: rgba(33, 37, 41, 0.7);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.cta-box .btn {
|
.cta-box .btn {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0.6rem 1.5rem;
|
padding: 0.6rem 1.5rem;
|
||||||
background: #00f5ff;
|
background: var(--primary);
|
||||||
color: #08080c;
|
color: #fff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -138,11 +155,11 @@
|
|||||||
}
|
}
|
||||||
.post-footer {
|
.post-footer {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-top: 1px solid #1a1a2e;
|
border-top: 1px solid var(--border);
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
.post-footer a {
|
.post-footer a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.post-footer a:hover {
|
.post-footer a:hover {
|
||||||
@@ -213,5 +230,9 @@
|
|||||||
<a href="../../index.html#blog">← Back to all posts</a>
|
<a href="../../index.html#blog">← Back to all posts</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script
|
||||||
|
defer
|
||||||
|
src="https://static.odoo4projects.com/agent-odoo4projects/agent.js"
|
||||||
|
></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -0,0 +1,284 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en-US">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<title>
|
||||||
|
Why ODOO Community is Perfect for Working with AI Agents | ODOO4projects
|
||||||
|
</title>
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="ODOO Community's per-seat licensing model allows each AI agent to have its own access rights without additional costs - a game changer for automation."
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="canonical"
|
||||||
|
href="https://odooprojects.com/blog/posts/odoocommunity-agents.html"
|
||||||
|
/>
|
||||||
|
<meta
|
||||||
|
property="og:title"
|
||||||
|
content="Why ODOO Community is Perfect for Working with AI Agents"
|
||||||
|
/>
|
||||||
|
<meta
|
||||||
|
property="og:description"
|
||||||
|
content="ODOO Community's per-seat licensing model allows each AI agent to have its own access rights without additional costs - a game changer for automation."
|
||||||
|
/>
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
|
<link rel="icon" href="../../images/favicon.ico" />
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
|
rel="stylesheet"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="../../style.css" />
|
||||||
|
<style>
|
||||||
|
/* Blog post specific styles — leverages CSS vars from style.css */
|
||||||
|
:root {
|
||||||
|
--primary: #714b67;
|
||||||
|
--border: #e5e3e0;
|
||||||
|
--dark: #1b1319;
|
||||||
|
--radius: 0.6rem;
|
||||||
|
}
|
||||||
|
.blog-header {
|
||||||
|
padding: 2rem 0;
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
.blog-header a {
|
||||||
|
color: var(--primary);
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
.blog-header a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.post-title {
|
||||||
|
font-family: "Inter Tight", sans-serif;
|
||||||
|
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
||||||
|
font-weight: 700;
|
||||||
|
margin: 1.5rem 0 0.5rem;
|
||||||
|
color: var(--dark);
|
||||||
|
}
|
||||||
|
.post-meta {
|
||||||
|
color: rgba(33, 37, 41, 0.5);
|
||||||
|
font-size: 0.85rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
.post-content p {
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
line-height: 1.7;
|
||||||
|
margin: 1rem 0;
|
||||||
|
}
|
||||||
|
.post-content h2 {
|
||||||
|
font-family: "Inter Tight", sans-serif;
|
||||||
|
font-size: 1.3rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
color: var(--dark);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.post-content ul,
|
||||||
|
.post-content ol {
|
||||||
|
padding-left: 1.5rem;
|
||||||
|
}
|
||||||
|
.post-content li {
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
.post-content a {
|
||||||
|
color: var(--primary);
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.post-content a:hover {
|
||||||
|
color: #5e3f55;
|
||||||
|
}
|
||||||
|
.pro-tip {
|
||||||
|
border-left: 3px solid var(--primary);
|
||||||
|
background: rgba(113, 75, 103, 0.04);
|
||||||
|
padding: 1rem 1.25rem;
|
||||||
|
margin: 1.5rem 0;
|
||||||
|
border-radius: 0 0.6rem 0.6rem 0;
|
||||||
|
}
|
||||||
|
.pro-tip strong {
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
|
.pro-tip p {
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
}
|
||||||
|
.cta-box {
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
background: #fff;
|
||||||
|
padding: 1.5rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
border-radius: 0.6rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.cta-box h3 {
|
||||||
|
margin: 0 0 0.5rem;
|
||||||
|
color: var(--dark);
|
||||||
|
font-family: "Inter Tight", sans-serif;
|
||||||
|
font-size: clamp(1.1rem, 2vw, 1.4rem);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.cta-box p {
|
||||||
|
margin: 0 0 1rem;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
.post-footer {
|
||||||
|
padding: 2rem 0;
|
||||||
|
border-top: 1px solid var(--border);
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
.post-footer a {
|
||||||
|
color: var(--primary);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.post-footer a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container" style="width:80%; max-width:800px; margin:0 auto; padding:0 20px;">
|
||||||
|
<div class="blog-header">
|
||||||
|
<a href="../../index.html#blog">← Back to Blog</a>
|
||||||
|
</div>
|
||||||
|
<article>
|
||||||
|
<h1 class="post-title">
|
||||||
|
Why ODOO Community is Perfect for Working with AI Agents
|
||||||
|
</h1>
|
||||||
|
<div class="post-meta">June 24, 2026 · News</div>
|
||||||
|
<div class="post-content">
|
||||||
|
<p>
|
||||||
|
AI agents are transforming how businesses operate, and
|
||||||
|
ODOO Community Edition is uniquely positioned to harness
|
||||||
|
this revolution. Unlike Enterprise, which requires per-user
|
||||||
|
licenses that scale costs linearly, Community Edition's
|
||||||
|
per-seat licensing model allows each AI agent to have its
|
||||||
|
own access rights <strong>without additional costs</strong>
|
||||||
|
— a genuine game changer for automation.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>The Licensing Advantage</h2>
|
||||||
|
<p>
|
||||||
|
ODOO Enterprise charges per user per month. While this
|
||||||
|
works well for human employees, it becomes prohibitively
|
||||||
|
expensive when you want to deploy dozens or hundreds of
|
||||||
|
specialized AI agents — each performing distinct
|
||||||
|
roles like inventory reconciliation, invoice processing,
|
||||||
|
customer follow-up, or report generation.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
ODOO Community, on the other hand, has no per-user
|
||||||
|
licensing fees. You can create as many user accounts as
|
||||||
|
your infrastructure can support, assign granular access
|
||||||
|
rights to each agent, and scale your automation
|
||||||
|
horizontally without watching your monthly bill climb.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="pro-tip">
|
||||||
|
<strong>Pro Tip:</strong> With ODOO Community, you can
|
||||||
|
create dedicated user accounts for each AI agent —
|
||||||
|
one for invoice processing, one for inventory management,
|
||||||
|
one for customer support triage — all without
|
||||||
|
incurring additional licensing costs.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>Granular Access Control</h2>
|
||||||
|
<p>
|
||||||
|
Each AI agent needs precisely scoped permissions. Your
|
||||||
|
invoice processing agent should read vendor bills and
|
||||||
|
create payments, but never touch HR records. Your customer
|
||||||
|
support agent needs access to the CRM and sales orders,
|
||||||
|
but not accounting.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
ODOO Community's robust access control lists (ACLs),
|
||||||
|
record rules, and security groups let you define
|
||||||
|
exactly what each agent can see and do. Combined with
|
||||||
|
the per-seat model, you can have:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong>Agents with full admin</strong> — for
|
||||||
|
system orchestration
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Specialized agents</strong> — scoped to
|
||||||
|
specific apps (Inventory, Accounting, CRM, etc.)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Read-only agents</strong> — for
|
||||||
|
monitoring, reporting, and data extraction
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>External API agents</strong> — using
|
||||||
|
API keys with limited endpoints
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>API-First Architecture</h2>
|
||||||
|
<p>
|
||||||
|
ODOO Community exposes a comprehensive JSON-RPC and XML-RPC
|
||||||
|
API that AI agents can consume directly. Modern agent
|
||||||
|
frameworks like LangChain, CrewAI, and AutoGen can connect
|
||||||
|
to ODOO instances natively, making it straightforward to
|
||||||
|
build agentic workflows.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Combined with N8N automation workflows and custom
|
||||||
|
modules hosted on ODOO4projects, you can create
|
||||||
|
sophisticated pipelines where AI agents coordinate
|
||||||
|
across multiple ODOO apps, external services, and
|
||||||
|
communication channels.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Why Host with ODOO4projects?</h2>
|
||||||
|
<p>
|
||||||
|
Running AI agents alongside ODOO requires reliable,
|
||||||
|
scalable infrastructure. Our hosting platform offers:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong>Dedicated resources</strong> — no noisy
|
||||||
|
neighbors affecting agent response times
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Automated backups</strong> — your agent
|
||||||
|
configurations and data are always protected
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>One-click upgrades</strong> — stay
|
||||||
|
current with ODOO Community releases without manual
|
||||||
|
intervention
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>N8N integration</strong> — pre-configured
|
||||||
|
automation server for agent orchestration
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="cta-box">
|
||||||
|
<h3>Ready to Build Your AI-Powered ODOO?</h3>
|
||||||
|
<p>
|
||||||
|
Start with any ODOO4projects plan and deploy your
|
||||||
|
first AI agent today.
|
||||||
|
</p>
|
||||||
|
<a href="../../index.html#pricing" class="btn btn-primary"
|
||||||
|
>Choose Your Plan</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<div class="post-footer">
|
||||||
|
<a href="../../index.html#blog">← Back to all posts</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script defer src="https://static.odoo4projects.com/agent-odoo4projects/agent.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -31,18 +31,12 @@
|
|||||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
/>
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="../../style.css" />
|
||||||
<style>
|
<style>
|
||||||
* {
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
font-family: Inter, sans-serif;
|
|
||||||
font-size: 1rem;
|
|
||||||
line-height: 1.7;
|
|
||||||
background: #08080c;
|
|
||||||
color: #e8e8f0;
|
|
||||||
}
|
|
||||||
.container {
|
.container {
|
||||||
width: 80%;
|
width: 80%;
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
@@ -56,10 +50,10 @@
|
|||||||
}
|
}
|
||||||
.blog-header {
|
.blog-header {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-bottom: 1px solid #1a1a2e;
|
border-bottom: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
.blog-header a {
|
.blog-header a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
}
|
}
|
||||||
@@ -71,10 +65,10 @@
|
|||||||
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
margin: 1.5rem 0 0.5rem;
|
margin: 1.5rem 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-meta {
|
.post-meta {
|
||||||
color: rgba(232, 232, 240, 0.5);
|
color: rgba(33, 37, 41, 0.5);
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
@@ -82,10 +76,12 @@
|
|||||||
font-family: "Inter Tight", sans-serif;
|
font-family: "Inter Tight", sans-serif;
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-content p {
|
.post-content p {
|
||||||
margin: 1rem 0;
|
margin: 1rem 0;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
line-height: 1.7;
|
||||||
}
|
}
|
||||||
.post-content ul,
|
.post-content ul,
|
||||||
.post-content ol {
|
.post-content ol {
|
||||||
@@ -94,70 +90,60 @@
|
|||||||
.post-content li {
|
.post-content li {
|
||||||
margin: 0.5rem 0;
|
margin: 0.5rem 0;
|
||||||
}
|
}
|
||||||
|
.post-content a {
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
.post-content code {
|
.post-content code {
|
||||||
background: #12121c;
|
background: var(--light);
|
||||||
color: #00f5ff;
|
color: var(--dark);
|
||||||
padding: 0.2rem 0.4rem;
|
padding: 0.2rem 0.4rem;
|
||||||
border-radius: 4px;
|
border-radius: var(--radius);
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
|
border: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
.post-content pre {
|
.post-content pre {
|
||||||
background: #12121c;
|
background: var(--light);
|
||||||
color: #00f5ff;
|
color: var(--dark);
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
border-radius: 0.6rem;
|
border-radius: var(--radius);
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
border: 1px solid #1a1a2e;
|
border: 1px solid var(--border);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.pro-tip {
|
.pro-tip {
|
||||||
border-left: 3px solid #00f5ff;
|
border-left: 3px solid var(--primary);
|
||||||
background: #010f20;
|
background: rgba(113, 75, 103, 0.04);
|
||||||
padding: 1rem 1.25rem;
|
padding: 1rem 1.25rem;
|
||||||
margin: 1.5rem 0;
|
margin: 1.5rem 0;
|
||||||
border-radius: 0 0.6rem 0.6rem 0;
|
border-radius: 0 var(--radius) var(--radius) 0;
|
||||||
}
|
}
|
||||||
.pro-tip strong {
|
.pro-tip strong {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
}
|
}
|
||||||
.cta-box {
|
.cta-box {
|
||||||
border: 1px solid rgba(0, 245, 255, 0.2);
|
border: 1px solid var(--border);
|
||||||
background: #12121c;
|
background: #fff;
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
border-radius: 0.6rem;
|
border-radius: var(--radius);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.cta-box h3 {
|
.cta-box h3 {
|
||||||
margin: 0 0 0.5rem;
|
margin: 0 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.cta-box p {
|
.cta-box p {
|
||||||
margin: 0 0 1rem;
|
margin: 0 0 1rem;
|
||||||
color: rgba(232, 232, 240, 0.7);
|
color: rgba(33, 37, 41, 0.7);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.cta-box .btn {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0.6rem 1.5rem;
|
|
||||||
background: #00f5ff;
|
|
||||||
color: #08080c;
|
|
||||||
text-decoration: none;
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 0.85rem;
|
|
||||||
transition: opacity 0.2s;
|
|
||||||
}
|
|
||||||
.cta-box .btn:hover {
|
|
||||||
opacity: 0.85;
|
|
||||||
}
|
|
||||||
.post-footer {
|
.post-footer {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-top: 1px solid #1a1a2e;
|
border-top: 1px solid var(--border);
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
.post-footer a {
|
.post-footer a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.post-footer a:hover {
|
.post-footer a:hover {
|
||||||
@@ -210,7 +196,7 @@ Recommended: Daily at 02:00 UTC, 14-day retention</code></pre>
|
|||||||
<p>
|
<p>
|
||||||
All ODOO4projects plans include automated backups.
|
All ODOO4projects plans include automated backups.
|
||||||
</p>
|
</p>
|
||||||
<a href="../../index.html#pricing" class="btn"
|
<a href="../../index.html#pricing" class="btn btn-primary"
|
||||||
>Choose a Plan</a
|
>Choose a Plan</a
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@@ -220,5 +206,6 @@ Recommended: Daily at 02:00 UTC, 14-day retention</code></pre>
|
|||||||
<a href="../../index.html#blog">← Back to all posts</a>
|
<a href="../../index.html#blog">← Back to all posts</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script defer src="https://static.odoo4projects.com/agent-odoo4projects/agent.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -31,17 +31,19 @@
|
|||||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
/>
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="../../style.css" />
|
||||||
<style>
|
<style>
|
||||||
* {
|
:root {
|
||||||
box-sizing: border-box;
|
--primary: #714b67;
|
||||||
}
|
--secondary: #f0cda8;
|
||||||
body {
|
--dark: #1b1319;
|
||||||
margin: 0;
|
--light: #f6f5f4;
|
||||||
font-family: Inter, sans-serif;
|
--border: #e5e3e0;
|
||||||
font-size: 1rem;
|
--radius: 0.6rem;
|
||||||
line-height: 1.7;
|
|
||||||
background: #08080c;
|
|
||||||
color: #e8e8f0;
|
|
||||||
}
|
}
|
||||||
.container {
|
.container {
|
||||||
width: 80%;
|
width: 80%;
|
||||||
@@ -56,10 +58,10 @@
|
|||||||
}
|
}
|
||||||
.blog-header {
|
.blog-header {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-bottom: 1px solid #1a1a2e;
|
border-bottom: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
.blog-header a {
|
.blog-header a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
}
|
}
|
||||||
@@ -71,10 +73,10 @@
|
|||||||
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
font-size: clamp(1.5rem, 3vw, 2.2rem);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
margin: 1.5rem 0 0.5rem;
|
margin: 1.5rem 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-meta {
|
.post-meta {
|
||||||
color: rgba(232, 232, 240, 0.5);
|
color: rgba(33, 37, 41, 0.5);
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
@@ -82,10 +84,12 @@
|
|||||||
font-family: "Inter Tight", sans-serif;
|
font-family: "Inter Tight", sans-serif;
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.post-content p {
|
.post-content p {
|
||||||
margin: 1rem 0;
|
margin: 1rem 0;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
line-height: 1.7;
|
||||||
}
|
}
|
||||||
.post-content ul,
|
.post-content ul,
|
||||||
.post-content ol {
|
.post-content ol {
|
||||||
@@ -94,54 +98,57 @@
|
|||||||
.post-content li {
|
.post-content li {
|
||||||
margin: 0.5rem 0;
|
margin: 0.5rem 0;
|
||||||
}
|
}
|
||||||
|
.post-content a {
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
.post-content code {
|
.post-content code {
|
||||||
background: #12121c;
|
background: var(--light);
|
||||||
color: #00f5ff;
|
color: var(--dark);
|
||||||
padding: 0.2rem 0.4rem;
|
padding: 0.2rem 0.4rem;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
}
|
}
|
||||||
.post-content pre {
|
.post-content pre {
|
||||||
background: #12121c;
|
background: var(--light);
|
||||||
color: #00f5ff;
|
color: var(--dark);
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
border-radius: 0.6rem;
|
border-radius: var(--radius);
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
border: 1px solid #1a1a2e;
|
border: 1px solid var(--border);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.pro-tip {
|
.pro-tip {
|
||||||
border-left: 3px solid #00f5ff;
|
border-left: 3px solid var(--primary);
|
||||||
background: #010f20;
|
background: rgba(113, 75, 103, 0.04);
|
||||||
padding: 1rem 1.25rem;
|
padding: 1rem 1.25rem;
|
||||||
margin: 1.5rem 0;
|
margin: 1.5rem 0;
|
||||||
border-radius: 0 0.6rem 0.6rem 0;
|
border-radius: 0 0.6rem 0.6rem 0;
|
||||||
}
|
}
|
||||||
.pro-tip strong {
|
.pro-tip strong {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
}
|
}
|
||||||
.cta-box {
|
.cta-box {
|
||||||
border: 1px solid rgba(0, 245, 255, 0.2);
|
border: 1px solid var(--border);
|
||||||
background: #12121c;
|
background: #fff;
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
border-radius: 0.6rem;
|
border-radius: var(--radius);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.cta-box h3 {
|
.cta-box h3 {
|
||||||
margin: 0 0 0.5rem;
|
margin: 0 0 0.5rem;
|
||||||
color: #e8e8f0;
|
color: var(--dark);
|
||||||
}
|
}
|
||||||
.cta-box p {
|
.cta-box p {
|
||||||
margin: 0 0 1rem;
|
margin: 0 0 1rem;
|
||||||
color: rgba(232, 232, 240, 0.7);
|
color: rgba(33, 37, 41, 0.7);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
.cta-box .btn {
|
.cta-box .btn {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0.6rem 1.5rem;
|
padding: 0.6rem 1.5rem;
|
||||||
background: #00f5ff;
|
background: var(--primary);
|
||||||
color: #08080c;
|
color: #fff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -153,11 +160,11 @@
|
|||||||
}
|
}
|
||||||
.post-footer {
|
.post-footer {
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
border-top: 1px solid #1a1a2e;
|
border-top: 1px solid var(--border);
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
.post-footer a {
|
.post-footer a {
|
||||||
color: #00f5ff;
|
color: var(--primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.post-footer a:hover {
|
.post-footer a:hover {
|
||||||
@@ -184,11 +191,7 @@
|
|||||||
<h2>Step 1: Choose a Plan</h2>
|
<h2>Step 1: Choose a Plan</h2>
|
||||||
<p>
|
<p>
|
||||||
Visit our
|
Visit our
|
||||||
<a
|
<a href="../../index.html#pricing">pricing page</a>
|
||||||
href="../../index.html#pricing"
|
|
||||||
style="color: #00f5ff"
|
|
||||||
>pricing page</a
|
|
||||||
>
|
|
||||||
and select the plan that fits your needs. For testing,
|
and select the plan that fits your needs. For testing,
|
||||||
Side Hustle is perfect. For production, go with On the
|
Side Hustle is perfect. For production, go with On the
|
||||||
Rise or Powerhouse.
|
Rise or Powerhouse.
|
||||||
@@ -223,7 +226,7 @@ Password: (check your email)</code></pre>
|
|||||||
From zero to live in under 5 minutes — no
|
From zero to live in under 5 minutes — no
|
||||||
credit card required to start.
|
credit card required to start.
|
||||||
</p>
|
</p>
|
||||||
<a href="../../index.html#pricing" class="btn"
|
<a href="../../index.html#pricing" class="btn btn-primary"
|
||||||
>Choose Your Plan</a
|
>Choose Your Plan</a
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@@ -233,5 +236,6 @@ Password: (check your email)</code></pre>
|
|||||||
<a href="../../index.html#blog">← Back to all posts</a>
|
<a href="../../index.html#blog">← Back to all posts</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<script defer src="https://static.odoo4projects.com/agent-odoo4projects/agent.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
@@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="Layer_1"
|
||||||
|
x="0px"
|
||||||
|
y="0px"
|
||||||
|
viewBox="0 0 671.21002 172.39999"
|
||||||
|
xml:space="preserve"
|
||||||
|
sodipodi:docname="logo-01.svg"
|
||||||
|
width="671.21002"
|
||||||
|
height="172.39999"
|
||||||
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
||||||
|
id="defs47" /><sodipodi:namedview
|
||||||
|
id="namedview45"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.86041667"
|
||||||
|
inkscape:cx="335.30266"
|
||||||
|
inkscape:cy="86.004843"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1007"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="37"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="Layer_1" />
|
||||||
|
<style
|
||||||
|
type="text/css"
|
||||||
|
id="style2">
|
||||||
|
.st0{fill:#68696D;}
|
||||||
|
.st1{fill:#ED703E;}
|
||||||
|
</style>
|
||||||
|
<g
|
||||||
|
id="g42"
|
||||||
|
transform="translate(-144.4,-393.8)">
|
||||||
|
<g
|
||||||
|
id="g8">
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 427.65,509.26 c -9.27,-5.19 -16.61,-12.39 -22.02,-21.6 -5.42,-9.21 -8.12,-19.62 -8.12,-31.23 0,-11.61 2.71,-22.02 8.12,-31.23 5.41,-9.21 12.75,-16.38 22.02,-21.52 9.26,-5.13 19.42,-7.7 30.47,-7.7 11.16,0 21.35,2.57 30.56,7.7 9.21,5.14 16.49,12.31 21.85,21.52 5.36,9.21 8.04,19.62 8.04,31.23 0,11.61 -2.68,22.02 -8.04,31.23 -5.36,9.21 -12.67,16.41 -21.93,21.6 -9.27,5.19 -19.42,7.79 -30.47,7.79 -11.06,-0.01 -21.22,-2.6 -30.48,-7.79 z m 50.31,-30.9 c 4.86,-5.47 7.28,-12.78 7.28,-21.93 0,-9.38 -2.43,-16.77 -7.28,-22.19 -4.86,-5.41 -11.47,-8.12 -19.84,-8.12 -8.48,0 -15.13,2.71 -19.93,8.12 -4.8,5.42 -7.2,12.81 -7.2,22.19 0,9.27 2.4,16.61 7.2,22.02 4.8,5.42 11.44,8.12 19.93,8.12 8.37,0 14.99,-2.74 19.84,-8.21 z"
|
||||||
|
id="path4" />
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 528.4,509.26 c -9.27,-5.19 -16.61,-12.39 -22.02,-21.6 -5.42,-9.21 -8.12,-19.62 -8.12,-31.23 0,-11.61 2.71,-22.02 8.12,-31.23 5.41,-9.21 12.75,-16.38 22.02,-21.52 9.26,-5.13 19.42,-7.7 30.47,-7.7 11.16,0 21.35,2.57 30.56,7.7 9.21,5.14 16.49,12.31 21.85,21.52 5.36,9.21 8.04,19.62 8.04,31.23 0,11.61 -2.68,22.02 -8.04,31.23 -5.36,9.21 -12.67,16.41 -21.93,21.6 -9.27,5.19 -19.42,7.79 -30.47,7.79 -11.05,-0.01 -21.21,-2.6 -30.48,-7.79 z m 50.32,-30.9 c 4.86,-5.47 7.28,-12.78 7.28,-21.93 0,-9.38 -2.43,-16.77 -7.28,-22.19 -4.86,-5.41 -11.47,-8.12 -19.84,-8.12 -8.48,0 -15.13,2.71 -19.93,8.12 -4.8,5.42 -7.2,12.81 -7.2,22.19 0,9.27 2.4,16.61 7.2,22.02 4.8,5.42 11.44,8.12 19.93,8.12 8.37,0 14.98,-2.74 19.84,-8.21 z"
|
||||||
|
id="path6" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="M 260.51,423.82 C 255,414.35 247.52,407 238.07,401.72 c -9.47,-5.28 -19.93,-7.92 -31.39,-7.92 -11.35,0 -21.79,2.64 -31.32,7.92 -9.52,5.28 -17.05,12.64 -22.62,22.1 -5.57,9.47 -8.34,20.16 -8.34,32.08 0,11.94 2.77,22.63 8.34,32.08 5.56,9.47 13.09,16.86 22.62,22.19 9.52,5.33 19.96,8 31.32,8 11.35,0 21.78,-2.67 31.3,-8 9.52,-5.33 17.03,-12.73 22.54,-22.19 5.51,-9.45 8.26,-20.14 8.26,-32.08 -0.01,-11.92 -2.77,-22.61 -8.27,-32.08 z m -33.46,54.62 c -4.99,5.62 -11.79,8.44 -20.38,8.44 -8.72,0 -15.54,-2.78 -20.48,-8.34 -4.93,-5.56 -7.39,-13.11 -7.39,-22.63 0,-9.63 2.46,-17.23 7.39,-22.79 4.93,-5.56 11.75,-8.34 20.48,-8.34 8.6,0 15.39,2.78 20.38,8.34 4.99,5.56 7.47,13.16 7.47,22.79 0.01,9.4 -2.48,16.91 -7.47,22.53 z"
|
||||||
|
id="path10" />
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 381.04,424.95 c -5.15,-9.18 -12.52,-16.32 -22.1,-21.41 -9.58,-5.1 -20.73,-7.66 -33.46,-7.66 h -48 v 121.28 h 48 c 12.61,0 23.7,-2.61 33.28,-7.83 9.58,-5.22 16.97,-12.41 22.19,-21.59 5.22,-9.18 7.83,-19.62 7.83,-31.31 0.01,-11.82 -2.58,-22.31 -7.74,-31.48 z m -34.92,54.35 c -5.62,5.39 -13.36,8.09 -23.22,8.09 h -11.7 v -62.27 h 11.7 c 9.87,0 17.6,2.72 23.22,8.17 5.62,5.45 8.44,13.16 8.44,23.13 -0.01,9.87 -2.82,17.49 -8.44,22.88 z"
|
||||||
|
id="path12" />
|
||||||
|
<g
|
||||||
|
id="g22">
|
||||||
|
<polygon
|
||||||
|
class="st1"
|
||||||
|
points="742.83,486.53 713.07,486.53 750.82,441.47 "
|
||||||
|
id="polygon14" />
|
||||||
|
<polygon
|
||||||
|
class="st1"
|
||||||
|
points="669.3,488.25 663.26,523.19 733.12,523.19 725.6,566.2 643.2,566.2 643.2,393.8 752.1,393.8 "
|
||||||
|
id="polygon16" />
|
||||||
|
<polygon
|
||||||
|
class="st1"
|
||||||
|
points="782.29,486.53 798.47,393.8 815.61,393.8 815.61,486.53 "
|
||||||
|
id="polygon18" />
|
||||||
|
<polygon
|
||||||
|
class="st1"
|
||||||
|
points="815.61,566.2 767.94,566.2 775.83,523.19 815.61,523.19 "
|
||||||
|
id="polygon20" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g40">
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 162.99,549.74 c -1.81,1.75 -4.58,2.63 -8.3,2.63 h -6.13 v 13.31 H 144.4 V 533.8 h 10.29 c 3.6,0 6.34,0.87 8.21,2.61 1.87,1.74 2.81,3.98 2.81,6.72 0,2.65 -0.91,4.85 -2.72,6.61 z m -3.18,-2.31 c 1.1,-1.01 1.65,-2.44 1.65,-4.3 0,-3.93 -2.26,-5.9 -6.77,-5.9 h -6.13 v 11.71 h 6.13 c 2.31,0 4.02,-0.51 5.12,-1.51 z"
|
||||||
|
id="path24" />
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 224.26,565.68 -7.59,-13.04 h -5.03 v 13.04 h -4.16 V 533.8 h 10.29 c 2.41,0 4.44,0.41 6.11,1.23 1.66,0.82 2.9,1.94 3.73,3.34 0.82,1.4 1.23,3 1.23,4.8 0,2.2 -0.63,4.13 -1.9,5.81 -1.27,1.68 -3.16,2.79 -5.7,3.34 l 8.01,13.36 z M 211.64,549.3 h 6.13 c 2.26,0 3.95,-0.56 5.08,-1.67 1.13,-1.11 1.69,-2.6 1.69,-4.46 0,-1.89 -0.56,-3.35 -1.67,-4.39 -1.11,-1.04 -2.81,-1.56 -5.1,-1.56 h -6.13 z"
|
||||||
|
id="path26" />
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 278.24,563.92 c -2.44,-1.39 -4.37,-3.32 -5.79,-5.81 -1.42,-2.49 -2.13,-5.28 -2.13,-8.39 0,-3.11 0.71,-5.91 2.13,-8.39 1.42,-2.49 3.35,-4.42 5.79,-5.81 2.44,-1.39 5.14,-2.08 8.1,-2.08 2.99,0 5.7,0.69 8.14,2.08 2.44,1.39 4.36,3.32 5.76,5.79 1.4,2.47 2.1,5.28 2.1,8.42 0,3.14 -0.7,5.95 -2.1,8.42 -1.4,2.47 -3.32,4.4 -5.76,5.79 -2.44,1.39 -5.15,2.08 -8.14,2.08 -2.96,-0.02 -5.66,-0.71 -8.1,-2.1 z m 14.12,-3.09 c 1.78,-1.04 3.19,-2.52 4.21,-4.44 1.02,-1.92 1.53,-4.15 1.53,-6.68 0,-2.56 -0.51,-4.8 -1.53,-6.7 -1.02,-1.91 -2.42,-3.38 -4.19,-4.41 -1.77,-1.04 -3.78,-1.56 -6.04,-1.56 -2.26,0 -4.27,0.52 -6.04,1.56 -1.77,1.04 -3.16,2.51 -4.19,4.41 -1.02,1.91 -1.53,4.14 -1.53,6.7 0,2.53 0.51,4.76 1.53,6.68 1.02,1.92 2.42,3.4 4.21,4.44 1.78,1.04 3.79,1.56 6.02,1.56 2.23,-0.01 4.23,-0.52 6.02,-1.56 z"
|
||||||
|
id="path28" />
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 360.5,533.79 v 23.56 c 0,2.62 -0.81,4.72 -2.42,6.29 -1.62,1.57 -3.75,2.36 -6.4,2.36 -2.68,0 -4.83,-0.8 -6.45,-2.4 -1.62,-1.6 -2.42,-3.79 -2.42,-6.56 h 4.16 c 0.03,1.56 0.43,2.82 1.21,3.8 0.78,0.98 1.94,1.46 3.5,1.46 1.56,0 2.71,-0.46 3.48,-1.39 0.76,-0.93 1.14,-2.11 1.14,-3.55 V 533.8 h 4.2 z"
|
||||||
|
id="path30" />
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 409.44,537.18 v 10.66 h 11.62 v 3.43 h -11.62 v 10.98 h 12.99 v 3.43 h -17.15 v -31.93 h 17.15 v 3.43 z"
|
||||||
|
id="path32" />
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 465.89,541.32 c 1.4,-2.49 3.32,-4.43 5.74,-5.83 2.42,-1.4 5.12,-2.1 8.07,-2.1 3.48,0 6.51,0.84 9.1,2.52 2.59,1.68 4.48,4.06 5.67,7.14 h -4.99 c -0.89,-1.92 -2.16,-3.4 -3.82,-4.44 -1.66,-1.04 -3.65,-1.56 -5.97,-1.56 -2.23,0 -4.22,0.52 -5.99,1.56 -1.77,1.04 -3.16,2.51 -4.16,4.41 -1.01,1.91 -1.51,4.14 -1.51,6.7 0,2.53 0.5,4.75 1.51,6.66 1.01,1.91 2.39,3.38 4.16,4.41 1.77,1.04 3.77,1.56 5.99,1.56 2.32,0 4.31,-0.51 5.97,-1.53 1.66,-1.02 2.93,-2.49 3.82,-4.41 h 4.99 c -1.19,3.05 -3.08,5.41 -5.67,7.07 -2.59,1.66 -5.63,2.49 -9.1,2.49 -2.96,0 -5.65,-0.69 -8.07,-2.08 -2.42,-1.39 -4.34,-3.32 -5.74,-5.79 -1.4,-2.47 -2.1,-5.26 -2.1,-8.37 0,-3.11 0.7,-5.92 2.1,-8.41 z"
|
||||||
|
id="path34" />
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 556.88,533.79 v 3.38 h -8.69 v 28.5 h -4.16 v -28.5 h -8.74 v -3.38 z"
|
||||||
|
id="path36" />
|
||||||
|
<path
|
||||||
|
class="st0"
|
||||||
|
d="m 603.06,564.88 c -1.66,-0.75 -2.97,-1.78 -3.91,-3.11 -0.95,-1.33 -1.43,-2.86 -1.46,-4.6 h 4.44 c 0.15,1.49 0.77,2.75 1.85,3.77 1.08,1.02 2.66,1.53 4.73,1.53 1.98,0 3.55,-0.49 4.69,-1.49 1.14,-0.99 1.72,-2.26 1.72,-3.82 0,-1.22 -0.34,-2.21 -1.01,-2.97 -0.67,-0.76 -1.51,-1.34 -2.52,-1.74 -1.01,-0.4 -2.36,-0.82 -4.07,-1.28 -2.1,-0.55 -3.79,-1.1 -5.06,-1.65 -1.27,-0.55 -2.35,-1.41 -3.25,-2.59 -0.9,-1.17 -1.35,-2.75 -1.35,-4.73 0,-1.74 0.44,-3.28 1.33,-4.62 0.88,-1.34 2.13,-2.38 3.73,-3.11 1.6,-0.73 3.44,-1.1 5.51,-1.1 2.99,0 5.44,0.75 7.34,2.24 1.91,1.5 2.98,3.48 3.22,5.95 h -4.57 c -0.15,-1.22 -0.79,-2.29 -1.92,-3.23 -1.13,-0.93 -2.62,-1.39 -4.48,-1.39 -1.74,0 -3.16,0.45 -4.25,1.35 -1.1,0.9 -1.65,2.16 -1.65,3.77 0,1.16 0.33,2.11 0.98,2.84 0.66,0.73 1.46,1.29 2.42,1.67 0.96,0.38 2.31,0.82 4.05,1.3 2.1,0.58 3.8,1.15 5.08,1.72 1.28,0.57 2.38,1.43 3.29,2.61 0.91,1.17 1.37,2.77 1.37,4.78 0,1.56 -0.41,3.02 -1.24,4.39 -0.83,1.37 -2.04,2.49 -3.66,3.34 -1.62,0.85 -3.52,1.28 -5.72,1.28 -2.08,0.01 -3.97,-0.36 -5.63,-1.11 z"
|
||||||
|
id="path38" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 98 KiB |
@@ -0,0 +1,7 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200">
|
||||||
|
<rect width="200" height="200" rx="32" fill="#f0cda8" />
|
||||||
|
<circle cx="100" cy="70" r="28" fill="#714b67" opacity="0.3" />
|
||||||
|
<path d="M65 130 Q65 100 100 100 Q135 100 135 130" fill="#714b67" opacity="0.3" />
|
||||||
|
<text x="100" y="155" text-anchor="middle" font-family="Inter Tight, sans-serif" font-size="18" font-weight="700" fill="#1b1319">Your</text>
|
||||||
|
<text x="100" y="177" text-anchor="middle" font-family="Inter Tight, sans-serif" font-size="18" font-weight="700" fill="#1b1319">Company</text>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 593 B |
@@ -0,0 +1,8 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200">
|
||||||
|
<rect width="200" height="200" rx="28" fill="#f6f5f4"/>
|
||||||
|
<rect x="10" y="10" width="180" height="180" rx="24" fill="none" stroke="#e5e3e0" stroke-width="2" stroke-dasharray="6,4"/>
|
||||||
|
<circle cx="100" cy="65" r="24" fill="#714b67" opacity="0.15"/>
|
||||||
|
<path d="M68 115 Q68 90 100 90 Q132 90 132 115" fill="#714b67" opacity="0.15"/>
|
||||||
|
<text x="100" y="148" text-anchor="middle" font-family="Arial, sans-serif" font-size="16" font-weight="700" fill="#714b67">Your</text>
|
||||||
|
<text x="100" y="170" text-anchor="middle" font-family="Arial, sans-serif" font-size="16" font-weight="700" fill="#714b67">Company</text>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 703 B |
@@ -0,0 +1,158 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en-US">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="Legal information for ODOO4projects LLC — company details, contact, image credits, and trademark notices."
|
||||||
|
/>
|
||||||
|
<title>Legal | ODOO4projects</title>
|
||||||
|
<link rel="canonical" href="https://ODOO4projects.com/legal" />
|
||||||
|
<meta property="og:title" content="Legal | ODOO4projects" />
|
||||||
|
<meta property="og:description" content="Legal information for ODOO4projects LLC." />
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:url" content="https://ODOO4projects.com/legal" />
|
||||||
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
|
<link rel="icon" href="images/favicon.ico" />
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="style.css" />
|
||||||
|
<style>
|
||||||
|
.legal-hero {
|
||||||
|
padding: 4rem 0 2.5rem;
|
||||||
|
text-align: center;
|
||||||
|
background: var(--light);
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
.legal-hero h1 {
|
||||||
|
font-size: clamp(1.8rem, 3.2vw, 2.8rem);
|
||||||
|
color: var(--dark);
|
||||||
|
}
|
||||||
|
.legal-section {
|
||||||
|
padding: 3rem 0 4rem;
|
||||||
|
}
|
||||||
|
.legal-section .container {
|
||||||
|
max-width: 700px;
|
||||||
|
}
|
||||||
|
.legal-card {
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: var(--radius-lg);
|
||||||
|
padding: 1.75rem;
|
||||||
|
margin-bottom: 1.25rem;
|
||||||
|
}
|
||||||
|
.legal-card:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.legal-card h2 {
|
||||||
|
font-size: 1.05rem;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--primary);
|
||||||
|
margin-bottom: 0.75rem;
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
.legal-card p,
|
||||||
|
.legal-card .address {
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
font-size: 0.88rem;
|
||||||
|
line-height: 1.7;
|
||||||
|
margin-bottom: 0.4rem;
|
||||||
|
}
|
||||||
|
.legal-card strong {
|
||||||
|
color: var(--dark);
|
||||||
|
}
|
||||||
|
.legal-card .contact-email {
|
||||||
|
color: var(--primary);
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
.image-credits {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.3rem;
|
||||||
|
}
|
||||||
|
.image-credits .credit-row {
|
||||||
|
color: rgba(33, 37, 41, 0.6);
|
||||||
|
font-size: 0.82rem;
|
||||||
|
}
|
||||||
|
.image-credits .credit-row a {
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
|
.trademark-notice {
|
||||||
|
background: rgba(113, 75, 103, 0.04);
|
||||||
|
border: 1px solid rgba(113, 75, 103, 0.15);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
padding: 1rem 1.25rem;
|
||||||
|
}
|
||||||
|
.trademark-notice p {
|
||||||
|
font-size: 0.82rem;
|
||||||
|
margin: 0;
|
||||||
|
color: rgba(33, 37, 41, 0.6);
|
||||||
|
}
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.legal-hero { padding: 2.5rem 0 1.5rem; }
|
||||||
|
.legal-card { padding: 1.25rem; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<div class="blog-header">
|
||||||
|
<a href="index.html">← Back to Home</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<section class="legal-hero">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Legal</h1>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="legal-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="legal-card">
|
||||||
|
<h2>Company Information</h2>
|
||||||
|
<p><strong>ODOO4projects LLC</strong></p>
|
||||||
|
<p class="address">
|
||||||
|
30 N Gould St, STE R, Sheridan<br />
|
||||||
|
WY 82801, USA
|
||||||
|
</p>
|
||||||
|
<p style="margin-top: 0.75rem;">
|
||||||
|
Contact: <span class="contact-email">support@ODOO4projects.com</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="legal-card">
|
||||||
|
<h2>Image Credits</h2>
|
||||||
|
<div class="image-credits">
|
||||||
|
<span class="credit-row"><a href="https://pixabay.com/de/users/rafael_neddermeyer-5342045/" target="_blank" rel="noopener">Rafael_Neddermeyer</a> auf <a href="https://pixabay.com/" target="_blank" rel="noopener">Pixabay</a></span>
|
||||||
|
<span class="credit-row"><a href="https://pixabay.com/de/users/nuno_lopes-27925/" target="_blank" rel="noopener">Nuno Lopes</a> auf <a href="https://pixabay.com/" target="_blank" rel="noopener">Pixabay</a></span>
|
||||||
|
<span class="credit-row"><a href="https://pixabay.com/de/users/liushuquan-600749/" target="_blank" rel="noopener">liushuquan</a> auf <a href="https://pixabay.com/" target="_blank" rel="noopener">Pixabay</a></span>
|
||||||
|
<span class="credit-row">von <a href="https://pixabay.com/de/users/iulian_ursache-17029687/" target="_blank" rel="noopener">Iulian Ursache</a> auf <a href="https://pixabay.com/" target="_blank" rel="noopener">Pixabay</a></span>
|
||||||
|
<span class="credit-row"><a href="https://pixabay.com/de/users/pattyjansen-154933/" target="_blank" rel="noopener">Patty Jansen</a> auf <a href="https://pixabay.com/" target="_blank" rel="noopener">Pixabay</a></span>
|
||||||
|
<span class="credit-row"><a href="https://pixabay.com/de/users/ananddhumal-5250062/" target="_blank" rel="noopener">Anand Dhumal</a> auf <a href="https://pixabay.com/" target="_blank" rel="noopener">Pixabay</a></span>
|
||||||
|
<span class="credit-row"><a href="https://pixabay.com/users/giulivec-7339391/" target="_blank" rel="noopener">Giuliana Vecchi</a> from <a href="https://pixabay.com/" target="_blank" rel="noopener">Pixabay</a></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="legal-card">
|
||||||
|
<h2>Trademark Notice</h2>
|
||||||
|
<div class="trademark-notice">
|
||||||
|
<p>Odoo<sup>®</sup> is a trademark of Odoo S.A. This site is totally independent of Odoo S.A.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<script defer src="https://static.odoo4projects.com/agent-odoo4projects/agent.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
User-agent: *
|
||||||
|
Allow: /
|
||||||
|
Sitemap: https://ODOO4projects.com/sitemap.xml
|
||||||
@@ -0,0 +1,439 @@
|
|||||||
|
var si = 0,
|
||||||
|
slides = document.querySelectorAll(".hero-slide"),
|
||||||
|
dots = document.querySelectorAll(".carousel-dot"),
|
||||||
|
t,
|
||||||
|
dir = 1,
|
||||||
|
autoStop = false,
|
||||||
|
autoInterval = 7000;
|
||||||
|
|
||||||
|
function show(i, direction) {
|
||||||
|
if (direction === undefined) return;
|
||||||
|
var current = slides[si];
|
||||||
|
var next = slides[i];
|
||||||
|
if (direction === 1) {
|
||||||
|
current.style.transform = "translateY(100%)";
|
||||||
|
current.style.opacity = "0";
|
||||||
|
current.style.zIndex = "1";
|
||||||
|
next.style.transform = "translateY(-100%)";
|
||||||
|
next.style.opacity = "0";
|
||||||
|
next.style.zIndex = "1";
|
||||||
|
requestAnimationFrame(function () {
|
||||||
|
next.style.transition =
|
||||||
|
"transform 0.5s ease, opacity 0.5s ease";
|
||||||
|
next.style.transform = "translateY(0)";
|
||||||
|
next.style.opacity = "1";
|
||||||
|
next.style.zIndex = "2";
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
current.style.transform = "translateY(-100%)";
|
||||||
|
current.style.opacity = "0";
|
||||||
|
current.style.zIndex = "1";
|
||||||
|
next.style.transform = "translateY(100%)";
|
||||||
|
next.style.opacity = "0";
|
||||||
|
next.style.zIndex = "1";
|
||||||
|
requestAnimationFrame(function () {
|
||||||
|
next.style.transition =
|
||||||
|
"transform 0.5s ease, opacity 0.5s ease";
|
||||||
|
next.style.transform = "translateY(0)";
|
||||||
|
next.style.opacity = "1";
|
||||||
|
next.style.zIndex = "2";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
for (var j = 0; j < dots.length; j++) {
|
||||||
|
if (j === i) {
|
||||||
|
dots[j].classList.add("active");
|
||||||
|
} else {
|
||||||
|
dots[j].classList.remove("active");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
si = i;
|
||||||
|
}
|
||||||
|
function nextSlide() {
|
||||||
|
show((si + 1) % slides.length, 1);
|
||||||
|
resetTimer();
|
||||||
|
}
|
||||||
|
function prevSlide() {
|
||||||
|
show((si - 1 + slides.length) % slides.length, -1);
|
||||||
|
resetTimer();
|
||||||
|
}
|
||||||
|
function goSlide(i) {
|
||||||
|
autoStop = true;
|
||||||
|
show(i, i > si ? 1 : -1);
|
||||||
|
clearInterval(t);
|
||||||
|
t = null;
|
||||||
|
}
|
||||||
|
function resetTimer() {
|
||||||
|
clearInterval(t);
|
||||||
|
t = setInterval(nextSlide, autoInterval);
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener("load", function () {
|
||||||
|
var o = document.getElementById("spinner");
|
||||||
|
o.classList.add("hidden");
|
||||||
|
setTimeout(function () {
|
||||||
|
o.style.display = "none";
|
||||||
|
}, 500);
|
||||||
|
});
|
||||||
|
setTimeout(function () {
|
||||||
|
var o = document.getElementById("spinner");
|
||||||
|
o.classList.add("hidden");
|
||||||
|
setTimeout(function () {
|
||||||
|
o.style.display = "none";
|
||||||
|
}, 500);
|
||||||
|
}, 3000);
|
||||||
|
t = setInterval(nextSlide, autoInterval);
|
||||||
|
|
||||||
|
for (var s = 0; s < slides.length; s++) {
|
||||||
|
slides[s].addEventListener("click", function () {
|
||||||
|
autoStop = true;
|
||||||
|
clearInterval(t);
|
||||||
|
t = null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
document.querySelectorAll(".tab-btn").forEach(function (b) {
|
||||||
|
b.addEventListener("click", function () {
|
||||||
|
document.querySelectorAll(".tab-btn").forEach(function (x) {
|
||||||
|
x.classList.remove("active");
|
||||||
|
});
|
||||||
|
document
|
||||||
|
.querySelectorAll(".tab-pane")
|
||||||
|
.forEach(function (p) {
|
||||||
|
p.classList.remove("active");
|
||||||
|
});
|
||||||
|
this.classList.add("active");
|
||||||
|
document
|
||||||
|
.getElementById(this.getAttribute("data-t"))
|
||||||
|
.classList.add("active");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
/* ---- Order Widget ---- */
|
||||||
|
var orderPopupShown = false;
|
||||||
|
function openOrderWidget(
|
||||||
|
plan,
|
||||||
|
monthlyPrice,
|
||||||
|
yearlyPrice,
|
||||||
|
isEmpire,
|
||||||
|
) {
|
||||||
|
document.getElementById("orderPanelBuy").style.display =
|
||||||
|
"block";
|
||||||
|
var widget = document.getElementById("orderWidgetOverlay");
|
||||||
|
document.getElementById("orderPlanTitle").textContent = plan;
|
||||||
|
var yearly = yearlyMode;
|
||||||
|
var price = yearly ? yearlyPrice : monthlyPrice;
|
||||||
|
var amountEl = document.getElementById("orderPlanPrice");
|
||||||
|
var prefix = isEmpire ? ">$" : "$";
|
||||||
|
amountEl.textContent = prefix + " " + price.toFixed(2);
|
||||||
|
document.getElementById("orderPlanPeriod").textContent = yearly
|
||||||
|
? "/ year"
|
||||||
|
: "/ month";
|
||||||
|
var couponMsg = document.getElementById("orderCouponMsg");
|
||||||
|
var yearlySave = document.getElementById("orderYearlySave");
|
||||||
|
if (!yearly) {
|
||||||
|
couponMsg.style.display = "block";
|
||||||
|
yearlySave.style.display = "none";
|
||||||
|
} else {
|
||||||
|
couponMsg.style.display = "none";
|
||||||
|
yearlySave.style.display = "block";
|
||||||
|
var saved = Math.round(
|
||||||
|
(1 - yearlyPrice / (monthlyPrice * 12)) * 100,
|
||||||
|
);
|
||||||
|
document.getElementById("orderSavePercent").textContent =
|
||||||
|
saved;
|
||||||
|
}
|
||||||
|
var buyBtn = document.getElementById("orderBuyBtn");
|
||||||
|
var loc = document.getElementById("orderServerLocation").value;
|
||||||
|
buyBtn.href =
|
||||||
|
"/3/" +
|
||||||
|
price.toFixed(2) +
|
||||||
|
"/4/" +
|
||||||
|
encodeURIComponent(plan) +
|
||||||
|
"?location=" +
|
||||||
|
encodeURIComponent(loc);
|
||||||
|
widget.style.display = "flex";
|
||||||
|
orderPopupShown = true;
|
||||||
|
}
|
||||||
|
function closeOrderWidget() {
|
||||||
|
document.getElementById("orderWidgetOverlay").style.display =
|
||||||
|
"none";
|
||||||
|
}
|
||||||
|
document
|
||||||
|
.getElementById("orderServerLocation")
|
||||||
|
.addEventListener("change", function () {
|
||||||
|
var plan =
|
||||||
|
document.getElementById("orderPlanTitle").textContent;
|
||||||
|
var priceText = document
|
||||||
|
.getElementById("orderPlanPrice")
|
||||||
|
.textContent.replace(">$", "")
|
||||||
|
.replace("$", "")
|
||||||
|
.trim();
|
||||||
|
var price = parseFloat(priceText);
|
||||||
|
var loc = this.value;
|
||||||
|
document.getElementById("orderBuyBtn").href =
|
||||||
|
"/3/" +
|
||||||
|
price.toFixed(2) +
|
||||||
|
"/4/" +
|
||||||
|
encodeURIComponent(plan) +
|
||||||
|
"?location=" +
|
||||||
|
encodeURIComponent(loc);
|
||||||
|
});
|
||||||
|
function applyCoupon() {
|
||||||
|
var input = document.getElementById("orderCouponInput");
|
||||||
|
var status = document.getElementById("orderCouponStatus");
|
||||||
|
var code = input.value.trim();
|
||||||
|
if (code.toLowerCase() === "free trial") {
|
||||||
|
status.textContent =
|
||||||
|
"\u2713 Coupon FREE TRIAL applied - 1 month free";
|
||||||
|
status.style.color = "#28a745";
|
||||||
|
} else {
|
||||||
|
status.textContent = "Invalid coupon code";
|
||||||
|
status.style.color = "#dc3545";
|
||||||
|
}
|
||||||
|
status.style.display = "block";
|
||||||
|
}
|
||||||
|
/* ---- Billing Toggle ---- */
|
||||||
|
var yearlyMode = false;
|
||||||
|
var biSwitch = document.getElementById("billingSwitch");
|
||||||
|
var labels = document.querySelectorAll(".toggle-label");
|
||||||
|
var monthlyLabel = document.querySelector(".toggle-label-monthly");
|
||||||
|
var yearlyLabel = document.querySelector(".toggle-label-yearly");
|
||||||
|
|
||||||
|
function updatePrices(yearly) {
|
||||||
|
var amounts = document.querySelectorAll(".price-amount");
|
||||||
|
for (var k = 0; k < amounts.length; k++) {
|
||||||
|
var el = amounts[k];
|
||||||
|
var val = yearly
|
||||||
|
? el.getAttribute("data-yearly")
|
||||||
|
: el.getAttribute("data-monthly");
|
||||||
|
var prefix =
|
||||||
|
el.textContent.trim().charAt(0) === ">" ? ">" : "";
|
||||||
|
el.textContent = prefix + "$ " + parseFloat(val).toFixed(2);
|
||||||
|
}
|
||||||
|
var periods = document.querySelectorAll(".price-period");
|
||||||
|
for (var k = 0; k < periods.length; k++) {
|
||||||
|
periods[k].textContent = yearly ? "/ year" : "/ month";
|
||||||
|
}
|
||||||
|
var saves = document.querySelectorAll(".price-save");
|
||||||
|
for (var k = 0; k < saves.length; k++) {
|
||||||
|
var s = saves[k];
|
||||||
|
if (yearly) {
|
||||||
|
s.style.display = "block";
|
||||||
|
s.textContent = s.getAttribute("data-yearly-text");
|
||||||
|
} else {
|
||||||
|
s.style.display = "block";
|
||||||
|
s.textContent = s.getAttribute("data-monthly-text");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var ctaNote = document.getElementById("pricingCtaNote");
|
||||||
|
if (ctaNote) {
|
||||||
|
ctaNote.innerHTML = yearly
|
||||||
|
? "Save money, less administration"
|
||||||
|
: "Perfect for trial, termination any time";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setBilling(yearly) {
|
||||||
|
yearlyMode = yearly;
|
||||||
|
if (yearly) {
|
||||||
|
biSwitch.classList.add("yearly");
|
||||||
|
monthlyLabel.classList.remove("active");
|
||||||
|
yearlyLabel.classList.add("active");
|
||||||
|
} else {
|
||||||
|
biSwitch.classList.remove("yearly");
|
||||||
|
monthlyLabel.classList.add("active");
|
||||||
|
yearlyLabel.classList.remove("active");
|
||||||
|
}
|
||||||
|
updatePrices(yearly);
|
||||||
|
}
|
||||||
|
|
||||||
|
biSwitch.addEventListener("click", function () {
|
||||||
|
setBilling(!yearlyMode);
|
||||||
|
});
|
||||||
|
monthlyLabel.addEventListener("click", function () {
|
||||||
|
setBilling(false);
|
||||||
|
});
|
||||||
|
yearlyLabel.addEventListener("click", function () {
|
||||||
|
setBilling(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
/* init billing display to monthly */
|
||||||
|
updatePrices(false);
|
||||||
|
|
||||||
|
/* ---- Blog Module ---- */
|
||||||
|
var blogState = {
|
||||||
|
allPosts: [],
|
||||||
|
filteredPosts: [],
|
||||||
|
currentPage: 1,
|
||||||
|
perPage: 6,
|
||||||
|
searchTerm: "",
|
||||||
|
};
|
||||||
|
|
||||||
|
function formatDate(dateStr) {
|
||||||
|
var d = new Date(dateStr + "T00:00:00Z");
|
||||||
|
var months = [
|
||||||
|
"Jan",
|
||||||
|
"Feb",
|
||||||
|
"Mar",
|
||||||
|
"Apr",
|
||||||
|
"May",
|
||||||
|
"Jun",
|
||||||
|
"Jul",
|
||||||
|
"Aug",
|
||||||
|
"Sep",
|
||||||
|
"Oct",
|
||||||
|
"Nov",
|
||||||
|
"Dec",
|
||||||
|
];
|
||||||
|
return (
|
||||||
|
months[d.getUTCMonth()] +
|
||||||
|
" " +
|
||||||
|
d.getUTCDate() +
|
||||||
|
", " +
|
||||||
|
d.getUTCFullYear()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function badgeClass(area) {
|
||||||
|
var m = {
|
||||||
|
"speed-run": "speed-run",
|
||||||
|
guide: "guide",
|
||||||
|
howto: "howto",
|
||||||
|
news: "news",
|
||||||
|
};
|
||||||
|
return m[area] || "default";
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderBlog() {
|
||||||
|
var grid = document.getElementById("blogGrid");
|
||||||
|
var search = (blogState.searchTerm || "").toLowerCase();
|
||||||
|
blogState.filteredPosts = blogState.allPosts.filter(
|
||||||
|
function (p) {
|
||||||
|
if (!search) return true;
|
||||||
|
return (
|
||||||
|
(p.headline + " " + p.teaser)
|
||||||
|
.toLowerCase()
|
||||||
|
.indexOf(search) !== -1
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
var total = blogState.filteredPosts.length;
|
||||||
|
var totalPages = Math.max(
|
||||||
|
1,
|
||||||
|
Math.ceil(total / blogState.perPage),
|
||||||
|
);
|
||||||
|
if (blogState.currentPage > totalPages)
|
||||||
|
blogState.currentPage = totalPages;
|
||||||
|
var start = (blogState.currentPage - 1) * blogState.perPage;
|
||||||
|
var pagePosts = blogState.filteredPosts.slice(
|
||||||
|
start,
|
||||||
|
start + blogState.perPage,
|
||||||
|
);
|
||||||
|
|
||||||
|
var html = "";
|
||||||
|
if (pagePosts.length === 0) {
|
||||||
|
html =
|
||||||
|
'<div class="blog-empty">No posts match your search.</div>';
|
||||||
|
} else {
|
||||||
|
for (var i = 0; i < pagePosts.length; i++) {
|
||||||
|
var p = pagePosts[i];
|
||||||
|
var bc = badgeClass(p.area);
|
||||||
|
var agentHtml = "";
|
||||||
|
if (p.agent)
|
||||||
|
agentHtml =
|
||||||
|
'<span class="blog-agent">' +
|
||||||
|
p.agent +
|
||||||
|
"</span>";
|
||||||
|
html +=
|
||||||
|
'<div class="blog-card">' +
|
||||||
|
'<div class="blog-card-top">' +
|
||||||
|
'<span class="blog-badge blog-badge-' +
|
||||||
|
bc +
|
||||||
|
'">' +
|
||||||
|
p.area +
|
||||||
|
"</span>" +
|
||||||
|
agentHtml +
|
||||||
|
"</div>" +
|
||||||
|
'<div class="blog-date">' +
|
||||||
|
formatDate(p.date) +
|
||||||
|
"</div>" +
|
||||||
|
'<h3><a href="' +
|
||||||
|
p.link +
|
||||||
|
'">' +
|
||||||
|
p.headline +
|
||||||
|
"</a></h3>" +
|
||||||
|
'<p class="blog-teaser">' +
|
||||||
|
p.teaser +
|
||||||
|
"</p>" +
|
||||||
|
'<a href="' +
|
||||||
|
p.link +
|
||||||
|
'" class="blog-readmore">Read more →</a>' +
|
||||||
|
"</div>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
grid.innerHTML = html;
|
||||||
|
|
||||||
|
var pag = document.getElementById("blogPagination");
|
||||||
|
var pagHtml = "";
|
||||||
|
if (totalPages > 1) {
|
||||||
|
pagHtml +=
|
||||||
|
'<button class="blog-page-btn" onclick="blogGo(1)"' +
|
||||||
|
(blogState.currentPage <= 1 ? ' disabled"' : '"') +
|
||||||
|
">«</button>";
|
||||||
|
pagHtml +=
|
||||||
|
'<button class="blog-page-btn" onclick="blogGo(' +
|
||||||
|
(blogState.currentPage - 1) +
|
||||||
|
')"' +
|
||||||
|
(blogState.currentPage <= 1 ? ' disabled"' : '"') +
|
||||||
|
">‹ Prev</button>";
|
||||||
|
pagHtml +=
|
||||||
|
'<span class="blog-page-info">Page ' +
|
||||||
|
blogState.currentPage +
|
||||||
|
" of " +
|
||||||
|
totalPages +
|
||||||
|
"</span>";
|
||||||
|
pagHtml +=
|
||||||
|
'<button class="blog-page-btn" onclick="blogGo(' +
|
||||||
|
(blogState.currentPage + 1) +
|
||||||
|
')"' +
|
||||||
|
(blogState.currentPage >= totalPages
|
||||||
|
? ' disabled"'
|
||||||
|
: '"') +
|
||||||
|
">Next ›</button>";
|
||||||
|
pagHtml +=
|
||||||
|
'<button class="blog-page-btn" onclick="blogGo(' +
|
||||||
|
totalPages +
|
||||||
|
')"' +
|
||||||
|
(blogState.currentPage >= totalPages
|
||||||
|
? ' disabled"'
|
||||||
|
: '"') +
|
||||||
|
">»</button>";
|
||||||
|
}
|
||||||
|
pag.innerHTML = pagHtml;
|
||||||
|
}
|
||||||
|
|
||||||
|
function blogGo(page) {
|
||||||
|
blogState.currentPage = page;
|
||||||
|
renderBlog();
|
||||||
|
}
|
||||||
|
|
||||||
|
fetch("blog/index.json?_=" + Date.now())
|
||||||
|
.then(function (r) {
|
||||||
|
return r.json();
|
||||||
|
})
|
||||||
|
.then(function (data) {
|
||||||
|
blogState.allPosts = data.posts;
|
||||||
|
renderBlog();
|
||||||
|
})
|
||||||
|
.catch(function () {
|
||||||
|
document.getElementById("blogGrid").innerHTML =
|
||||||
|
'<div class="blog-empty">Could not load blog posts.</div>';
|
||||||
|
});
|
||||||
|
|
||||||
|
document
|
||||||
|
.getElementById("blogSearch")
|
||||||
|
.addEventListener("input", function () {
|
||||||
|
blogState.searchTerm = this.value;
|
||||||
|
blogState.currentPage = 1;
|
||||||
|
renderBlog();
|
||||||
|
});
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
<url>
|
||||||
|
<loc>https://ODOO4projects.com/</loc>
|
||||||
|
<lastmod>2026-06-24</lastmod>
|
||||||
|
<changefreq>weekly</changefreq>
|
||||||
|
<priority>1.0</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://ODOO4projects.com/blog/posts/news-platform-update.html</loc>
|
||||||
|
<lastmod>2026-06-24</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://ODOO4projects.com/blog/posts/guide-migrate-enterprise.html</loc>
|
||||||
|
<lastmod>2026-06-20</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://ODOO4projects.com/blog/posts/howto-custom-module.html</loc>
|
||||||
|
<lastmod>2026-06-17</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://ODOO4projects.com/blog/posts/news-official-partner.html</loc>
|
||||||
|
<lastmod>2026-06-14</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://ODOO4projects.com/blog/posts/speed-run-backup.html</loc>
|
||||||
|
<lastmod>2026-06-10</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://ODOO4projects.com/blog/posts/howto-ai-automation.html</loc>
|
||||||
|
<lastmod>2026-06-06</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://ODOO4projects.com/blog/posts/speed-run-deploy.html</loc>
|
||||||
|
<lastmod>2026-06-02</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://ODOO4projects.com/blog/posts/my-first-post.html</loc>
|
||||||
|
<lastmod>2026-05-28</lastmod>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
</urlset>
|
||||||
@@ -0,0 +1,999 @@
|
|||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: Inter, sans-serif;
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #212529;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3 {
|
||||||
|
font-family:
|
||||||
|
Inter Tight,
|
||||||
|
sans-serif;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.25;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: clamp(1.8rem, 3.2vw, 2.8rem);
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: clamp(1.4rem, 2.56vw, 2rem);
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-size: clamp(1.1rem, 2vw, 1.4rem);
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #65435c;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--primary: #714b67;
|
||||||
|
--secondary: #f0cda8;
|
||||||
|
--dark: #1b1319;
|
||||||
|
--light: #f6f5f4;
|
||||||
|
--border: #e5e3e0;
|
||||||
|
--radius: 0.6rem;
|
||||||
|
--radius-lg: 1rem;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
width: 80%;
|
||||||
|
padding: 0 20px;
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 1300px;
|
||||||
|
}
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.container {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.row {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin: 0 -15px;
|
||||||
|
}
|
||||||
|
.col-lg-5 {
|
||||||
|
flex: 0 0 41.666%;
|
||||||
|
max-width: 41.666%;
|
||||||
|
padding: 0 15px;
|
||||||
|
}
|
||||||
|
.col-lg-6 {
|
||||||
|
flex: 0 0 50%;
|
||||||
|
max-width: 50%;
|
||||||
|
padding: 0 15px;
|
||||||
|
}
|
||||||
|
.col-lg-10 {
|
||||||
|
flex: 0 0 83.333%;
|
||||||
|
max-width: 83.333%;
|
||||||
|
padding: 0 15px;
|
||||||
|
}
|
||||||
|
.offset-lg-1 {
|
||||||
|
margin-left: 8.333%;
|
||||||
|
}
|
||||||
|
.offset-lg-6 {
|
||||||
|
margin-left: 50%;
|
||||||
|
}
|
||||||
|
@media (max-width: 992px) {
|
||||||
|
.col-lg-5,
|
||||||
|
.col-lg-6,
|
||||||
|
.col-lg-10 {
|
||||||
|
flex: 0 0 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
.offset-lg-1,
|
||||||
|
.offset-lg-6 {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.text-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.d-none {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
.d-flex {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.align-items-center {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.mb-4 {
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
.mt-3 {
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
.btn {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.6rem 1.5rem;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
font-weight: 500;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: all 0.2s;
|
||||||
|
}
|
||||||
|
.btn-primary {
|
||||||
|
color: #fff;
|
||||||
|
background: var(--primary);
|
||||||
|
border-color: var(--primary);
|
||||||
|
}
|
||||||
|
.btn-primary:hover {
|
||||||
|
background: #5e3f55;
|
||||||
|
border-color: #5e3f55;
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
.btn-outline-primary {
|
||||||
|
color: #65435c;
|
||||||
|
border-color: #65435c;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.btn-outline-primary:hover {
|
||||||
|
color: #fff;
|
||||||
|
background: #65435c;
|
||||||
|
border-color: #65435c;
|
||||||
|
}
|
||||||
|
.btn-lg {
|
||||||
|
padding: 0.75rem 2rem;
|
||||||
|
font-size: 1rem;
|
||||||
|
border-radius: 2rem;
|
||||||
|
}
|
||||||
|
.hr {
|
||||||
|
width: 3.5rem;
|
||||||
|
height: 3px;
|
||||||
|
background: linear-gradient(90deg, var(--primary), var(--secondary));
|
||||||
|
border-radius: 2px;
|
||||||
|
margin: 0 auto 1rem;
|
||||||
|
}
|
||||||
|
.hero-carousel {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
min-height: 400px;
|
||||||
|
}
|
||||||
|
.hero-slide {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
min-height: 400px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
transform: translateY(-100%);
|
||||||
|
opacity: 0;
|
||||||
|
transition:
|
||||||
|
transform 0.5s ease,
|
||||||
|
opacity 0.5s ease;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.hero-slide.active {
|
||||||
|
transform: translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
.hero-slide.prev {
|
||||||
|
transform: translateY(100%);
|
||||||
|
opacity: 0;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.hero-slide::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
.hero-box {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
padding: 1.5rem;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
background: rgba(27, 19, 25, 0.75);
|
||||||
|
color: #fff;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||||
|
}
|
||||||
|
.hero-box h2 {
|
||||||
|
color: #fff;
|
||||||
|
font-size: clamp(1rem, 2.2vw, 1.4rem);
|
||||||
|
margin-bottom: 0.3rem;
|
||||||
|
}
|
||||||
|
.hero-box p {
|
||||||
|
color: rgba(255, 255, 255, 0.9);
|
||||||
|
font-size: 0.9rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
.carousel-dots {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 1rem;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
.carousel-dot {
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: none;
|
||||||
|
background: rgba(255, 255, 255, 0.35);
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
.carousel-dot.active {
|
||||||
|
background: rgba(255, 255, 255, 0.8);
|
||||||
|
transform: scale(1.2);
|
||||||
|
}
|
||||||
|
.arrow {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
z-index: 3;
|
||||||
|
background: rgba(27, 19, 25, 0.5);
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
width: 2.5rem;
|
||||||
|
height: 2.5rem;
|
||||||
|
border-radius: 50%;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
transition: all 0.2s;
|
||||||
|
}
|
||||||
|
.arrow:hover {
|
||||||
|
background: rgba(27, 19, 25, 0.8);
|
||||||
|
transform: translateY(-50%) scale(1.05);
|
||||||
|
}
|
||||||
|
.arrow.left {
|
||||||
|
left: 1rem;
|
||||||
|
}
|
||||||
|
.arrow.right {
|
||||||
|
right: 1rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.arrow {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.stitle {
|
||||||
|
text-align: center;
|
||||||
|
padding: 2rem 0;
|
||||||
|
}
|
||||||
|
.stitle h1 {
|
||||||
|
font-size: clamp(1.12rem, 2.4vw, 1.6rem);
|
||||||
|
max-width: 720px;
|
||||||
|
margin: 0 auto;
|
||||||
|
color: var(--dark);
|
||||||
|
}
|
||||||
|
.tabs-section {
|
||||||
|
padding: 2rem 0;
|
||||||
|
}
|
||||||
|
.tabs-wrap {
|
||||||
|
display: flex;
|
||||||
|
gap: 2rem;
|
||||||
|
}
|
||||||
|
.tabs-nav {
|
||||||
|
flex: 0 0 220px;
|
||||||
|
max-width: 220px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.25rem;
|
||||||
|
}
|
||||||
|
.tabs-content {
|
||||||
|
flex: 1;
|
||||||
|
min-height: 200px;
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
.tab-btn {
|
||||||
|
display: block;
|
||||||
|
padding: 0.6rem 1rem;
|
||||||
|
color: #212529;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
font-weight: 500;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s;
|
||||||
|
}
|
||||||
|
.tab-btn:hover {
|
||||||
|
background: var(--light);
|
||||||
|
}
|
||||||
|
.tab-btn.active {
|
||||||
|
background: linear-gradient(
|
||||||
|
135deg,
|
||||||
|
rgba(113, 75, 103, 0.08),
|
||||||
|
rgba(113, 75, 103, 0.03)
|
||||||
|
);
|
||||||
|
color: var(--primary);
|
||||||
|
font-weight: 600;
|
||||||
|
border-left: 3px solid var(--primary);
|
||||||
|
}
|
||||||
|
.tab-btn small {
|
||||||
|
display: block;
|
||||||
|
color: rgba(33, 37, 41, 0.55);
|
||||||
|
font-size: 0.72rem;
|
||||||
|
margin-top: 0.1rem;
|
||||||
|
}
|
||||||
|
.tab-btn.active small {
|
||||||
|
color: rgba(113, 75, 103, 0.6);
|
||||||
|
}
|
||||||
|
.tab-pane {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.tab-pane.active {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
@media (max-width: 992px) {
|
||||||
|
.tabs-wrap {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.tabs-nav {
|
||||||
|
flex: 0 0 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
flex-direction: row;
|
||||||
|
overflow-x: auto;
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
.tab-btn {
|
||||||
|
white-space: nowrap;
|
||||||
|
width: auto;
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
.tab-btn.active {
|
||||||
|
border-left: none;
|
||||||
|
border-bottom: 3px solid var(--primary);
|
||||||
|
}
|
||||||
|
.tab-btn small {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.tabs-content {
|
||||||
|
flex: 0 0 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.psection {
|
||||||
|
padding: 2rem 0;
|
||||||
|
background: var(--light);
|
||||||
|
}
|
||||||
|
.pgrid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(4, 1fr);
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
.pcard {
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: var(--radius-lg);
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
transition: all 0.3s;
|
||||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
|
||||||
|
}
|
||||||
|
.pcard:hover {
|
||||||
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
|
||||||
|
transform: translateY(-3px);
|
||||||
|
}
|
||||||
|
.pcard.featured {
|
||||||
|
border: 2px solid var(--primary);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.pcard.featured::before {
|
||||||
|
content: "Most Popular";
|
||||||
|
position: absolute;
|
||||||
|
top: 0.75rem;
|
||||||
|
right: 0.75rem;
|
||||||
|
background: var(--primary);
|
||||||
|
color: #fff;
|
||||||
|
padding: 0.2rem 0.6rem;
|
||||||
|
border-radius: 2rem;
|
||||||
|
font-size: 0.6rem;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.pcard-body {
|
||||||
|
padding: 1.25rem;
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.pcard-body h3 {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
.pcard .price {
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
}
|
||||||
|
.pcard .price strong {
|
||||||
|
font-size: clamp(1.28rem, 2vw, 1.92rem);
|
||||||
|
color: var(--dark);
|
||||||
|
}
|
||||||
|
.pcard .price small {
|
||||||
|
color: rgba(33, 37, 41, 0.55);
|
||||||
|
font-size: 0.82rem;
|
||||||
|
}
|
||||||
|
.pcard .desc {
|
||||||
|
font-size: 0.82rem;
|
||||||
|
color: rgba(33, 37, 41, 0.6);
|
||||||
|
min-height: 3rem;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.pcard-body ul {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
.pcard .btn {
|
||||||
|
margin-bottom: 0.75rem;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.pcard ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.pcard li {
|
||||||
|
padding: 0.4rem 0;
|
||||||
|
font-size: 0.82rem;
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.4rem;
|
||||||
|
}
|
||||||
|
.pcard li:last-child {
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
||||||
|
.pcard-foot {
|
||||||
|
padding: 0.6rem 1.25rem;
|
||||||
|
text-align: center;
|
||||||
|
border-top: 1px solid var(--border);
|
||||||
|
font-size: 0.78rem;
|
||||||
|
color: rgba(33, 37, 41, 0.55);
|
||||||
|
}
|
||||||
|
@media (max-width: 992px) {
|
||||||
|
.pgrid {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width: 576px) {
|
||||||
|
.pgrid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.trial {
|
||||||
|
padding: 3rem 0;
|
||||||
|
background: linear-gradient(135deg, #1b1319, #2a1d27);
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.trial h2 {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.trial p {
|
||||||
|
color: rgba(255, 255, 255, 0.8);
|
||||||
|
}
|
||||||
|
.abanner {
|
||||||
|
padding: 2rem 0;
|
||||||
|
text-align: center;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.abanner h2 {
|
||||||
|
font-size: clamp(1.12rem, 2.4vw, 1.6rem) !important;
|
||||||
|
max-width: 700px;
|
||||||
|
margin: 0 auto 0.5rem;
|
||||||
|
}
|
||||||
|
.footer {
|
||||||
|
background: var(--dark);
|
||||||
|
color: rgba(255, 255, 255, 0.85);
|
||||||
|
padding-top: 3rem;
|
||||||
|
}
|
||||||
|
.fgrid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1.5fr 3fr 3.5fr;
|
||||||
|
gap: 2rem;
|
||||||
|
padding-bottom: 2rem;
|
||||||
|
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
|
||||||
|
}
|
||||||
|
.footer h5 {
|
||||||
|
color: #fff;
|
||||||
|
margin-bottom: 0.8rem;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.footer ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.footer li {
|
||||||
|
margin-bottom: 0.3rem;
|
||||||
|
}
|
||||||
|
.footer a {
|
||||||
|
color: rgba(255, 255, 255, 0.65);
|
||||||
|
transition: color 0.2s;
|
||||||
|
}
|
||||||
|
.footer a:hover {
|
||||||
|
color: #fff;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.footer p {
|
||||||
|
color: rgba(255, 255, 255, 0.7);
|
||||||
|
font-size: 0.85rem;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
.footer strong {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.footer .social a {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 2.5rem;
|
||||||
|
height: 2.5rem;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: rgba(255, 255, 255, 0.08);
|
||||||
|
color: rgba(255, 255, 255, 0.7);
|
||||||
|
margin-right: 0.3rem;
|
||||||
|
transition: all 0.2s;
|
||||||
|
}
|
||||||
|
.footer .social a:hover {
|
||||||
|
background: var(--primary);
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.fform label {
|
||||||
|
font-weight: 500;
|
||||||
|
margin-bottom: 0.25rem;
|
||||||
|
display: block;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.fform input {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0.5rem 0.8rem;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
background: rgba(255, 255, 255, 0.08);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.12);
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
color: #fff;
|
||||||
|
margin-bottom: 0.75rem;
|
||||||
|
}
|
||||||
|
.fform input:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--primary);
|
||||||
|
}
|
||||||
|
.fform input::placeholder {
|
||||||
|
color: rgba(255, 255, 255, 0.35);
|
||||||
|
}
|
||||||
|
.fcopy {
|
||||||
|
padding: 1rem 0;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 0.82rem;
|
||||||
|
color: rgba(255, 255, 255, 0.5);
|
||||||
|
}
|
||||||
|
@media (max-width: 992px) {
|
||||||
|
.fgrid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.spinner-overlay {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
background: var(--dark);
|
||||||
|
z-index: 5;
|
||||||
|
transition: opacity 0.5s;
|
||||||
|
}
|
||||||
|
.spinner-overlay.hidden {
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.spinner {
|
||||||
|
width: 2rem;
|
||||||
|
height: 2rem;
|
||||||
|
border: 3px solid rgba(255, 255, 255, 0.15);
|
||||||
|
border-top-color: #fff;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: spin 0.8s linear infinite;
|
||||||
|
}
|
||||||
|
@keyframes spin {
|
||||||
|
to {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---- Billing Toggle ---- */
|
||||||
|
.billing-toggle-wrap {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 0.75rem;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
.toggle-label {
|
||||||
|
font-size: 0.82rem;
|
||||||
|
font-weight: 500;
|
||||||
|
color: rgba(33, 37, 41, 0.6);
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.2s;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
.toggle-label.active {
|
||||||
|
color: var(--dark);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.toggle-label small {
|
||||||
|
display: block;
|
||||||
|
font-size: 0.62rem;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #28a745;
|
||||||
|
margin-top: 0.1rem;
|
||||||
|
}
|
||||||
|
.toggle-switch {
|
||||||
|
width: 48px;
|
||||||
|
height: 26px;
|
||||||
|
background: var(--border);
|
||||||
|
border-radius: 13px;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
transition: background 0.25s;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.toggle-switch.yearly {
|
||||||
|
background: var(--primary);
|
||||||
|
}
|
||||||
|
.toggle-switch .thumb {
|
||||||
|
position: absolute;
|
||||||
|
top: 3px;
|
||||||
|
left: 3px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 50%;
|
||||||
|
transition: left 0.25s;
|
||||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
.toggle-switch.yearly .thumb {
|
||||||
|
left: 25px;
|
||||||
|
}
|
||||||
|
.price-save {
|
||||||
|
font-size: 0.6rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #28a745;
|
||||||
|
margin-top: 0.15rem;
|
||||||
|
}
|
||||||
|
.price-period {
|
||||||
|
color: rgba(33, 37, 41, 0.55);
|
||||||
|
font-size: 0.68rem;
|
||||||
|
}
|
||||||
|
/* ---- Partner Banner ---- */
|
||||||
|
.partner-banner {
|
||||||
|
padding: 2rem 0;
|
||||||
|
background: #f6f5f4;
|
||||||
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.partner-banner h3 {
|
||||||
|
font-family: "Inter Tight", sans-serif;
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 600;
|
||||||
|
color: rgba(33, 37, 41, 0.45);
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
.partner-carousel-wrap {
|
||||||
|
overflow: hidden;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 1080px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.partner-grid {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 3rem;
|
||||||
|
width: max-content;
|
||||||
|
animation: partnerScroll 40s linear infinite;
|
||||||
|
}
|
||||||
|
.partner-carousel-wrap:hover .partner-grid {
|
||||||
|
animation-play-state: paused;
|
||||||
|
}
|
||||||
|
@keyframes partnerScroll {
|
||||||
|
0% {
|
||||||
|
transform: translateX(0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.partner-item {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.6rem;
|
||||||
|
text-decoration: none;
|
||||||
|
color: rgba(33, 37, 41, 0.55);
|
||||||
|
font-size: 0.85rem;
|
||||||
|
font-weight: 500;
|
||||||
|
white-space: nowrap;
|
||||||
|
transition: opacity 0.2s;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.partner-item:hover {
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
.partner-item img {
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
border-radius: 8px;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.partner-grid {
|
||||||
|
gap: 2rem;
|
||||||
|
}
|
||||||
|
.partner-item img {
|
||||||
|
width: 42px;
|
||||||
|
height: 42px;
|
||||||
|
}
|
||||||
|
.partner-item {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
gap: 0.4rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* ---- Empire no discount ---- */
|
||||||
|
.empire-no-save {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
/* ---- Blog Section ---- */
|
||||||
|
.blog-section {
|
||||||
|
padding: 3rem 0;
|
||||||
|
background: #08080c;
|
||||||
|
color: #e8e8f0;
|
||||||
|
}
|
||||||
|
.blog-section h2 {
|
||||||
|
color: #e8e8f0;
|
||||||
|
}
|
||||||
|
.blog-search-wrap {
|
||||||
|
max-width: 500px;
|
||||||
|
margin: 0 auto 2rem;
|
||||||
|
}
|
||||||
|
.blog-search {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0.75rem 1rem;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
background: #1a1a2e;
|
||||||
|
border: 1px solid #2a2a4e;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
color: #e8e8f0;
|
||||||
|
font-family: Inter, sans-serif;
|
||||||
|
transition: border-color 0.2s;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.blog-search:focus {
|
||||||
|
border-color: #00f5ff;
|
||||||
|
box-shadow: 0 0 0 2px rgba(0, 245, 255, 0.15);
|
||||||
|
}
|
||||||
|
.blog-search::placeholder {
|
||||||
|
color: rgba(232, 232, 240, 0.35);
|
||||||
|
}
|
||||||
|
.blog-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 1.25rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 992px) {
|
||||||
|
.blog-grid {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width: 576px) {
|
||||||
|
.blog-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.blog-card {
|
||||||
|
background: #12121c;
|
||||||
|
border: 1px solid #1a1a2e;
|
||||||
|
border-radius: 0.6rem;
|
||||||
|
padding: 1.25rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
transition:
|
||||||
|
transform 0.2s,
|
||||||
|
border-color 0.2s,
|
||||||
|
box-shadow 0.2s;
|
||||||
|
}
|
||||||
|
.blog-card:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
border-color: #00f5ff;
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 245, 255, 0.08);
|
||||||
|
}
|
||||||
|
.blog-card-top {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
margin-bottom: 0.75rem;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
.blog-badge {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.15rem 0.5rem;
|
||||||
|
border-radius: 3rem;
|
||||||
|
font-size: 0.6rem;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.04em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #08080c;
|
||||||
|
}
|
||||||
|
.blog-badge-speed-run {
|
||||||
|
background: #f472b6;
|
||||||
|
}
|
||||||
|
.blog-badge-guide {
|
||||||
|
background: #a78bfa;
|
||||||
|
}
|
||||||
|
.blog-badge-howto {
|
||||||
|
background: #00f5ff;
|
||||||
|
}
|
||||||
|
.blog-badge-news {
|
||||||
|
background: #ffaa00;
|
||||||
|
}
|
||||||
|
.blog-badge-default {
|
||||||
|
background: #a78bfa;
|
||||||
|
}
|
||||||
|
.blog-agent {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.15rem 0.45rem;
|
||||||
|
border-radius: 3rem;
|
||||||
|
font-size: 0.56rem;
|
||||||
|
font-weight: 600;
|
||||||
|
background: rgba(0, 245, 255, 0.15);
|
||||||
|
color: #00f5ff;
|
||||||
|
border: 1px solid rgba(0, 245, 255, 0.25);
|
||||||
|
}
|
||||||
|
.blog-date {
|
||||||
|
font-size: 0.82rem;
|
||||||
|
color: rgba(232, 232, 240, 0.45);
|
||||||
|
margin-bottom: 0.4rem;
|
||||||
|
}
|
||||||
|
.blog-card h3 {
|
||||||
|
font-family: "Inter Tight", sans-serif;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
font-weight: 600;
|
||||||
|
margin: 0 0 0.5rem;
|
||||||
|
line-height: 1.35;
|
||||||
|
}
|
||||||
|
.blog-card h3 a {
|
||||||
|
color: #e8e8f0;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: color 0.2s;
|
||||||
|
}
|
||||||
|
.blog-card h3 a:hover {
|
||||||
|
color: #00f5ff;
|
||||||
|
}
|
||||||
|
/* Light theme blog section override for homepage */
|
||||||
|
.blog-section-light {
|
||||||
|
background: var(--light) !important;
|
||||||
|
color: var(--dark) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light h2 {
|
||||||
|
color: var(--dark) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-search {
|
||||||
|
background: #fff !important;
|
||||||
|
border-color: var(--border) !important;
|
||||||
|
color: var(--dark) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-search:focus {
|
||||||
|
border-color: var(--primary) !important;
|
||||||
|
box-shadow: 0 0 0 2px rgba(113, 75, 103, 0.15) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-search::placeholder {
|
||||||
|
color: rgba(33, 37, 41, 0.35) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-card {
|
||||||
|
background: #fff !important;
|
||||||
|
border-color: var(--border) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-card:hover {
|
||||||
|
border-color: var(--primary) !important;
|
||||||
|
box-shadow: 0 4px 20px rgba(113, 75, 103, 0.08) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-card h3 a {
|
||||||
|
color: var(--dark) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-card h3 a:hover {
|
||||||
|
color: var(--primary) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-date {
|
||||||
|
color: rgba(33, 37, 41, 0.45) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-teaser {
|
||||||
|
color: rgba(33, 37, 41, 0.6) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-readmore {
|
||||||
|
color: var(--primary) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-empty {
|
||||||
|
color: rgba(33, 37, 41, 0.45) !important;
|
||||||
|
}
|
||||||
|
.blog-section-light .blog-agent {
|
||||||
|
background: rgba(113, 75, 103, 0.1) !important;
|
||||||
|
color: var(--primary) !important;
|
||||||
|
border-color: rgba(113, 75, 103, 0.2) !important;
|
||||||
|
}
|
||||||
|
.blog-teaser {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: rgba(232, 232, 240, 0.65);
|
||||||
|
line-height: 1.55;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
.blog-readmore {
|
||||||
|
font-size: 0.85rem;
|
||||||
|
color: #00f5ff;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: 500;
|
||||||
|
transition: opacity 0.2s;
|
||||||
|
margin-top: auto;
|
||||||
|
}
|
||||||
|
.blog-readmore:hover {
|
||||||
|
opacity: 0.75;
|
||||||
|
}
|
||||||
|
.blog-empty {
|
||||||
|
grid-column: 1 / -1;
|
||||||
|
text-align: center;
|
||||||
|
padding: 2rem;
|
||||||
|
color: rgba(232, 232, 240, 0.5);
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
.blog-pagination {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 0.75rem;
|
||||||
|
padding: 1rem 0;
|
||||||
|
}
|
||||||
|
.blog-page-btn {
|
||||||
|
padding: 0.4rem 1rem;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
background: #12121c;
|
||||||
|
border: 1px solid #1a1a2e;
|
||||||
|
border-radius: 0.4rem;
|
||||||
|
color: #e8e8f0;
|
||||||
|
cursor: pointer;
|
||||||
|
font-family: Inter, sans-serif;
|
||||||
|
transition:
|
||||||
|
border-color 0.2s,
|
||||||
|
background 0.2s;
|
||||||
|
}
|
||||||
|
.blog-page-btn:hover:not(:disabled) {
|
||||||
|
border-color: #00f5ff;
|
||||||
|
background: rgba(0, 245, 255, 0.08);
|
||||||
|
}
|
||||||
|
.blog-page-btn:disabled {
|
||||||
|
opacity: 0.3;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
.blog-page-info {
|
||||||
|
font-size: 0.78rem;
|
||||||
|
color: rgba(232, 232, 240, 0.55);
|
||||||
|
}
|
||||||
@@ -0,0 +1,553 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en-US">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="Support and FAQ for ODOO4projects hosting. Get help with your Odoo instance, modules, backups, domains, and more."
|
||||||
|
/>
|
||||||
|
<title>Support | ODOO4projects</title>
|
||||||
|
<link rel="canonical" href="https://ODOO4projects.com/support" />
|
||||||
|
<meta property="og:title" content="Support | ODOO4projects" />
|
||||||
|
<meta property="og:description" content="Support and FAQ for ODOO4projects hosting." />
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:url" content="https://ODOO4projects.com/support" />
|
||||||
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
|
<link rel="icon" href="images/favicon.ico" />
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
||||||
|
/>
|
||||||
|
<link rel="stylesheet" href="style.css" />
|
||||||
|
<style>
|
||||||
|
/* ---- Support Hero ---- */
|
||||||
|
.support-hero {
|
||||||
|
padding: 4rem 0 2.5rem;
|
||||||
|
text-align: center;
|
||||||
|
background: var(--light);
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
.support-hero h1 {
|
||||||
|
font-size: clamp(1.8rem, 3.2vw, 2.8rem);
|
||||||
|
color: var(--dark);
|
||||||
|
}
|
||||||
|
.support-hero p {
|
||||||
|
max-width: 680px;
|
||||||
|
margin: 0 auto;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
.support-hero strong {
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---- FAQ Section ---- */
|
||||||
|
.faq-section {
|
||||||
|
padding: 3rem 0 4rem;
|
||||||
|
}
|
||||||
|
.faq-section h2 {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
color: var(--dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
.faq-tabs {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 0.4rem;
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
.faq-tab-btn {
|
||||||
|
padding: 0.55rem 1.1rem;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
background: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
font-family: "Inter Tight", sans-serif;
|
||||||
|
font-size: 0.82rem;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #212529;
|
||||||
|
transition: all 0.2s;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
.faq-tab-btn small {
|
||||||
|
display: block;
|
||||||
|
font-size: 0.7rem;
|
||||||
|
font-weight: 400;
|
||||||
|
color: rgba(33, 37, 41, 0.5);
|
||||||
|
margin-top: 0.1rem;
|
||||||
|
}
|
||||||
|
.faq-tab-btn:hover {
|
||||||
|
border-color: var(--primary);
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
|
.faq-tab-btn.active {
|
||||||
|
background: linear-gradient(135deg, rgba(113,75,103,0.08), rgba(113,75,103,0.03));
|
||||||
|
border-color: var(--primary);
|
||||||
|
color: var(--primary);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.faq-tab-btn.active small {
|
||||||
|
color: rgba(113, 75, 103, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.faq-panel {
|
||||||
|
display: none;
|
||||||
|
max-width: 720px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.faq-panel.active {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.faq-item {
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
margin-bottom: 0.6rem;
|
||||||
|
overflow: hidden;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.faq-question {
|
||||||
|
width: 100%;
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
padding: 0.9rem 1.1rem;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
color: var(--dark);
|
||||||
|
font-family: "Inter Tight", sans-serif;
|
||||||
|
font-size: 0.88rem;
|
||||||
|
font-weight: 500;
|
||||||
|
text-align: left;
|
||||||
|
transition: background 0.2s;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
.faq-question:hover {
|
||||||
|
background: var(--light);
|
||||||
|
}
|
||||||
|
.faq-question .faq-icon {
|
||||||
|
flex-shrink: 0;
|
||||||
|
font-size: 0.7rem;
|
||||||
|
color: var(--primary);
|
||||||
|
transition: transform 0.3s;
|
||||||
|
}
|
||||||
|
.faq-question.open .faq-icon {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
.faq-answer {
|
||||||
|
display: none;
|
||||||
|
padding: 0 1.1rem 0.9rem;
|
||||||
|
color: rgba(33, 37, 41, 0.7);
|
||||||
|
font-size: 0.88rem;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
.faq-answer.open {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.faq-answer ul {
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
padding-left: 1.25rem;
|
||||||
|
}
|
||||||
|
.faq-answer li {
|
||||||
|
margin: 0.3rem 0;
|
||||||
|
}
|
||||||
|
.faq-answer a {
|
||||||
|
color: var(--primary);
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.faq-answer strong {
|
||||||
|
color: var(--dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---- Contact Section ---- */
|
||||||
|
.contact-section {
|
||||||
|
padding: 3rem 0 4rem;
|
||||||
|
background: var(--light);
|
||||||
|
border-top: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
.contact-section h2 {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
color: var(--dark);
|
||||||
|
}
|
||||||
|
.contact-form {
|
||||||
|
max-width: 580px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: var(--radius-lg);
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
.form-group {
|
||||||
|
margin-bottom: 1.1rem;
|
||||||
|
}
|
||||||
|
.form-group label {
|
||||||
|
display: block;
|
||||||
|
color: rgba(33, 37, 41, 0.6);
|
||||||
|
font-size: 0.82rem;
|
||||||
|
font-weight: 500;
|
||||||
|
margin-bottom: 0.3rem;
|
||||||
|
}
|
||||||
|
.form-group label .required {
|
||||||
|
color: #dc3545;
|
||||||
|
}
|
||||||
|
.form-group input,
|
||||||
|
.form-group textarea {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0.65rem 0.85rem;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
color: var(--dark);
|
||||||
|
font-family: Inter, sans-serif;
|
||||||
|
font-size: 0.88rem;
|
||||||
|
transition: border-color 0.2s;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.form-group input:focus,
|
||||||
|
.form-group textarea:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--primary);
|
||||||
|
}
|
||||||
|
.form-group textarea {
|
||||||
|
min-height: 90px;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
.contact-form .btn {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0.7rem;
|
||||||
|
}
|
||||||
|
.form-success {
|
||||||
|
display: none;
|
||||||
|
background: #d4edda;
|
||||||
|
border: 1px solid #c3e6cb;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
padding: 0.8rem 1rem;
|
||||||
|
text-align: center;
|
||||||
|
color: #155724;
|
||||||
|
margin-top: 1rem;
|
||||||
|
font-size: 0.88rem;
|
||||||
|
}
|
||||||
|
.form-success.visible {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.support-hero { padding: 2.5rem 0 1.5rem; }
|
||||||
|
.faq-tab-btn { padding: 0.4rem 0.8rem; font-size: 0.75rem; }
|
||||||
|
.contact-form { padding: 1.25rem; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<div class="blog-header">
|
||||||
|
<a href="index.html">← Back to Home</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Hero -->
|
||||||
|
<section class="support-hero">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Support and FAQ</h1>
|
||||||
|
<p>
|
||||||
|
For the fastest help, please read our <strong>FAQ</strong> first — our support
|
||||||
|
bot can assist with quick fixes like <strong>git pull</strong> or restarts — or
|
||||||
|
simply send a <strong>ticket</strong> to our support team for further assistance.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="faq-section" id="faq">
|
||||||
|
<div class="container">
|
||||||
|
<h2>FAQ</h2>
|
||||||
|
|
||||||
|
<div class="faq-tabs" id="faqTabs">
|
||||||
|
<button class="faq-tab-btn active" data-tab="first-steps">
|
||||||
|
First Steps
|
||||||
|
<small>What is your service about</small>
|
||||||
|
</button>
|
||||||
|
<button class="faq-tab-btn" data-tab="advanced">
|
||||||
|
Advanced Users
|
||||||
|
<small>Install Modules, configure Backup</small>
|
||||||
|
</button>
|
||||||
|
<button class="faq-tab-btn" data-tab="trouble">
|
||||||
|
Trouble Shooting
|
||||||
|
<small>Service is unavailable</small>
|
||||||
|
</button>
|
||||||
|
<button class="faq-tab-btn" data-tab="commercial">
|
||||||
|
Commercial
|
||||||
|
<small>All information about our services</small>
|
||||||
|
</button>
|
||||||
|
<button class="faq-tab-btn" data-tab="migrate">
|
||||||
|
Bring your Database
|
||||||
|
<small>Migrate from another provider</small>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- First Steps -->
|
||||||
|
<div class="faq-panel active" id="panel-first-steps">
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>My Odoo seems empty. What can I do with it?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>We provide a vanilla Odoo installation, which means your Odoo comes empty but fully ready for <strong>you to customize</strong> with the apps your business needs. To get started, go to the Apps menu, browse the available apps, and click Install — each app will appear in your main menu once installed, ready to use.</p>
|
||||||
|
<p>Here are some examples for different types of businesses:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Manufacturing unit</strong>: Install the Manufacturing and Inventory/Logistics apps.</li>
|
||||||
|
<li><strong>Online store</strong>: Install Website, eCommerce, and Sales apps.</li>
|
||||||
|
<li><strong>Service company</strong>: Install Project and Timesheets apps.</li>
|
||||||
|
<li><strong>Retail shop</strong>: Install Point of Sale (POS) and Inventory apps.</li>
|
||||||
|
<li><strong>Accounting firm</strong>: Install Accounting and Invoicing apps.</li>
|
||||||
|
<li><strong>Marketing agency</strong>: Install CRM, Marketing, and Email Marketing apps.</li>
|
||||||
|
<li><strong>Event company</strong>: Install Events and Website apps.</li>
|
||||||
|
</ul>
|
||||||
|
<p>No matter your business type, you can pick the apps that match your needs, and gradually build your Odoo system step by step.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>How do I install a new app?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>Open the Apps menu, search for the app you want, and click Install. Once installed, the app will appear in your main menu, ready to use. For additional apps not included by default, you can also install them via Git or use our one-click Quick Git feature for faster setup.</p>
|
||||||
|
<p>All Odoo Community apps are included, and more free apps can be found at <a href="https://odoo-community.org/" target="_blank" rel="noopener">odoo-community.org</a>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>How do I add my email Server for sending messages from Odoo?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>To send emails from Odoo, you need to configure an Outgoing Mail Server. Go to Settings → Technical → Email → Outgoing Mail Servers and enter your email server details, such as SMTP server, port, username, and password. You can get the SMTP server information from your domain or email provider. After entering the information, test the connection to ensure it works correctly.</p>
|
||||||
|
<p>If you also want to receive emails in Odoo, you can set up Incoming Mail Servers under the same menu, using the IMAP/POP3 details from your provider.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>How do I change my login name or password?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>Before making any changes, it is advised to <strong>set up your outgoing email server</strong> to ensure notifications and password resets work correctly.</p>
|
||||||
|
<p>Your login name is the email address associated with your account. To change it, go to Settings → Users & Companies → Users, select your user, and update the Email field. After changing your login name, you must log in using the new email and your existing password. To change your password, go to the same user settings, click Change Password, or use the "Forgot Password" link on the login page to reset it via email.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Advanced Users -->
|
||||||
|
<div class="faq-panel" id="panel-advanced">
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>Do I get SSH access to my service?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>No — SSH access is limited to Git operations only. All other management and configuration options are available through our Odoo Settings module.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>How do I configure my Backup frequency?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>The backup job runs as a scheduled action within Odoo, ensuring your data is regularly saved. You can access and manage this job only when Development Mode is enabled, which allows you to view technical settings and scheduled actions that are otherwise hidden in the standard interface. This way, you can review, adjust, or trigger backups as needed.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>How long are Backups stored?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>We store backups in slots, which are retained until they are overwritten. Backups are managed using a first-in, first-out (FIFO) queue. When a backup is overwritten, it is permanently deleted. If you need to keep more backups, you can upgrade your contract and purchase additional slots.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>How do I route my domain to my Odoo?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>To route your domain to Odoo, you first need to update the A record at your domain provider to point to our server's IP address. You can find the A record settings in your domain registrar's control panel under DNS settings. Once the A record is updated, the server will need to be restarted to recognize the new domain.</p>
|
||||||
|
<p>After updating the A record, add your domain in Odoo: Settings → 4 Server → Domains and enter each domain on a separate line. Check your contract to see how many domain routings are included.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>How can I install Odoo Enterprise?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>To install Odoo Enterprise, you first need to purchase a separate license from Odoo. Our prepared Git repository already includes an Enterprise folder where you can add the Enterprise addons, which can then be installed via Git.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Trouble Shooting -->
|
||||||
|
<div class="faq-panel" id="panel-trouble">
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>After a git check in, my server does not come up again or shows an error 500</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>If you've pushed a new module to the server and it prevents the service from starting, first revert your changes in Git and push the corrected version back to the server. Then open the support chat — you'll need your UUID (sent in the confirmation email). After you tell our chatbot to git pull and restart the server, you'll receive a confirmation email; once confirmed, we'll bring your Odoo instance back online.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>Why does my domain show an "Unknown Certificate" or "Bad Gateway"?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>This usually happens because the server has not been restarted after routing your domain to our service. Simply restart your server — once it comes back online, Odoo will generate the correct SSL certificate for your domain. If the error persists, please submit a support ticket.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Commercial -->
|
||||||
|
<div class="faq-panel" id="panel-commercial">
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>Is the Odoo Enterprise License included?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>No, the Odoo Enterprise License needs to be purchased separately.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>How can I upgrade my service?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>You can upgrade your service directly in Odoo by going to Settings → 4 Server → Upgrade. From there, you can choose to move to a higher plan or add additional features individually, such as extra backup slots or additional domain routings.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Bring your Database -->
|
||||||
|
<div class="faq-panel" id="panel-migrate">
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>How can I migrate my Odoo database from another service provider?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>To migrate your database to our service, please submit a support ticket indicating that you want to migrate. Our team will then send you a link to a secure form where you can upload your database. Once received, we will spin up a new server according to your requirements and provide you with the credentials.</p>
|
||||||
|
<p>We do not support patch releases (e.g., 18.1 or 17.2) — only the main releases (18.0, 17.0, 19.0) are supported. Our migration service currently supports databases based on Odoo 17, 18, and 19.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<button class="faq-question">
|
||||||
|
<span>Can I update my Odoo database from an older version, e.g., 14 → 19?</span>
|
||||||
|
<span class="faq-icon"><i class="fas fa-chevron-down"></i></span>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<p>Yes, we can help you upgrade your database from older versions to a supported release (17, 18, or 19), but only after reviewing your database to ensure compatibility. Please submit a support ticket to start the process.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Contact -->
|
||||||
|
<section class="contact-section" id="contact">
|
||||||
|
<div class="container">
|
||||||
|
<h2>Still questions? Contact our support.</h2>
|
||||||
|
<form class="contact-form" id="supportForm" action="https://ODOO4projects.com/website/form/" method="POST" enctype="multipart/form-data">
|
||||||
|
<input type="hidden" name="csrf_token" id="csrfToken" value="" />
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Your Name <span class="required">*</span></label>
|
||||||
|
<input type="text" id="contactName" name="contact_name" required placeholder="Your Name" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Your Email <span class="required">*</span></label>
|
||||||
|
<input type="email" id="contactEmail" name="email_from" required placeholder="Your Email" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>UUID</label>
|
||||||
|
<input type="text" id="contactUuid" name="UUID" placeholder="Paste your ODOO4projects UUID here" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Subject <span class="required">*</span></label>
|
||||||
|
<input type="text" id="contactSubject" name="name" required placeholder="Subject" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Your Question <span class="required">*</span></label>
|
||||||
|
<textarea id="contactQuestion" name="description" required placeholder="Describe your issue or question in detail..."></textarea>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn-primary">Submit</button>
|
||||||
|
<div class="form-success" id="formSuccess">
|
||||||
|
<i class="fas fa-check-circle"></i> Thank you! Your ticket has been submitted.
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.querySelectorAll(".faq-question").forEach(function (btn) {
|
||||||
|
btn.addEventListener("click", function () {
|
||||||
|
var answer = this.nextElementSibling;
|
||||||
|
var isOpen = answer.classList.contains("open");
|
||||||
|
document.querySelectorAll(".faq-answer.open, .faq-question.open").forEach(function (el) {
|
||||||
|
el.classList.remove("open");
|
||||||
|
});
|
||||||
|
if (!isOpen) { answer.classList.add("open"); this.classList.add("open"); }
|
||||||
|
});
|
||||||
|
});
|
||||||
|
document.querySelectorAll(".faq-tab-btn").forEach(function (tab) {
|
||||||
|
tab.addEventListener("click", function () {
|
||||||
|
document.querySelectorAll(".faq-tab-btn, .faq-panel").forEach(function (el) {
|
||||||
|
el.classList.remove("active");
|
||||||
|
});
|
||||||
|
this.classList.add("active");
|
||||||
|
var panel = document.getElementById("panel-" + this.getAttribute("data-tab"));
|
||||||
|
if (panel) panel.classList.add("active");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
var form = document.getElementById("supportForm");
|
||||||
|
var submitBtn = form.querySelector(".btn");
|
||||||
|
var successDiv = document.getElementById("formSuccess");
|
||||||
|
fetch("https://ODOO4projects.com/web/csrf_token")
|
||||||
|
.then(function (r) { return r.json(); })
|
||||||
|
.then(function (data) {
|
||||||
|
document.getElementById("csrfToken").value = data.result || data.csrf_token || "";
|
||||||
|
}).catch(function () {});
|
||||||
|
form.addEventListener("submit", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var name = document.getElementById("contactName").value.trim();
|
||||||
|
var email = document.getElementById("contactEmail").value.trim();
|
||||||
|
var subject = document.getElementById("contactSubject").value.trim();
|
||||||
|
var question = document.getElementById("contactQuestion").value.trim();
|
||||||
|
if (!name || !email || !subject || !question) { alert("Please fill in all required fields."); return; }
|
||||||
|
submitBtn.disabled = true;
|
||||||
|
submitBtn.textContent = "Submitting...";
|
||||||
|
fetch(form.action, { method: "POST", body: new FormData(form) })
|
||||||
|
.then(function () { submitBtn.style.display = "none"; successDiv.classList.add("visible"); })
|
||||||
|
.catch(function () { submitBtn.disabled = false; submitBtn.textContent = "Submit"; alert("Could not submit. Please try again."); });
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script defer src="https://static.odoo4projects.com/agent-odoo4projects/agent.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||