hide [hidden] site-wide: one [hidden] { display:none !important } in style.css

A filtered-out directory card stayed visible. The card is targeted by an
id-based ready-state selector (`.js #directory[data-dir-state="ready"]
#dirGrid > .dev-card`, two ids), which outranked the old per-element patch
`.dev-card[hidden] { display:none }` — so `card.hidden = true` set the
attribute and every card stayed on screen while the count line correctly
read "Showing 1 of 4".

Fix: one rule, `[hidden] { display:none !important }`, early in /style.css.
A class- or id-based `display` can no longer beat the attribute, so this
cannot recur with the next class that sets `display`. The per-element
`[hidden]` patches are removed so a single mechanism governs:
 - odoo-community-developers: cards + filter row + pager + modal
   (load-bearing — each sets `display`); focus-sliders/noscript (redundant)
 - index/de/es `.hero-notice[hidden]`, odoo-black-friday `.ads-consent[hidden]`
   (redundant — those elements set no `display`)
Re-fingerprint local assets (style.css changed): /style.css?v 3332fbba93 ->
061517baef across 51 pages.

Measured in a real browser (local harness, stubbed webhook; no record created,
no probe write) — computed display + geometry, never the `hidden` property:
 - filtered to one card: the other three report display:none and height 0;
   the visible set (1) equals the count line ("Showing 1 of 4") — 1 == 1
 - HEAD (pre-fix) reproduces the defect: 3 cards hidden=true yet display:flex,
   height 599.38 each; 4 visible vs the count's 1
 - pager: display:none height 0 with one page; display:flex height 66.83 with
   12 cards (Page 1 of 2); page 2 hides page-1 cards (display:none)
 - modals closed: display:none height 0; load state: cards 0, pager/empty
   display:none, filter row visibility:hidden by design
 - 375 px: same result, no horizontal overflow; avatar ask-row top identical
   across a row (2053.97 / links 2086.91)
This commit is contained in:
webmaster committed 2026-11-03 22:34:39 +00:00
1 parent 634f4fcdf1
commit 9d14652a57
52 files changed
+90 -76

No files matched your search

+1 -1
View File
@@ -28,7 +28,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="style.css?v=3332fbba93" /> <link rel="stylesheet" href="style.css?v=061517baef" />
<style> <style>
/* ---- Australia landing page (page-scoped; additive) ---- */ /* ---- Australia landing page (page-scoped; additive) ---- */
.cmp-sr-only { .cmp-sr-only {
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <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 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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
body { background: #0d1b2e; } body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; } .blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
+1 -1
View File
@@ -33,7 +33,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
:root { :root {
--primary: #714b67; --primary: #714b67;
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <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 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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
body { background: #0d1b2e; } body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; } .blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
+1 -1
View File
@@ -36,7 +36,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
.blog-header { .blog-header {
padding: 2rem 0; padding: 2rem 0;
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <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 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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
body { background: #0d1b2e; } body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; } .blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
+1 -1
View File
@@ -31,7 +31,7 @@
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?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
/* Blog post specific overrides — matching homepage light theme */ /* Blog post specific overrides — matching homepage light theme */
body { body {
+1 -1
View File
@@ -36,7 +36,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
:root { :root {
--primary: #714b67; --primary: #714b67;
+1 -1
View File
@@ -36,7 +36,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
:root { :root {
--primary: #714b67; --primary: #714b67;
+1 -1
View File
@@ -35,7 +35,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
:root { :root {
--primary: #714b67; --primary: #714b67;
+1 -1
View File
@@ -36,7 +36,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
* { * {
box-sizing: border-box; box-sizing: border-box;
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <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 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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
body { background: #0d1b2e; } body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; } .blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
@@ -34,7 +34,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
:root { :root {
--primary: #714b67; --primary: #714b67;
@@ -17,7 +17,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <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 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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
body { background: #0d1b2e; } body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; } .blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <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 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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
body { background: #0d1b2e; } body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; } .blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
@@ -16,7 +16,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <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 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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
body { background: #0d1b2e; } body { background: #0d1b2e; }
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; } .blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
+1 -1
View File
@@ -35,7 +35,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
/* Blog post specific styles — leverages CSS vars from style.css */ /* Blog post specific styles — leverages CSS vars from style.css */
:root { :root {
+1 -1
View File
@@ -35,7 +35,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
.container { .container {
width: 80%; width: 80%;
+1 -1
View File
@@ -35,7 +35,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
:root { :root {
--primary: #714b67; --primary: #714b67;
@@ -34,7 +34,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="../../style.css?v=3332fbba93" /> <link rel="stylesheet" href="../../style.css?v=061517baef" />
<style> <style>
:root { :root {
--primary: #714b67; --primary: #714b67;
+4 -2
View File
@@ -128,7 +128,9 @@
.hero-stats{display:flex;gap:1.5rem;margin-bottom:2rem;flex-wrap:wrap}.hero-stat{display:flex;align-items:center;gap:.4rem;color:rgba(255,255,255,.65);font-size:.85rem}.hero-stat i{color:var(--brass);font-size:.75rem} .hero-stats{display:flex;gap:1.5rem;margin-bottom:2rem;flex-wrap:wrap}.hero-stat{display:flex;align-items:center;gap:.4rem;color:rgba(255,255,255,.65);font-size:.85rem}.hero-stat i{color:var(--brass);font-size:.75rem}
.hero-actions{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:2rem} .hero-actions{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:2rem}
.hero-notice{position:absolute;top:1.25rem;right:1.25rem;z-index:3;display:flex;align-items:center;gap:.55rem;max-width:min(360px,calc(100% - 2rem));padding:.6rem .85rem .6rem 1rem;background:#f5c542;color:var(--midnight);border:1px solid rgba(13,27,46,.14);border-radius:var(--radius);box-shadow:0 8px 24px rgba(13,27,46,.3);font-family:Inter,sans-serif;font-size:.82rem;line-height:1.4;animation:heroNoticeIn .4s cubic-bezier(.16,1,.3,1)} .hero-notice{position:absolute;top:1.25rem;right:1.25rem;z-index:3;display:flex;align-items:center;gap:.55rem;max-width:min(360px,calc(100% - 2rem));padding:.6rem .85rem .6rem 1rem;background:#f5c542;color:var(--midnight);border:1px solid rgba(13,27,46,.14);border-radius:var(--radius);box-shadow:0 8px 24px rgba(13,27,46,.3);font-family:Inter,sans-serif;font-size:.82rem;line-height:1.4;animation:heroNoticeIn .4s cubic-bezier(.16,1,.3,1)}
.hero-notice[hidden]{display:none} /* `.hero-notice[hidden]{display:none}` used to live here; the site-wide `[hidden]`
rule in /style.css hides it (`.hero-notice` sets `display:flex`, which outranked
the UA rule). */
.hero-notice i{color:var(--midnight);font-size:.9rem;flex-shrink:0} .hero-notice i{color:var(--midnight);font-size:.9rem;flex-shrink:0}
.hero-notice-text{flex:1;min-width:0;overflow-wrap:anywhere} .hero-notice-text{flex:1;min-width:0;overflow-wrap:anywhere}
.hero-notice-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;padding:0;border:0;border-radius:50%;background:rgba(13,27,46,.12);color:var(--midnight);font-size:1rem;line-height:1;cursor:pointer;transition:background .2s} .hero-notice-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;padding:0;border:0;border-radius:50%;background:rgba(13,27,46,.12);color:var(--midnight);font-size:1rem;line-height:1;cursor:pointer;transition:background .2s}
@@ -220,7 +222,7 @@
#customQuoteModal .biz-success p{color:var(--midnight)} #customQuoteModal .biz-success p{color:var(--midnight)}
@media(max-width:600px){.oca-table td,.oca-table th{padding:.5rem .65rem;font-size:.8rem}.ow-panel{left:5%;right:5%}.ow-close{top:.5rem;right:.5rem;font-size:1.6rem}} @media(max-width:600px){.oca-table td,.oca-table th{padding:.5rem .65rem;font-size:.8rem}.ow-panel{left:5%;right:5%}.ow-close{top:.5rem;right:.5rem;font-size:1.6rem}}
</style> </style>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<!-- Privacy-friendly analytics by Plausible --> <!-- Privacy-friendly analytics by Plausible -->
<script async src="https://plausible.office.odoo4projects.com/js/pa-NhA7Rf-79VopXFQXhSS4e.js"></script> <script async src="https://plausible.office.odoo4projects.com/js/pa-NhA7Rf-79VopXFQXhSS4e.js"></script>
<script> <script>
+1 -1
View File
@@ -38,7 +38,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- Odoo Community Upgrade page (page-scoped; additive) ---- */ /* ---- Odoo Community Upgrade page (page-scoped; additive) ---- */
.oc-sr-only { .oc-sr-only {
+1 -1
View File
@@ -33,7 +33,7 @@
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="preload" as="image" href="/images/hero/bootcamp-hero-mobile-900.webp" media="(max-width: 640px)" fetchpriority="high" /> <link rel="preload" as="image" href="/images/hero/bootcamp-hero-mobile-900.webp" media="(max-width: 640px)" fetchpriority="high" />
<link rel="preload" as="image" href="/images/hero/bootcamp-hero-desktop-1920.webp" media="(min-width: 641px)" fetchpriority="high" /> <link rel="preload" as="image" href="/images/hero/bootcamp-hero-desktop-1920.webp" media="(min-width: 641px)" fetchpriority="high" />
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- ODOO ERP Automation Bootcamp landing page (page-scoped; additive) ---- */ /* ---- ODOO ERP Automation Bootcamp landing page (page-scoped; additive) ---- */
.bc-sr-only { .bc-sr-only {
+1 -1
View File
@@ -31,7 +31,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- Odoo Hosting 2027 landing page (page-scoped; additive) ---- */ /* ---- Odoo Hosting 2027 landing page (page-scoped; additive) ---- */
.cmp-sr-only { .cmp-sr-only {
+1 -1
View File
@@ -29,7 +29,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* Language selector — the page's top row: the back-link stays left, the selector travels right. /* Language selector — the page's top row: the back-link stays left, the selector travels right.
Cream canvas, so lang.js's own dark-brass active colour is the correct one (no override). */ Cream canvas, so lang.js's own dark-brass active colour is the correct one (no override). */
+4 -2
View File
@@ -128,7 +128,9 @@
.hero-stats{display:flex;gap:1.5rem;margin-bottom:2rem;flex-wrap:wrap}.hero-stat{display:flex;align-items:center;gap:.4rem;color:rgba(255,255,255,.65);font-size:.85rem}.hero-stat i{color:var(--brass);font-size:.75rem} .hero-stats{display:flex;gap:1.5rem;margin-bottom:2rem;flex-wrap:wrap}.hero-stat{display:flex;align-items:center;gap:.4rem;color:rgba(255,255,255,.65);font-size:.85rem}.hero-stat i{color:var(--brass);font-size:.75rem}
.hero-actions{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:2rem} .hero-actions{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:2rem}
.hero-notice{position:absolute;top:1.25rem;right:1.25rem;z-index:3;display:flex;align-items:center;gap:.55rem;max-width:min(360px,calc(100% - 2rem));padding:.6rem .85rem .6rem 1rem;background:#f5c542;color:var(--midnight);border:1px solid rgba(13,27,46,.14);border-radius:var(--radius);box-shadow:0 8px 24px rgba(13,27,46,.3);font-family:Inter,sans-serif;font-size:.82rem;line-height:1.4;animation:heroNoticeIn .4s cubic-bezier(.16,1,.3,1)} .hero-notice{position:absolute;top:1.25rem;right:1.25rem;z-index:3;display:flex;align-items:center;gap:.55rem;max-width:min(360px,calc(100% - 2rem));padding:.6rem .85rem .6rem 1rem;background:#f5c542;color:var(--midnight);border:1px solid rgba(13,27,46,.14);border-radius:var(--radius);box-shadow:0 8px 24px rgba(13,27,46,.3);font-family:Inter,sans-serif;font-size:.82rem;line-height:1.4;animation:heroNoticeIn .4s cubic-bezier(.16,1,.3,1)}
.hero-notice[hidden]{display:none} /* `.hero-notice[hidden]{display:none}` used to live here; the site-wide `[hidden]`
rule in /style.css hides it (`.hero-notice` sets `display:flex`, which outranked
the UA rule). */
.hero-notice i{color:var(--midnight);font-size:.9rem;flex-shrink:0} .hero-notice i{color:var(--midnight);font-size:.9rem;flex-shrink:0}
.hero-notice-text{flex:1;min-width:0;overflow-wrap:anywhere} .hero-notice-text{flex:1;min-width:0;overflow-wrap:anywhere}
.hero-notice-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;padding:0;border:0;border-radius:50%;background:rgba(13,27,46,.12);color:var(--midnight);font-size:1rem;line-height:1;cursor:pointer;transition:background .2s} .hero-notice-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;padding:0;border:0;border-radius:50%;background:rgba(13,27,46,.12);color:var(--midnight);font-size:1rem;line-height:1;cursor:pointer;transition:background .2s}
@@ -220,7 +222,7 @@
#customQuoteModal .biz-success p{color:var(--midnight)} #customQuoteModal .biz-success p{color:var(--midnight)}
@media(max-width:600px){.oca-table td,.oca-table th{padding:.5rem .65rem;font-size:.8rem}.ow-panel{left:5%;right:5%}.ow-close{top:.5rem;right:.5rem;font-size:1.6rem}} @media(max-width:600px){.oca-table td,.oca-table th{padding:.5rem .65rem;font-size:.8rem}.ow-panel{left:5%;right:5%}.ow-close{top:.5rem;right:.5rem;font-size:1.6rem}}
</style> </style>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<!-- Privacy-friendly analytics by Plausible --> <!-- Privacy-friendly analytics by Plausible -->
<script async src="https://plausible.office.odoo4projects.com/js/pa-NhA7Rf-79VopXFQXhSS4e.js"></script> <script async src="https://plausible.office.odoo4projects.com/js/pa-NhA7Rf-79VopXFQXhSS4e.js"></script>
<script> <script>
+1 -1
View File
@@ -38,7 +38,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- Odoo Community Upgrade page (page-scoped; additive) ---- */ /* ---- Odoo Community Upgrade page (page-scoped; additive) ---- */
.oc-sr-only { .oc-sr-only {
+1 -1
View File
@@ -33,7 +33,7 @@
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="preload" as="image" href="/images/hero/bootcamp-hero-mobile-900.webp" media="(max-width: 640px)" fetchpriority="high" /> <link rel="preload" as="image" href="/images/hero/bootcamp-hero-mobile-900.webp" media="(max-width: 640px)" fetchpriority="high" />
<link rel="preload" as="image" href="/images/hero/bootcamp-hero-desktop-1920.webp" media="(min-width: 641px)" fetchpriority="high" /> <link rel="preload" as="image" href="/images/hero/bootcamp-hero-desktop-1920.webp" media="(min-width: 641px)" fetchpriority="high" />
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- ODOO ERP Automation Bootcamp landing page (page-scoped; additive) ---- */ /* ---- ODOO ERP Automation Bootcamp landing page (page-scoped; additive) ---- */
.bc-sr-only { .bc-sr-only {
+1 -1
View File
@@ -31,7 +31,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- Odoo Hosting 2027 landing page (page-scoped; additive) ---- */ /* ---- Odoo Hosting 2027 landing page (page-scoped; additive) ---- */
.cmp-sr-only { .cmp-sr-only {
+1 -1
View File
@@ -29,7 +29,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* Language selector — the page's top row: the back-link stays left, the selector travels right. /* Language selector — the page's top row: the back-link stays left, the selector travels right.
Cream canvas, so lang.js's own dark-brass active colour is the correct one (no override). */ Cream canvas, so lang.js's own dark-brass active colour is the correct one (no override). */
+1 -1
View File
@@ -28,7 +28,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* Utility page, same shell as /freelancer-edit/ and the top bar of /* Utility page, same shell as /freelancer-edit/ and the top bar of
+1 -1
View File
@@ -24,7 +24,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* Utility page. Deliberately small: no hero, no footer, no site chrome beyond a /* Utility page. Deliberately small: no hero, no footer, no site chrome beyond a
+1 -1
View File
@@ -28,7 +28,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* Utility page. Deliberately small: no hero, no footer, no site chrome beyond a brand /* Utility page. Deliberately small: no hero, no footer, no site chrome beyond a brand
+4 -2
View File
@@ -128,7 +128,9 @@
.hero-stats{display:flex;gap:1.5rem;margin-bottom:2rem;flex-wrap:wrap}.hero-stat{display:flex;align-items:center;gap:.4rem;color:rgba(255,255,255,.65);font-size:.85rem}.hero-stat i{color:var(--brass);font-size:.75rem} .hero-stats{display:flex;gap:1.5rem;margin-bottom:2rem;flex-wrap:wrap}.hero-stat{display:flex;align-items:center;gap:.4rem;color:rgba(255,255,255,.65);font-size:.85rem}.hero-stat i{color:var(--brass);font-size:.75rem}
.hero-actions{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:2rem} .hero-actions{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:2rem}
.hero-notice{position:absolute;top:1.25rem;right:1.25rem;z-index:3;display:flex;align-items:center;gap:.55rem;max-width:min(360px,calc(100% - 2rem));padding:.6rem .85rem .6rem 1rem;background:#f5c542;color:var(--midnight);border:1px solid rgba(13,27,46,.14);border-radius:var(--radius);box-shadow:0 8px 24px rgba(13,27,46,.3);font-family:Inter,sans-serif;font-size:.82rem;line-height:1.4;animation:heroNoticeIn .4s cubic-bezier(.16,1,.3,1)} .hero-notice{position:absolute;top:1.25rem;right:1.25rem;z-index:3;display:flex;align-items:center;gap:.55rem;max-width:min(360px,calc(100% - 2rem));padding:.6rem .85rem .6rem 1rem;background:#f5c542;color:var(--midnight);border:1px solid rgba(13,27,46,.14);border-radius:var(--radius);box-shadow:0 8px 24px rgba(13,27,46,.3);font-family:Inter,sans-serif;font-size:.82rem;line-height:1.4;animation:heroNoticeIn .4s cubic-bezier(.16,1,.3,1)}
.hero-notice[hidden]{display:none} /* `.hero-notice[hidden]{display:none}` used to live here; the site-wide `[hidden]`
rule in /style.css hides it (`.hero-notice` sets `display:flex`, which outranked
the UA rule). */
.hero-notice i{color:var(--midnight);font-size:.9rem;flex-shrink:0} .hero-notice i{color:var(--midnight);font-size:.9rem;flex-shrink:0}
.hero-notice-text{flex:1;min-width:0;overflow-wrap:anywhere} .hero-notice-text{flex:1;min-width:0;overflow-wrap:anywhere}
.hero-notice-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;padding:0;border:0;border-radius:50%;background:rgba(13,27,46,.12);color:var(--midnight);font-size:1rem;line-height:1;cursor:pointer;transition:background .2s} .hero-notice-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;padding:0;border:0;border-radius:50%;background:rgba(13,27,46,.12);color:var(--midnight);font-size:1rem;line-height:1;cursor:pointer;transition:background .2s}
@@ -230,7 +232,7 @@
.bf-topbar-cta{color:var(--brass);white-space:nowrap} .bf-topbar-cta{color:var(--brass);white-space:nowrap}
.bf-topbar:hover .bf-topbar-cta,.bf-topbar:focus-visible .bf-topbar-cta{color:var(--brass-bright)} .bf-topbar:hover .bf-topbar-cta,.bf-topbar:focus-visible .bf-topbar-cta{color:var(--brass-bright)}
</style> </style>
<link rel="stylesheet" href="style.css?v=3332fbba93" /> <link rel="stylesheet" href="style.css?v=061517baef" />
<!-- Privacy-friendly analytics by Plausible --> <!-- Privacy-friendly analytics by Plausible -->
<script async src="https://plausible.office.odoo4projects.com/js/pa-NhA7Rf-79VopXFQXhSS4e.js"></script> <script async src="https://plausible.office.odoo4projects.com/js/pa-NhA7Rf-79VopXFQXhSS4e.js"></script>
<script> <script>
+1 -1
View File
@@ -25,7 +25,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="style.css?v=3332fbba93" /> <link rel="stylesheet" href="style.css?v=061517baef" />
<style> <style>
.legal-hero { .legal-hero {
padding: 4rem 0 2.5rem; padding: 4rem 0 2.5rem;
+4 -4
View File
@@ -43,7 +43,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" /></noscript> <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- Odoo Black Friday 2026 page (page-scoped; additive) ---- */ /* ---- Odoo Black Friday 2026 page (page-scoped; additive) ---- */
.bf-sr-only { .bf-sr-only {
@@ -525,9 +525,9 @@
border-top: 2px solid var(--brass, #c9a227); border-top: 2px solid var(--brass, #c9a227);
box-shadow: 0 -8px 30px rgba(13, 27, 46, 0.28); box-shadow: 0 -8px 30px rgba(13, 27, 46, 0.28);
} }
.ads-consent[hidden] { /* `.ads-consent[hidden]{display:none}` used to live here. The banner sets no
display: none; `display` of its own, so the UA rule already hid it — the patch was redundant;
} it is gone so the site-wide `[hidden]` rule in /style.css is the one mechanism. */
.ads-consent-inner { .ads-consent-inner {
width: 86%; width: 86%;
max-width: 1200px; max-width: 1200px;
+1 -1
View File
@@ -23,7 +23,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- "Odoo Community + AI agent" page (page-scoped; additive). /* ---- "Odoo Community + AI agent" page (page-scoped; additive).
Reuses the top bar, band rhythm, hero, FAQ and final-CTA treatment already Reuses the top bar, band rhythm, hero, FAQ and final-CTA treatment already
+1 -1
View File
@@ -21,7 +21,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- Freelancer records — admin (page-scoped). Internal page, never linked. ---- */ /* ---- Freelancer records — admin (page-scoped). Internal page, never linked. ---- */
.adm-bar { .adm-bar {
+14 -19
View File
@@ -29,13 +29,19 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- "Odoo Community developers" directory (page-scoped; additive). /* ---- "Odoo Community developers" directory (page-scoped; additive).
Reuses the top bar, band rhythm, hero, FAQ and final-CTA treatment already Reuses the top bar, band rhythm, hero, FAQ and final-CTA treatment already
shipped on odoo-staging-environment/ and odoo-community-ai/. shipped on odoo-staging-environment/ and odoo-community-ai/.
Additions this page needs and no other: .dir-* (the directory, filters and forms), Additions this page needs and no other: .dir-* (the directory, filters and forms),
.dev-* (one freelancer card), .form-* (the three forms). ---- */ .dev-* (one freelancer card), .form-* (the three forms). ---- */
/* `hidden` for this page is handled by the one site-wide `[hidden]` rule in
/style.css (a class- or id-based `display` outranks the UA's `[hidden]` rule, so
the old per-element patches here — on the cards, the filter row, the pager and
the modal — could not beat this page's id-based ready-state selector). No
per-element `[hidden]` rule lives here any more, so nothing disagrees. */
.oca-sr-only { .oca-sr-only {
position: absolute; position: absolute;
width: 1px; width: 1px;
@@ -229,13 +235,9 @@
.dir-search { .dir-search {
min-width: 240px; min-width: 240px;
} }
/* `hidden` must really hide. The filter bar and each card set `display` in their own /* (A filtered-out card used to be patched here and on `.dir-filters`; both are covered
class rules, and a class rule beats the UA's [hidden] rule — so without this a by the single `[hidden]` rule in /style.css, which the id-based ready selector
filtered-out card (and a dead bar with JavaScript off) would stay on screen. */ cannot outrank.) */
.dir-filters[hidden],
.dev-card[hidden] {
display: none;
}
.dir-filter input[type="search"] { .dir-filter input[type="search"] {
font-family: Inter, sans-serif; font-family: Inter, sans-serif;
font-size: 0.9rem; font-size: 0.9rem;
@@ -334,7 +336,7 @@
/* Pagination — nine cards per page. Script-dependent BY DESIGN: with JavaScript /* Pagination — nine cards per page. Script-dependent BY DESIGN: with JavaScript
off the element keeps its `hidden` attribute and every build-time card shows. off the element keeps its `hidden` attribute and every build-time card shows.
`[hidden]` needs its own rule because this class sets `display`. */ (`hidden` is honoured by the single `[hidden]` rule in /style.css.) */
.dir-pager { .dir-pager {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@@ -344,9 +346,6 @@
max-width: 1000px; max-width: 1000px;
margin: 1.75rem auto 0; margin: 1.75rem auto 0;
} }
.dir-pager[hidden] {
display: none;
}
.dir-pager-pages { .dir-pager-pages {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@@ -652,9 +651,6 @@
} }
/* ---- The ask-a-question modal (ships dark; opened only when wired) ---- */ /* ---- The ask-a-question modal (ships dark; opened only when wired) ---- */
.contact-modal[hidden] {
display: none;
}
.contact-modal { .contact-modal {
position: fixed; position: fixed;
inset: 0; inset: 0;
@@ -1127,10 +1123,9 @@
width: 4rem; width: 4rem;
margin-left: 0.35rem; margin-left: 0.35rem;
} }
.focus-sliders[hidden], /* (`.focus-sliders[hidden]` / `.focus-noscript[hidden]` were patched here; neither
.focus-noscript[hidden] { element sets `display`, so the patch was redundant. The single `[hidden]` rule in
display: none; /style.css covers them, so nothing is left disagreeing.) */
}
.focus-counter { .focus-counter {
font-size: 0.78rem; font-size: 0.78rem;
color: var(--ink-soft); color: var(--ink-soft);
+1 -1
View File
@@ -38,7 +38,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="style.css?v=3332fbba93" /> <link rel="stylesheet" href="style.css?v=061517baef" />
<style> <style>
/* ---- Odoo Community Upgrade page (page-scoped; additive) ---- */ /* ---- Odoo Community Upgrade page (page-scoped; additive) ---- */
.oc-sr-only { .oc-sr-only {
+1 -1
View File
@@ -33,7 +33,7 @@
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="preload" as="image" href="/images/hero/bootcamp-hero-mobile-900.webp" media="(max-width: 640px)" fetchpriority="high" /> <link rel="preload" as="image" href="/images/hero/bootcamp-hero-mobile-900.webp" media="(max-width: 640px)" fetchpriority="high" />
<link rel="preload" as="image" href="/images/hero/bootcamp-hero-desktop-1920.webp" media="(min-width: 641px)" fetchpriority="high" /> <link rel="preload" as="image" href="/images/hero/bootcamp-hero-desktop-1920.webp" media="(min-width: 641px)" fetchpriority="high" />
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- ODOO ERP Automation Bootcamp landing page (page-scoped; additive) ---- */ /* ---- ODOO ERP Automation Bootcamp landing page (page-scoped; additive) ---- */
.bc-sr-only { .bc-sr-only {
+1 -1
View File
@@ -31,7 +31,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="style.css?v=3332fbba93" /> <link rel="stylesheet" href="style.css?v=061517baef" />
<style> <style>
/* ---- Odoo Hosting 2027 landing page (page-scoped; additive) ---- */ /* ---- Odoo Hosting 2027 landing page (page-scoped; additive) ---- */
.cmp-sr-only { .cmp-sr-only {
+1 -1
View File
@@ -35,7 +35,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- Odoo Hosting Offers (evergreen hub) page (page-scoped; additive) ---- */ /* ---- Odoo Hosting Offers (evergreen hub) page (page-scoped; additive) ---- */
.of-sr-only { .of-sr-only {
+1 -1
View File
@@ -27,7 +27,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- ODOO x N8N Masterclass landing page (page-scoped; additive). /* ---- ODOO x N8N Masterclass landing page (page-scoped; additive).
The block below is the bootcamp page's page-scoped CSS, reused so the two The block below is the bootcamp page's page-scoped CSS, reused so the two
+1 -1
View File
@@ -29,7 +29,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- "Odoo staging environment" guide page (page-scoped; additive). /* ---- "Odoo staging environment" guide page (page-scoped; additive).
Reuses the top bar, band rhythm, hero and FAQ treatment already shipped on Reuses the top bar, band rhythm, hero and FAQ treatment already shipped on
+2 -2
View File
@@ -27,8 +27,8 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" media="print" onload="this.media='all'" /> <link rel="stylesheet" href="/style.css?v=061517baef" media="print" onload="this.media='all'" />
<noscript><link rel="stylesheet" href="/style.css?v=3332fbba93" /></noscript> <noscript><link rel="stylesheet" href="/style.css?v=061517baef" /></noscript>
<style> <style>
/* ---- Partner briefing for Andrew (page-scoped; additive) ---- */ /* ---- Partner briefing for Andrew (page-scoped; additive) ---- */
.andrew-sr-only { .andrew-sr-only {
+1 -1
View File
@@ -25,7 +25,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="style.css?v=3332fbba93" /> <link rel="stylesheet" href="style.css?v=061517baef" />
<style> <style>
.legal-hero { .legal-hero {
padding: 4rem 0 2.5rem; padding: 4rem 0 2.5rem;
+13
View File
@@ -6,6 +6,19 @@
========================================================= */ ========================================================= */
* { box-sizing: border-box; } * { box-sizing: border-box; }
/* `hidden` must really hide — everywhere, not one element at a time. The UA's own
`[hidden] { display: none }` is the weakest possible declaration: any page rule that
sets `display` on the same element outranks it. A class rule (`.dir-pager`,
`.dev-card`, `.hero-notice`) already beats it, and an id-based state selector such as
`.js #directory[data-dir-state="ready"] #dirGrid > .dev-card` (two ids) beat the old
per-element patch — so setting `el.hidden = true` set the attribute and the element
stayed on screen (measured on /odoo-community-developers/: four cards visible, the
count line reading "Showing 1 of 4"). This one rule, with `!important`, beats every
class- or id-based `display`, so the attribute hides its element no matter which
later rule sets `display`. It is the single mechanism for `[hidden]` site-wide; the
per-element `[hidden]` rules are gone so nothing disagrees. */
[hidden] { display: none !important; }
body { body {
margin: 0; margin: 0;
font-family: Inter, 'Segoe UI', sans-serif; font-family: Inter, 'Segoe UI', sans-serif;
+1 -1
View File
@@ -29,7 +29,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="style.css?v=3332fbba93" /> <link rel="stylesheet" href="style.css?v=061517baef" />
<style> <style>
/* Language selector — the page's top row: the back-link stays left, the selector travels right. /* Language selector — the page's top row: the back-link stays left, the selector travels right.
Cream canvas, so lang.js's own dark-brass active colour is the correct one (no override). */ Cream canvas, so lang.js's own dark-brass active colour is the correct one (no override). */
+1 -1
View File
@@ -25,7 +25,7 @@
rel="stylesheet" rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
/> />
<link rel="stylesheet" href="style.css?v=3332fbba93" /> <link rel="stylesheet" href="style.css?v=061517baef" />
<style> <style>
.legal-hero { .legal-hero {
padding: 4rem 0 2.5rem; padding: 4rem 0 2.5rem;
+1 -1
View File
@@ -27,7 +27,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- "What Can I Use Odoo For?" guide page (page-scoped; additive). /* ---- "What Can I Use Odoo For?" guide page (page-scoped; additive).
The block below is odoo-community-upgrade.html's page-scoped CSS, reused so The block below is odoo-community-upgrade.html's page-scoped CSS, reused so
+1 -1
View File
@@ -27,7 +27,7 @@
onload="this.media='all'" onload="this.media='all'"
/> />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Marcellus&display=swap" /></noscript>
<link rel="stylesheet" href="/style.css?v=3332fbba93" /> <link rel="stylesheet" href="/style.css?v=061517baef" />
<style> <style>
/* ---- Workshops and Classes hub page (page-scoped; additive). /* ---- Workshops and Classes hub page (page-scoped; additive).
The block below is the bootcamp page's page-scoped CSS, reused so the two The block below is the bootcamp page's page-scoped CSS, reused so the two