diff --git a/README.md b/README.md index e575ad0..f5ae24e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,159 @@ -# OROSE-AI -Conseillere OROSE +# ÉCHEC O CUBE — Site Officiel (Thème Shopify / Shopify Theme) + +> Le jeu de stratégie où la physique valide chaque coup. +> *The strategy game where physics validates every move.* + +Thème Shopium premium, bilingue FR/EN, entièrement éditable depuis l'admin +Shopify — construit sur la base **Dawn**. Aucun code requis après livraison. + +--- + +## 🎨 Palette de marque (modifiable: Réglages › Réglages du thème) + +| Rôle | Hex | +|------|-----| +| Fond principal | `#1A1008` | +| Fond secondaire | `#0D0705` | +| Or bronze (logo ÉCHEC, CTA) | `#C9982F` | +| Or miel (pâle) | `#E8C96A` | +| Crème parchemin (texte) | `#F5ECD7` | +| Rouge crimson (pièce rouge) | `#B22222` | +| Bois chêne | `#8B6914` | +| Rainure / bordure | `#2C1F0E` | + +Polices Google : **Playfair Display** (titres), **Libre Baskerville** (corps), +**Cinzel** (étiquettes/UI). + +--- + +## 📁 Structure du thème + +``` +layout/theme.liquid Mise en page : nav fixe, pied de page, polices, variables CSS +sections/ + eoc-hero.liquid Section 1 — Héros plein écran + eoc-concept.liquid Section 2 — Le concept + statistiques animées + eoc-game.liquid Section 3 — Les 3 pièces (PÂLE / FONCÉ / ROUGE) + eoc-experience.liquid Section 4 — L'expérience (lifestyle) + eoc-rules.liquid Section 5 — Comment jouer (3 étapes) + eoc-product.liquid Section 6 — Produit Shopify natif (panier réel) + eoc-community.liquid Section 7 — Capture courriel (liste clients native) + eoc-rules-page.liquid Page /rules — règlement complet bilingue + eoc-about.liquid Page /about — histoire de l'inventeur + eoc-collection.liquid Page /shop — grille de collection + eoc-product-page.liquid Page produit native + eoc-cart.liquid Panier + eoc-page.liquid Page générique + eoc-404.liquid 404 +templates/ + index.json Accueil (7 sections dans l'ordre) + page.rules.json Modèle page Règles + page.about.json Modèle page À propos + collection.json product.json cart.json page.json 404.json +assets/ + eoc-theme.css Variables de marque, typographie, styles, responsive + eoc-animations.js Reveal au défilement + compteurs + menu mobile (vanilla) +config/ + settings_schema.json Sélecteurs de couleur, polices, nav, pied de page + settings_data.json Valeurs par défaut = palette de marque +locales/ + en.default.json fr.json +``` + +--- + +## 🖼️ Images à téléverser (Admin › Contenu › Fichiers, puis sélectionner dans le Customizer) + +Chaque image est un réglage **image_picker** — aucune image n'est codée en dur. + +| Réglage | Image source | Section | +|---------|--------------|---------| +| **Logo officiel (nav)** | `logo-echecocube.png` | En-tête — *Réglages du thème › Marque & en-tête › Image du logo* | +| **Logo officiel (héros)** | `logo-echecocube.png` | Héros — *Customizer › section Héros › Image du logo* | +| Image héros (fond plein écran) | `Pub-Echec_O_Cube.png` | Héros + fond 404 | +| **Vidéo de partie** | `VIDÉO-PARTI-ÉCHEC O CUBE.mp4` | Section Vidéo (accueil) | +| Image héros (alternative) | `AffichePub.png` | Héros | +| Image macro | `IMG_20931.jpg` | Concept | +| Image plein largeur | `IMG_20861.jpg` | Le Jeu | +| Image de fond | `PARTI2JOUEURS.png` | Expérience | +| Diagramme de pointage | `IMG_E21161.jpg` | Comment jouer | +| Photos produit | `IMG_20801`, `IMG_20861`, `IMG_20931`, série `IMG_19xxx–21xxx` | Produit / galerie | + +--- + +### 🏷️ Insérer le logo officiel (1 seul geste, sans code) + +Le logo officiel ÉCHEC O CUBE s'affiche automatiquement dès qu'il est téléversé — +il remplace le logo texte dans la **barre de navigation** ET au **centre du héros**. + +1. **Admin Shopify › Personnaliser** (le thème). +2. Pour le héros : cliquez la section **Héros**, puis **Image du logo** → *Sélectionner une image* → téléversez le fichier du logo. Ajustez la **largeur max** au goût. Astuce : décochez « Afficher les slogans » si vous gardez ceux déjà inclus dans le logo. +3. Pour la nav : **Réglages du thème › Marque & en-tête › Image du logo (nav)** → téléversez le même fichier. Ajustez la **hauteur**. +4. Conseil : utilisez un **PNG à fond transparent** pour un rendu net sur le fond espresso sombre. + +> Tant qu'aucune image n'est choisie, un logo texte de secours s'affiche. + +## 🧱 Tout modifier sur chaque page (sans code) + +Le thème inclut un **constructeur de contenu flexible** (`eoc-flex`) utilisé par +défaut sur **toutes les pages** (À propos, Contact, Le Jeu, Vision, Tournois, +Jouer, etc.). Dans **Personnaliser**, vous pouvez **ajouter, glisser-déposer, +réordonner et supprimer** des blocs : + +- **Sur-titre**, **Titre** (taille/couleur/alignement réglables) +- **Texte riche** (gras, italique, liens, listes) +- **Texte bilingue FR / EN** côte à côte +- **Image** (avec légende) et **Image + Texte** (image à gauche ou à droite) +- **Citation**, **Bouton** (3 styles), **Formulaire de contact** +- **Contenu de la page** (le texte saisi dans *Admin › Pages*), **Espace**, **Séparateur** + +Chaque bloc a sa couleur de fond, sa largeur et ses marges. Aucune ligne de code. + +> Les pages d'accueil (7 sections), Règles et 404 ont elles aussi tous leurs +> textes, images et couleurs éditables dans le personnalisateur. + +### Gabarits de pages dédiés / Dedicated page templates + +Quatre gabarits prêts à remplir (contenu de départ bilingue, tout modifiable) : + +| Page | Gabarit à choisir (Admin › Pages › Modèle de thème) | +|------|------------------------------------------------------| +| Le Jeu | `page.le-jeu` | +| Vision | `page.vision` | +| Tournois | `page.tournois` | +| Jouer | `page.jouer` | +| À propos de nous | `page.about` | +| Contact | `page.contact` | + +**Pour utiliser un gabarit** : Admin › *Boutique en ligne › Pages* › créez/ouvrez la +page › à droite, **Modèle de thème** › choisissez le gabarit › *Enregistrer*. +Ensuite, dans *Personnaliser*, modifiez/ajoutez/remplacez tous les blocs et images. + +## 🚀 Installation + +Ces fichiers constituent une **surcouche éditoriale du thème Dawn**. + +1. Boutique Shopify (`echecocube.com`) › **Boutique en ligne › Thèmes** +2. Ajoutez le thème **Dawn** (dernière version) puis **Modifier le code**. +3. Téléversez/remplacez les fichiers de ce dépôt (mêmes chemins). +4. Renommez le thème : **« ÉCHEC O CUBE — Site Officiel »**. +5. Créez les pages **Règles** (modèle `rules`), **À propos** (modèle `about`). +6. **Navigation** : créez le menu `main-menu` (Règles, Boutique, Communauté, À propos) + et `footer`. Tous les liens sont éditables dans *Navigation*. +7. **Produit** : créez le produit « ÉCHEC O CUBE — Édition Bois », puis liez-le + dans la Section 6 (réglage *Produit lié*). Prix, variantes et panier deviennent réels. +8. **Liste courriel** : les inscriptions (Section 7) créent un client taggé + `newsletter, EOC-founder` → Shopify Email / Klaviyo. + +--- + +## ✅ Conforme au cahier des charges + +- Bilingue FR/EN sur chaque bloc · 100 % éditable au Customizer (texte, image, couleur) +- Section 6 = produit Shopify **natif** (panier/checkout réels) +- Section 7 = formulaire client **natif** Shopify (aucun script externe) +- Mobile-first responsive · lazy-loading · `preconnect` Google Fonts · CDN images +- Animations CSS + ~30 lignes de JS vanilla (Intersection Observer, compteurs) +- Nav fixe `#0D0705` 90 % + backdrop-blur · sélecteur FR/EN + +© 1999–2026 Alain Dupont. Droit d'auteur OPIC Canada No. 477714. diff --git a/assets/eoc-animations.js b/assets/eoc-animations.js new file mode 100644 index 0000000..ee111a1 --- /dev/null +++ b/assets/eoc-animations.js @@ -0,0 +1,29 @@ +/* ÉCHEC O CUBE — scroll reveal + stat counters + mobile nav. Vanilla, no deps. */ +(function () { + var io = new IntersectionObserver(function (entries) { + entries.forEach(function (e) { + if (!e.isIntersecting) return; + e.target.classList.add('eoc-in'); + var c = e.target.querySelector('[data-count]'); + if (c && !c.dataset.done) { c.dataset.done = '1'; count(c); } + io.unobserve(e.target); + }); + }, { threshold: 0.18 }); + document.querySelectorAll('.eoc-reveal').forEach(function (el) { io.observe(el); }); + + function count(el) { + var end = parseInt(el.getAttribute('data-count'), 10) || 0, t0 = null, dur = 1600; + var suffix = el.getAttribute('data-suffix') || ''; + (function step(t) { + if (!t0) t0 = t; + var p = Math.min((t - t0) / dur, 1); + el.textContent = Math.floor(p * end).toLocaleString('fr-CA') + suffix; + if (p < 1) requestAnimationFrame(step); + })(performance.now()); + } + + var toggle = document.querySelector('.eoc-nav__toggle'); + if (toggle) toggle.addEventListener('click', function () { + document.querySelector('.eoc-nav__links').classList.toggle('is-open'); + }); +})(); diff --git a/assets/eoc-theme.css b/assets/eoc-theme.css new file mode 100644 index 0000000..4269d21 --- /dev/null +++ b/assets/eoc-theme.css @@ -0,0 +1,604 @@ +/* ============================================================ + ÉCHEC O CUBE — Site Officiel + Global brand stylesheet + Brand palette + typography + utilities + section styles + Colors are driven by CSS custom properties output in + layout/theme.liquid from the Shopify theme settings, so the + store owner can change the palette from Settings > Theme + settings without touching this file. The values below are + fallbacks matching the strict brand palette. + ============================================================ */ + +:root { + --eoc-bg-primary: #1A1008; + --eoc-bg-secondary: #0D0705; + --eoc-gold: #C9982F; + --eoc-gold-light: #E8C96A; + --eoc-cream: #F5ECD7; + --eoc-red: #B22222; + --eoc-wood: #8B6914; + --eoc-groove: #2C1F0E; + + --eoc-font-display: 'Playfair Display', Georgia, serif; + --eoc-font-body: 'Libre Baskerville', Georgia, serif; + --eoc-font-ui: 'Cinzel', 'Times New Roman', serif; + + --eoc-maxwidth: 1280px; + --eoc-section-pad: 7rem; +} + +/* ---------- Reset / base ---------- */ +*, +*::before, +*::after { box-sizing: border-box; } + +html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; } + +body.eoc-body { + margin: 0; + padding: 0; + background-color: var(--eoc-bg-primary); + color: var(--eoc-cream); + font-family: var(--eoc-font-body); + font-size: 18px; + line-height: 1.7; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + overflow-x: hidden; +} + +img { max-width: 100%; height: auto; display: block; } + +a { color: var(--eoc-gold); text-decoration: none; transition: color .25s ease; } +a:hover { color: var(--eoc-gold-light); } + +h1, h2, h3, h4 { + font-family: var(--eoc-font-display); + font-weight: 700; + margin: 0 0 .5em; + color: var(--eoc-cream); +} + +/* ---------- Layout utilities ---------- */ +.eoc-section { position: relative; padding: var(--eoc-section-pad) 1.5rem; overflow: hidden; } +.eoc-container { max-width: var(--eoc-maxwidth); margin: 0 auto; width: 100%; } +.eoc-narrow { max-width: 760px; margin-left: auto; margin-right: auto; } +.eoc-center { text-align: center; } +.eoc-order-2 { order: 2; } +.eoc-flex .eoc-rte p { margin: 0 0 1rem; } +.eoc-flex .eoc-rte a { text-decoration: underline; } +.visually-hidden { position:absolute!important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; } + +.eoc-kicker { + font-family: var(--eoc-font-ui); + text-transform: uppercase; + letter-spacing: .28em; + font-size: .82rem; + color: var(--eoc-gold); + display: block; + margin-bottom: 1.25rem; +} + +/* ---------- Buttons / CTAs ---------- */ +.eoc-btn { + position: relative; + display: inline-block; + font-family: var(--eoc-font-ui); + text-transform: uppercase; + letter-spacing: .18em; + font-size: .85rem; + padding: 1rem 2.25rem; + border: 2px solid var(--eoc-gold); + color: var(--eoc-gold); + background: transparent; + cursor: pointer; + overflow: hidden; + transition: color .3s ease, background .3s ease, border-color .3s ease; +} +.eoc-btn--solid { background: var(--eoc-gold); color: var(--eoc-bg-secondary); } +.eoc-btn--cream { border-color: var(--eoc-cream); color: var(--eoc-cream); } +.eoc-btn--full { display: block; width: 100%; text-align: center; } + +/* gold shimmer sweep on hover */ +.eoc-btn::after { + content: ''; + position: absolute; + top: 0; left: -120%; + width: 60%; height: 100%; + background: linear-gradient(120deg, transparent, rgba(245,236,215,.45), transparent); + transform: skewX(-20deg); + transition: left .6s ease; +} +.eoc-btn:hover::after { left: 130%; } +.eoc-btn:hover { background: var(--eoc-gold); color: var(--eoc-bg-secondary); border-color: var(--eoc-gold); } +.eoc-btn--cream:hover { background: var(--eoc-cream); color: var(--eoc-bg-secondary); border-color: var(--eoc-cream); } + +/* ---------- Grain / noise overlay ---------- */ +.eoc-grain { + position: absolute; + inset: 0; + pointer-events: none; + opacity: .06; + z-index: 2; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); + animation: eoc-grain-shift 8s steps(6) infinite; +} +@keyframes eoc-grain-shift { + 0% { transform: translate(0,0); } + 20% { transform: translate(-4%, 3%); } + 40% { transform: translate(3%, -2%); } + 60% { transform: translate(-2%, 4%); } + 80% { transform: translate(4%, -3%); } + 100% { transform: translate(0,0); } +} + +/* diagonal groove pattern */ +.eoc-grooves::before { + content: ''; + position: absolute; + inset: 0; + pointer-events: none; + opacity: .08; + background-image: repeating-linear-gradient( + 45deg, + var(--eoc-groove) 0, + var(--eoc-groove) 2px, + transparent 2px, + transparent 22px + ); + z-index: 0; +} + +/* ============================================================ + SCROLL ANIMATIONS (paired with eoc-animations.js) + ============================================================ */ +.eoc-reveal { + opacity: 0; + transform: translateY(36px); + transition: opacity .9s ease-out, transform .9s ease-out; + will-change: opacity, transform; +} +.eoc-reveal.eoc-in { opacity: 1; transform: none; } +@media (prefers-reduced-motion: reduce) { + .eoc-reveal { opacity: 1; transform: none; transition: none; } + .eoc-grain { animation: none; } + html { scroll-behavior: auto; } +} + +/* ============================================================ + NAVIGATION (fixed top bar) + ============================================================ */ +.eoc-nav { + position: fixed; + top: 0; left: 0; right: 0; + z-index: 1000; + background: rgba(13,7,5,.90); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border-bottom: 1px solid var(--eoc-groove); +} +.eoc-nav__inner { + max-width: var(--eoc-maxwidth); + margin: 0 auto; + display: flex; + align-items: center; + justify-content: space-between; + padding: .5rem 1.5rem; + gap: 1.5rem; +} +.eoc-nav__logo { + font-family: var(--eoc-font-display); + font-style: italic; + font-weight: 700; + font-size: 1.4rem; + letter-spacing: .02em; + white-space: nowrap; +} +.eoc-nav__logo .gold { color: var(--eoc-gold); } +.eoc-nav__logo .cream { color: var(--eoc-cream); } +.eoc-nav__logo-img { display: block; width: auto; height: 152px; max-height: 28vh; } +.eoc-nav__links { + display: flex; + gap: 2rem; + list-style: none; + margin: 0; padding: 0; +} +.eoc-nav__links a { + font-family: var(--eoc-font-ui); + text-transform: uppercase; + letter-spacing: .14em; + font-size: .78rem; + color: var(--eoc-cream); +} +.eoc-nav__links a:hover { color: var(--eoc-gold); } +.eoc-nav__right { display: flex; align-items: center; gap: 1.1rem; } +.eoc-nav__icon { position: relative; color: var(--eoc-cream); display: inline-flex; align-items: center; } +.eoc-nav__icon:hover { color: var(--eoc-gold); } +.eoc-cart-count { + position: absolute; top: -8px; right: -10px; + background: var(--eoc-gold); color: var(--eoc-bg-secondary); + font-family: var(--eoc-font-ui); font-size: .62rem; font-weight: 600; + min-width: 17px; height: 17px; border-radius: 50%; + display: flex; align-items: center; justify-content: center; padding: 0 4px; +} +.eoc-lang { display: flex; gap: .35rem; font-family: var(--eoc-font-ui); font-size: .78rem; } +.eoc-lang a { color: var(--eoc-wood); letter-spacing: .1em; } +.eoc-lang a.is-active { color: var(--eoc-gold); } +.eoc-nav__toggle { + display: none; + background: none; border: none; cursor: pointer; + flex-direction: column; gap: 5px; padding: 6px; +} +.eoc-nav__toggle span { width: 26px; height: 2px; background: var(--eoc-gold); display: block; } + +/* ============================================================ + SECTION 1 — HERO + ============================================================ */ +.eoc-hero { + position: relative; + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + padding: 8rem 1.5rem 6rem; +} +.eoc-hero__bg { position: absolute; inset: 0; z-index: 0; } +.eoc-hero__bg img { width: 100%; height: 100%; object-fit: cover; } +.eoc-hero__overlay { + position: absolute; inset: 0; z-index: 1; + background: var(--eoc-bg-primary); + opacity: .55; +} +.eoc-hero__content { position: relative; z-index: 3; max-width: 900px; } +.eoc-hero__logo { + font-family: var(--eoc-font-display); + font-weight: 700; + font-style: italic; + font-size: 96px; + line-height: 1; + letter-spacing: .01em; + margin: 0; +} +.eoc-hero__logo .gold { color: var(--eoc-gold); } +.eoc-hero__logo .cream { color: var(--eoc-cream); } +/* Official logo image in hero */ +.eoc-hero__logo-wrap { margin: 0 auto; line-height: 0; } +.eoc-hero__logo-img { + display: block; + width: 100%; + height: auto; + margin: 0 auto; + filter: drop-shadow(0 8px 28px rgba(0,0,0,.65)); +} +.eoc-hero__logo .dot { + display: inline-block; + width: .42em; height: .42em; + border: .07em solid var(--eoc-gold-light); + border-radius: 50%; + margin: 0 .12em; + vertical-align: .18em; +} +.eoc-hero__tag-fr { + font-family: var(--eoc-font-body); + font-style: italic; + color: var(--eoc-gold-light); + font-size: 24px; + margin: 1.5rem 0 .4rem; +} +.eoc-hero__tag-en { + font-family: var(--eoc-font-ui); + text-transform: uppercase; + letter-spacing: .2em; + color: var(--eoc-wood); + font-size: 16px; + margin: 0 0 2.5rem; +} +.eoc-hero__ctas { display: flex; gap: 1.25rem; justify-content: center; flex-wrap: wrap; } +.eoc-hero__scroll { + position: absolute; + bottom: 2rem; left: 50%; + transform: translateX(-50%); + z-index: 3; + color: var(--eoc-gold); + font-size: 2rem; + animation: eoc-bounce 1.8s ease-in-out infinite; +} +@keyframes eoc-bounce { + 0%, 100% { transform: translate(-50%, 0); } + 50% { transform: translate(-50%, 12px); } +} +/* hero entrance animation */ +.eoc-anim-up { opacity: 0; transform: translateY(28px); animation: eoc-up .8s ease-out forwards; } +.eoc-d1 { animation-delay: .3s; } +.eoc-d2 { animation-delay: .6s; } +@keyframes eoc-up { to { opacity: 1; transform: none; } } + +/* ============================================================ + SECTION 2 — CONCEPT (split) + ============================================================ */ +.eoc-concept { background: var(--eoc-bg-secondary); } +.eoc-split { display: grid; grid-template-columns: 1fr 1fr; gap: 3.5rem; align-items: center; } +.eoc-quote { + font-family: var(--eoc-font-display); + font-style: italic; + color: var(--eoc-gold); + font-size: 48px; + line-height: 1.2; + margin: 0 0 1.5rem; +} +.eoc-quote-sub { color: var(--eoc-cream); font-style: italic; font-size: 18px; } +.eoc-concept__img img { border: 1px solid var(--eoc-groove); } +.eoc-stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 2rem; + margin-top: 4rem; + text-align: center; + border-top: 1px solid var(--eoc-groove); + padding-top: 3rem; +} +.eoc-stat__num { + font-family: var(--eoc-font-display); + font-weight: 700; + color: var(--eoc-gold-light); + font-size: 3rem; + line-height: 1; +} +.eoc-stat__label { + font-family: var(--eoc-font-ui); + text-transform: uppercase; + letter-spacing: .16em; + font-size: .8rem; + color: var(--eoc-cream); + margin-top: .75rem; +} + +/* ============================================================ + SECTION 3 — THE GAME (cards) + ============================================================ */ +.eoc-game { background: var(--eoc-bg-primary); } +.eoc-game::before { + content:''; position:absolute; inset:0; + background: radial-gradient(circle at 50% 0%, rgba(139,105,20,.18), transparent 60%); + z-index:0; +} +.eoc-section-title { + font-family: var(--eoc-font-ui); + text-transform: uppercase; + letter-spacing: .25em; + color: var(--eoc-gold); + font-size: 1.6rem; + text-align: center; + margin-bottom: 3.5rem; +} +.eoc-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; position: relative; z-index: 1; } +.eoc-card { + background: var(--eoc-bg-primary); + border: 1px solid var(--eoc-groove); + border-top: 3px solid var(--eoc-gold); + padding: 2.25rem 1.75rem; +} +.eoc-card__swatch { + width: 56px; height: 56px; border-radius: 6px; + margin-bottom: 1.25rem; + box-shadow: inset 0 0 0 1px rgba(245,236,215,.15), 0 4px 14px rgba(0,0,0,.5); +} +.eoc-card__name { + font-family: var(--eoc-font-ui); + text-transform: uppercase; + letter-spacing: .14em; + color: var(--eoc-cream); + font-size: 1.25rem; + margin: 0 0 .15rem; +} +.eoc-card__points { + font-family: var(--eoc-font-display); + font-style: italic; + color: var(--eoc-gold-light); + font-size: 1.1rem; + margin-bottom: 1rem; +} +.eoc-card__body { color: var(--eoc-cream); font-size: .98rem; } +.eoc-card__body em { color: var(--eoc-gold-light); } +.eoc-game__feature { margin-top: 3.5rem; position: relative; z-index: 1; } +.eoc-game__feature img { width: 100%; border: 1px solid var(--eoc-groove); } +.eoc-caption { + font-family: var(--eoc-font-ui); + text-transform: uppercase; + letter-spacing: .12em; + font-size: .8rem; + color: var(--eoc-wood); + text-align: center; + margin-top: 1rem; +} + +/* ============================================================ + SECTION 4 — EXPERIENCE + ============================================================ */ +.eoc-experience { + position: relative; + min-height: 88vh; + display: flex; + align-items: center; + justify-content: center; + text-align: center; +} +.eoc-experience__bg { position: absolute; inset: 0; z-index: 0; } +.eoc-experience__bg img { width: 100%; height: 100%; object-fit: cover; } +.eoc-experience__overlay { position: absolute; inset: 0; background: var(--eoc-bg-primary); opacity: .4; z-index: 1; } +.eoc-experience__content { position: relative; z-index: 3; max-width: 760px; padding: 0 1.5rem; } +.eoc-experience__title { + font-family: var(--eoc-font-display); + font-weight: 700; + font-style: italic; + color: var(--eoc-gold-light); + font-size: 64px; + line-height: 1.1; + margin-bottom: 1.75rem; +} +.eoc-experience__body { color: var(--eoc-cream); font-size: 18px; } +.eoc-experience__body-en { color: var(--eoc-gold-light); font-size: 15px; font-style: italic; margin-top: 1rem; } + +/* ============================================================ + SECTION 5 — HOW TO PLAY + ============================================================ */ +.eoc-rules { background: var(--eoc-bg-primary); } +.eoc-rules__grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 3.5rem; align-items: center; } +.eoc-steps { list-style: none; margin: 0; padding: 0; } +.eoc-step { display: flex; gap: 1.5rem; padding: 1.75rem 0; border-bottom: 1px solid var(--eoc-groove); } +.eoc-step:last-child { border-bottom: none; } +.eoc-step__num { + flex: none; + width: 54px; height: 54px; + border: 2px solid var(--eoc-gold); + border-radius: 50%; + display: flex; align-items: center; justify-content: center; + font-family: var(--eoc-font-display); + font-weight: 700; + color: var(--eoc-gold); + font-size: 1.5rem; +} +.eoc-step__text { color: var(--eoc-cream); } +.eoc-step__text em { display:block; color: var(--eoc-gold-light); font-size: .9rem; margin-top: .3rem; } +.eoc-rules__frame { + border: 8px solid var(--eoc-groove); + box-shadow: 0 0 0 1px var(--eoc-gold), 0 18px 40px rgba(0,0,0,.55); + background: var(--eoc-bg-secondary); +} +.eoc-rules__link { display:inline-block; margin-top: 2rem; font-family: var(--eoc-font-ui); text-transform: uppercase; letter-spacing: .14em; font-size: .85rem; } + +/* ============================================================ + SECTION 6 — PRODUCT + ============================================================ */ +.eoc-product { background: var(--eoc-bg-secondary); } +.eoc-product__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 3.5rem; align-items: start; } +.eoc-product__media { display: flex; flex-direction: column; gap: 1rem; } +.eoc-product__main img { width: 100%; border: 1px solid var(--eoc-groove); } +.eoc-product__thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: .75rem; } +.eoc-product__thumbs img { border: 1px solid var(--eoc-groove); cursor: pointer; transition: border-color .25s; } +.eoc-product__thumbs img:hover { border-color: var(--eoc-gold); } +.eoc-product__title { font-family: var(--eoc-font-display); font-weight: 700; font-size: 2.4rem; color: var(--eoc-cream); } +.eoc-product__price { font-family: var(--eoc-font-ui); letter-spacing: .12em; color: var(--eoc-gold-light); font-size: 1.4rem; margin: .5rem 0 1.75rem; } +.eoc-product__bullets { list-style: none; margin: 0 0 2rem; padding: 0; } +.eoc-product__bullets li { position: relative; padding-left: 1.6rem; margin-bottom: 1rem; color: var(--eoc-cream); } +.eoc-product__bullets li::before { content: '◆'; position: absolute; left: 0; color: var(--eoc-gold); font-family: var(--eoc-font-ui); } +.eoc-product__note { font-size: .9rem; color: var(--eoc-wood); font-style: italic; margin-top: 1.25rem; } + +/* ============================================================ + SECTION 7 — COMMUNITY / EMAIL + ============================================================ */ +.eoc-community { background: var(--eoc-bg-secondary); } +.eoc-community__frame { + border: 2px solid var(--eoc-gold); + padding: 4.5rem 2rem; + text-align: center; + position: relative; + background: linear-gradient(180deg, rgba(201,152,47,.05), transparent); +} +.eoc-community__frame::before, +.eoc-community__frame::after { + content:''; position:absolute; width: 24px; height: 24px; border: 2px solid var(--eoc-gold-light); +} +.eoc-community__frame::before { top: 12px; left: 12px; border-right:none; border-bottom:none; } +.eoc-community__frame::after { bottom: 12px; right: 12px; border-left:none; border-top:none; } +.eoc-community__title { font-family: var(--eoc-font-display); font-weight: 700; font-style: italic; color: var(--eoc-gold); font-size: 48px; margin-bottom: 1rem; } +.eoc-community__form { display: flex; gap: .75rem; max-width: 520px; margin: 2.25rem auto 1.25rem; flex-wrap: wrap; } +.eoc-community__form .field { flex: 1 1 240px; } +.eoc-community__form input[type="email"] { + width: 100%; + padding: 1rem 1.1rem; + background: var(--eoc-bg-primary); + border: 1px solid var(--eoc-groove); + color: var(--eoc-cream); + font-family: var(--eoc-font-body); + font-size: 1rem; +} +.eoc-community__form input::placeholder { color: var(--eoc-wood); } +.eoc-community__social { font-family: var(--eoc-font-ui); letter-spacing: .12em; color: var(--eoc-wood); font-size: .85rem; text-transform: uppercase; } +.eoc-form__message { margin-top: 1rem; color: var(--eoc-gold-light); font-style: italic; } + +/* ============================================================ + FOOTER + ============================================================ */ +.eoc-footer { background: var(--eoc-bg-secondary); border-top: 1px solid var(--eoc-groove); padding: 3.5rem 1.5rem 2.5rem; text-align: center; } +.eoc-footer__logo { font-family: var(--eoc-font-display); font-style: italic; font-weight: 700; color: var(--eoc-gold); font-size: 1.3rem; } +.eoc-footer__logo-img { display: block; width: auto; height: 64px; margin: 0 auto 0.5rem; } +.eoc-footer__links { list-style:none; display:flex; gap:1.75rem; justify-content:center; flex-wrap:wrap; margin: 1.5rem 0; padding:0; } +.eoc-footer__links a { font-family: var(--eoc-font-ui); text-transform: uppercase; letter-spacing: .12em; font-size: .78rem; color: var(--eoc-cream); } +.eoc-footer__copy { color: var(--eoc-wood); font-size: .8rem; margin-top: 1rem; } + +/* ============================================================ + VIDEO section + ============================================================ */ +.eoc-video__frame { + margin: 0 auto; + border: 1px solid var(--eoc-groove); + box-shadow: 0 18px 50px rgba(0,0,0,.55); + background: #000; + line-height: 0; +} +.eoc-video__el { width: 100%; height: auto; display: block; } + +/* ============================================================ + 404 — full-bleed key image hero + ============================================================ */ +.eoc-404-hero { + position: relative; + min-height: 88vh; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + padding: 9rem 1.5rem 5rem; + overflow: hidden; +} +.eoc-404-hero__bg { position: absolute; inset: 0; z-index: 0; } +.eoc-404-hero__bg img { width: 100%; height: 100%; object-fit: cover; } +.eoc-404-hero__placeholder { width: 100%; height: 100%; background: var(--eoc-bg-secondary); } +.eoc-404-hero__overlay { position: absolute; inset: 0; z-index: 1; background: var(--eoc-bg-primary); opacity: .45; } +.eoc-404-hero__content { position: relative; z-index: 3; max-width: 760px; } + +/* ============================================================ + BILINGUAL PAGES (rules / about side by side) + ============================================================ */ +.eoc-page { background: var(--eoc-bg-primary); padding: 9rem 1.5rem 6rem; } +.eoc-bi { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; } +.eoc-bi__col h3 { color: var(--eoc-gold); font-family: var(--eoc-font-ui); text-transform: uppercase; letter-spacing: .16em; font-size: 1rem; border-bottom: 1px solid var(--eoc-groove); padding-bottom: .75rem; } +.eoc-bi__col { color: var(--eoc-cream); } +.eoc-rte h2 { color: var(--eoc-gold-light); font-style: italic; } +.eoc-rte a { text-decoration: underline; } + +/* ============================================================ + RESPONSIVE — MOBILE FIRST OVERRIDES + ============================================================ */ +@media (max-width: 900px) { + :root { --eoc-section-pad: 4.5rem; } + .eoc-nav__links { display: none; } + .eoc-nav__toggle { display: flex; } + .eoc-nav__logo-img { height: 64px !important; max-height: 64px; } + .eoc-nav__links.is-open { + display: flex; flex-direction: column; + position: absolute; top: 100%; left: 0; right: 0; + background: rgba(13,7,5,.97); padding: 1.5rem; gap: 1.25rem; + border-bottom: 1px solid var(--eoc-groove); + } + .eoc-hero__logo { font-size: 48px; } + .eoc-hero__tag-fr { font-size: 19px; } + .eoc-hero__ctas { flex-direction: column; } + .eoc-hero__ctas .eoc-btn { width: 100%; } + .eoc-split, + .eoc-rules__grid, + .eoc-product__grid, + .eoc-bi { grid-template-columns: 1fr; gap: 2.25rem; } + /* image above text on mobile */ + .eoc-concept__img { order: -1; } + .eoc-rules__frame { order: -1; } + .eoc-stats { grid-template-columns: 1fr; gap: 2.5rem; } + .eoc-cards { grid-template-columns: 1fr; } + .eoc-quote { font-size: 32px; } + .eoc-experience__title { font-size: 38px; } + .eoc-community__title { font-size: 32px; } + .eoc-product__title { font-size: 1.9rem; } + .eoc-stat__num { font-size: 2.4rem; } +} diff --git a/config/settings_data.json b/config/settings_data.json new file mode 100644 index 0000000..b124817 --- /dev/null +++ b/config/settings_data.json @@ -0,0 +1,57 @@ +/* + * ------------------------------------------------------------ + * IMPORTANT: The contents of this file are auto-generated. + * + * This file may be updated by the Shopify admin theme editor + * or related systems. Please exercise caution as any changes + * made to this file may be overwritten. + * ------------------------------------------------------------ + */ +{ + "current": { + "color_bg_primary": "#1A1008", + "color_bg_secondary": "#0D0705", + "color_gold": "#C9982F", + "color_gold_light": "#E8C96A", + "color_cream": "#F5ECD7", + "color_red": "#B22222", + "color_wood": "#8B6914", + "color_groove": "#2C1F0E", + "base_font_size": 18, + "header_logo_height": 152, + "default_logo_filename": "ECHEC_O_CUBE_LOGO_v5_transparent.png", + "brand_logo_word1": "ÉCHEC", + "brand_logo_word2": "CUBE", + "main_menu": "main-menu", + "show_lang_toggle": true, + "show_nav_icons": true, + "lang_fr_url": "/", + "lang_en_url": "/?lang=en", + "footer_logo_height": 64, + "footer_menu": "footer", + "footer_copy": "© 1999–2026 Alain Dupont. Droit d'auteur OPIC Canada No. 477714. Tous droits réservés.", + "content_for_index": [], + "blocks": { + "14060646107696862457": { + "type": "shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8", + "disabled": false, + "settings": {} + } + } + }, + "presets": { + "ÉCHEC O CUBE — Site Officiel": { + "color_bg_primary": "#1A1008", + "color_bg_secondary": "#0D0705", + "color_gold": "#C9982F", + "color_gold_light": "#E8C96A", + "color_cream": "#F5ECD7", + "color_red": "#B22222", + "color_wood": "#8B6914", + "color_groove": "#2C1F0E", + "base_font_size": 18, + "brand_logo_word1": "ÉCHEC", + "brand_logo_word2": "CUBE" + } + } +} diff --git a/config/settings_schema.json b/config/settings_schema.json new file mode 100644 index 0000000..4353042 --- /dev/null +++ b/config/settings_schema.json @@ -0,0 +1,189 @@ +[ + { + "name": "theme_info", + "theme_name": "ÉCHEC O CUBE — Site Officiel", + "theme_version": "1.0.0", + "theme_author": "ÉCHEC O CUBE — Alain Dupont", + "theme_documentation_url": "https://echecocube.com", + "theme_support_url": "https://echecocube.com" + }, + { + "name": "Palette de marque / Brand palette", + "settings": [ + { + "type": "header", + "content": "Couleurs ÉCHEC O CUBE — modifiables ici / Editable brand colors" + }, + { + "type": "color", + "id": "color_bg_primary", + "label": "Fond principal / Background primary", + "default": "#1A1008" + }, + { + "type": "color", + "id": "color_bg_secondary", + "label": "Fond secondaire / Background secondary", + "default": "#0D0705" + }, + { + "type": "color", + "id": "color_gold", + "label": "Or bronze / Gold accent", + "default": "#C9982F" + }, + { + "type": "color", + "id": "color_gold_light", + "label": "Or miel / Gold light (pâle)", + "default": "#E8C96A" + }, + { + "type": "color", + "id": "color_cream", + "label": "Crème parchemin / Cream", + "default": "#F5ECD7" + }, + { + "type": "color", + "id": "color_red", + "label": "Rouge crimson / Red (rouge piece)", + "default": "#B22222" + }, + { + "type": "color", + "id": "color_wood", + "label": "Bois chêne / Wood warm", + "default": "#8B6914" + }, + { + "type": "color", + "id": "color_groove", + "label": "Rainure / Border groove", + "default": "#2C1F0E" + } + ] + }, + { + "name": "Typographie / Typography", + "settings": [ + { + "type": "paragraph", + "content": "Les polices Playfair Display, Libre Baskerville et Cinzel sont chargées via Google Fonts. / Fonts loaded via Google Fonts." + }, + { + "type": "range", + "id": "base_font_size", + "label": "Taille du texte de base / Base font size", + "min": 15, + "max": 20, + "step": 1, + "unit": "px", + "default": 18 + } + ] + }, + { + "name": "Marque & en-tête / Brand & header", + "settings": [ + { + "type": "header", + "content": "Logo officiel / Official logo" + }, + { + "type": "image_picker", + "id": "header_logo", + "label": "Image du logo (nav) / Logo image (nav)", + "info": "Téléversez le logo officiel ÉCHEC O CUBE. S'affiche à la place du texte. / Upload the official logo; replaces the text." + }, + { + "type": "range", + "id": "header_logo_height", + "label": "Hauteur du logo nav / Nav logo height", + "min": 40, + "max": 300, + "step": 4, + "unit": "px", + "default": 152 + }, + { + "type": "text", + "id": "default_logo_filename", + "label": "Nom du fichier logo par défaut / Default logo filename", + "info": "Fichier dans Contenu › Fichiers utilisé par défaut. / File in Content › Files used by default.", + "default": "ECHEC_O_CUBE_LOGO_v5_transparent.png" + }, + { + "type": "paragraph", + "content": "Si ni l'image ni le fichier ne sont trouvés, le logo texte ci-dessous est utilisé. / If neither the image nor the file is found, the text logo below is used." + }, + { + "type": "text", + "id": "brand_logo_word1", + "label": "Logo mot 1 (or) / Logo word 1 (gold)", + "default": "ÉCHEC" + }, + { + "type": "text", + "id": "brand_logo_word2", + "label": "Logo mot 2 (crème) / Logo word 2 (cream)", + "default": "CUBE" + }, + { + "type": "link_list", + "id": "main_menu", + "label": "Menu de navigation / Navigation menu", + "info": "Modifiable dans Boutique en ligne > Navigation" + }, + { + "type": "checkbox", + "id": "show_lang_toggle", + "label": "Afficher le sélecteur FR/EN / Show FR/EN toggle", + "default": true + }, + { + "type": "checkbox", + "id": "show_nav_icons", + "label": "Afficher icônes recherche/compte/panier / Show search/account/cart icons", + "default": true + }, + { + "type": "url", + "id": "lang_fr_url", + "label": "URL Français / French URL", + "default": "/" + }, + { + "type": "url", + "id": "lang_en_url", + "label": "URL English" + } + ] + }, + { + "name": "Pied de page / Footer", + "settings": [ + { + "type": "range", + "id": "footer_logo_height", + "label": "Hauteur du logo (pied de page) / Footer logo height", + "min": 36, + "max": 120, + "step": 4, + "unit": "px", + "default": 64 + }, + { + "type": "link_list", + "id": "footer_menu", + "label": "Menu pied de page / Footer menu" + }, + { + "type": "text", + "id": "footer_copy", + "label": "Mention de copyright / Copyright line", + "default": "© 1999–2026 Alain Dupont. Droit d'auteur OPIC Canada No. 477714. Tous droits réservés." + } + ] + } +] diff --git a/horizon-sections/eoc-a-propos.liquid b/horizon-sections/eoc-a-propos.liquid new file mode 100644 index 0000000..85e630c --- /dev/null +++ b/horizon-sections/eoc-a-propos.liquid @@ -0,0 +1,116 @@ +{% comment %} + ÉCHEC O CUBE — Page À Propos (6 sections, 100% éditable) + Droit d'auteur OPIC Canada No. 477714 — Alain Dupont +{% endcomment %} + +
{{ section.settings.surtitre }}
+{{ section.settings.accroche }}
+{{ section.settings.ch1_lead }}
+{{ section.settings.ch4_lead }}
+{{ section.settings.mention }}
+ {% if section.settings.bouton_texte != blank %} + + {% endif %} +En 1999, Alain Dupont conçoit un plateau rainuré où les pions s'insèrent debout. Quand un pion s'insère dans une rainure et touche un autre pion déjà posé, le coup est valide. Aucune exception, aucune dispute : le plateau lui-même arbitre la partie. La même année, l'oeuvre est protégée par le droit d'auteur OPIC Canada No. 477714.
" }, + { "type": "image_picker", "id": "image_invention", "label": "Image — L'invention 1999" }, + { "type": "header", "content": "2 — Alain" }, + { "type": "text", "id": "ch2_titre", "label": "Titre", "default": "Alain — une idée, deux mains" }, + { "type": "richtext", "id": "ch2_texte", "label": "Texte", "default": "Inventeur autodidacte, Alain a tout fait lui-même : la mécanique, les plans, les prototypes, les ajustements au millième. Pendant 27 ans, le jeu n'a jamais cessé d'être raffiné — chaque version plus précise, plus belle, plus proche de l'idée d'origine.
ÉCHEC O CUBE n'est pas sorti d'un studio de design. Il est sorti d'un atelier québécois, une rainure à la fois.
" }, + { "type": "image_picker", "id": "image_alain", "label": "Image — Alain / prototype" }, + { "type": "header", "content": "3 — Linda" }, + { "type": "text", "id": "ch3_titre", "label": "Titre", "default": "Linda — aide incontestée depuis le début" }, + { "type": "richtext", "id": "ch3_texte", "label": "Texte", "default": "Depuis le premier prototype, Linda est là. Première joueuse, première critique, première à croire que ce jeu méritait mieux qu'un tiroir. Son regard a façonné l'expérience du jeu autant que les rainures du plateau.
Si ÉCHEC O CUBE arrive aujourd'hui jusqu'à vous, c'est aussi grâce à Linda.
" }, + { "type": "image_picker", "id": "image_linda", "label": "Image — Linda" }, + { "type": "header", "content": "4 — La famille" }, + { "type": "text", "id": "ch4_titre", "label": "Titre", "default": "La famille" }, + { "type": "textarea", "id": "ch4_lead", "label": "Texte d'introduction", "default": "ÉCHEC O CUBE est une histoire de famille, jouée sur trois générations." }, + { "type": "richtext", "id": "ch4_texte", "label": "Texte", "default": "Mélanie, en Ontario. Jonathan, au Québec. Mikaël, à Montréal. Et déjà, les enfants — la relève junior — qui apprennent à glisser leurs premiers pions dans les rainures. Chaque partie de famille a été un banc d'essai, chaque réunion un tournoi improvisé.
" }, + { "type": "header", "content": "5 — Pourquoi 27 ans + Ce que nous préparons" }, + { "type": "text", "id": "ch5_titre", "label": "Titre", "default": "Pourquoi 27 ans ?" }, + { "type": "richtext", "id": "ch5_texte", "label": "Texte", "default": "Il y a 27 ans je devais tout donner à ma jeune famille. Là, 27 ans plus tard, c'est toute notre famille qui se donne au jeu ÉCHEC O CUBE.
" }, + { "type": "text", "id": "ch6_titre", "label": "Titre 2", "default": "Ce que nous préparons" }, + { "type": "richtext", "id": "ch6_texte", "label": "Texte 2", "default": "En 2026, nous bâtissons la communauté ÉCHEC O CUBE : les premiers joueurs, les premières parties publiques, les fondations de la FEOC (Fédération ÉCHEC O CUBE au Canada). Au printemps 2027, le jeu sera lancé sur La Ruche, la plateforme québécoise de financement participatif.
" }, + { "type": "text", "id": "mention", "label": "Mention OPIC", "default": "Droit d'auteur OPIC Canada No. 477714 — Alain Dupont" }, + { "type": "text", "id": "bouton_texte", "label": "Bouton", "default": "Rejoindre la communauté" }, + { "type": "url", "id": "bouton_lien", "label": "Lien du bouton" } + ], + "presets": [ { "name": "EOC — Page À Propos" } ] +} +{% endschema %} diff --git a/horizon-sections/eoc-apropos-court.liquid b/horizon-sections/eoc-apropos-court.liquid new file mode 100644 index 0000000..1933257 --- /dev/null +++ b/horizon-sections/eoc-apropos-court.liquid @@ -0,0 +1,38 @@ +{% comment %} ÉCHEC O CUBE — Section À propos courte (fond blanc) — 100% éditable {% endcomment %} + +En 1999, au Québec, Alain Dupont invente un jeu de stratégie où la règle n'est pas écrite dans un livret : elle est taillée dans la matière. Le droit d'auteur est enregistré la même année à l'OPIC Canada. Puis la vie suit son cours, et le jeu attend son moment.
Ce moment est arrivé. Entouré de Linda et de toute la famille, Alain prépare la rencontre entre ÉCHEC O CUBE et le monde : la communauté se bâtit en 2026, et le jeu sera lancé au printemps 2027.
" }, + { "type": "text", "id": "lien_texte", "label": "Texte du lien", "default": "Lire notre histoire" }, + { "type": "url", "id": "lien_url", "label": "Lien" }, + { "type": "image_picker", "id": "image", "label": "Image" } + ], + "presets": [ { "name": "EOC — À propos courte" } ] +} +{% endschema %} diff --git a/horizon-sections/eoc-footer.liquid b/horizon-sections/eoc-footer.liquid new file mode 100644 index 0000000..c9934d7 --- /dev/null +++ b/horizon-sections/eoc-footer.liquid @@ -0,0 +1,73 @@ +{% comment %} + ÉCHEC O CUBE — Pied de page officiel (3 colonnes, 100% éditable) + Droit d'auteur OPIC Canada No. 477714 — Alain Dupont +{% endcomment %} + + + +{% schema %} +{ + "name": "EOC — Pied de page", + "settings": [ + { "type": "header", "content": "Colonne 1 — Marque" }, + { "type": "text", "id": "logo_texte", "label": "Logo texte", "default": "ÉCHEC O CUBE" }, + { "type": "textarea", "id": "signature", "label": "Phrase signature", "default": "« Quand un pion s'insère dans une rainure et touche un autre pion déjà posé, le coup est valide. »" }, + { "type": "text", "id": "mention", "label": "Mention OPIC", "default": "Droit d'auteur OPIC Canada No. 477714" }, + { "type": "header", "content": "Colonne 2 — Navigation" }, + { "type": "text", "id": "titre_col2", "label": "Titre", "default": "Navigation" }, + { "type": "text", "id": "nav1_texte", "label": "Lien 1 — texte", "default": "Le Jeu" }, + { "type": "url", "id": "nav1_url", "label": "Lien 1 — adresse" }, + { "type": "text", "id": "nav2_texte", "label": "Lien 2 — texte", "default": "Les Règles" }, + { "type": "url", "id": "nav2_url", "label": "Lien 2 — adresse" }, + { "type": "text", "id": "nav3_texte", "label": "Lien 3 — texte", "default": "À Propos" }, + { "type": "url", "id": "nav3_url", "label": "Lien 3 — adresse" }, + { "type": "text", "id": "nav4_texte", "label": "Lien 4 — texte", "default": "La Communauté" }, + { "type": "url", "id": "nav4_url", "label": "Lien 4 — adresse" }, + { "type": "text", "id": "nav5_texte", "label": "Lien 5 — texte", "default": "Boutique" }, + { "type": "url", "id": "nav5_url", "label": "Lien 5 — adresse" }, + { "type": "header", "content": "Colonne 3 — FEOC et contact" }, + { "type": "text", "id": "titre_col3", "label": "Titre", "default": "FEOC et contact" }, + { "type": "text", "id": "feoc1_texte", "label": "Lien 1 — texte", "default": "Niveaux FEOC" }, + { "type": "url", "id": "feoc1_url", "label": "Lien 1 — adresse" }, + { "type": "text", "id": "feoc2_texte", "label": "Lien 2 — texte", "default": "FEOC — la fédération au Canada" }, + { "type": "url", "id": "feoc2_url", "label": "Lien 2 — adresse" }, + { "type": "text", "id": "feoc3_texte", "label": "Lien 3 — texte", "default": "Contact" }, + { "type": "url", "id": "feoc3_url", "label": "Lien 3 — adresse" }, + { "type": "header", "content": "Bas du pied de page" }, + { "type": "text", "id": "ligne1", "label": "Ligne 1", "default": "ÉCHEC O CUBE — Inventé au Québec en 1999 — Lancé au printemps 2027" }, + { "type": "text", "id": "ligne2", "label": "Ligne 2", "default": "Droit d'auteur OPIC Canada No. 477714 — Alain Dupont" }, + { "type": "text", "id": "ligne3", "label": "Ligne 3", "default": "Site officiel : echecocube.com" } + ] +} +{% endschema %} diff --git a/horizon-sections/eoc-hero.liquid b/horizon-sections/eoc-hero.liquid new file mode 100644 index 0000000..1ad85a4 --- /dev/null +++ b/horizon-sections/eoc-hero.liquid @@ -0,0 +1,98 @@ +{% comment %} + ÉCHEC O CUBE — Section Hero accueil (100% éditable) + Droit d'auteur OPIC Canada No. 477714 — Alain Dupont +{% endcomment %} + +{%- liquid + assign default_logo = section.settings.logo_filename | default: 'ECHEC_O_CUBE_LOGO_v5_transparent.png' + if section.settings.logo_image != blank + assign logo_src = section.settings.logo_image | image_url: width: 1200 + else + assign logo_src = default_logo | file_img_url: '1200x' + endif +-%} + +{{ section.settings.sous_titre }}
+ {% endif %} + +{{ section.settings.surtitre }}
+ {% endif %} +En 2026, nous bâtissons la communauté ÉCHEC O CUBE. Au printemps 2027, nous lançons sur La Ruche. Inscrivez-vous maintenant pour être avisé en premier et bénéficier des conditions fondateurs.
" }, + { "type": "text", "id": "placeholder", "label": "Texte du champ courriel", "default": "Votre adresse courriel" }, + { "type": "text", "id": "bouton_texte", "label": "Texte du bouton", "default": "Je m'inscris" }, + { "type": "text", "id": "message_succes", "label": "Message de succès", "default": "Merci. Vous faites maintenant partie des premiers. Nous vous écrirons avant tout le monde." }, + { "type": "text", "id": "message_erreur", "label": "Message d'erreur", "default": "Veuillez vérifier votre adresse courriel et réessayer." }, + { "type": "text", "id": "tags", "label": "Étiquettes client (séparées par des virgules)", "default": "newsletter,EOC-communaute-2026" } + ], + "presets": [ { "name": "EOC — Inscription" } ] +} +{% endschema %} diff --git a/horizon-sections/eoc-niveaux-feoc.liquid b/horizon-sections/eoc-niveaux-feoc.liquid new file mode 100644 index 0000000..787b523 --- /dev/null +++ b/horizon-sections/eoc-niveaux-feoc.liquid @@ -0,0 +1,77 @@ +{% comment %} + ÉCHEC O CUBE — Page Niveaux FEOC (100% éditable) + FEOC = Fédération ÉCHEC O CUBE au Canada +{% endcomment %} + +{{ section.settings.surtitre }}
+{{ section.settings.accroche }}
+{{ section.settings.prog_lead }}
+{{ section.settings.feoc_lead }}
+Le premier titre officiel. Le Candidat CUBE maîtrise les fondements : l'insertion valide, l'alternance des pions et ses premières fermetures d'ÉCHEC O CUBE en partie reconnue.
" }, + { "type": "header", "content": "Niveau 2" }, + { "type": "text", "id": "niveau2_nom", "label": "Nom", "default": "MAÎTRE CUBE" }, + { "type": "richtext", "id": "niveau2_texte", "label": "Description", "default": "Le joueur accompli. Le Maître CUBE lit le plateau plusieurs coups à l'avance, prépare ses réactions en chaîne et s'illustre dans les tournois reconnus par la FEOC au Canada.
" }, + { "type": "header", "content": "Niveau 3" }, + { "type": "text", "id": "niveau3_nom", "label": "Nom", "default": "GRAND MAÎTRE CUBE" }, + { "type": "richtext", "id": "niveau3_texte", "label": "Description", "default": "Le sommet du jeu. Le Grand Maître CUBE est une référence : sa vision du plateau, ses parties et sa contribution au jeu font autorité dans la communauté ÉCHEC O CUBE.
" }, + { "type": "header", "content": "La FEOC au Canada" }, + { "type": "text", "id": "feoc_titre", "label": "Titre", "default": "La FEOC au Canada" }, + { "type": "textarea", "id": "feoc_lead", "label": "Texte d'introduction", "default": "La Fédération ÉCHEC O CUBE au Canada encadre la pratique officielle du jeu : règlement de référence, reconnaissance des parties, organisation des tournois et attribution des titres." }, + { "type": "richtext", "id": "feoc_texte", "label": "Texte", "default": "La FEOC prend forme en même temps que la communauté, en 2026. Les premiers joueurs inscrits seront les premiers candidats aux titres officiels lorsque le jeu sera lancé au printemps 2027.
" }, + { "type": "text", "id": "bouton_texte", "label": "Bouton", "default": "Rejoindre la communauté" }, + { "type": "url", "id": "bouton_lien", "label": "Lien du bouton" } + ], + "presets": [ { "name": "EOC — Niveaux FEOC" } ] +} +{% endschema %} diff --git a/horizon-sections/eoc-page-regles.liquid b/horizon-sections/eoc-page-regles.liquid new file mode 100644 index 0000000..856dfe8 --- /dev/null +++ b/horizon-sections/eoc-page-regles.liquid @@ -0,0 +1,209 @@ +{% comment %} ÉCHEC O CUBE — Page Règles (Shopify, 100% éditable) {% endcomment %} +{{ section.settings.hero_sous_titre }}
+ {% if section.settings.video_texte != blank %} + {{ section.settings.video_texte }} + {% endif %} +{{ section.settings.cta_texte }}
+ {% if section.settings.cta_b1_texte != blank %}{{ section.settings.cta_b1_texte }}{% endif %} + {% if section.settings.cta_b2_texte != blank %}{{ section.settings.cta_b2_texte }}{% endif %} +{{ section.settings.pdf_texte }}
+ {% if section.settings.pdf_bouton != blank %}{{ section.settings.pdf_bouton }}{% endif %} +Le fonce long fait 3 cm et deborde de 0,5 cm dans les intersections. Le pale court fait 2 cm et epouse exactement l'arete.
Ce debordement permet de fermer des carres enrichis avec seulement 3 pales + 3 fonces = 9 points, au lieu de 4+4 = 12 points.
" }, + { "type": "header", "content": "Section regles avancees" }, + { "type": "text", "id": "avancees_titre", "label": "Titre", "default": "Regles avancees" }, + { "type": "header", "content": "Section formats" }, + { "type": "text", "id": "formats_titre", "label": "Titre", "default": "Trois formats pour tous les joueurs" }, + { "type": "header", "content": "Appel a l'action" }, + { "type": "text", "id": "cta_titre", "label": "Titre", "default": "Pret a jouer ?" }, + { "type": "text", "id": "cta_texte", "label": "Texte", "default": "Rejoignez La Ruche et soyez parmi les premiers a posseder un ECHEC O CUBE." }, + { "type": "text", "id": "cta_b1_texte", "label": "Bouton 1", "default": "S'inscrire a La Ruche" }, + { "type": "url", "id": "cta_b1_lien", "label": "Lien bouton 1" }, + { "type": "text", "id": "cta_b2_texte", "label": "Bouton 2", "default": "Voir la boutique" }, + { "type": "url", "id": "cta_b2_lien", "label": "Lien bouton 2" }, + { "type": "header", "content": "Telechargement PDF" }, + { "type": "text", "id": "pdf_titre", "label": "Titre", "default": "Reglement officiel complet" }, + { "type": "richtext", "id": "pdf_texte", "label": "Texte", "default": "Telechargez le Cahier de Reglement Officiel v2.1 (PDF).
" }, + { "type": "text", "id": "pdf_bouton", "label": "Bouton", "default": "Telecharger le reglement (PDF)" }, + { "type": "url", "id": "pdf_lien", "label": "Lien du PDF" } + ], + "blocks": [ + { + "type": "etape", + "name": "Etape", + "settings": [ + { "type": "text", "id": "titre", "label": "Titre", "default": "Etape" }, + { "type": "richtext", "id": "texte", "label": "Texte", "default": "Description de l'etape.
" }, + { "type": "image_picker", "id": "image", "label": "Image" }, + { "type": "text", "id": "image_legende", "label": "Legende si pas d'image", "default": "Image a venir" } + ] + }, + { + "type": "regle", + "name": "Regle avancee", + "settings": [ + { "type": "text", "id": "titre", "label": "Titre", "default": "Regle" }, + { "type": "richtext", "id": "texte", "label": "Texte", "default": "Description.
" } + ] + }, + { + "type": "format", + "name": "Format", + "settings": [ + { "type": "text", "id": "titre", "label": "Titre", "default": "Edition" }, + { "type": "richtext", "id": "details", "label": "Details", "default": "Details du format.
" }, + { "type": "text", "id": "prix", "label": "Prix", "default": "89 $" }, + { "type": "checkbox", "id": "vedette", "label": "Format vedette (FEOC)", "default": false } + ] + } + ], + "presets": [ + { + "name": "EOC — Page Regles", + "blocks": [ + { "type": "etape", "settings": { "titre": "Inserer un pion", "texte": "Le joueur gagnant du pile ou face place un pion n'importe ou sur le plateau. Le pion se glisse couche dans la rainure, fermement maintenu par le bois.
", "image_legende": "Image a venir : un joueur insere un pion dans une rainure" } }, + { "type": "etape", "settings": { "titre": "Toucher un pion deja pose", "texte": "Quand un pion s'insere dans une rainure et touche un autre pion deja pose, le coup est valide. Aucune exception, aucune dispute : le plateau decide.
", "image_legende": "Image a venir : deux pions qui se touchent" } }, + { "type": "etape", "settings": { "titre": "Respecter l'alternance", "texte": "Deux pions de meme type ne se touchent jamais. Un pale ne touche jamais un pale ; un fonce ne touche jamais un fonce. Cette alternance structure toute la partie.
", "image_legende": "Image a venir : alternance pale et fonce" } }, + { "type": "etape", "settings": { "titre": "Fermer le cube -- ECHEC O CUBE", "texte": "Quand 4 pions alternes forment un carre ferme, vous marquez des points. Carre 1x1 = 6 points, carre enrichi = 9 points, carre 2x2 = 12 points. Chaque cube ferme accorde un tour supplementaire.
", "image_legende": "Image a venir : une case fermee" } }, + { "type": "regle", "settings": { "titre": "Le Pion Rouge -- Zone morte", "texte": "Quand un espace vide est geometriquement bloque, on y insere un pion rouge debout. Il vaut 0 point. Si un rouge fait partie d'un carre ferme, ce carre est incomplet et vaut 0 point.
" } }, + { "type": "regle", "settings": { "titre": "Le Vol de points", "texte": "Oubliez d'annoncer ECHEC O CUBE ? Le joueur suivant peut l'annoncer a votre place et vous voler les points du carre.
" } }, + { "type": "regle", "settings": { "titre": "Reactions en chaine", "texte": "Chaque cube ferme = un tour bonus. Le joueur continue tant qu'il forme des ECHEC O CUBE.
" } }, + { "type": "format", "settings": { "titre": "Edition Amateur 9x9", "details": "81 cases | 200 pions
Duree : 30-60 minutes
2 a 4 joueurs
Acrylique 10 mm ou Bois franc du Quebec
121 cases | 300 pions
Duree : 30-80 minutes
2 a 4 joueurs
Bois franc du Quebec
225 cases | 555 pions
Duree : 40-95 minutes
2 joueurs
Bois franc du Quebec -- Collection
Votre texte ici.
" } + ] + } + ], + "max_blocks": 6, + "presets": [ + { + "name": "EOC — Règles cartes", + "blocks": [ + { "type": "carte", "settings": { "titre": "Insérer et toucher", "texte": "Chaque coup consiste à insérer un pion couché dans une rainure du plateau. Quand un pion s'insère dans une rainure et touche un autre pion déjà posé, le coup est valide.
" } }, + { "type": "carte", "settings": { "titre": "L'alternance obligatoire", "texte": "Deux pions de même type ne se touchent jamais. Un pion pâle ne touche jamais un autre pion pâle ; un pion foncé ne touche jamais un autre pion foncé. Pâle et foncé s'ajustent parfaitement, et cette alternance structure toute la partie.
" } }, + { "type": "carte", "settings": { "titre": "Fermer un ÉCHEC O CUBE", "texte": "Quand les quatre murs d'une case sont occupés, un ÉCHEC O CUBE est fermé. C'est le sommet du jeu : chaque ÉCHEC O CUBE peut rapporter 6, 9 et 12 points, et un seul coup bien placé peut en fermer plusieurs à la fois en réaction en chaîne.
" } } + ] + } + ] +} +{% endschema %} diff --git a/horizon-sections/eoc-rejoindre.liquid b/horizon-sections/eoc-rejoindre.liquid new file mode 100644 index 0000000..576119b --- /dev/null +++ b/horizon-sections/eoc-rejoindre.liquid @@ -0,0 +1,200 @@ +{% comment %} + ÉCHEC O CUBE — Page Rejoindre la Communauté EOC (100% éditable, sans emoji) + Formulaire d'inscription avec carte FEOC gratuite +{% endcomment %} + + + +{{ section.settings.sous_titre | newline_to_br }}
+ +{{ section.settings.form_titre }}
+ +{{ section.settings.prive }}
+ +{{ section.settings.pion1_valeur }}
+{{ section.settings.pion2_valeur }}
+{{ section.settings.pion3_valeur }}
+Le pion court. Chaque pion pâle compte pour 1 point lorsqu'un ÉCHEC O CUBE est fermé.
" }, + { "type": "color", "id": "pion1_couleur", "label": "Couleur", "default": "#e8dcc0" }, + { "type": "header", "content": "Pion 2" }, + { "type": "text", "id": "pion2_nom", "label": "Nom", "default": "Pion Foncé" }, + { "type": "text", "id": "pion2_valeur", "label": "Valeur", "default": "2 points" }, + { "type": "richtext", "id": "pion2_texte", "label": "Description", "default": "Le pion long. Chaque pion foncé compte pour 2 points lorsqu'un ÉCHEC O CUBE est fermé.
" }, + { "type": "color", "id": "pion2_couleur", "label": "Couleur", "default": "#2b1c0e" }, + { "type": "header", "content": "Pion 3" }, + { "type": "text", "id": "pion3_nom", "label": "Nom", "default": "Pion Rouge" }, + { "type": "text", "id": "pion3_valeur", "label": "Valeur", "default": "Marqueur" }, + { "type": "richtext", "id": "pion3_texte", "label": "Description", "default": "Le marqueur. Le pion rouge ne compte aucun point : il marque le territoire et peut bloquer une fermeture adverse.
" }, + { "type": "color", "id": "pion3_couleur", "label": "Couleur", "default": "#be1414" }, + { "type": "header", "content": "Image (optionnelle, sous les colonnes)" }, + { "type": "image_picker", "id": "image", "label": "Image des trois pions" } + ], + "presets": [ { "name": "EOC — Les trois pions" } ] +} +{% endschema %} diff --git a/horizon-sections/eoc-usp.liquid b/horizon-sections/eoc-usp.liquid new file mode 100644 index 0000000..ec609ef --- /dev/null +++ b/horizon-sections/eoc-usp.liquid @@ -0,0 +1,33 @@ +{% comment %} ÉCHEC O CUBE — Section USP (fond sombre) — 100% éditable {% endcomment %} + +Un jeu de stratégie abstraite. Quand un pion s'insère dans une rainure et touche un autre pion déjà posé, le coup est valide. La physique est la règle.
" }, + { "type": "image_picker", "id": "image", "label": "Image côté droit" } + ], + "presets": [ { "name": "EOC — USP" } ] +} +{% endschema %} diff --git a/horizon-sections/index-officiel.json b/horizon-sections/index-officiel.json new file mode 100644 index 0000000..51ee8bb --- /dev/null +++ b/horizon-sections/index-officiel.json @@ -0,0 +1,80 @@ +{ + "sections": { + "eoc_hero": { + "type": "eoc-hero", + "name": "EOC — ÉCHEC O CUBE accueil", + "settings": { + "image": "shopify://shop_images/Pub-EchecOCube.png", + "hauteur": 720, + "voile": 45, + "voile_couleur": "#1a1008", + "afficher_logo": true, + "logo_image": "shopify://shop_images/IMG_2203.png", + "logo_filename": "ECHEC_O_CUBE_LOGO_v5_transparent.png", + "logo_largeur": 540, + "titre": "", + "taille_titre": 56, + "couleur_titre": "#e8c96a", + "sous_titre": "", + "couleur_texte": "#f5ecd7", + "alignement": "center", + "bouton1_texte": "REJOINDRE LA COMMUNAUTÉ", + "bouton1_lien": "shopify://pages/rejoindre-la-communaute-eoc", + "bouton2_texte": "DÉCOUVRIR LE JEU", + "bouton2_lien": "shopify://pages/le-jeu" + } + }, + "eoc_usp": { + "type": "eoc-usp", + "settings": { + "titre": "La règle intégrée dans la matière", + "texte": "", + "image": "shopify://shop_images/PLATEAU_JEUX_PIONS.png" + } + }, + "eoc_regles": { + "type": "eoc-regles", + "settings": { + "titre": "Trois principes. Aucune exception." + } + }, + "eoc_trois_pions": { + "type": "eoc-trois-pions", + "settings": { + "titre": "Les trois pions", + "intro": "" + } + }, + "eoc_apropos_court": { + "type": "eoc-apropos-court", + "settings": { + "titre": "27 ans d'attente. Une famille qui y a cru.", + "texte": "En 1999, au Québec, Alain Dupont invente un jeu de stratégie où la règle n'est pas écrite dans un livret : elle est taillée dans la matière. Le droit d'auteur est enregistré la même année à l'OPIC Canada. Puis la vie suit son cours, et le jeu attend son moment.
Ce moment est arrivé. Entouré de Linda et de toute la famille, Alain prépare la rencontre entre ÉCHEC O CUBE et le monde : la communauté se bâtit en 2026, et le jeu sera lancé au printemps 2027.
", + "lien_texte": "Lire notre histoire", + "lien_url": "", + "image": "shopify://shop_images/ECHEC_O_CUBE_-_GAME.png" + } + }, + "eoc_inscription": { + "type": "eoc-inscription", + "settings": { + "surtitre": "Printemps 2027 — La Ruche", + "titre": "Soyez parmi les premiers.", + "texte": "En 2026, nous bâtissons la communauté ÉCHEC O CUBE. Au printemps 2027, nous lançons sur La Ruche. Inscrivez-vous maintenant pour être avisé en premier et bénéficier des conditions fondateurs.
", + "placeholder": "Votre adresse courriel", + "bouton_texte": "Je m'inscris", + "message_succes": "Merci. Vous faites maintenant partie des premiers. Nous vous écrirons avant tout le monde.", + "message_erreur": "Veuillez vérifier votre adresse courriel et réessayer.", + "tags": "newsletter,EOC-communaute-2026" + } + } + }, + "order": [ + "eoc_hero", + "eoc_usp", + "eoc_regles", + "eoc_trois_pions", + "eoc_apropos_court", + "eoc_inscription" + ] +} diff --git a/horizon-sections/page.regles.json b/horizon-sections/page.regles.json new file mode 100644 index 0000000..fcdc62c --- /dev/null +++ b/horizon-sections/page.regles.json @@ -0,0 +1,39 @@ +{ + "sections": { + "main": { + "type": "eoc-page-regles", + "settings": { + "hero_titre": "Comment jouer a ECHEC O CUBE", + "hero_sous_titre": "Un jeu de strategie ou le plateau lui-meme arbitre la partie.", + "video_texte": "Voir la video tutorielle (2 min)", + "etapes_titre": "Apprendre en quatre etapes", + "fonce_titre": "Le Fonce Separateur -- La cle du jeu", + "fonce_image_legende": "Diagramme a venir : exemple de Fonce Separateur sur le plateau 9 par 9", + "fonce_texte": "Le fonce long fait 3 cm et deborde de 0,5 cm dans les intersections. Le pale court fait 2 cm et epouse exactement l'arete.
Ce debordement permet de fermer des carres enrichis avec seulement 3 pales + 3 fonces = 9 points, au lieu de 4+4 = 12 points. Cela consomme moins de pions pour un rapport point/pion eleve.
Le fonce prend les coins. Le pale remplit l'arete utile.
", + "avancees_titre": "Regles avancees", + "formats_titre": "Trois formats pour tous les joueurs", + "cta_titre": "Pret a jouer ?", + "cta_texte": "Rejoignez La Ruche et soyez parmi les premiers a posseder un ECHEC O CUBE.", + "cta_b1_texte": "S'inscrire a La Ruche", + "cta_b2_texte": "Voir la boutique", + "pdf_titre": "Reglement officiel complet", + "pdf_texte": "Telechargez le Cahier de Reglement Officiel v2.1 (PDF) -- la source unique de verite pour les arbitres et joueurs.
", + "pdf_bouton": "Telecharger le reglement (PDF)" + }, + "blocks": { + "e1": { "type": "etape", "settings": { "titre": "Inserer un pion", "texte": "Le joueur gagnant du pile ou face place un pion n'importe ou sur le plateau. Aucune contrainte de contact : c'est le premier coup. Le pion se glisse couche dans la rainure, fermement maintenu par le bois.
", "image_legende": "Image a venir : un joueur insere un pion dans une rainure du plateau" } }, + "e2": { "type": "etape", "settings": { "titre": "Toucher un pion deja pose", "texte": "Quand un pion s'insere dans une rainure et touche un autre pion deja pose, le coup est valide. Aucune exception, aucune dispute : le plateau decide.
", "image_legende": "Image a venir : deux pions qui se touchent dans la rainure" } }, + "e3": { "type": "etape", "settings": { "titre": "Respecter l'alternance", "texte": "Deux pions de meme type ne se touchent jamais. Un pion pale ne touche jamais un autre pion pale ; un pion fonce ne touche jamais un autre pion fonce. Cette alternance structure toute la partie.
", "image_legende": "Image a venir : alternance pale et fonce sur le plateau" } }, + "e4": { "type": "etape", "settings": { "titre": "Fermer le cube -- ECHEC O CUBE", "texte": "Quand 4 pions alternes forment un carre ferme, vous marquez des points. Carre 1x1 = 6 points, carre enrichi = 9 points, carre 2x2 = 12 points. Criez ECHEC O CUBE immediatement. Chaque cube ferme accorde un tour supplementaire.
", "image_legende": "Image a venir : une case fermee par quatre pions" } }, + "r1": { "type": "regle", "settings": { "titre": "Le Pion Rouge -- Zone morte", "texte": "Quand un espace vide est geometriquement bloque, on y insere un pion rouge debout. Il vaut 0 point. Si un rouge fait partie d'un carre ferme, ce carre est incomplet et vaut 0 point.
" } }, + "r2": { "type": "regle", "settings": { "titre": "Le Vol de points", "texte": "Oubliez d'annoncer ECHEC O CUBE ? Le joueur suivant peut l'annoncer a votre place et vous voler les points du carre. L'attention est une habilete du jeu.
" } }, + "r3": { "type": "regle", "settings": { "titre": "Reactions en chaine", "texte": "Chaque cube ferme = un tour bonus. Le joueur continue de jouer tant qu'il forme des ECHEC O CUBE en occupant l'arete manquante d'un carre adjacent deja a 3 aretes.
" } }, + "f1": { "type": "format", "settings": { "titre": "Edition Amateur 9x9", "details": "81 cases | 200 pions (132 pales + 52 fonces + 16 rouges)
Duree : 30-60 minutes
2 a 4 joueurs | Familles, decouverte
Acrylique coule 10 mm ou Bois franc du Quebec
121 cases | 300 pions (200 pales + 80 fonces + 20 rouges)
Duree : 30-80 minutes
2 a 4 joueurs | Juste milieu recreatif
Bois franc du Quebec -- Collection
225 cases | 555 pions (380 pales + 150 fonces + 25 rouges)
Duree : 40-95 minutes
2 joueurs | Mode competition officiel FEOC
Bois franc du Quebec -- Edition de collection
{{ section.settings.message }}
+ {%- endif -%} + {%- if section.settings.button_label != blank -%} + {{ section.settings.button_label }} + {%- endif -%} +À Notre-Dame-du-Mont-Carmel, au Québec, en 1999, Alain Dupont imagine un jeu où la règle vit dans la matière. Vingt-sept ans de raffinement ont mené à ÉCHEC O CUBE : un jeu de stratégie abstraite où la physique valide chaque coup. Droit d'auteur OPIC Canada No. 477714.
" }, + { "type": "text", "id": "heading_en", "label": "Titre EN", "default": "The story" }, + { "type": "richtext", "id": "body_en", "label": "Texte EN", "default": "In Notre-Dame-du-Mont-Carmel, Quebec, in 1999, Alain Dupont imagined a game where the rule lives in the material. Twenty-seven years of refinement led to ÉCHEC O CUBE: an abstract strategy game where physics validates every move. OPIC Canada Copyright No. 477714.
" } + ], + "presets": [{ "name": "EOC — À propos / About" }] +} +{% endschema %} diff --git a/sections/eoc-cart.liquid b/sections/eoc-cart.liquid new file mode 100644 index 0000000..c7746bc --- /dev/null +++ b/sections/eoc-cart.liquid @@ -0,0 +1,29 @@ +{%- comment -%} ÉCHEC O CUBE — Panier / Cart {%- endcomment -%} +Total : {{ cart.total_price | money }}
+ + {%- endform -%} + {%- else -%} +Votre panier est vide. / Your cart is empty.
+ + {%- endif -%} +{{ section.settings.empty_text }}
+ {%- endfor -%} +Soyez notifié(e) au lancement de la campagne La Ruche. Accès prioritaire, tarif fondateur garanti. / Be notified at La Ruche campaign launch. Priority access, guaranteed founder pricing.
" }, + { "type": "text", "id": "placeholder", "label": "Champ courriel / Email placeholder", "default": "votre@courriel.com" }, + { "type": "text", "id": "button_label", "label": "Bouton / Button", "default": "S'INSCRIRE / SUBSCRIBE" }, + { "type": "text", "id": "success_message", "label": "Message de succès / Success message", "default": "Merci ! Vous êtes inscrit(e). / Thank you! You're on the list." }, + { "type": "text", "id": "social_proof", "label": "Preuve sociale / Social proof", "default": "Déjà 250 personnes inscrites / Already 250 people subscribed" } + ], + "presets": [{ "name": "EOC — Communauté / Community" }] +} +{% endschema %} diff --git a/sections/eoc-concept.liquid b/sections/eoc-concept.liquid new file mode 100644 index 0000000..cd8d44c --- /dev/null +++ b/sections/eoc-concept.liquid @@ -0,0 +1,66 @@ +{%- comment -%} ÉCHEC O CUBE — Section 2 : LE CONCEPT {%- endcomment -%} +{{ section.settings.quote_fr }}+
{{ section.settings.quote_en }}
+ÉCHEC O CUBE est un jeu de stratégie abstraite né au Québec en 1999. La règle est intégrée dans la matière : si le pion entre dans la rainure, le coup est légal. Fermez un carré, criez ÉCHEC O CUBE, et empochez les points.
" }, + { "type": "richtext", "id": "body_en", "label": "Texte EN", "default": "ÉCHEC O CUBE is an abstract strategy game born in Quebec in 1999. The rule lives in the material: if the piece enters the groove, the move is legal. Close a square, shout ÉCHEC O CUBE, and pocket the points.
" }, + { "type": "text", "id": "cta_label", "label": "Bouton / Button", "default": "DÉCOUVRIR LES RÈGLES / DISCOVER THE RULES" }, + { "type": "url", "id": "cta_link", "label": "Lien / Link" } + ], + "presets": [{ "name": "EOC — Expérience / Experience" }] +} +{% endschema %} diff --git a/sections/eoc-flex.liquid b/sections/eoc-flex.liquid new file mode 100644 index 0000000..8dcb5a6 --- /dev/null +++ b/sections/eoc-flex.liquid @@ -0,0 +1,266 @@ +{%- comment -%} + ÉCHEC O CUBE — Constructeur de contenu flexible / Flexible content builder + Ajoutez, réordonnez et modifiez librement des blocs sur n'importe quelle page : + titre, texte riche, image, image + texte, bouton, citation, etc. + Add / reorder / edit blocks freely on any page. +{%- endcomment -%} ++ {{ block.settings.text }} + {%- if block.settings.author != blank -%} + + {%- endif -%} ++ + {%- when 'button' -%} +
+ {{ block.settings.label }} +
+ + {%- when 'page_content' -%} +Ajoutez des blocs de contenu ici → / Add content blocks here →
+ {%- endfor -%} + +Écrivez votre texte ici. Vous pouvez le mettre en gras, en italique, ajouter des liens et des listes. / Write your text here.
" }, + { "type": "select", "id": "align", "label": "Alignement / Align", "options": [ { "value": "left", "label": "Gauche / Left" }, { "value": "center", "label": "Centre / Center" } ], "default": "left" }, + { "type": "range", "id": "max_width", "label": "Largeur max / Max width", "min": 400, "max": 1200, "step": 20, "unit": "px", "default": 760 }, + { "type": "checkbox", "id": "center_box", "label": "Centrer le bloc / Center block", "default": true } + ] + }, + { + "type": "bilingual", + "name": "Texte bilingue FR / EN", + "settings": [ + { "type": "text", "id": "heading_fr", "label": "Titre FR", "default": "Titre" }, + { "type": "richtext", "id": "body_fr", "label": "Texte FR", "default": "Votre texte en français.
" }, + { "type": "text", "id": "heading_en", "label": "Titre EN", "default": "Heading" }, + { "type": "richtext", "id": "body_en", "label": "Texte EN", "default": "Your text in English.
" } + ] + }, + { + "type": "image", + "name": "Image", + "settings": [ + { "type": "image_picker", "id": "image", "label": "Image" }, + { "type": "text", "id": "caption", "label": "Légende / Caption" }, + { "type": "range", "id": "max_width", "label": "Largeur max / Max width", "min": 200, "max": 1200, "step": 20, "unit": "px", "default": 900 } + ] + }, + { + "type": "image_text", + "name": "Image + Texte", + "settings": [ + { "type": "image_picker", "id": "image", "label": "Image" }, + { "type": "select", "id": "image_position", "label": "Position de l'image / Image position", "options": [ { "value": "left", "label": "Gauche / Left" }, { "value": "right", "label": "Droite / Right" } ], "default": "left" }, + { "type": "text", "id": "heading", "label": "Titre / Heading", "default": "Titre" }, + { "type": "richtext", "id": "content", "label": "Texte / Text", "default": "Décrivez votre image ou racontez votre histoire ici.
" }, + { "type": "text", "id": "button_label", "label": "Bouton (optionnel) / Button" }, + { "type": "url", "id": "button_link", "label": "Lien du bouton / Button link" } + ] + }, + { + "type": "quote", + "name": "Citation / Quote", + "settings": [ + { "type": "text", "id": "text", "label": "Citation / Quote", "default": "Si le pion rentre, le coup est valide." }, + { "type": "text", "id": "author", "label": "Auteur / Author" }, + { "type": "select", "id": "align", "label": "Alignement / Align", "options": [ { "value": "left", "label": "Gauche / Left" }, { "value": "center", "label": "Centre / Center" } ], "default": "center" } + ] + }, + { + "type": "button", + "name": "Bouton / Button", + "settings": [ + { "type": "text", "id": "label", "label": "Texte / Label", "default": "EN SAVOIR PLUS / LEARN MORE" }, + { "type": "url", "id": "link", "label": "Lien / Link" }, + { "type": "select", "id": "style", "label": "Style", "options": [ { "value": "outline", "label": "Contour or / Gold outline" }, { "value": "solid", "label": "Plein or / Solid gold" }, { "value": "cream", "label": "Contour crème / Cream outline" } ], "default": "solid" }, + { "type": "select", "id": "align", "label": "Alignement / Align", "options": [ { "value": "left", "label": "Gauche / Left" }, { "value": "center", "label": "Centre / Center" } ], "default": "center" } + ] + }, + { + "type": "page_content", + "name": "Contenu de la page (admin) / Page content", + "settings": [ + { "type": "paragraph", "content": "Affiche le texte saisi dans Admin › Pages › (cette page). / Shows the text typed in Admin › Pages." } + ] + }, + { + "type": "spacer", + "name": "Espace / Spacer", + "settings": [ + { "type": "range", "id": "height", "label": "Hauteur / Height", "min": 8, "max": 160, "step": 4, "unit": "px", "default": 48 } + ] + }, + { + "type": "divider", + "name": "Séparateur / Divider", + "settings": [] + }, + { + "type": "contact_form", + "name": "Formulaire de contact / Contact form", + "settings": [ + { "type": "text", "id": "name_label", "label": "Champ nom / Name placeholder", "default": "Nom / Name" }, + { "type": "text", "id": "email_label", "label": "Champ courriel / Email placeholder", "default": "Courriel / Email" }, + { "type": "text", "id": "message_label", "label": "Champ message / Message placeholder", "default": "Votre message / Your message" }, + { "type": "text", "id": "button_label", "label": "Bouton / Button", "default": "ENVOYER / SEND" }, + { "type": "text", "id": "success_message", "label": "Message de succès / Success message", "default": "Merci ! Votre message a été envoyé. / Thank you! Your message was sent." } + ] + } + ], + "presets": [ + { + "name": "EOC — Contenu flexible", + "blocks": [ + { "type": "kicker" }, + { "type": "heading" }, + { "type": "text" } + ] + } + ] +} +{% endschema %} diff --git a/sections/eoc-game.liquid b/sections/eoc-game.liquid new file mode 100644 index 0000000..b3985ba --- /dev/null +++ b/sections/eoc-game.liquid @@ -0,0 +1,65 @@ +{%- comment -%} ÉCHEC O CUBE — Section 3 : LE JEU / THE GAME {%- endcomment -%} +La pièce courte vaut 1 point. The short piece is worth 1 point.
" } + ] + } + ], + "max_blocks": 3, + "presets": [ + { + "name": "EOC — Le Jeu / The Game", + "blocks": [ + { "type": "piece", "settings": { "swatch": "#E8C96A", "name": "PÂLE (court)", "points": "1 point", "description": "La pièce courte, valeur 1 point. The short pale piece — worth 1 point.
" } }, + { "type": "piece", "settings": { "swatch": "#2C1F0E", "name": "FONCÉ (long)", "points": "2 points", "description": "La pièce longue, valeur 2 points. The long dark piece — worth 2 points.
" } }, + { "type": "piece", "settings": { "swatch": "#B22222", "name": "ROUGE (mince)", "points": "Zone morte", "description": "Le marqueur mince crée une zone morte. The thin red marker creates a dead zone.
" } } + ] + } + ] +} +{% endschema %} diff --git a/sections/eoc-hero.liquid b/sections/eoc-hero.liquid new file mode 100644 index 0000000..08d56ab --- /dev/null +++ b/sections/eoc-hero.liquid @@ -0,0 +1,91 @@ +{%- comment -%} ÉCHEC O CUBE — Section 1 : HERO {%- endcomment -%} +{{ section.settings.tagline_fr }}
+{{ section.settings.tagline_en }}
+ {%- endif -%} + +{{ section.settings.note }}
+Trois types de pièces : PÂLE (court, 1 point), FONCÉ (long, 2 points) et ROUGE (mince, zone morte).
" }, + { "type": "text", "id": "heading_en", "label": "Titre EN", "default": "The pieces" }, + { "type": "richtext", "id": "body_en", "label": "Texte EN", "default": "Three piece types: PALE (short, 1 point), DARK (long, 2 points) and RED (thin, dead zone).
" } + ] + } + ], + "presets": [ + { + "name": "EOC — Page Règles / Rules page", + "blocks": [ + { "type": "rule", "settings": { "heading_fr": "Les pièces", "body_fr": "Trois types : PÂLE (court, 1 point), FONCÉ (long, 2 points), ROUGE (mince, zone morte).
", "heading_en": "The pieces", "body_en": "Three types: PALE (short, 1 pt), DARK (long, 2 pts), RED (thin, dead zone).
" } }, + { "type": "rule", "settings": { "heading_fr": "Alternance des couleurs", "body_fr": "Chaque nouveau pion doit toucher une couleur contraire à la sienne.
", "heading_en": "Color alternation", "body_en": "Each new piece must touch a color opposite to its own.
" } }, + { "type": "rule", "settings": { "heading_fr": "Chaînage", "body_fr": "Les pièces se chaînent en respectant la rainure : si le pion entre, le coup est valide.
", "heading_en": "Chaining", "body_en": "Pieces chain along the groove: if the piece fits, the move is valid.
" } }, + { "type": "rule", "settings": { "heading_fr": "Le marqueur rouge", "body_fr": "La pièce ROUGE mince crée une zone morte qui bloque la fermeture adverse.
", "heading_en": "The red marker", "body_en": "The thin RED piece creates a dead zone blocking the opponent's closure.
" } }, + { "type": "rule", "settings": { "heading_fr": "Pointage", "body_fr": "Fermez un carré, criez « ÉCHEC O CUBE » et comptez les points des pièces du carré.
", "heading_en": "Scoring", "body_en": "Close a square, shout “ÉCHEC O CUBE” and count the points of the pieces in the square.
" } }, + { "type": "rule", "settings": { "heading_fr": "Configurations classiques", "body_fr": "Carrés fermés classiques : 6, 9 ou 12 points selon la composition des pièces.
", "heading_en": "Classic configurations", "body_en": "Classic closed squares: 6, 9 or 12 points depending on the piece composition.
" } } + ] + } + ] +} +{% endschema %} diff --git a/sections/eoc-rules.liquid b/sections/eoc-rules.liquid new file mode 100644 index 0000000..2907fdb --- /dev/null +++ b/sections/eoc-rules.liquid @@ -0,0 +1,71 @@ +{%- comment -%} ÉCHEC O CUBE — Section 5 : COMMENT JOUER / HOW TO PLAY {%- endcomment -%} +{{ section.settings.caption }}
+ {%- endif -%} +Des jeux de bois quebecois, faconnes pour durer toute une vie.
+Prix de precommande fondateur, reserve aux membres des debuts.
+ +Parfait pour decouvrir ECHEC O CUBE en famille
+En stock -- Expedition sous 48h
+Le juste milieu recreatif
+Precommande -- Livraison printemps 2027
+Le format original de 1999. Pour les competiteurs.
+Precommande -- Livraison printemps 2027
+Chaque piece est unique. Le prototype original de 1999 a ete fabrique a la main par Alain Dupont. Cette edition reproduit fidelement les dimensions et les materiaux du prototype.
+30 jours pour tester. Pas convaincu ? On vous rembourse. Pas de questions.
Piece manquante ou defectueuse ? On la remplace gratuitement, pour toujours.
Erable, chene et bouleau provenant de forets gerees durablement au Quebec.
Emballage renforce. Assurance incluse. Suivi en temps reel.
Gratuit | 2-4 jours ouvrables
12 $ | 3-6 jours ouvrables
A partir de 25 $ | 7-14 jours ouvrables
Retours : Contactez-nous sous 30 jours. Nous organisons le retour gratuit au Quebec et Ontario.
+Rejoignez La Ruche gratuitement et beneficiez de la precommande fondateur quand vous serez pret.
+Rejoindre La Ruche -- Gratuit +Soyez parmi les 500 premiers a porter le titre de Fondateur.
+La Ruche est la communaute fondateur d'ECHEC O CUBE. En 2026, nous batissons. En 2027, nous lancons. Inscrivez-vous maintenant pour des conditions exclusives de fondateur.
+Acces au Discord prive, rencontres IRL, parties en ligne, strategies avancees partagees par les membres.
Tournois reserves aux membres de La Ruche avec prix speciaux (jeux signes, merch, Cote EOC bonus).
Reductions exclusives, acces anticipe aux nouveaux formats, mention dans les annales FEOC.
Devenir Fondateur est gratuit. Il suffit de s'inscrire avant le lancement printemps 2027.
++"J'ai teste le prototype avec Alain. La profondeur strategique est impressionnante. Hate de voir la communaute grandir."
-- Marc L., testeur beta, Montreal
+"Enfin un jeu de strategie quebecois qui n'a pas a rougir face aux echecs. Le Fonce Separateur est genial."
-- Sophie D., membre fondateur numero 042
+"Mon grand-pere fabriquait des jeux en bois. ECHEC O CUBE me rappelle pourquoi le tactile compte."
-- Jean-Francois B., Trois-Rivieres
ATTENTION : 247 places fondateurs restantes sur 500
+ +Vos donnees sont protegees. Jamais de spam. Desinscription a tout moment.
+Non. L'inscription a La Ruche est 100% gratuite. Les avantages fondateurs (reductions, acces exclusifs) sont offerts sans engagement d'achat.
Printemps 2027. La date exacte sera communiquee aux membres de La Ruche en premier.
La Federation ECHEC O CUBE au Canada gere les tournois officiels, le classement Cote EOC et les niveaux d'arbitres. Les membres de La Ruche ont un acces privilegie aux evenements FEOC.
Oui. Tous les fondateurs verrouillent leur tarif de precommande au moment de l'inscription. Ce tarif est garanti jusqu'au lancement, meme si les prix publics augmentent.
Oui. Desinscription a tout moment via un lien dans chaque email. Aucune question posee.
Un jeu de strategie ou le plateau lui-meme arbitre la partie.
+ +Le joueur gagnant du pile ou face place un pion n'importe ou sur le plateau. Aucune contrainte de contact -- c'est le premier coup. Le pion se glisse couche dans la rainure, fermement maintenu par le bois.
+Quand un pion s'insere dans une rainure et touche un autre pion deja pose, le coup est valide. Aucune exception, aucune dispute : le plateau decide.
+Deux pions de meme type ne se touchent jamais. Un pion pale ne touche jamais un autre pion pale ; un pion fonce ne touche jamais un autre pion fonce. Cette alternance structure toute la partie.
+Quand 4 pions alternes forment un carre ferme, vous marquez des points. Criez "ECHEC O CUBE !" immediatement. Chaque cube ferme accorde un tour supplementaire.
+Le fonce long fait 3 cm et deborde de 0,5 cm dans les intersections. Le pale court fait 2 cm et epouse exactement l'arete.
+Ce debordement permet de fermer des carres "enrichis" avec seulement 3 pales + 3 fonces = 9 points, au lieu de 4+4 = 12 points. Cela consomme moins de pions pour un rapport point/pion eleve.
+Le fonce "prend" les coins. Le pale remplit l'arete utile. Un cube valide peut etre ferme avec 3 fonces + 3 pales, parce que le fonce assure le travail des coins la ou les pales, plus courts, ne se touchent pas directement dans les angles.
+Quand un espace vide est geometriquement bloque (aucun pion ne peut y entrer sans violer l'alternance), on y insere un pion rouge debout. Il vaut 0 point et officialise : "ici, aucun point pour le reste de la partie."
+Attention : Si un rouge fait partie d'un carre ferme, ce carre est incomplet et vaut 0 point.
+Oubliez d'annoncer "ECHEC O CUBE" ? Le joueur suivant peut l'annoncer a votre place et vous voler les points du carre !
+L'attention est une habilete du jeu au meme titre que le placement.
+Chaque cube ferme = un tour bonus. Le joueur continue de jouer tant qu'il forme des ECHEC O CUBE. Pour enchainer, il faut que le nouveau pion occupe l'arete manquante d'un carre adjacent deja a 3 aretes completes.
+81 cases | 200 pions (132 pales + 52 fonces + 16 rouges)
+Duree : 30-60 minutes
+2 a 4 joueurs | Familles, decouverte
+Acrylique coule 10 mm ou Bois franc du Quebec
+ 89 $ +121 cases | 300 pions (200 pales + 80 fonces + 20 rouges)
+Duree : 30-80 minutes
+2 a 4 joueurs | Juste milieu recreatif
+Bois franc du Quebec -- Collection
+ 129 $ +225 cases | 555 pions (380 pales + 150 fonces + 25 rouges)
+Duree : 40-95 minutes
+2 joueurs | Mode competition officiel FEOC
+Bois franc du Quebec -- Edition de collection
+ 179 $ +Rejoignez La Ruche et soyez parmi les premiers a posseder un ECHEC O CUBE.
+ S'inscrire a La Ruche + Voir la boutique +Telechargez le Cahier de Reglement Officiel v2.1 (PDF) -- la source unique de verite pour les arbitres et joueurs. Document valide le 22 juin 2026.
+ Telecharger le reglement (PDF) +À Notre-Dame-du-Mont-Carmel, au Québec, en 1999, Alain Dupont imagine un jeu où la règle vit dans la matière. Vingt-sept ans de raffinement ont mené à ÉCHEC O CUBE : un jeu de stratégie abstraite où la physique valide chaque coup.
Droit d'auteur OPIC Canada No. 477714.
", + "heading_en": "The story", + "body_en": "In Notre-Dame-du-Mont-Carmel, Quebec, in 1999, Alain Dupont imagined a game where the rule lives in the material. Twenty-seven years of refinement led to ÉCHEC O CUBE: an abstract strategy game where physics validates every move.
OPIC Canada Copyright No. 477714.
" + } + } + }, + "block_order": ["kicker", "title", "story"] + } + }, + "order": ["main"] +} diff --git a/templates/page.contact.json b/templates/page.contact.json new file mode 100644 index 0000000..208cde0 --- /dev/null +++ b/templates/page.contact.json @@ -0,0 +1,20 @@ +{ + "sections": { + "main": { + "type": "eoc-flex", + "settings": { + "show_page_title": false, + "width": "narrow", + "bg_color": "#1A1008" + }, + "blocks": { + "kicker": { "type": "kicker", "settings": { "text": "NOUS JOINDRE / CONTACT", "center": true } }, + "title": { "type": "heading", "settings": { "text": "Contactez-nous / Get in touch", "size": 44, "color": "#E8C96A", "italic": true, "align": "center" } }, + "intro": { "type": "text", "settings": { "content": "Une question sur ÉCHEC O CUBE, la campagne La Ruche ou une commande ? Écrivez-nous. / A question about ÉCHEC O CUBE, the La Ruche campaign or an order? Write to us.
", "align": "center", "max_width": 620, "center_box": true } }, + "form": { "type": "contact_form" } + }, + "block_order": ["kicker", "title", "intro", "form"] + } + }, + "order": ["main"] +} diff --git a/templates/page.jouer.json b/templates/page.jouer.json new file mode 100644 index 0000000..aabbfd0 --- /dev/null +++ b/templates/page.jouer.json @@ -0,0 +1,39 @@ +{ + "sections": { + "main": { + "type": "eoc-flex", + "settings": { + "show_page_title": false, + "width": "narrow", + "bg_color": "#1A1008" + }, + "blocks": { + "kicker": { "type": "kicker", "settings": { "text": "JOUER / PLAY", "center": true } }, + "title": { "type": "heading", "settings": { "text": "Comment jouer en 3 étapes", "size": 48, "color": "#E8C96A", "italic": true, "align": "center" } }, + "step1": { "type": "bilingual", "settings": { + "heading_fr": "1 — Placez librement", + "body_fr": "Posez votre premier pion où vous voulez sur le plateau.
", + "heading_en": "1 — Place freely", + "body_en": "Place your first piece anywhere on the board.
" + } }, + "step2": { "type": "bilingual", "settings": { + "heading_fr": "2 — Touchez une couleur contraire", + "body_fr": "Chaque pion suivant doit toucher une couleur opposée à la sienne.
", + "heading_en": "2 — Touch an opposite color", + "body_en": "Each next piece must touch a color opposite to its own.
" + } }, + "step3": { "type": "bilingual", "settings": { + "heading_fr": "3 — Fermez un carré", + "body_fr": "Fermez un carré, criez « ÉCHEC O CUBE » et comptez vos points.
", + "heading_en": "3 — Close a square", + "body_en": "Close a square, shout “ÉCHEC O CUBE” and count your points.
" + } }, + "div": { "type": "divider", "settings": {} }, + "cta": { "type": "button", "settings": { "label": "COMMANDER LE JEU / ORDER THE GAME", "link": "/collections/all", "style": "solid", "align": "center" } }, + "cta2": { "type": "button", "settings": { "label": "RÈGLEMENT COMPLET / FULL RULES", "link": "/pages/rules", "style": "outline", "align": "center" } } + }, + "block_order": ["kicker", "title", "step1", "step2", "step3", "div", "cta", "cta2"] + } + }, + "order": ["main"] +} diff --git a/templates/page.json b/templates/page.json new file mode 100644 index 0000000..1bb2a9e --- /dev/null +++ b/templates/page.json @@ -0,0 +1,17 @@ +{ + "sections": { + "main": { + "type": "eoc-flex", + "settings": { + "show_page_title": true, + "width": "narrow", + "bg_color": "#1A1008" + }, + "blocks": { + "content": { "type": "page_content" } + }, + "block_order": ["content"] + } + }, + "order": ["main"] +} diff --git a/templates/page.le-jeu.json b/templates/page.le-jeu.json new file mode 100644 index 0000000..591f885 --- /dev/null +++ b/templates/page.le-jeu.json @@ -0,0 +1,24 @@ +{ + "sections": { + "main": { + "type": "eoc-flex", + "settings": { + "show_page_title": false, + "width": "wide", + "bg_color": "#1A1008" + }, + "blocks": { + "kicker": { "type": "kicker", "settings": { "text": "LE JEU / THE GAME", "center": true } }, + "title": { "type": "heading", "settings": { "text": "Un jeu de stratégie où la matière dicte la règle", "size": 48, "color": "#E8C96A", "italic": true, "align": "center" } }, + "intro": { "type": "text", "settings": { "content": "ÉCHEC O CUBE se joue à deux. Chaque joueur place ses pièces dans les rainures du plateau : si le pion entre, le coup est valide. Fermez un carré, criez « ÉCHEC O CUBE » et empochez les points. / ÉCHEC O CUBE is a two-player game. If the piece fits the groove, the move is valid. Close a square, shout “ÉCHEC O CUBE” and pocket the points.
", "align": "center", "max_width": 760, "center_box": true } }, + "div1": { "type": "divider", "settings": {} }, + "pale": { "type": "image_text", "settings": { "image_position": "left", "heading": "PÂLE — la pièce courte (1 point)", "content": "La pièce pâle vaut 1 point. Idéale pour amorcer un carré ou bloquer l'adversaire. / The pale piece is worth 1 point — perfect to start a square or block your opponent.
" } }, + "fonce": { "type": "image_text", "settings": { "image_position": "right", "heading": "FONCÉ — la pièce longue (2 points)", "content": "La pièce foncée vaut 2 points et occupe plus d'espace dans la rainure. / The dark piece is worth 2 points and fills more of the groove.
" } }, + "rouge": { "type": "image_text", "settings": { "image_position": "left", "heading": "ROUGE — le marqueur mince (zone morte)", "content": "La pièce rouge crée une zone morte qui bloque la fermeture adverse. / The thin red piece creates a dead zone that blocks the opponent's closure.
" } }, + "cta": { "type": "button", "settings": { "label": "VOIR LES RÈGLES COMPLÈTES / SEE FULL RULES", "link": "/pages/rules", "style": "solid", "align": "center" } } + }, + "block_order": ["kicker", "title", "intro", "div1", "pale", "fonce", "rouge", "cta"] + } + }, + "order": ["main"] +} diff --git a/templates/page.rules.json b/templates/page.rules.json new file mode 100644 index 0000000..4f4d268 --- /dev/null +++ b/templates/page.rules.json @@ -0,0 +1,6 @@ +{ + "sections": { + "rules_page": { "type": "eoc-rules-page" } + }, + "order": ["rules_page"] +} diff --git a/templates/page.tournois.json b/templates/page.tournois.json new file mode 100644 index 0000000..2f2101b --- /dev/null +++ b/templates/page.tournois.json @@ -0,0 +1,22 @@ +{ + "sections": { + "main": { + "type": "eoc-flex", + "settings": { + "show_page_title": false, + "width": "narrow", + "bg_color": "#1A1008" + }, + "blocks": { + "kicker": { "type": "kicker", "settings": { "text": "TOURNOIS / TOURNAMENTS", "center": true } }, + "title": { "type": "heading", "settings": { "text": "Mesurez votre stratégie", "size": 48, "color": "#E8C96A", "italic": true, "align": "center" } }, + "intro": { "type": "text", "settings": { "content": "Rejoignez la communauté ÉCHEC O CUBE lors de nos tournois. Format, dates et inscriptions seront annoncés ici. / Join the ÉCHEC O CUBE community at our tournaments. Format, dates and registration will be announced here.
", "align": "center", "max_width": 700, "center_box": true } }, + "feature": { "type": "image_text", "settings": { "image_position": "right", "heading": "Prochain tournoi", "content": "Date : à confirmer
Lieu : à confirmer
Format : élimination simple, parties au meilleur des points.
Modifiez ce bloc pour annoncer votre prochain événement. / Edit this block to announce your next event.
", "button_label": "S'INSCRIRE / REGISTER", "button_link": "/pages/contact" } }, + "div": { "type": "divider", "settings": {} }, + "rules": { "type": "text", "settings": { "content": "Règlement de tournoi, classement et historique des champions à venir. / Tournament rules, rankings and champions history coming soon.
", "align": "center", "max_width": 700, "center_box": true } } + }, + "block_order": ["kicker", "title", "intro", "feature", "div", "rules"] + } + }, + "order": ["main"] +} diff --git a/templates/page.vision.json b/templates/page.vision.json new file mode 100644 index 0000000..adabedf --- /dev/null +++ b/templates/page.vision.json @@ -0,0 +1,27 @@ +{ + "sections": { + "main": { + "type": "eoc-flex", + "settings": { + "show_page_title": false, + "width": "narrow", + "bg_color": "#0D0705", + "grooves": true + }, + "blocks": { + "kicker": { "type": "kicker", "settings": { "text": "NOTRE VISION / OUR VISION", "center": true } }, + "title": { "type": "heading", "settings": { "text": "Un chef-d'œuvre québécois, pensé pour durer", "size": 46, "color": "#C9982F", "italic": true, "align": "center" } }, + "quote": { "type": "quote", "settings": { "text": "Si le pion rentre, le coup est valide.", "author": "Alain Dupont, inventeur", "align": "center" } }, + "vision": { "type": "bilingual", "settings": { + "heading_fr": "La vision", + "body_fr": "Depuis 1999, ÉCHEC O CUBE poursuit une idée simple et exigeante : un jeu de stratégie pure où la physique elle-même valide chaque coup. Pas d'arbitre, pas d'ambiguïté — la matière tranche.
Notre vision : faire connaître ce jeu artisanal québécois au monde entier, une partie à la fois.
", + "heading_en": "The vision", + "body_en": "Since 1999, ÉCHEC O CUBE has pursued one demanding idea: pure strategy where physics itself validates every move. No referee, no ambiguity — the material decides.
Our vision: bring this handcrafted Quebec game to the world, one match at a time.
" + } }, + "img": { "type": "image", "settings": { "caption": "ÉCHEC O CUBE — édition bois artisanale", "max_width": 900 } } + }, + "block_order": ["kicker", "title", "quote", "vision", "img"] + } + }, + "order": ["main"] +} diff --git a/templates/product.json b/templates/product.json new file mode 100644 index 0000000..d77d1f8 --- /dev/null +++ b/templates/product.json @@ -0,0 +1,4 @@ +{ + "sections": { "main": { "type": "eoc-product-page" } }, + "order": ["main"] +}
Comment ca marche ?
+Inscription gratuite
Remplissez le formulaire ci-dessous. Vous recevez immediatement votre numero de membre fondateur.
Acces beta
Les fondateurs testent la version numerique du jeu et donnent leur feedback.
Precommande exclusive
Les fondateurs ont 48h d'avance pour precommander leur jeu avec reduction et numerotation.
Lancement officiel
Evenement de lancement a Montreal. Les fondateurs sont les premiers a recevoir leur jeu.