Compare commits

..

No commits in common. "main" and "feat/hero-stag-animation" have entirely different histories.

29 changed files with 722 additions and 1055 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 778 KiB

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

View file

@ -1,6 +1,5 @@
<script setup lang="ts">
import { ref, computed, watch } from 'vue'
import { useWindowScroll } from '@vueuse/core'
import { useI18n } from 'vue-i18n'
import { RouterLink, useRoute } from 'vue-router'
import { cn } from '@/lib/utils'
@ -27,18 +26,6 @@ const route = useRoute()
const mobileOpen = ref(false)
// Hide the header on scroll-down, reveal on scroll-up the standard VueUse
// recipe: `useWindowScroll` for the reactive position, then compare against
// the watcher's previous value for direction. Always shown near the top of
// the page; the 8px deadband stops jitter from tiny scroll deltas.
const hidden = ref(false)
const { y } = useWindowScroll()
watch(y, (cur, prev) => {
if (cur < 80) hidden.value = false
else if (cur - prev > 8) hidden.value = true
else if (prev - cur > 8) hidden.value = false
})
interface NavItem {
to: string
label: string
@ -101,8 +88,7 @@ watch(() => route.path, closeMobile)
<template>
<header
class="sticky top-0 z-40 border-b border-white/10 bg-background/65 backdrop-blur-xl backdrop-saturate-150 transition-transform duration-300 ease-out"
:class="hidden && !mobileOpen ? '-translate-y-full' : 'translate-y-0'"
class="sticky top-0 z-40 border-b border-white/10 bg-background/65 backdrop-blur-xl backdrop-saturate-150"
>
<div class="mx-auto max-w-7xl px-4 lg:px-6">
<div class="flex h-16 items-center justify-between gap-4">

View file

@ -1,58 +0,0 @@
<script setup lang="ts">
// Top-of-page hero, the first block inside PageShell's panel. Centered to
// match the site layout; falls back to a left-aligned two-column grid when an
// `aside` slot (e.g. a hero image) is supplied. Title uses the Aboreto
// display face in the home page's uppercase / wide-tracking idiom.
import { useSlots } from 'vue'
withDefaults(
defineProps<{
kicker?: string
title: string
lede?: string
}>(),
{},
)
const slots = useSlots()
const hasAside = () => !!slots.aside
</script>
<template>
<section class="px-6 pt-16 pb-12 sm:px-10 lg:px-16 lg:pt-24 lg:pb-16">
<div
v-if="hasAside()"
class="grid items-center gap-10 lg:grid-cols-2 lg:gap-14"
>
<div class="max-w-3xl">
<p v-if="kicker" class="font-display text-xs uppercase tracking-[0.3em] text-accent">
{{ kicker }}
</p>
<h1 class="mt-3 font-display text-3xl uppercase leading-tight tracking-wider md:text-5xl">
{{ title }}
</h1>
<p v-if="lede" class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ lede }}
</p>
<slot />
</div>
<slot name="aside" />
</div>
<div v-else class="mx-auto max-w-3xl text-center">
<h1 class="font-display text-4xl uppercase leading-tight tracking-wider md:text-6xl">
{{ title }}
</h1>
<p
v-if="kicker"
class="mt-6 font-display text-2xl uppercase tracking-wider text-accent md:text-3xl"
>
{{ kicker }}
</p>
<p v-if="lede" class="mx-auto mt-6 max-w-2xl text-base leading-relaxed text-foreground/90 md:text-lg">
{{ lede }}
</p>
<slot />
</div>
</section>
</template>

View file

@ -1,33 +0,0 @@
<script setup lang="ts">
// A content block inside PageShell's panel. No background of its own the
// near-black panel shows through; cards/images provide the contrast. Just
// constrains width and supplies the shared vertical rhythm and gutter.
withDefaults(
defineProps<{
/** Inner content max-width. `wide` fills the panel. */
width?: 'prose' | 'narrow' | 'wide'
/** Vertical rhythm. */
padding?: 'default' | 'compact'
}>(),
{ width: 'wide', padding: 'default' },
)
const widthClass = {
prose: 'max-w-3xl',
narrow: 'max-w-4xl',
wide: 'max-w-none',
} as const
const padClass = {
default: 'py-16 lg:py-20',
compact: 'py-12 lg:py-14',
} as const
</script>
<template>
<section class="px-6 sm:px-10 lg:px-16" :class="padClass[padding]">
<div :class="[widthClass[width], width !== 'wide' ? 'mx-auto' : '']">
<slot />
</div>
</section>
</template>

View file

@ -1,14 +0,0 @@
<script setup lang="ts">
// The floating content panel: a near-black rounded card that sits on the
// tiled celtic-knot page background, leaving a gutter of tile visible around
// it. Wrap every secondary page's content in this so they share the home
// page's layout language. Sections go inside as plain blocks.
</script>
<template>
<div class="px-3 pt-3 pb-6 sm:px-4 sm:pt-4 lg:px-6">
<div class="mx-auto max-w-6xl overflow-hidden rounded-3xl bg-panel shadow-2xl">
<slot />
</div>
</div>
</template>

View file

@ -5,7 +5,7 @@
"common": {
"tagline": "Center for Art & Ecology",
"siteName": "Château du Faune",
"comingSoon": "Coming soon",
"comingSoon": "Coming soon.",
"learnMore": "Learn more",
"seeAll": "See all",
"contactUs": "Contact us",
@ -29,7 +29,7 @@
"menu": "Menu"
},
"footer": {
"tagline": "farmstand ✧ land art ✧ Residency ✧ Events Venue",
"tagline": "A farm, a residency and a refuge at the meeting point of art and ecology, in the Pyrenean foothills of Ariège.",
"contact": "Contact",
"social": "Follow us",
"address": "456 Grand Rue de Bellissen, Château de Bénac, 09000 France",
@ -37,107 +37,97 @@
},
"concept": {
"hero": {
"kicker": "Center For Art & Ecology",
"title": "Concept, Mission & Core Motivations",
"lede": "Opening Fall 2026: We humbly welcome you to join in on our next open community day event or enjoy a cozy tea & yoga class."
"kicker": "Concept",
"title": "Art & Ecology",
"lede": "We steward land and shared resources through holistic, regenerative practices that align with natural rhythms and support artistic expression."
},
"mission": {
"title": "Our Mission",
"body": "Our Mission is to steward land and shared resources through holistic, regenerative, non-extractive practices that align with natural rhythms and support artistic expression, while cultivating a culture of collaboration, integrity, and long-term resilience.",
"motivationTitle": "Our motivation",
"motivationBody": "The motivation behind what we do is to live and work in remembrance of how human culture can be embedded in ecology where creativity arises organically from connection to nature, well-tended land, regulated nervous systems, and a culture that values presence over output. Through adopting a practice and philosophy of 'slow living,' productivity is measured by continuity, health, and coherence over time rather than maximum financial gain. The core of our practice here is to align our project goals with our values through the work that we do, and to find joy in our work in a way that is sustainable. We exemplify this through our foundational projects; the sculpture gardens of living & edible arts, the boutique farmstand of slowly crafted goods, adopting a practice of slow farming and hosting residencies, courses & gatherings."
},
"quote": {
"text": "It is the marriage of the soul with Nature that makes the intellect fruitful, and gives birth to imagination.",
"attribution": "Henry David Thoreau"
"title": "A center for art and ecology",
"body": "Productivity, here, is measured by health and continuity rather than by financial gain. We grow slowly so that what takes root can last."
},
"landArt": {
"title": "Land Art & Residencies",
"body": "Stroll an ever-changing, whimsical path lined with edible berries, where each turn reveals works shaped by wind, time, and human hands in collaboration with the land. This sculpture garden is an ode to nature's capacity to connect, inspire, and awaken an ancient knowing in our bones. Each piece emerges from a reciprocal relationship with the earth gathered, farmed, and ultimately, returned inviting visitors to slow down, observe, taste, and feel their place within the living world. We exhibit artists-in-residence who devote their work to listening to elemental materials so that here, art is not imposed on the landscape; it arises from it."
"title": "Land art & residencies",
"body": "A sculpture garden woven through with edible berries, where residencies arise from listening to the materials at hand. Art is not imposed on the landscape — it arises from it."
},
"farmstand": {
"title": "Our farm goods & boutique",
"body": "The farmstand boutique offers what grows beyond the harvest. Everything here comes from the land, or from those who live closely with it. Alongside fresh produce and seasonal extras, you'll find transformed goods made with love: herbal-infused chocolates, sprouted pumpkin seeds, apple molasses, fruit vinegars, and other house made offerings. You'll also find handcrafted pieces made by our artists-in-residence: natural woolen wares, carved wood, pottery, and fun, functional objects shaped from local materials. Each item carries the character of the land and the time it required, extending the life of the harvest into forms meant to inspire, nourish and delight."
"title": "Farmstand & boutique",
"body": "Fresh produce, herbal chocolates, sprouted seeds, apple molasses and fruit vinegars, alongside woolen wares, carved wood and pottery from resident makers."
},
"slowFarming": {
"title": "Slow Farming",
"body": "Slow farming reframes efficiency away from short-term yield and toward whole system coherence. It asks us to slow us down into the present moment, to witness the elemental beauty around us and to behold the innate intelligence of the natural world. By implementing a practice of holistic ecology, non-extractive farming, and reciprocity with nature, we believe that productivity emerges as a by-product, not a goal.",
"title": "Slow farming",
"body": "Three pillars hold the field together.",
"pillarOneTitle": "Holistic ecology",
"pillarOneBody": "Holistic ecology in whole-systems design means understanding the farm as a living field of relationships soil biota, plants, animals, humans, climate, time, and not simply a production unit. Each piece interacts and has a part to play in the whole puzzle. Holistic thinking is all about thoughtful design we prioritize creating environments that feel harmonious and pleasing to be in by making mindful adjustments to restore ecological diversity, aesthetic coherence, and natural balance.",
"pillarOneBody": "The farm read as a living field of relationships, not as isolated outputs.",
"pillarTwoTitle": "Non-extractive methods",
"pillarTwoBody": "Non-extractive methods of farming means nothing is taken without regeneration. Soil fertility is grown over time. Water is slowed and retained. Animals cycle nutrients instead of exporting them. Our labor is paced, not spent. The system compounds rather than depletes because inputs are not constantly having to be replenished. Decisions are made by sensing patterns rather than forcing targets.",
"pillarTwoBody": "Nothing is taken without something restored in its place.",
"pillarThreeTitle": "Reciprocity",
"pillarThreeBody": "Reciprocity is a form of co-regulating with nature, in mutual exchange. Time spent with soil, plants, animals, sun, wind, and weather entrains the human nervous system to natural rhythms. Hands in dirt, repetitive manual tasks, fresh air, animal care, microbial exposure, daylight, and seasonal pacing all downshift chronic stress and restore baseline regulation. The land benefits because it is met with care, and the human benefits because the body remembers how to be in a living system."
"pillarThreeBody": "Co-regulating with nature, in mutual exchange."
},
"events": {
"title": "Events in Nature",
"body": "The culture we cultivate here is meant to be shared beyond our walls, as a source of joy and connection. We celebrate life, nature, and the arts through markets, live music, folk dance, exhibitions, gatherings, and more. Every event, workshop, and residency we host is intrinsically intertwined with art and ecology and forms a part of our slow living sanctuary."
"title": "Events in nature",
"body": "Community celebrations that braid art and ecology together — markets, live music, folk dance and seasonal exhibitions."
}
},
"gallery": {
"kicker": "Gallery",
"title": "Land Art Gallery",
"title": "Land art gallery",
"lede": "A turning archive of works grown from the land — sculpture, mosaic, found objects and small offerings made on site by residents and visitors.",
"captions": {
"landArt": "Land Art",
"buddhaHand": "Golden Buddha Hand",
"fountain": "Stone Garden Fountain",
"mosaic": "Decorative Mosaic Stones",
"petStatue": "Pet Statue",
"miniBuddha": "Miniature Buddha Statue"
"landArt": "Sculpture in the garden",
"buddhaHand": "Gilded hand",
"fountain": "Stone garden fountain",
"mosaic": "Mosaic stones",
"petStatue": "Garden figure",
"miniBuddha": "Miniature shrine"
}
},
"vision": {
"hero": {
"kicker": "About Us",
"title": "Our Vision & Values",
"lede": "A place to practice slow living, connect with nature and our natural selves, and allow regenerative systems, creativity, and self-expansion to blossom."
},
"intro": {
"title": "How we arrived here",
"body": "We scouted far and wide for several years, looking for a place we could call home, with the criteria of spring water, proximity to towns, trains and airports, pasture for horses, and dwellings for us humans. We landed in Ariège and found what we were searching for, surprising ourselves in the process. In the spring of 2025 we acquired this little piece of heaven to steward and guide into a blooming haven for creative souls. We began as three founders and one devoted dog, but the vision is larger than us. It is our desire to weave together a synergistic collective, based on a resilient and replicable economic model, where art and agriculture, work and rest, solitude and solidarity can coexist in harmony. We feel we found a good spot to try this out in."
"kicker": "Vision & Values",
"title": "A slow practice, rooted here",
"lede": "A farm, a residency, and a refuge at the meeting point of art and ecology — founded spring 2025 on eleven hectares at Château de Bénac, in Ariège, France."
},
"mission": {
"title": "The Vision",
"body": "Faun's Castle is a farm, residency and refuge dedicated to the intersection of art and ecology. Spread across 11 hectares of rolling meadow and woods, you'll find a place where ecological artists, curious spirits and mindful cultivators can come together to actualize a shared vision for ecological, intentional living. We represent a multicultural, multi-specied, diverse bunch of souls and our collective success is rooted in the harmonization of each individual's unique gifts in the whole system."
"title": "Mission",
"body": "A place to practise slow living, reconnect with nature and our natural selves, and let regenerative systems, creativity and self-expansion blossom."
},
"philosophyTitle": "Our Values",
"philosophySubtitle": "Five guiding qualities the work returns to.",
"philosophyTitle": "Five guiding qualities",
"philosophySubtitle": "The inner ground we work from.",
"philosophy": {
"mindfulnessTitle": "Mindfulness",
"mindfulnessBody": "As self-examination & inner stillness — mindfulness guides our engagement. By tending to our inner state, we bring grounded presence to the shared field; by receiving authentic care from others, we are steadied in return.",
"mindfulnessBody": "Inner stillness and self-examination as the basis for authentic engagement.",
"collaborationTitle": "Collaboration",
"collaborationBody": "We breathe as one & move as many. We remain interconnected yet we do not dissolve into the collective; no one exists outside the rhythm of the whole, nor does one exist solely for themselves. Our collective strength is rooted in the harmonization of each individual's unique gifts.",
"collaborationBody": "Distinct individuals, harmonised — collective strength from particular gifts.",
"reciprocityTitle": "Reciprocity",
"reciprocityBody": "Reciprocity as a moral & relational resonance. Each individual receives with empathy and gives with benevolence; sustainability arises not from equal giving, but from continuous rebalancing guided by mindfulness and goodwill. Reciprocity in our relationships allows our collective to be self-regulating.",
"reciprocityBody": "Continuous rebalancing through empathy and benevolence; self-regulation as a shared act.",
"balanceTitle": "Balance",
"balanceBody": "Harmony flows from the continual exchange of Yin and Yang — misalignments are resolved through mindfulness & movement. Balance is restored through self-examination (listening inward) and responsiveness (active relational adjustment) to others, ensuring that neither extreme overtakes the other.",
"balanceBody": "Yin and yang in ethical exchange; movement that resolves misalignments.",
"reverenceTitle": "Reverence",
"reverenceBody": "Gratitude is a responsibility that anchors us in the natural realm. We remember to give appreciation to that which nourishes us in our spirits & souls — be it the food we grow, our loved ones, the winds of change, etc. We tend to what we touch."
"reverenceBody": "Gratitude as a responsibility that anchors us in the natural realm."
},
"pillarsTitle": "The 7 pillars of our collective",
"pillarsTitle": "Seven operational pillars",
"pillarsSubtitle": "The outer practice that this work takes shape through.",
"pillars": {
"buildingTitle": "Eco-Building",
"buildingBody": "To us, eco building means creating and maintaining spaces that are functional, safe, and long-lasting while minimizing impact on the land. We prioritize recycled and local materials, practical design, and structures that support the daily life and work of the project.",
"buildingBody": "Functional, safe structures made from recycled and local materials, with minimal land impact.",
"farmingTitle": "Slow Farming",
"farmingBody": "Slow farming is how we grow food, herbs, and eggs in a way that sustains soil, ecosystems, and people over time. It's about planning, pacing, and working with natural cycles so productivity emerges as a by-product of healthy, regenerative systems.",
"farmingBody": "Regenerative food, herbs and eggs grown with the natural cycles.",
"wellnessTitle": "Wellness",
"wellnessBody": "This pillar ensures that everyone on site is supported with nutritious food, rest, and routines that help maintain energy, focus, and wellbeing. It's integrated into daily life, so caring for the body and nervous system happens alongside work and creativity.",
"wellnessBody": "Nutrition, rest and nervous-system support, woven together rather than treated as a service.",
"rewildingTitle": "Rewilding",
"rewildingBody": "Rewilding for us is about reconnecting people with nature through practical skills and immersive experiences. It's about self-reliance, respect for the land, and how to navigate and move through natural environments safely and skillfully.",
"rewildingBody": "Reconnection with the wild through practical skills and immersive time outdoors.",
"communityTitle": "Community",
"communityBody": "Community is about bringing people together to celebrate life & abundance. This includes hosting events, coordinating workshops and running gatherings like potlucks, jams, and saunas.",
"communityBody": "Events, workshops and cultural gatherings that celebrate abundance.",
"artsTitle": "The Arts",
"artsBody": "Art is woven into everything we do. This pillar covers residencies, exhibitions, workshops, and materials that reflect the land, community, and creativity of the project. Artistic work enhances the aesthetic quality of the space and inspires everyone involved.",
"artsBody": "Residencies, exhibitions and creative work that reflect the place and its people.",
"developmentTitle": "Development",
"developmentBody": "Development refers to growth on an individual level as well as that of the physical and virtual spheres. It is a continual process of researching, remaining open-minded and designing the systems, workflows, and protocols to keep the project running smoothly. We develop & use slow tech and open-source tools including an area-wide events application, financial structures and other operational frameworks that allow the team to work efficiently, transparently, and sustainably."
"developmentBody": "Continuous growth through slow tech and open-source tooling."
},
"teamTitle": "Meet our team",
"teamTitle": "Who tends the place",
"team": {
"patrickName": "Patrick M.",
"patrickRole": "Chief Systems Architect",
"patrickBody": "In charge of the business aspect of the project. Technology infrastructure and business systems.",
"patrickBody": "Technology infrastructure and business systems.",
"cocoName": "Coco L.",
"cocoRole": "Creative Director",
"cocoBody": "Regenerative design and community entrepreneurship.",
@ -147,48 +137,47 @@
}
},
"home": {
"heroStrip": "farmstand ✧ land art ✧ residency ✧ events venue",
"welcome": {
"title": "Welcome to The Château du Faune",
"body": "A place to create, to grow and to rejuvenate with humble reverence and reciprocity to our natural world. Sitting at the majestic foothills of the Pyrenees in the southwest of France, Château du Faune is an artist residency and a slow living sanctuary for crafters, agroecologists, and nature-enthusiasts seeking a home on the road.",
"title": "Welcome to the Château du Faune",
"body": "A place to create, to grow and to rejuvenate, at the foot of the Pyrenees. An artist residency and slow-living sanctuary for crafters, agroecologists and nature-enthusiasts looking for a home on the road.",
"cta": "Learn more about the Center for Art & Ecology"
},
"oyez": {
"kicker": "currently in development at the château",
"title": "oyez.ariege.io",
"subtitle": "launching summer 2026 · test the Demo here",
"body": "A native, community-wide & decentralized calendar of events app",
"cta": "See More"
"bouge": {
"kicker": "Currently in development at the château",
"title": "bouge.ariege.io",
"subtitle": "Launching summer 2026 · Try the demo",
"body": "A native, community-wide, decentralised calendar-of-events app",
"cta": "See more"
},
"pathwaysIntro": "here are some possible paths…",
"pathwaysIntro": "Here are some possible paths…",
"pathways": {
"title": "Plan Your Visit",
"title": "Find your way in",
"subtitle": "Four ways to meet the land.",
"dayVisit": {
"title": "Just passing through?",
"body": "Come to co-work, shop our roadside boutique farmstand or walk our land art gallery — learn about our center."
"title": "Drop by for the day",
"body": "Visit the farmstand and the land-art gallery, picnic in the sculpture garden."
},
"activity": {
"title": "Join in on an activity",
"body": "Participate in a community day event or book an excursion with us — see what's on."
"title": "Join an activity",
"body": "Workshops, yoga, sauna soirees, open-air concerts and seasonal celebrations."
},
"retreat": {
"title": "Come to rest & retreat",
"body": "Reserve a room for a short stay or book your retreat with us."
"title": "Stay for a retreat",
"body": "Short stays for makers, writers, retreaters and small gatherings."
},
"residency": {
"title": "Stay as a resident",
"body": "Come as an artist, worker or volunteer — see long-term pathways."
"title": "Apply for a residency",
"body": "Long-term residencies for artists, builders, growers, and stewards."
}
},
"events": {
"title": "Upcoming Residencies & Community Days",
"title": "What's coming up",
"subtitle": "A glimpse of the season ahead. Inaugural programming opens fall 2026.",
"seeAll": "See all events"
},
"contact": {
"title": "Visit us in Ariège",
"body": "456 Grand Rue de Bellissen, Château de Bénac, 09000 France.",
"body": "We're at 456 Grand Rue de Bellissen, Château de Bénac, 09000 France. Write us, send a smoke signal, or follow along online.",
"cta": "Write to us"
}
},
@ -201,9 +190,9 @@
"freshTitle": "From the field",
"freshBody": "Seasonal vegetables, herbs and eggs from the farm.",
"pantryTitle": "Pantry",
"pantryBody": "Herbal-infused chocolates, sprouted pumpkin seeds, apple molasses and fruit vinegars.",
"pantryBody": "Herbal chocolates, sprouted seeds, apple molasses and fruit vinegars.",
"craftTitle": "Crafted on site",
"craftBody": "Natural woolen wares, carved wood, pottery, and fun, functional objects shaped from local materials by our artists-in-residence."
"craftBody": "Woolen wares, carved wood and pottery made by resident artists."
},
"notice": "Marketplace launches alongside the public opening, fall 2026.",
"ctaContact": "Ask us about a specific item"
@ -212,42 +201,42 @@
"hero": {
"kicker": "Reservations · Accommodation",
"title": "Where you'll stay",
"lede": "Rooms in the main house, cabins in the trees, and a growing constellation of exterior places to sleep."
"lede": "Rooms in the main house, cabins in the trees, and a growing constellation of exterior places to sleep. Each one is named after a creature from a mythology we love."
},
"statusOpen": "Open",
"statusComingSoon": "Coming Soon",
"statusComingSoon": "Coming soon",
"rooms": {
"title": "Rooms",
"subtitle": "Six bedrooms in the main house, all with desk and view.",
"title": "Main house",
"subtitle": "Six bedrooms, all with desk and view.",
"qilin": {
"name": "QILIN",
"summary": "Queen bed, work desk, south facing views, private bathroom, shared kitchen"
"name": "Qilin",
"summary": "Queen bed · work desk · south-facing · shared bath · shared kitchen"
},
"phoenix": {
"name": "Phoenix",
"summary": "Queen bed, work desk, south facing views, ensuite bathroom, semi-private female kitchenette"
"summary": "Queen bed · work desk · south-facing · ensuite · semi-private kitchenette"
},
"alicorn": {
"name": "ALICORN",
"summary": "Queen bed, work desk, south facing views, ensuite bathroom, private kitchenette"
"name": "Alicorn",
"summary": "Queen bed · work desk · south-facing · ensuite · private kitchenette"
},
"brownie": {
"name": "Brownie",
"summary": "Double bed, ensuite bathroom, garden views, shared kitchen"
"summary": "Double bed · garden view · ensuite · shared kitchen"
},
"golem": {
"name": "Golem",
"summary": "Double bed, work desk, ensuite bathroom, garden views, semi-private kitchen"
"summary": "Double bed · work desk · garden view · ensuite · semi-private kitchen"
},
"kelpie": {
"name": "KELPIE",
"summary": "Double bed, work desk, ensuite bathroom, garden views, semi-private female kitchenette"
"name": "Kelpie",
"summary": "Double bed · work desk · garden view · ensuite · semi-private kitchenette"
}
},
"cabins": {
"title": "Cabins",
"subtitle": "A lightweight, natural home.",
"zephyr": "The zephyr",
"subtitle": "Lightweight, natural homes among the trees.",
"zephyr": "Zephyr",
"shinook": "Shinook",
"xocomil": "Xocomil"
},
@ -255,12 +244,12 @@
"title": "Coming next",
"subtitle": "A second wave of places to stay, taking shape on the land.",
"items": [
"Dependance building — 3 bedroom apartment with a kitchen and bathroom facilities",
"Dependance building — 3 simple bedrooms with shared bathrooms",
"4 bed dorm caravan with a kitchen and outdoor facilities",
"3 natural cabins",
"2 bedroom apartment in the circus barn",
"10 glamping tents"
"A three-bedroom apartment in the dépendance, with kitchen and bathroom",
"Three simple bedrooms in the dépendance with shared bathrooms",
"A four-bed dorm caravan with kitchen and outdoor facilities",
"Three natural cabins",
"A two-bedroom apartment in the circus barn",
"Ten glamping tents"
]
},
"ctaReserve": "Request a stay",
@ -269,22 +258,22 @@
"reservations": {
"hero": {
"kicker": "Reservations · Plan Your Visit",
"title": "book your stay",
"lede": "We offer several accommodation options whether it be for a short but sweet weekend stay or a week of retreating in nature. Choose from a selection of cabins, apartments and rooms with a view, ensuite bathrooms, private kitchenettes, access to shared community meals and more!"
"title": "Come stay with us",
"lede": "A weekend visit, a week-long retreat, a small gathering, or a quiet residency — there are several ways to spend time at the château."
},
"kindsTitle": "Plan your next event with us",
"kindsTitle": "Ways to stay",
"kinds": {
"weekendTitle": "A short, sweet weekend stay",
"weekendBody": "A few days to walk the grounds, sit at the farm table, and slow down.",
"retreatTitle": "A week of retreating in nature",
"weekendTitle": "A weekend visit",
"weekendBody": "Two or three nights to walk the grounds, sit at the farm table, and slow down.",
"retreatTitle": "A week-long retreat",
"retreatBody": "Time enough to settle in — solo or with a small group — and let a rhythm form.",
"gatheringTitle": "Host an event here",
"gatheringBody": "Dreaming of putting on an artistic residency, wellness retreat or ecologically oriented workshop? Or a musician, performer or other creative soul looking for a venue to showcase your work?",
"gatheringTitle": "Small gatherings",
"gatheringBody": "We host workshops, ceremonies and intimate events that fit the spirit of the place.",
"residencyTitle": "Residencies",
"residencyBody": "We are delighted to host year-round residencies, retreats and small gatherings. See Long Stays for paths in."
"residencyBody": "Year-round residencies for artists, makers and stewards. See Long Stays for paths in."
},
"valuesTitle": "How we host",
"valuesBody": "We are delighted to host year-round residencies, retreats and small gatherings, provided they align with our values: mindfulness, collaboration, reciprocity, balance and reverence. We are advocates of opening our space up for all of the ways we can best achieve our vision of harmonizing art and ecology — be they innovative or experimental gatherings, philosophical or hands-on sustainable skill development, traditional craftsmanship or contemporary art.",
"valuesBody": "We welcome visits aligned with mindfulness, collaboration, reciprocity, balance and reverence. Drama-, drink- and drug-free. Children and quiet pets are welcome on request.",
"formTitle": "Request a stay",
"formSubtitle": "A proper booking form is on its way. In the meantime, write to us and we'll arrange dates by email.",
"formPlaceholder": "Booking form — coming soon.",
@ -295,20 +284,20 @@
"openingLabel": "Opening",
"openingValue": "Fall 2026"
},
"ctaEmail": "Contact reservations",
"ctaEmail": "Write to us",
"ctaAccommodation": "See accommodation"
},
"opportunities": {
"hero": {
"kicker": "Collaborate · Opportunities",
"title": "We're Forming our Team Now",
"lede": "Want to collaborate in a compassionate business model with folks trying our very best to be in integrity with our values? We're hosting Symposium II.0 — a three-month long gathering with some exciting opportunities to engage & to get paid, with long-term possibilities to integrate into our team, make your home here or have lasting equity while you live out a nomadic existence."
"title": "Open positions",
"lede": "We're shaping the team that will bring the next phase of Château du Faune to life. Each role can be paid, equity-based, housed on site, or a blend — let's talk."
},
"groupsTitle": "Roles open now",
"groupsSubtitle": "Applications open: January 1 March 15.",
"groupsSubtitle": "Grouped by domain. Symposium II.0 funds the first cohort.",
"groups": {
"buildingTitle": "Eco-Building",
"buildingPositions": "Construction Manager & Building Crew Leader · Eco-Building Apprentice",
"buildingPositions": "Construction Manager & Building Crew Lead · Eco-Building Apprentice",
"farmingTitle": "Farming",
"farmingPositions": "Agroecology & Farm Manager · Groundskeeper / Site Steward · Farmhand Apprentice",
"wellnessTitle": "Wellness",
@ -318,16 +307,16 @@
"developmentTitle": "Development",
"developmentPositions": "Compliance & Funding Manager · Open-Source Technology Strategist",
"rewildingTitle": "Rewilding & The Arts",
"rewildingPositions": "coming soon"
"rewildingPositions": "Roles in this stream are being defined."
},
"applyTitle": "How we hire",
"apply": {
"modelTitle": "A compassionate model",
"modelBody": "We are open, dynamic and moldable as we're forming the infrastructure that will bring this project to life and we need all the following spots filled to do so. Compensation can take the form of pay, equity, on-site housing, team integration — or some combination.",
"windowTitle": "Applications open",
"windowBody": "January 1 → March 15. Open positions outside the symposium can be filled year-round.",
"openTitle": "Not sure where your skills fit in yet?",
"openBody": "Feel free to fill out the Open Residency Application directly. We'll follow up shortly with an invitation to a call or visit."
"modelBody": "Compensation can take the form of pay, equity, on-site housing, team integration — or some combination. We aim for arrangements that work for both sides.",
"windowTitle": "Symposium application window",
"windowBody": "Symposium II.0 applications: 1 January → 15 March 2026. Open positions outside the symposium can be filled year-round.",
"openTitle": "Not sure where you fit?",
"openBody": "Send us an open residency application — describe what you do, what you're hoping to find, and we'll figure it out from there."
},
"ctaApply": "Send an application",
"ctaSymposium": "Symposium II.0 details"
@ -335,60 +324,56 @@
"longStays": {
"hero": {
"kicker": "Collaborate · Long Stays",
"title": "Live & Work Here",
"lede": "Open-call! We welcome collaborators, farmers, builders, artists and long-term residents to apply to join our project at this exciting, initial stage. See work opportunities, apprenticeships and upcoming residencies below."
"title": "Live and work here",
"lede": "Several ways to get involved for the long haul — from a few weeks of work exchange to multi-year residency rentals, depending on your craft and the season."
},
"pathsTitle": "Explore pathways to get involved",
"pathsTitle": "Ways in",
"paths": {
"exchangeTitle": "Work or volunteer here",
"exchangeBody": "Join a dynamic start-up or come to support with your time and energy. Regardless of your desired level of engagement, we offer modular packages for work exchange commitment, accommodation & meal plans because we're all unique beings and clarifying expectations is important to us.",
"exchangeTitle": "Work or volunteer exchange",
"exchangeBody": "Join an early-stage project, or come to support with your time and energy. Modular packages cover work hours, accommodation and meals.",
"rentalTitle": "Long-term residency rentals",
"rentalBody": "Long-term rentals are currently only open to folks working in relevant crafts such as gardeners, builders, ceramics artists, community designers, etc. wishing to share a lively, warm, collective environment. This is a curated, familial space and an active working farm — 'tis drama, drinking & drug free here.",
"rentalBody": "For gardeners, builders, ceramicists, community designers and kindred crafts looking for a warm, curated and family-like setting on a working farm. Drama-, drink- and drug-free.",
"partialTitle": "Partial exchange",
"partialBody": "If you wish to live here without working or volunteering or to stay here in a partial exchange, you can! It's a modular framework so rates depend on your desired involvement and comfortability level.",
"fundedTitle": "Apply for Residency",
"fundedBody": "We're actively building a program to support the arts financially through funded artists in residence as well as opening up artistic studio rentals in a variety of fields related to traditional crafts & natural materials. Check back here soon!"
"partialBody": "Long-term rentals are also available without a work commitment, with rates that scale with your level of involvement and comfort.",
"fundedTitle": "Funded artists in residence",
"fundedBody": "A funded artist programme is in development, alongside studio rentals dedicated to traditional crafts and natural materials."
},
"symposiumTeaser": {
"title": "Simply Curious?",
"body": "Public offerings opening spring 2026, stay tuned! We recommend a short guest visit to quench your curiosity — join in on an event, take a yoga class, book a short stay, or (coming spring 2027) visit our boutique farmstand and stroll our land art walk."
"title": "Looking for the flagship?",
"body": "Symposium II.0 is our fully funded three-month incubator — a focused, intensive way to enter the project as a core team member."
},
"ctaSymposium": "Discover Symposium II.0",
"ctaContact": "Apply Here"
"ctaContact": "Talk to us first"
},
"symposium": {
"hero": {
"kicker": "Symposium II.0",
"title": "an incubator to design & develop an ecological arts center",
"lede": "If the vision, values, and mission articulated throughout this site resonate with you, this is an invitation to take part directly in their realization. We are assembling a founding team to guide the project through its initial formation, with clear pathways for long-term collaboration and the possibility of shared equity in what is built together.",
"dates": "Next Symposium: April 15th 2026 — July 15th 2026"
"title": "An incubator for an ecological arts center",
"lede": "A three-month curated programme bringing a small team together to design, build and put into practice the next phase of Château du Faune.",
"dates": "15 April → 15 July 2026"
},
"overview": {
"title": "Theme: Embodied Infrastructure",
"body": "How we move through space, work, rest, nourish, and gather in support of collective wellbeing, joy and resilience. Symposium II.0 functions as a curated incubator dedicated to designing and developing the conceptual, ecological, social, and operational foundations of the center. Over the course of three months, seven fully funded positions are offered within the core team, forming a crew of 10 to 15 folks onsite with diverse skills engaged in collective inquiry and practical experimentation. Will it be you?"
},
"purpose": {
"title": "Purpose",
"body": "To establish the conceptual and practical groundwork of the ecological arts center. This includes constructing key infrastructure, initiating food production, creating spaces to gather, and developing the organizational structures required to operate as a public facing project. The symposium is both a think-tank and a working body: ideas are developed through balancing observation with action."
"title": "Overview",
"body": "Seven fully funded positions inside a core team of ten to fifteen, engaged in collective inquiry and practical experimentation. The emphasis is on action and material realisation — building infrastructure, growing food, shaping gathering spaces, and laying the organisational ground for what comes next."
},
"includedTitle": "What's included",
"included": {
"fundedTitle": "Funded position",
"fundedBody": "All seven positions cover the participant's time for the duration of the residency.",
"stayTitle": "Comfortable living and working environment",
"stayTitle": "Place to live and work",
"stayBody": "A comfortable room on site, shared kitchen, and dedicated work space.",
"foodTitle": "Healthy, nourishing food",
"foodTitle": "Healthy meals",
"foodBody": "Nourishing food prepared for the team and the wider community.",
"careTitle": "Self-care as foundational",
"careBody": "Rest, sauna, yoga and quiet time understood as foundational to sustained creativity and effective work — not optional extras."
"careTitle": "Self-care support",
"careBody": "Rest, sauna, yoga and quiet time built into the rhythm of the week — not optional extras."
},
"eligibility": {
"title": "Who we welcome",
"body": "We welcome artists, designers, builders, growers, organizers, and thinkers who want to take part in the birthing of an entrepreneurial endeavor, to apply now! Roles within the symposium are designed to vary in focus. Some will concentrate on organization, coordination, and backend systems, while others will engage directly in construction, cultivation, and site development. Collaboration across teams will remain central."
"title": "Who we're looking for",
"body": "Artists, designers, builders, growers, organisers and thinkers ready to take part in building an entrepreneurial ecological arts venture from the ground up. No credentials required."
},
"applyTitle": "Want to Apply?",
"applyTitle": "How to apply",
"apply": {
"stepOneTitle": "1 · Read the vision",
"stepOneTitle": "1 · Read the concept",
"stepOneBody": "Spend a moment with the Art & Ecology page and Vision & Values.",
"stepTwoTitle": "2 · Find the right role",
"stepTwoBody": "Browse the open positions and pick the one that matches your craft.",
@ -401,9 +386,9 @@
"events": {
"page": {
"kicker": "What's On",
"title": "All Events & Programs",
"lede": "Stay tuned for the inauguration of our public offerings in fall 2026! You are humbly invited to attend our ongoing yoga classes, cafe & co-working, bonfire jams, friendly afternoon picnics, evening sauna soirees and more!",
"calendarNote": "Now launching a community-wide calendar of events app. Check out the beta app at oyez.ariege.io.",
"title": "Events & programs",
"lede": "Yoga, café and co-working, bonfire jams, afternoon picnics, sauna soirees and more. Public programming inaugurates in fall 2026.",
"calendarNote": "A community calendar app for the wider Ariège is in development at bouge.ariege.io — launching summer 2026.",
"noteHeading": "Note"
},
"saunaSoiree": {
@ -419,7 +404,7 @@
"description": "A short residency oriented around painting, drawing and craft, in the slow light of early spring."
},
"picnicJam": {
"title": "Picnic Potluck & Jam ~ Salad Buffet",
"title": "Picnic Potluck & Jam Salad Buffet",
"date": "March 22, 2026",
"location": "Mad Hatter's Tea Party Table",
"description": "A spring-equinox potluck and music jam — bring a salad, a tune, or both."

View file

@ -137,15 +137,14 @@
}
},
"home": {
"heroStrip": "granja ✧ arte de la tierra ✧ residencia ✧ espacio de eventos",
"welcome": {
"title": "Bienvenida al Château du Faune",
"body": "Un lugar para crear, crecer y rejuvenecer, a los pies de los Pirineos. Una residencia de artistas y un santuario de slow living para artesanos, agroecólogos y amantes de la naturaleza que buscan un hogar en el camino.",
"cta": "Saber más sobre el Centro para el arte y la ecología"
},
"oyez": {
"bouge": {
"kicker": "En desarrollo en el château",
"title": "oyez.ariege.io",
"title": "bouge.ariege.io",
"subtitle": "Lanzamiento en verano de 2026 · Prueba la demo",
"body": "Una aplicación de calendario de eventos nativa, comunitaria y descentralizada",
"cta": "Saber más"
@ -389,7 +388,7 @@
"kicker": "En cartelera",
"title": "Eventos y programas",
"lede": "Yoga, café y coworking, jams junto al fuego, picnics de tarde, veladas de sauna y más. La programación pública inaugural arranca en otoño de 2026.",
"calendarNote": "Una aplicación de calendario comunitario para todo el Ariège está en desarrollo en oyez.ariege.io — lanzamiento en verano de 2026.",
"calendarNote": "Una aplicación de calendario comunitario para todo el Ariège está en desarrollo en bouge.ariege.io — lanzamiento en verano de 2026.",
"noteHeading": "Nota"
},
"saunaSoiree": {

View file

@ -5,7 +5,7 @@
"common": {
"tagline": "Centre pour l'art et l'écologie",
"siteName": "Château du Faune",
"comingSoon": "Bientôt",
"comingSoon": "Bientôt disponible.",
"learnMore": "En savoir plus",
"seeAll": "Voir tout",
"contactUs": "Nous contacter",
@ -29,7 +29,7 @@
"menu": "Menu"
},
"footer": {
"tagline": "fermette ✧ art de la terre ✧ résidence ✧ lieu d'événements",
"tagline": "Une fermette, une résidence d'artistes et un refuge à la croisée de l'art et de l'écologie, au pied des Pyrénées ariégeoises.",
"contact": "Contact",
"social": "Suivez-nous",
"address": "456 Grand Rue de Bellissen, Château de Bénac, 09000 France",
@ -37,41 +37,35 @@
},
"concept": {
"hero": {
"kicker": "Centre pour l'art et l'écologie",
"title": "Concept, mission et motivations profondes",
"lede": "Ouverture à l'automne 2026 : nous vous accueillons humblement à notre prochaine journée communautaire ouverte au public ou à un cours de yoga et tisane."
"kicker": "Concept",
"title": "Art & Écologie",
"lede": "Nous prenons soin de la terre et des ressources partagées par des pratiques holistiques et régénératives, accordées aux rythmes naturels et au soutien de la création artistique."
},
"mission": {
"title": "Notre mission",
"body": "Notre mission est de prendre soin de la terre et des ressources partagées par des pratiques holistiques, régénératives et non-extractives, accordées aux rythmes naturels et au soutien de l'expression artistique, tout en cultivant une culture de collaboration, d'intégrité et de résilience sur la durée.",
"motivationTitle": "Notre motivation",
"motivationBody": "La motivation derrière ce que nous faisons est de vivre et travailler en mémoire de la manière dont la culture humaine peut s'enraciner dans l'écologie — où la créativité émerge organiquement de la connexion à la nature, d'une terre bien soignée, de systèmes nerveux apaisés, et d'une culture qui valorise la présence plutôt que le rendement. Par l'adoption d'une pratique et d'une philosophie de « slow living », la productivité se mesure à la continuité, à la santé et à la cohérence dans le temps plutôt qu'au gain financier maximal. Le cœur de notre pratique consiste à aligner nos objectifs de projet sur nos valeurs à travers le travail que nous accomplissons, et à trouver de la joie dans ce travail d'une manière durable. Nous l'incarnons à travers nos projets fondateurs : les jardins de sculptures d'arts vivants et comestibles, la fermette-boutique de produits artisanaux confectionnés lentement, l'adoption d'une agriculture lente et l'accueil de résidences, de cours et de rassemblements."
},
"quote": {
"text": "C'est le mariage de l'âme avec la Nature qui rend l'intellect fécond et fait naître l'imagination.",
"attribution": "Henry David Thoreau"
"title": "Un centre pour l'art et l'écologie",
"body": "Ici, la productivité se mesure à la santé et à la continuité plutôt qu'au gain financier. Nous croissons lentement, pour que ce qui s'enracine puisse durer."
},
"landArt": {
"title": "Art de la terre & résidences",
"body": "Parcourez un sentier sans cesse changeant, bordé de baies comestibles, où chaque virage révèle des œuvres façonnées par le vent, le temps et les mains humaines, en collaboration avec la terre. Ce jardin de sculptures est une ode à la capacité de la nature à connecter, inspirer et réveiller un savoir ancien au creux de nos os. Chaque pièce émerge d'une relation réciproque avec la terre — récoltée, cultivée, et finalement rendue — invitant les visiteur·euses à ralentir, observer, goûter et ressentir leur place au sein du monde vivant. Nous accueillons des artistes en résidence qui consacrent leur travail à l'écoute des matériaux élémentaires : ici, l'art ne s'impose pas au paysage, il en émerge."
"body": "Un jardin de sculptures traversé de baies comestibles, où les résidences naissent de l'écoute des matériaux. L'art ne s'impose pas au paysage — il en émerge."
},
"farmstand": {
"title": "Notre fermette & boutique",
"body": "La fermette-boutique propose ce qui pousse au-delà de la récolte. Tout ici vient de la terre, ou de celles et ceux qui vivent en lien étroit avec elle. Aux côtés des légumes frais et des extras de saison, vous trouverez des produits transformés faits avec amour : chocolats infusés aux plantes, graines de courge germées, mélasse de pommes, vinaigres de fruits et autres préparations maison. Vous y trouverez aussi des pièces artisanales réalisées par nos artistes en résidence : lainages naturels, bois sculpté, poterie, et objets fonctionnels et ludiques façonnés à partir de matériaux locaux. Chaque pièce porte le caractère de la terre et du temps qu'elle a demandé, prolongeant la vie de la récolte sous des formes pensées pour inspirer, nourrir et réjouir."
"title": "Fermette & boutique",
"body": "Légumes frais, chocolats aux plantes, graines germées, mélasse de pommes et vinaigres de fruits, aux côtés de lainages, de bois sculpté et de poteries des artistes en résidence."
},
"slowFarming": {
"title": "Agriculture lente",
"body": "L'agriculture lente reformule l'efficacité, en l'éloignant du rendement à court terme pour la diriger vers la cohérence du système entier. Elle nous demande de ralentir dans l'instant présent, de témoigner de la beauté élémentaire qui nous entoure et de contempler l'intelligence innée du monde naturel. En mettant en pratique l'écologie holistique, le non-extractivisme et la réciprocité avec la nature, nous croyons que la productivité émerge comme un sous-produit, et non comme un but.",
"body": "Trois piliers tiennent le champ ensemble.",
"pillarOneTitle": "Écologie holistique",
"pillarOneBody": "L'écologie holistique en design de systèmes entiers, c'est comprendre la ferme comme un champ vivant de relations — biote du sol, plantes, animaux, humains, climat, temps — et non comme une simple unité de production. Chaque pièce interagit et a un rôle à jouer dans l'ensemble du puzzle. La pensée holistique est avant tout un design réfléchi : nous priorisons la création d'environnements harmonieux et agréables à habiter, en faisant des ajustements attentifs pour restaurer la diversité écologique, la cohérence esthétique et l'équilibre naturel.",
"pillarTwoTitle": "Méthodes non-extractives",
"pillarTwoBody": "Les méthodes d'agriculture non-extractives signifient que rien n'est pris sans régénération. La fertilité du sol se construit dans le temps. L'eau est ralentie et retenue. Les animaux font circuler les nutriments au lieu de les exporter. Notre travail est mesuré, pas dépensé. Le système s'enrichit plutôt que de s'épuiser, parce que les intrants n'ont pas à être constamment réapprovisionnés. Les décisions se prennent en sentant les motifs plutôt qu'en forçant des objectifs.",
"pillarOneBody": "La ferme lue comme un champ vivant de relations, et non comme une somme de rendements isolés.",
"pillarTwoTitle": "Non-extractivisme",
"pillarTwoBody": "Rien n'est prélevé sans qu'autre chose ne soit restitué à sa place.",
"pillarThreeTitle": "Réciprocité",
"pillarThreeBody": "La réciprocité est une forme de co-régulation avec la nature, dans un échange mutuel. Le temps passé avec le sol, les plantes, les animaux, le soleil, le vent et la météo accorde le système nerveux humain aux rythmes naturels. Les mains dans la terre, les tâches manuelles répétitives, l'air frais, le soin des animaux, l'exposition microbienne, la lumière du jour et le rythme saisonnier abaissent tous le stress chronique et restaurent la régulation de base. La terre y gagne parce qu'on la rencontre avec soin, et l'humain y gagne parce que le corps se souvient comment être dans un système vivant."
"pillarThreeBody": "Co-régulation avec la nature, dans un échange mutuel."
},
"events": {
"title": "Événements en nature",
"body": "La culture que nous cultivons ici est faite pour être partagée au-delà de nos murs, comme source de joie et de lien. Nous célébrons la vie, la nature et les arts à travers des marchés, de la musique vivante, de la danse folklorique, des expositions, des rassemblements et plus encore. Chaque événement, atelier et résidence que nous accueillons est intrinsèquement lié à l'art et à l'écologie et fait partie de notre sanctuaire de slow living."
"body": "Des célébrations communautaires qui tissent art et écologie — marchés, musique vivante, danse folklorique et expositions saisonnières."
}
},
"gallery": {
@ -79,65 +73,61 @@
"title": "Galerie d'art de la terre",
"lede": "Une archive vivante d'œuvres nées du lieu — sculpture, mosaïque, objets trouvés et petites offrandes faites sur place par les résident·es et les visiteur·euses.",
"captions": {
"landArt": "Art de la terre",
"buddhaHand": "Main de Bouddha dorée",
"fountain": "Fontaine de jardin en pierre",
"mosaic": "Pierres mosaïquées décoratives",
"petStatue": "Statue d'animal",
"miniBuddha": "Statue miniature de Bouddha"
"landArt": "Sculpture dans le jardin",
"buddhaHand": "Main dorée",
"fountain": "Fontaine de pierre",
"mosaic": "Mosaïque de pierres",
"petStatue": "Figure de jardin",
"miniBuddha": "Petit autel"
}
},
"vision": {
"hero": {
"kicker": "À propos",
"title": "Notre vision & nos valeurs",
"lede": "Un lieu pour pratiquer le slow living, renouer avec la nature et avec nos natures profondes, et laisser fleurir des systèmes régénératifs, la création et l'expansion de soi."
},
"intro": {
"title": "Comment nous sommes arrivé·es ici",
"body": "Nous avons cherché loin et largement pendant plusieurs années, à la recherche d'un endroit que nous pourrions appeler maison, avec pour critères l'eau de source, la proximité des villes, des trains et des aéroports, des pâturages pour les chevaux, et des habitations pour nous, humains. Nous avons atterri en Ariège et avons trouvé ce que nous cherchions, nous surprenant nous-mêmes au passage. Au printemps 2025, nous avons acquis ce petit coin de paradis pour en prendre soin et le guider vers un havre florissant pour les âmes créatives. Nous avons commencé à trois fondateur·trices et un chien dévoué, mais la vision est plus grande que nous. Nous souhaitons tisser un collectif synergique, fondé sur un modèle économique résilient et reproductible, où l'art et l'agriculture, le travail et le repos, la solitude et la solidarité peuvent coexister en harmonie. Nous sentons que nous avons trouvé un bon endroit pour essayer cela."
"kicker": "Vision & Valeurs",
"title": "Une pratique lente, enracinée ici",
"lede": "Une fermette, une résidence et un refuge à la croisée de l'art et de l'écologie — fondés au printemps 2025 sur onze hectares au Château de Bénac, en Ariège."
},
"mission": {
"title": "La vision",
"body": "Le Château du Faune est une fermette, une résidence et un refuge dédiés à la croisée de l'art et de l'écologie. Sur 11 hectares de prairies vallonnées et de bois, vous trouverez un lieu où artistes écologiques, esprits curieux et cultivateur·trices en pleine conscience peuvent se rassembler pour donner vie à une vision partagée d'une vie écologique et intentionnelle. Nous représentons un ensemble multiculturel, multi-espèces et divers d'âmes, et notre réussite collective s'enracine dans l'harmonisation des dons singuliers de chacun·e au sein de l'ensemble du système."
"title": "Mission",
"body": "Un lieu pour pratiquer le slow living, renouer avec la nature et avec nos natures profondes, et laisser fleurir des systèmes régénératifs, la création et l'expansion de soi."
},
"philosophyTitle": "Nos valeurs",
"philosophySubtitle": "Cinq qualités directrices auxquelles le travail revient.",
"philosophyTitle": "Cinq qualités directrices",
"philosophySubtitle": "Le sol intérieur à partir duquel nous travaillons.",
"philosophy": {
"mindfulnessTitle": "Pleine présence",
"mindfulnessBody": "Comme examen de soi et calme intérieur — la pleine présence guide notre engagement. En prenant soin de notre état intérieur, nous apportons une présence ancrée au champ partagé ; en recevant un soin authentique des autres, nous sommes en retour rassuré·es.",
"mindfulnessBody": "Calme intérieur et examen de soi comme base d'un engagement authentique.",
"collaborationTitle": "Collaboration",
"collaborationBody": "Nous respirons comme un·e et avançons à plusieurs. Nous restons interconnecté·es sans nous dissoudre dans le collectif ; personne n'existe en dehors du rythme du tout, ni uniquement pour soi-même. Notre force collective s'enracine dans l'harmonisation des dons singuliers de chacun·e.",
"collaborationBody": "Des individus distincts, harmonisés — une force collective née des dons particuliers.",
"reciprocityTitle": "Réciprocité",
"reciprocityBody": "La réciprocité comme résonance morale et relationnelle. Chaque individu reçoit avec empathie et donne avec bienveillance ; la durabilité naît non du don égal, mais d'un rééquilibrage continu guidé par la pleine présence et la bonne volonté. La réciprocité dans nos relations permet à notre collectif de s'auto-réguler.",
"reciprocityBody": "Rééquilibrage continu par l'empathie et la bienveillance ; auto-régulation comme acte partagé.",
"balanceTitle": "Équilibre",
"balanceBody": "L'harmonie naît de l'échange continuel entre le yin et le yang — les désajustements se résolvent par la pleine présence et le mouvement. L'équilibre se restaure par l'examen de soi (écoute intérieure) et la réactivité (ajustement relationnel actif) envers les autres, pour qu'aucun extrême ne prenne le dessus.",
"balanceBody": "Yin et yang en échange éthique ; un mouvement qui résout les désajustements.",
"reverenceTitle": "Révérence",
"reverenceBody": "La gratitude est une responsabilité qui nous ancre dans le règne naturel. Nous nous souvenons d'exprimer notre reconnaissance envers ce qui nous nourrit en esprit et en âme — qu'il s'agisse de la nourriture que nous faisons pousser, de nos êtres chers, des vents du changement, etc. Nous prenons soin de ce que nous touchons."
"reverenceBody": "La gratitude comme responsabilité qui nous ancre dans le règne naturel."
},
"pillarsTitle": "Les 7 piliers de notre collectif",
"pillarsSubtitle": "La pratique extérieure à travers laquelle ce travail prend forme.",
"pillarsTitle": "Sept piliers opérationnels",
"pillarsSubtitle": "La pratique extérieure dans laquelle ce travail prend forme.",
"pillars": {
"buildingTitle": "Éco-construction",
"buildingBody": "Pour nous, l'éco-construction signifie créer et entretenir des espaces qui sont fonctionnels, sûrs et durables, tout en minimisant l'impact sur la terre. Nous privilégions les matériaux recyclés et locaux, un design pratique, et des structures qui soutiennent la vie quotidienne et le travail du projet.",
"buildingBody": "Des bâtiments sûrs et fonctionnels, en matériaux locaux et recyclés, avec un impact minimal sur la terre.",
"farmingTitle": "Agriculture lente",
"farmingBody": "L'agriculture lente, c'est notre façon de cultiver nourriture, plantes et œufs d'une manière qui soutient les sols, les écosystèmes et les personnes sur la durée. C'est une question de planification, de cadence et de travail avec les cycles naturels, pour que la productivité émerge comme un sous-produit de systèmes sains et régénératifs.",
"farmingBody": "Nourriture, plantes et œufs cultivés au rythme des cycles naturels.",
"wellnessTitle": "Bien-être",
"wellnessBody": "Ce pilier garantit que chacun·e sur place est soutenu·e par une alimentation nourrissante, du repos et des routines qui aident à maintenir l'énergie, la concentration et le bien-être. Il est intégré à la vie quotidienne, de sorte que prendre soin du corps et du système nerveux se fait en parallèle du travail et de la création.",
"wellnessBody": "Nutrition, repos et soutien du système nerveux, tissés ensemble plutôt que traités comme un service.",
"rewildingTitle": "Réensauvagement",
"rewildingBody": "Le réensauvagement, pour nous, c'est reconnecter les personnes à la nature à travers des savoir-faire pratiques et des expériences immersives. Il s'agit d'autonomie, de respect de la terre, et de comment naviguer et se mouvoir dans les environnements naturels en toute sécurité et avec habileté.",
"rewildingBody": "Reconnexion au vivant par des savoir-faire concrets et du temps dehors.",
"communityTitle": "Communauté",
"communityBody": "La communauté, c'est rassembler les gens pour célébrer la vie et l'abondance. Cela inclut l'accueil d'événements, la coordination d'ateliers et l'organisation de rassemblements comme des pique-niques, des jams et des soirées sauna.",
"communityBody": "Événements, ateliers et rassemblements culturels qui célèbrent l'abondance.",
"artsTitle": "Les arts",
"artsBody": "L'art est tissé dans tout ce que nous faisons. Ce pilier couvre les résidences, les expositions, les ateliers et les matériaux qui reflètent la terre, la communauté et la créativité du projet. Le travail artistique enrichit la qualité esthétique du lieu et inspire toutes les personnes impliquées.",
"artsBody": "Résidences, expositions et création qui reflètent le lieu et ses habitant·es.",
"developmentTitle": "Développement",
"developmentBody": "Le développement renvoie à la croissance au niveau individuel comme à celui des sphères physiques et virtuelles. C'est un processus continu de recherche, d'ouverture d'esprit et de conception des systèmes, des flux de travail et des protocoles qui permettent au projet de tourner. Nous développons et utilisons des outils slow tech et open source, dont une application d'événements à l'échelle régionale, des structures financières et d'autres cadres opérationnels qui permettent à l'équipe de travailler de manière efficace, transparente et durable."
"developmentBody": "Croissance continue par la slow tech et les outils open source."
},
"teamTitle": "Notre équipe",
"teamTitle": "Qui prend soin du lieu",
"team": {
"patrickName": "Patrick M.",
"patrickRole": "Architecte des systèmes",
"patrickBody": "En charge de l'aspect business du projet. Infrastructure technique et systèmes d'organisation.",
"patrickBody": "Infrastructure technique et systèmes d'organisation.",
"cocoName": "Coco L.",
"cocoRole": "Directrice créative",
"cocoBody": "Design régénératif et entrepreneuriat communautaire.",
@ -147,48 +137,47 @@
}
},
"home": {
"heroStrip": "fermette ✧ art de la terre ✧ résidence ✧ lieu d'événements",
"welcome": {
"title": "Bienvenue au Château du Faune",
"body": "Un lieu pour créer, croître et se ressourcer, avec une humble révérence et une réciprocité envers notre monde naturel. Niché au pied des Pyrénées, dans le sud-ouest de la France, le Château du Faune est une résidence d'artistes et un sanctuaire de slow living pour artisan·es, agroécologues et amoureux·euses de la nature en quête d'un foyer sur le chemin.",
"body": "Un lieu pour créer, croître et se ressourcer, au pied des Pyrénées. Une résidence d'artistes et un sanctuaire de slow living pour artisan·es, agroécologues et amoureux·euses de la nature en quête d'un foyer sur le chemin.",
"cta": "En savoir plus sur le Centre pour l'art et l'écologie"
},
"oyez": {
"kicker": "en cours de développement au château",
"title": "oyez.ariege.io",
"subtitle": "lancement été 2026 · tester la démo ici",
"bouge": {
"kicker": "En cours de développement au château",
"title": "bouge.ariege.io",
"subtitle": "Lancement été 2026 · Essayer la démo",
"body": "Une application de calendrier d'événements native, communautaire et décentralisée",
"cta": "En savoir plus"
},
"pathwaysIntro": "voici quelques chemins possibles…",
"pathwaysIntro": "Voici quelques chemins possibles…",
"pathways": {
"title": "Préparer votre visite",
"title": "Trouvez votre chemin",
"subtitle": "Quatre façons de rencontrer le lieu.",
"dayVisit": {
"title": "Juste de passage ?",
"body": "Venez coworker, faites vos courses à notre fermette-boutique en bord de route, ou parcourez notre galerie d'art de la terre — découvrez notre centre."
"title": "Passer une journée",
"body": "Visitez la fermette et la galerie d'art de la terre, pique-niquez dans le jardin de sculptures."
},
"activity": {
"title": "Rejoindre une activité",
"body": "Participez à une journée communautaire ou réservez une excursion avec nous — voir l'agenda."
"body": "Ateliers, yoga, soirées sauna, concerts en plein air et célébrations saisonnières."
},
"retreat": {
"title": "Venir se reposer & se retirer",
"body": "Réservez une chambre pour un court séjour ou organisez votre retraite avec nous."
"title": "Faire une retraite",
"body": "Courts séjours pour artistes, écrivain·es, retraitant·es et petits rassemblements."
},
"residency": {
"title": "Rester comme résident·e",
"body": "Venez comme artiste, travailleur·euse ou bénévole — voir les voies longue durée."
"title": "Candidater à une résidence",
"body": "Résidences longue durée pour artistes, bâtisseur·euses, maraîcher·ères et gardien·nes du lieu."
}
},
"events": {
"title": "Prochaines résidences & journées communautaires",
"title": "À venir prochainement",
"subtitle": "Un aperçu de la saison qui arrive. La programmation inaugurale ouvre à l'automne 2026.",
"seeAll": "Voir tous les événements"
},
"contact": {
"title": "Nous rendre visite en Ariège",
"body": "456 Grand Rue de Bellissen, Château de Bénac, 09000 France.",
"body": "456 Grand Rue de Bellissen, Château de Bénac, 09000 France. Écrivez-nous, envoyez un signal de fumée, ou suivez-nous en ligne.",
"cta": "Nous écrire"
}
},
@ -201,9 +190,9 @@
"freshTitle": "Du champ",
"freshBody": "Légumes, plantes aromatiques et œufs de saison de la fermette.",
"pantryTitle": "Garde-manger",
"pantryBody": "Chocolats infusés aux plantes, graines de courge germées, mélasse de pommes et vinaigres de fruits.",
"pantryBody": "Chocolats aux plantes, graines germées, mélasse de pommes et vinaigres de fruits.",
"craftTitle": "Fabriqué sur place",
"craftBody": "Lainages naturels, bois sculpté, poteries et objets fonctionnels et ludiques façonnés à partir de matériaux locaux par nos artistes en résidence."
"craftBody": "Lainages, bois sculpté et poteries des artistes en résidence."
},
"notice": "La boutique ouvrira en même temps que le lieu, à l'automne 2026.",
"ctaContact": "Nous écrire pour un produit précis"
@ -212,42 +201,42 @@
"hero": {
"kicker": "Réservations · Hébergement",
"title": "Où dormir",
"lede": "Des chambres dans la maison principale, des cabanes dans les arbres, et une constellation grandissante de lieux de couchage extérieurs."
"lede": "Des chambres dans la maison principale, des cabanes dans les arbres, et une constellation grandissante de lieux de couchage extérieurs. Chacun porte le nom d'une créature de mythologies qui nous touchent."
},
"statusOpen": "Disponible",
"statusComingSoon": "Bientôt",
"rooms": {
"title": "Chambres",
"subtitle": "Six chambres dans la maison principale, toutes avec bureau et vue.",
"title": "Maison principale",
"subtitle": "Six chambres, toutes avec bureau et vue.",
"qilin": {
"name": "QILIN",
"summary": "Lit queen, bureau, vue plein sud, salle de bain privative, cuisine partagée"
"name": "Qilin",
"summary": "Lit queen · bureau · plein sud · salle de bain partagée · cuisine partagée"
},
"phoenix": {
"name": "Phoenix",
"summary": "Lit queen, bureau, vue plein sud, salle de bain attenante, kitchenette semi-privée (féminine)"
"summary": "Lit queen · bureau · plein sud · salle de bain privative · kitchenette semi-privée"
},
"alicorn": {
"name": "ALICORN",
"summary": "Lit queen, bureau, vue plein sud, salle de bain attenante, kitchenette privée"
"name": "Alicorn",
"summary": "Lit queen · bureau · plein sud · salle de bain privative · kitchenette privée"
},
"brownie": {
"name": "Brownie",
"summary": "Lit double, salle de bain attenante, vue jardin, cuisine partagée"
"summary": "Lit double · vue jardin · salle de bain privative · cuisine partagée"
},
"golem": {
"name": "Golem",
"summary": "Lit double, bureau, salle de bain attenante, vue jardin, cuisine semi-privée"
"summary": "Lit double · bureau · vue jardin · salle de bain privative · cuisine semi-privée"
},
"kelpie": {
"name": "KELPIE",
"summary": "Lit double, bureau, salle de bain attenante, vue jardin, kitchenette semi-privée (féminine)"
"name": "Kelpie",
"summary": "Lit double · bureau · vue jardin · salle de bain privative · kitchenette semi-privée"
}
},
"cabins": {
"title": "Cabanes",
"subtitle": "Un foyer léger et naturel.",
"zephyr": "Le zephyr",
"subtitle": "Des refuges légers, en matériaux naturels, parmi les arbres.",
"zephyr": "Zephyr",
"shinook": "Shinook",
"xocomil": "Xocomil"
},
@ -255,12 +244,12 @@
"title": "Bientôt",
"subtitle": "Une seconde vague de couchages, qui prend forme sur le terrain.",
"items": [
"Dépendance — appartement trois chambres avec cuisine et salle de bain",
"Dépendance — trois chambres simples avec salles de bain partagées",
"Caravane-dortoir 4 couchages avec cuisine et sanitaires extérieurs",
"3 cabanes naturelles",
"Appartement deux chambres dans la grange-cirque",
"10 tentes de glamping"
"Un appartement trois chambres dans la dépendance, avec cuisine et salle de bain",
"Trois chambres simples dans la dépendance avec salles de bain partagées",
"Une caravane-dortoir quatre couchages avec cuisine et sanitaires extérieurs",
"Trois cabanes naturelles",
"Un appartement deux chambres dans la grange-cirque",
"Dix tentes de glamping"
]
},
"ctaReserve": "Demander un séjour",
@ -269,22 +258,22 @@
"reservations": {
"hero": {
"kicker": "Réservations · Préparer votre visite",
"title": "réserver votre séjour",
"lede": "Nous offrons plusieurs options d'hébergement, qu'il s'agisse d'un weekend court et doux ou d'une semaine de retraite en nature. Choisissez parmi une sélection de cabanes, appartements et chambres avec vue, salles de bain attenantes, kitchenettes privées, accès aux repas communautaires partagés et plus encore !"
"title": "Venir séjourner",
"lede": "Un weekend, une semaine de retraite, un petit rassemblement ou une résidence silencieuse — plusieurs façons de passer du temps au château."
},
"kindsTitle": "Organisez votre prochain événement avec nous",
"kindsTitle": "Modes de séjour",
"kinds": {
"weekendTitle": "Un weekend court et doux",
"weekendBody": "Quelques jours pour parcourir les terres, vous attabler à la fermette et ralentir.",
"retreatTitle": "Une semaine de retraite en nature",
"retreatBody": "Assez de temps pour vous poser — seul·e ou en petit groupe — et laisser un rythme se former.",
"gatheringTitle": "Accueillir un événement ici",
"gatheringBody": "Vous rêvez d'organiser une résidence artistique, une retraite bien-être ou un atelier d'écologie ? Ou êtes-vous musicien·ne, performeur·euse ou autre âme créative cherchant un lieu pour partager votre travail ?",
"weekendTitle": "Un weekend",
"weekendBody": "Deux ou trois nuits pour parcourir les terres, s'asseoir à la table de la ferme, et ralentir.",
"retreatTitle": "Une semaine de retraite",
"retreatBody": "Assez de temps pour se poser — seul·e ou en petit groupe — et laisser un rythme se former.",
"gatheringTitle": "Petits rassemblements",
"gatheringBody": "Nous accueillons des ateliers, des cérémonies et des événements intimes en accord avec l'esprit du lieu.",
"residencyTitle": "Résidences",
"residencyBody": "Nous accueillons toute l'année des résidences, retraites et petits rassemblements. Voir Séjours longue durée pour les voies d'entrée."
"residencyBody": "Résidences toute l'année pour artistes, artisan·es et gardien·nes. Voir Séjours longue durée pour les voies d'entrée."
},
"valuesTitle": "Notre manière d'accueillir",
"valuesBody": "Nous accueillons avec plaisir toute l'année des résidences, retraites et petits rassemblements, à condition qu'ils s'alignent sur nos valeurs : pleine présence, collaboration, réciprocité, équilibre et révérence. Nous sommes partisan·es d'ouvrir notre espace à toutes les manières de mieux réaliser notre vision d'harmonisation de l'art et de l'écologie — qu'il s'agisse de rassemblements innovants ou expérimentaux, de développement de savoir-faire durables philosophique ou concret, d'artisanat traditionnel ou d'art contemporain.",
"valuesBody": "Nous accueillons les séjours alignés sur la pleine présence, la collaboration, la réciprocité, l'équilibre et la révérence. Sans drama, sans alcool, sans drogue. Enfants et animaux calmes bienvenus sur demande.",
"formTitle": "Demander un séjour",
"formSubtitle": "Un véritable formulaire de réservation arrive bientôt. En attendant, écrivez-nous et nous fixerons les dates par mail.",
"formPlaceholder": "Formulaire de réservation — bientôt disponible.",
@ -295,17 +284,17 @@
"openingLabel": "Ouverture",
"openingValue": "Automne 2026"
},
"ctaEmail": "Contacter les réservations",
"ctaEmail": "Nous écrire",
"ctaAccommodation": "Voir l'hébergement"
},
"opportunities": {
"hero": {
"kicker": "Collaborer · Opportunités",
"title": "Nous formons notre équipe en ce moment",
"lede": "Envie de collaborer dans un modèle économique bienveillant avec des personnes qui font de leur mieux pour être en intégrité avec leurs valeurs ? Nous organisons le Symposium II.0 — un rassemblement de trois mois avec des opportunités passionnantes pour s'engager et être rémunéré·e, avec des possibilités à long terme d'intégrer notre équipe, d'y faire votre foyer ou d'y avoir une part d'équité durable."
"title": "Postes ouverts",
"lede": "Nous formons l'équipe qui va donner vie à la prochaine étape du Château du Faune. Chaque poste peut être rémunéré, en équité, avec logement sur place, ou un mélange — discutons-en."
},
"groupsTitle": "Rôles ouverts en ce moment",
"groupsSubtitle": "Candidatures ouvertes : 1ᵉʳ janvier 15 mars.",
"groupsSubtitle": "Regroupés par domaine. Le Symposium II.0 finance la première cohorte.",
"groups": {
"buildingTitle": "Éco-construction",
"buildingPositions": "Responsable construction & chef·fe d'équipe · Apprenti·e en éco-construction",
@ -317,17 +306,17 @@
"communityPositions": "Coordinateur·trice relations publiques",
"developmentTitle": "Développement",
"developmentPositions": "Responsable conformité & financement · Stratège open source",
"rewildingTitle": "Réensauvagement & les arts",
"rewildingPositions": "bientôt"
"rewildingTitle": "Réensauvagement & arts",
"rewildingPositions": "Les rôles de ce volet sont en cours de définition."
},
"applyTitle": "Notre manière de recruter",
"apply": {
"modelTitle": "Un modèle bienveillant",
"modelBody": "Nous sommes ouvert·es, dynamiques et adaptables, car nous formons l'infrastructure qui donnera vie à ce projet et il nous faut tous les postes pourvus. La rémunération peut prendre la forme d'un salaire, d'équité, d'un logement sur place, d'une intégration à l'équipe — ou d'une combinaison.",
"windowTitle": "Fenêtre de candidature",
"windowBody": "1ᵉʳ janvier → 15 mars. Les postes hors symposium peuvent être pourvus toute l'année.",
"openTitle": "Pas encore sûr·e d'où vous placer ?",
"openBody": "N'hésitez pas à remplir directement la candidature de résidence libre. Nous reviendrons vite vers vous pour un appel ou une visite."
"modelBody": "La rémunération peut prendre la forme d'un salaire, d'équité, d'un logement sur place, d'une intégration à l'équipe — ou d'une combinaison. Nous cherchons des arrangements justes pour chacune des parties.",
"windowTitle": "Fenêtre de candidature au Symposium",
"windowBody": "Symposium II.0 : candidatures du 1ᵉʳ janvier au 15 mars 2026. Les postes hors symposium peuvent être pourvus toute l'année.",
"openTitle": "Pas sûr·e d'où vous placer ?",
"openBody": "Envoyez-nous une candidature libre — décrivez ce que vous faites, ce que vous cherchez, et nous trouverons ensemble."
},
"ctaApply": "Envoyer une candidature",
"ctaSymposium": "Détails du Symposium II.0"
@ -336,59 +325,55 @@
"hero": {
"kicker": "Collaborer · Séjours longue durée",
"title": "Vivre et travailler ici",
"lede": "Appel à candidatures ! Nous accueillons collaborateur·trices, maraîcher·ères, bâtisseur·euses, artistes et résident·es longue durée souhaitant rejoindre notre projet à cette étape initiale et passionnante. Voir ci-dessous les opportunités de travail, apprentissages et résidences à venir."
"lede": "Plusieurs façons de s'engager sur la durée — de quelques semaines d'échange de services à des résidences locatives sur plusieurs années, selon votre métier et la saison."
},
"pathsTitle": "Explorer les voies d'engagement",
"pathsTitle": "Chemins d'engagement",
"paths": {
"exchangeTitle": "Travailler ou faire du bénévolat ici",
"exchangeBody": "Rejoignez une jeune dynamique ou venez soutenir avec votre temps et votre énergie. Quel que soit votre niveau d'engagement souhaité, nous proposons des formules modulables pour l'échange de services, l'hébergement et les repas — parce que nous sommes tou·tes uniques et que clarifier les attentes nous tient à cœur.",
"exchangeTitle": "Échange de services / bénévolat",
"exchangeBody": "Rejoignez un projet en phase de démarrage, ou venez soutenir avec votre temps et votre énergie. Des formules modulables couvrent les heures de travail, l'hébergement et les repas.",
"rentalTitle": "Résidences locatives longue durée",
"rentalBody": "Les locations longue durée sont actuellement ouvertes uniquement aux personnes travaillant dans des métiers connexes — maraîcher·ères, bâtisseur·euses, céramistes, designers communautaires, etc. — souhaitant partager un cadre vivant, chaleureux et collectif. C'est un espace soigné et familial, sur une fermette en activité — sans drama, sans alcool, sans drogue.",
"rentalBody": "Pour les maraîcher·ères, bâtisseur·euses, céramistes, designers communautaires et métiers connexes en quête d'un cadre chaleureux, soigné et familial sur une fermette en activité. Sans drama, sans alcool, sans drogue.",
"partialTitle": "Échange partiel",
"partialBody": "Si vous souhaitez vivre ici sans travailler ni faire du bénévolat, ou y séjourner dans un échange partiel, c'est possible ! Le cadre est modulable, les tarifs dépendent donc de votre niveau d'implication et de confort souhaité.",
"fundedTitle": "Candidater pour une résidence",
"fundedBody": "Nous construisons activement un programme pour soutenir les arts financièrement par des résidences d'artistes financées, et nous ouvrons des locations d'ateliers dans plusieurs domaines liés aux artisanats traditionnels et aux matériaux naturels. À suivre !"
"partialBody": "Les résidences locatives longue durée sont aussi possibles sans engagement de travail, avec des tarifs qui s'ajustent à votre niveau d'implication et de confort.",
"fundedTitle": "Artistes en résidence financée",
"fundedBody": "Un programme de résidences financées est en développement, accompagné de locations d'ateliers dédiés aux artisanats traditionnels et aux matériaux naturels."
},
"symposiumTeaser": {
"title": "Juste curieux·se ?",
"body": "Ouverture publique au printemps 2026, restez à l'écoute ! Nous recommandons une courte visite pour étancher votre curiosité — rejoindre un événement, suivre un cours de yoga, réserver un court séjour, ou (à partir du printemps 2027) visiter notre fermette-boutique et parcourir notre promenade d'art de la terre."
"title": "Vous cherchez l'expérience phare ?",
"body": "Le Symposium II.0 est notre incubateur de trois mois entièrement financé — une voie intense et concentrée pour entrer dans le projet en tant que membre de l'équipe centrale."
},
"ctaSymposium": "Découvrir le Symposium II.0",
"ctaContact": "Candidater"
"ctaSymposium": "Découvrir Symposium II.0",
"ctaContact": "Discutons-en"
},
"symposium": {
"hero": {
"kicker": "Symposium II.0",
"title": "un incubateur pour concevoir et développer un centre d'arts écologique",
"lede": "Si la vision, les valeurs et la mission articulées dans ce site résonnent en vous, c'est une invitation à prendre part directement à leur réalisation. Nous assemblons une équipe fondatrice pour guider le projet à travers sa formation initiale, avec des voies claires de collaboration à long terme et la possibilité d'une part d'équité partagée dans ce qui sera bâti ensemble.",
"dates": "Prochain Symposium : 15 avril 2026 — 15 juillet 2026"
"title": "Un incubateur pour un centre d'art écologique",
"lede": "Un programme de trois mois qui rassemble une petite équipe pour concevoir, bâtir et mettre en pratique la prochaine étape du Château du Faune.",
"dates": "15 avril → 15 juillet 2026"
},
"overview": {
"title": "Thème : Infrastructure incarnée",
"body": "Comment nous nous mouvons dans l'espace, travaillons, nous reposons, nous nourrissons et nous rassemblons en soutien du bien-être collectif, de la joie et de la résilience. Le Symposium II.0 fonctionne comme un incubateur curé, dédié à la conception et au développement des fondations conceptuelles, écologiques, sociales et opérationnelles du centre. Sur trois mois, sept postes entièrement financés sont offerts au sein de l'équipe centrale, formant un groupe de 10 à 15 personnes sur place aux compétences diverses, engagées dans une recherche collective et l'expérimentation concrète. Sera-ce vous ?"
},
"purpose": {
"title": "Objectif",
"body": "Établir le socle conceptuel et pratique du centre d'arts écologique. Cela inclut la construction d'infrastructures clés, le lancement de la production alimentaire, la création d'espaces de rassemblement et le développement des structures organisationnelles nécessaires pour opérer comme un projet ouvert au public. Le symposium est à la fois un laboratoire d'idées et un corps en action : les idées se développent en équilibrant observation et action."
"title": "Vue d'ensemble",
"body": "Sept postes entièrement financés au sein d'une équipe centrale de dix à quinze personnes, engagée dans une recherche collective et l'expérimentation concrète. L'accent est mis sur l'action et la réalisation matérielle — bâtir l'infrastructure, faire pousser la nourriture, façonner les espaces de rassemblement et poser le sol organisationnel pour la suite."
},
"includedTitle": "Ce qui est inclus",
"included": {
"fundedTitle": "Poste financé",
"fundedBody": "Les sept postes couvrent le temps des participant·es pour toute la durée de la résidence.",
"stayTitle": "Cadre de vie et de travail confortable",
"stayTitle": "Logement & espace de travail",
"stayBody": "Une chambre confortable sur place, cuisine partagée et espace de travail dédié.",
"foodTitle": "Repas sains et nourrissants",
"foodTitle": "Repas sains",
"foodBody": "Nourriture nourrissante préparée pour l'équipe et la communauté élargie.",
"careTitle": "Le soin de soi comme fondement",
"careBody": "Repos, sauna, yoga et temps calme conçus comme fondamentaux à la créativité durable et au travail efficace — pas des options."
"careTitle": "Soutien au soin de soi",
"careBody": "Repos, sauna, yoga et temps calme sont intégrés au rythme de la semaine — pas des options."
},
"eligibility": {
"title": "Qui nous accueillons",
"body": "Nous accueillons artistes, designers, bâtisseur·euses, maraîcher·ères, organisateur·trices et penseur·euses prêt·es à prendre part à la naissance d'une aventure entrepreneuriale, à candidater dès maintenant ! Les rôles dans le symposium sont conçus pour varier en focus. Certains se concentreront sur l'organisation, la coordination et les systèmes en arrière-plan, tandis que d'autres s'engageront directement dans la construction, la culture et le développement du site. La collaboration entre équipes reste centrale."
"title": "Qui nous cherchons",
"body": "Artistes, designers, bâtisseur·euses, maraîcher·ères, organisateur·trices et penseur·euses prêt·es à participer à la construction d'une aventure d'art écologique entrepreneuriale. Aucun diplôme requis."
},
"applyTitle": "Envie de candidater ?",
"applyTitle": "Comment candidater",
"apply": {
"stepOneTitle": "1 · Lire la vision",
"stepOneTitle": "1 · Lire le concept",
"stepOneBody": "Passez un moment avec la page Art & Écologie et Vision & Valeurs.",
"stepTwoTitle": "2 · Trouver le bon rôle",
"stepTwoBody": "Parcourez les postes ouverts et choisissez celui qui correspond à votre métier.",
@ -401,9 +386,9 @@
"events": {
"page": {
"kicker": "À l'affiche",
"title": "Tous les événements & programmes",
"lede": "Restez à l'écoute pour l'inauguration de notre programmation publique à l'automne 2026 ! Vous êtes humblement invité·es à nos cours de yoga réguliers, café et coworking, jams au coin du feu, pique-niques d'après-midi conviviaux, soirées sauna et plus encore !",
"calendarNote": "Une application de calendrier d'événements communautaire est en cours de lancement. Découvrez la version beta sur oyez.ariege.io.",
"title": "Événements & programmes",
"lede": "Yoga, café et coworking, jam au coin du feu, pique-niques d'après-midi, soirées sauna et plus encore. La programmation publique inaugurale ouvre à l'automne 2026.",
"calendarNote": "Une application de calendrier communautaire pour l'Ariège est en développement sur bouge.ariege.io — lancement été 2026.",
"noteHeading": "Note"
},
"saunaSoiree": {
@ -414,12 +399,12 @@
},
"springResidency": {
"title": "Résidence de printemps — L'esprit de l'art",
"date": "1ᵉʳ mars 2027",
"date": "1er mars 2027",
"location": "Bâtiment principal, le Temple",
"description": "Une courte résidence autour de la peinture, du dessin et de l'artisanat, dans la lumière douce du début de printemps."
},
"picnicJam": {
"title": "Pique-nique partagé & jam ~ Buffet de salades",
"title": "Pique-nique partagé & jam Buffet de salades",
"date": "22 mars 2026",
"location": "Table du Chapelier fou",
"description": "Un pique-nique d'équinoxe de printemps et une jam musicale — apportez une salade, un air, ou les deux."

View file

@ -137,15 +137,14 @@
}
},
"home": {
"heroStrip": "fattoria ✧ land art ✧ residenza ✧ spazio eventi",
"welcome": {
"title": "Benvenuti al Château du Faune",
"body": "Un luogo per creare, crescere e rigenerarsi, ai piedi dei Pirenei. Una residenza per artisti e un santuario di slow living per artigiani, agroecologi e amanti della natura in cerca di una casa lungo il cammino.",
"cta": "Scopri il Centro per l'arte e l'ecologia"
},
"oyez": {
"bouge": {
"kicker": "In sviluppo al château",
"title": "oyez.ariege.io",
"title": "bouge.ariege.io",
"subtitle": "Lancio nell'estate 2026 · Prova la demo",
"body": "Un'app di calendario eventi nativa, comunitaria e decentralizzata",
"cta": "Scopri di più"
@ -389,7 +388,7 @@
"kicker": "In programma",
"title": "Eventi e programmi",
"lede": "Yoga, caffè e coworking, jam attorno al fuoco, picnic pomeridiani, serate sauna e altro. La programmazione pubblica inaugurale apre in autunno 2026.",
"calendarNote": "Un'app di calendario di comunità per tutta l'Ariège è in sviluppo su oyez.ariege.io — lancio nell'estate 2026.",
"calendarNote": "Un'app di calendario di comunità per tutta l'Ariège è in sviluppo su bouge.ariege.io — lancio nell'estate 2026.",
"noteHeading": "Nota"
},
"saunaSoiree": {

View file

@ -137,15 +137,14 @@
}
},
"home": {
"heroStrip": "quinta ✧ arte da terra ✧ residência ✧ espaço de eventos",
"welcome": {
"title": "Bem-vindo ao Château du Faune",
"body": "Um lugar para criar, crescer e rejuvenescer, aos pés dos Pirenéus. Uma residência de artistas e um santuário de slow living para artesãos, agroecólogos e amantes da natureza à procura de uma casa pelo caminho.",
"cta": "Saber mais sobre o Centro para a arte e a ecologia"
},
"oyez": {
"bouge": {
"kicker": "Em desenvolvimento no château",
"title": "oyez.ariege.io",
"title": "bouge.ariege.io",
"subtitle": "Lançamento no verão de 2026 · Experimente a demo",
"body": "Uma aplicação de calendário de eventos nativa, comunitária e descentralizada",
"cta": "Saber mais"
@ -389,7 +388,7 @@
"kicker": "Em cartaz",
"title": "Eventos e programas",
"lede": "Ioga, café e coworking, jams à lareira, piqueniques de tarde, serões de sauna e mais. A programação pública inaugural abre no outono de 2026.",
"calendarNote": "Uma aplicação de calendário comunitário para todo o Ariège está em desenvolvimento em oyez.ariege.io — lançamento no verão de 2026.",
"calendarNote": "Uma aplicação de calendário comunitário para todo o Ariège está em desenvolvimento em bouge.ariege.io — lançamento no verão de 2026.",
"noteHeading": "Nota"
},
"saunaSoiree": {

View file

@ -3,21 +3,8 @@
@custom-variant dark (&:is(.dark *));
/* Self-hosted rotunda used for the hero title ("Berry Rotunda", public
domain). Only needed to shape the SVG clip glyphs the hero video shows
through. */
@font-face {
font-family: 'Berry Rotunda';
src:
url('./assets/fonts/berry-rotunda.woff2') format('woff2'),
url('./assets/fonts/berry-rotunda.woff') format('woff');
font-weight: normal;
font-style: normal;
font-display: swap;
}
:root {
/* Brand palette: deep forest green dominant background, cream
/* Wix-inspired palette: deep forest green dominant background, cream
foreground, gold (Aboreto/calligraphic spirit) for CTAs and accents. */
--background: hsl(151 100% 8%);
--foreground: hsl(200 32% 94%);
@ -38,12 +25,6 @@
--border: hsl(151 50% 18%);
--input: hsl(151 50% 18%);
--ring: hsl(43 64% 50%);
/* Near-black green of the content panel that floats on the tiled bg. */
--panel: hsl(151 55% 4%);
/* Flat wash layered over the tiled page background to mute it. Dark green
rather than pure black so the gutters keep the site's tone. Raise the
alpha toward 1 for a quieter background, lower it to let the knot show. */
--bg-overlay: hsl(151 60% 3% / 0.62);
--radius: 0.5rem;
}
@ -67,8 +48,6 @@
--border: hsl(151 50% 15%);
--input: hsl(151 50% 15%);
--ring: hsl(43 64% 52%);
--panel: hsl(151 55% 3%);
--bg-overlay: hsl(151 60% 2% / 0.66);
}
@theme inline {
@ -91,7 +70,6 @@
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--color-panel: var(--panel);
--radius-lg: var(--radius);
--radius-md: calc(var(--radius) - 2px);
--radius-sm: calc(var(--radius) - 4px);
@ -99,7 +77,6 @@
'Roboto', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
--font-display: 'Aboreto', 'Cormorant Garamond', Georgia, serif;
--font-script: 'Tangerine', 'Allura', cursive;
--font-title: 'Berry Rotunda', 'UnifrakturMaguntia', serif;
}
@layer base {
@ -108,16 +85,6 @@
}
body {
@apply bg-background text-foreground;
/* Celtic-knot tile is the page background; it shows in the gutters
around the floating content panel (see PageShell). A flat dark wash
(--bg-overlay) is layered on top to mute it. The home page's fixed
landscape image sits above this layer, so home is unaffected. */
background-image:
linear-gradient(var(--bg-overlay), var(--bg-overlay)),
url('./assets/section-tile.webp');
background-repeat: no-repeat, repeat;
background-position: center top, center top;
background-size: cover, auto;
font-family: var(--font-sans);
font-weight: 300;
}

View file

@ -4,9 +4,6 @@ import { RouterLink } from 'vue-router'
import { Button } from '@/components/ui/button'
import { Card, CardContent } from '@/components/ui/card'
import { Badge } from '@/components/ui/badge'
import PageHero from '@/components/layout/PageHero.vue'
import PageSection from '@/components/layout/PageSection.vue'
import PageShell from '@/components/layout/PageShell.vue'
const { t, tm, rt } = useI18n()
@ -62,21 +59,29 @@ const exteriorItems = tm('accommodation.exterior.items') as string[]
</script>
<template>
<PageShell>
<div>
<!-- Hero -->
<PageHero
:kicker="t('accommodation.hero.kicker')"
:title="t('accommodation.hero.title')"
:lede="t('accommodation.hero.lede')"
/>
<section class="border-b border-border bg-secondary/40">
<div class="mx-auto max-w-4xl px-4 py-16 lg:px-6 lg:py-20">
<p class="text-xs uppercase tracking-[0.2em] text-accent">
{{ t('accommodation.hero.kicker') }}
</p>
<h1 class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl">
{{ t('accommodation.hero.title') }}
</h1>
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ t('accommodation.hero.lede') }}
</p>
</div>
</section>
<!-- Rooms -->
<PageSection>
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="max-w-3xl">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('accommodation.rooms.title') }}
</h2>
<p class="mt-3 text-foreground/80">{{ t('accommodation.rooms.subtitle') }}</p>
<p class="mt-3 text-muted-foreground">{{ t('accommodation.rooms.subtitle') }}</p>
</div>
<ul class="mt-8 grid gap-6 md:grid-cols-2 lg:grid-cols-3">
<li v-for="room in rooms" :key="room.key">
@ -89,7 +94,7 @@ const exteriorItems = tm('accommodation.exterior.items') as string[]
/>
<CardContent class="p-5 pt-5">
<div class="flex items-baseline justify-between gap-3">
<h3 class="font-display text-lg uppercase tracking-wider">
<h3 class="font-serif text-xl font-semibold">
{{ t(`accommodation.rooms.${room.key}.name`) }}
</h3>
<Badge
@ -110,48 +115,50 @@ const exteriorItems = tm('accommodation.exterior.items') as string[]
</Card>
</li>
</ul>
</PageSection>
</section>
<!-- Cabins -->
<PageSection>
<div class="max-w-3xl">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
{{ t('accommodation.cabins.title') }}
</h2>
<p class="mt-3 text-foreground/80">{{ t('accommodation.cabins.subtitle') }}</p>
<section class="border-y border-border bg-card">
<div class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="max-w-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('accommodation.cabins.title') }}
</h2>
<p class="mt-3 text-muted-foreground">{{ t('accommodation.cabins.subtitle') }}</p>
</div>
<ul class="mt-8 grid gap-6 md:grid-cols-3">
<li v-for="cabin in cabins" :key="cabin.key">
<Card class="overflow-hidden bg-background">
<img
:src="cabin.image"
alt=""
class="aspect-[4/3] w-full object-cover"
loading="lazy"
/>
<div class="flex items-baseline justify-between gap-3 p-5">
<h3 class="font-serif text-xl font-semibold">
{{ t(`accommodation.cabins.${cabin.key}`) }}
</h3>
<Badge
variant="outline"
class="text-[10px] uppercase tracking-wider text-muted-foreground"
>
{{ t('accommodation.statusComingSoon') }}
</Badge>
</div>
</Card>
</li>
</ul>
</div>
<ul class="mt-8 grid gap-6 md:grid-cols-3">
<li v-for="cabin in cabins" :key="cabin.key">
<Card class="overflow-hidden bg-background">
<img
:src="cabin.image"
alt=""
class="aspect-[4/3] w-full object-cover"
loading="lazy"
/>
<div class="flex items-baseline justify-between gap-3 p-5">
<h3 class="font-display text-lg uppercase tracking-wider">
{{ t(`accommodation.cabins.${cabin.key}`) }}
</h3>
<Badge
variant="outline"
class="text-[10px] uppercase tracking-wider text-muted-foreground"
>
{{ t('accommodation.statusComingSoon') }}
</Badge>
</div>
</Card>
</li>
</ul>
</PageSection>
</section>
<!-- Exterior, coming next -->
<PageSection>
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="max-w-3xl">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('accommodation.exterior.title') }}
</h2>
<p class="mt-3 text-foreground/80">{{ t('accommodation.exterior.subtitle') }}</p>
<p class="mt-3 text-muted-foreground">{{ t('accommodation.exterior.subtitle') }}</p>
</div>
<ul class="mt-8 grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
<li v-for="(item, i) in exteriorItems" :key="i">
@ -160,11 +167,11 @@ const exteriorItems = tm('accommodation.exterior.items') as string[]
</Card>
</li>
</ul>
</PageSection>
</section>
<!-- CTAs -->
<PageSection padding="compact">
<div class="flex flex-wrap items-center gap-3">
<section class="border-t border-border bg-secondary/30">
<div class="mx-auto flex max-w-7xl flex-wrap items-center gap-3 px-4 py-12 lg:px-6">
<Button as-child>
<a href="mailto:chateaudufaune@ariege.io?subject=R%C3%A9servation%20%E2%80%94%20Ch%C3%A2teau%20du%20Faune">
{{ t('accommodation.ctaReserve') }}
@ -174,6 +181,6 @@ const exteriorItems = tm('accommodation.exterior.items') as string[]
<RouterLink to="/reservations"> {{ t('accommodation.ctaBack') }}</RouterLink>
</Button>
</div>
</PageSection>
</PageShell>
</section>
</div>
</template>

View file

@ -2,9 +2,6 @@
import { useI18n } from 'vue-i18n'
import { RouterLink } from 'vue-router'
import { Card } from '@/components/ui/card'
import PageHero from '@/components/layout/PageHero.vue'
import PageSection from '@/components/layout/PageSection.vue'
import PageShell from '@/components/layout/PageShell.vue'
const { t } = useI18n()
@ -16,27 +13,35 @@ const pillars = [
</script>
<template>
<PageShell>
<div>
<!-- Hero -->
<PageHero
:kicker="t('concept.hero.kicker')"
:title="t('concept.hero.title')"
:lede="t('concept.hero.lede')"
/>
<section class="border-b border-border bg-secondary/40">
<div class="mx-auto max-w-4xl px-4 py-16 lg:px-6 lg:py-24">
<p class="text-xs uppercase tracking-[0.2em] text-accent">
{{ t('concept.hero.kicker') }}
</p>
<h1 class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl">
{{ t('concept.hero.title') }}
</h1>
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ t('concept.hero.lede') }}
</p>
</div>
</section>
<!-- Mission -->
<PageSection width="narrow">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<section class="mx-auto max-w-4xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('concept.mission.title') }}
</h2>
<p class="mt-5 max-w-prose text-base leading-relaxed">
{{ t('concept.mission.body') }}
</p>
</PageSection>
</section>
<!-- Land art & residencies -->
<PageSection>
<div class="grid items-center gap-10 lg:grid-cols-2 lg:gap-14">
<section class="bg-card border-y border-border">
<div class="mx-auto grid max-w-7xl gap-10 px-4 py-16 lg:grid-cols-2 lg:gap-14 lg:px-6">
<img
src="https://static.wixstatic.com/media/11062b_7c683da5bcbd44d7b0d2ddbaf4693625~mv2.jpg"
alt=""
@ -44,7 +49,7 @@ const pillars = [
loading="lazy"
/>
<div>
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('concept.landArt.title') }}
</h2>
<p class="mt-5 max-w-prose leading-relaxed">{{ t('concept.landArt.body') }}</p>
@ -56,13 +61,13 @@ const pillars = [
</RouterLink>
</div>
</div>
</PageSection>
</section>
<!-- Farmstand & boutique -->
<PageSection>
<div class="grid items-center gap-10 lg:grid-cols-2 lg:gap-14">
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="grid gap-10 lg:grid-cols-2 lg:gap-14">
<div class="order-2 lg:order-1">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('concept.farmstand.title') }}
</h2>
<p class="mt-5 max-w-prose leading-relaxed">{{ t('concept.farmstand.body') }}</p>
@ -80,31 +85,33 @@ const pillars = [
loading="lazy"
/>
</div>
</PageSection>
</section>
<!-- Slow farming -->
<PageSection>
<div class="max-w-3xl">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
{{ t('concept.slowFarming.title') }}
</h2>
<p class="mt-3 text-foreground/80">{{ t('concept.slowFarming.body') }}</p>
<section class="bg-secondary/30 border-y border-border">
<div class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="max-w-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('concept.slowFarming.title') }}
</h2>
<p class="mt-3 text-muted-foreground">{{ t('concept.slowFarming.body') }}</p>
</div>
<div class="mt-8 grid gap-6 md:grid-cols-3">
<Card v-for="p in pillars" :key="p.key" class="p-6">
<h3 class="font-serif text-xl font-semibold">
{{ t(`concept.slowFarming.${p.key}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`concept.slowFarming.${p.key}Body`) }}
</p>
</Card>
</div>
</div>
<div class="mt-8 grid gap-6 md:grid-cols-3">
<Card v-for="p in pillars" :key="p.key" class="p-6">
<h3 class="font-display text-lg uppercase tracking-wider">
{{ t(`concept.slowFarming.${p.key}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`concept.slowFarming.${p.key}Body`) }}
</p>
</Card>
</div>
</PageSection>
</section>
<!-- Events in nature -->
<PageSection>
<div class="grid items-center gap-10 lg:grid-cols-2 lg:gap-14">
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="grid gap-10 lg:grid-cols-2 lg:gap-14">
<img
src="https://static.wixstatic.com/media/11062b_a56b905cae7c424c84cbaa1677d59ec5~mv2.jpg"
alt=""
@ -112,7 +119,7 @@ const pillars = [
loading="lazy"
/>
<div>
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('concept.events.title') }}
</h2>
<p class="mt-5 max-w-prose leading-relaxed">{{ t('concept.events.body') }}</p>
@ -124,6 +131,6 @@ const pillars = [
</RouterLink>
</div>
</div>
</PageSection>
</PageShell>
</section>
</div>
</template>

View file

@ -4,9 +4,6 @@ import { RouterLink } from 'vue-router'
import { Button } from '@/components/ui/button'
import { Card, CardContent } from '@/components/ui/card'
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'
import PageHero from '@/components/layout/PageHero.vue'
import PageSection from '@/components/layout/PageSection.vue'
import PageShell from '@/components/layout/PageShell.vue'
const { t } = useI18n()
@ -40,23 +37,30 @@ const events = [
</script>
<template>
<PageShell>
<PageHero
:kicker="t('events.page.kicker')"
:title="t('events.page.title')"
:lede="t('events.page.lede')"
>
<Alert class="mt-8 max-w-prose bg-card text-foreground/85">
<AlertTitle class="text-xs uppercase tracking-wider text-accent">
{{ t('events.page.noteHeading') }}
</AlertTitle>
<AlertDescription>
{{ t('events.page.calendarNote') }}
</AlertDescription>
</Alert>
</PageHero>
<div>
<section class="border-b border-border bg-secondary/40">
<div class="mx-auto max-w-4xl px-4 py-16 lg:px-6 lg:py-20">
<p class="text-xs uppercase tracking-[0.2em] text-accent">
{{ t('events.page.kicker') }}
</p>
<h1 class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl">
{{ t('events.page.title') }}
</h1>
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ t('events.page.lede') }}
</p>
<Alert class="mt-8 max-w-prose bg-card text-foreground/85">
<AlertTitle class="text-xs uppercase tracking-wider text-accent">
{{ t('events.page.noteHeading') }}
</AlertTitle>
<AlertDescription>
{{ t('events.page.calendarNote') }}
</AlertDescription>
</Alert>
</div>
</section>
<PageSection>
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<ul class="grid gap-6 md:grid-cols-2 lg:grid-cols-3">
<li v-for="e in events" :key="e.key">
<component
@ -75,7 +79,7 @@ const events = [
<p class="text-xs uppercase tracking-wider text-accent">
{{ t(`events.${e.key}.date`) }}
</p>
<h2 class="mt-1 font-display text-lg uppercase tracking-wider">
<h2 class="mt-1 font-serif text-xl font-semibold">
{{ t(`events.${e.key}.title`) }}
</h2>
<p class="mt-1 text-xs text-muted-foreground">
@ -95,6 +99,6 @@ const events = [
<RouterLink to="/symposium">{{ t('nav.symposium') }} </RouterLink>
</Button>
</div>
</PageSection>
</PageShell>
</section>
</div>
</template>

View file

@ -1,9 +1,6 @@
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
import { Card } from '@/components/ui/card'
import PageHero from '@/components/layout/PageHero.vue'
import PageSection from '@/components/layout/PageSection.vue'
import PageShell from '@/components/layout/PageShell.vue'
const { t } = useI18n()
@ -36,14 +33,20 @@ const items = [
</script>
<template>
<PageShell>
<PageHero
:kicker="t('gallery.kicker')"
:title="t('gallery.title')"
:lede="t('gallery.lede')"
/>
<div>
<section class="border-b border-border bg-secondary/40">
<div class="mx-auto max-w-4xl px-4 py-16 lg:px-6 lg:py-20">
<p class="text-xs uppercase tracking-[0.2em] text-accent">{{ t('gallery.kicker') }}</p>
<h1 class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl">
{{ t('gallery.title') }}
</h1>
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ t('gallery.lede') }}
</p>
</div>
</section>
<PageSection>
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<ul class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
<li v-for="item in items" :key="item.key" class="group">
<Card class="overflow-hidden">
@ -55,7 +58,7 @@ const items = [
loading="lazy"
/>
<figcaption
class="border-t border-border px-4 py-3 text-sm text-foreground/85"
class="border-t border-border px-4 py-3 font-serif text-sm text-foreground/85"
>
{{ t(`gallery.captions.${item.key}`) }}
</figcaption>
@ -63,6 +66,6 @@ const items = [
</Card>
</li>
</ul>
</PageSection>
</PageShell>
</section>
</div>
</template>

View file

@ -1,16 +1,11 @@
<script setup lang="ts">
import { computed, nextTick, onMounted, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { RouterLink } from 'vue-router'
import { Button } from '@/components/ui/button'
import { Card, CardContent } from '@/components/ui/card'
import cosmicStagMorphWebm from '@/assets/cosmic-stag-morph-1024.webm'
import cosmicStagMorphFallback from '@/assets/cosmic-stag-morph-fallback.webp'
import cosmicStag from '@/assets/cosmic-stag.avif'
import heroLandscape from '@/assets/hero-landscape.webp'
import sectionTile from '@/assets/section-tile.webp'
import titleWordmark from '@/assets/title-wordmark.mp4'
import titleWordmarkPoster from '@/assets/title-wordmark-poster.jpg'
import oyezBanner from '@/assets/oyez-banner-green.svg'
const tileStyle = {
backgroundImage: `url(${sectionTile})`,
@ -21,43 +16,6 @@ const tileStyle = {
const { t } = useI18n()
// The hero title is SVG text (Berry Rotunda) used as a clip over the
// wordmark video. Measure the rendered glyph box once the font loads and fit
// the viewBox/foreignObject to it, so the wordmark fills the SVG width without
// clipping regardless of the font's metrics.
const titleSvg = ref<SVGSVGElement | null>(null)
const titleText = ref<SVGTextElement | null>(null)
const titleBox = ref({ x: 0, y: 0, w: 1100, h: 200 })
const titleViewBox = computed(
() => `${titleBox.value.x} ${titleBox.value.y} ${titleBox.value.w} ${titleBox.value.h}`,
)
onMounted(async () => {
try {
await (document as Document & { fonts?: FontFaceSet }).fonts?.ready
} catch {
/* fonts API unavailable — keep the default box */
}
await nextTick()
const el = titleText.value
if (!el) return
let bb: DOMRect
try {
bb = el.getBBox()
} catch {
return
}
if (!bb.width) return
const padX = bb.height * 0.08
const padY = bb.height * 0.16
titleBox.value = {
x: Math.round(bb.x - padX),
y: Math.round(bb.y - padY),
w: Math.round(bb.width + padX * 2),
h: Math.round(bb.height + padY * 2),
}
})
const pathways = [
{ key: 'dayVisit' as const, to: '/reservations' },
{ key: 'activity' as const, to: '/events' },
@ -88,7 +46,7 @@ const featuredEvents = [
<div>
<!-- Pinned landscape backdrop: viewport-fixed so it stays put while
content scrolls over it. Visible behind the transparent hero;
covered by the opaque welcome/oyez/etc sections as the user
covered by the opaque welcome/bouge/etc sections as the user
scrolls down. -->
<img
:src="heroLandscape"
@ -97,80 +55,30 @@ const featuredEvents = [
class="fixed inset-0 -z-50 h-screen w-screen object-cover"
/>
<!-- Hero: full-viewport, transparent over the pinned backdrop. Content is
anchored near the top on mobile (avoids a tall dead band under the
header) and vertically centered from lg up. -->
<section class="relative isolate flex flex-col items-center justify-start overflow-hidden pt-12 pb-16 sm:pt-16 lg:min-h-screen lg:justify-center lg:pb-0 lg:pt-20">
<!-- Hero: full-viewport, transparent over the pinned backdrop -->
<section class="relative isolate flex min-h-screen flex-col items-center justify-center overflow-hidden">
<div
class="pointer-events-none absolute inset-0 -z-10 bg-gradient-to-b from-background/55 to-transparent"
></div>
<div
class="relative mx-auto flex max-w-7xl flex-col items-center px-4 text-center lg:px-6"
>
<p
class="whitespace-nowrap bg-clip-text font-display text-[clamp(0.85rem,3.7vw,1.875rem)] uppercase tracking-[0.2em] text-transparent drop-shadow-[0_1px_4px_rgba(0,0,0,0.85)]"
style="background-image: linear-gradient(to right, #b99f2c, #855c16)"
class="font-display text-xl uppercase tracking-[0.25em] text-accent drop-shadow-[0_1px_4px_rgba(0,0,0,0.85)] md:text-3xl lg:text-4xl"
>
{{ t('common.tagline') }}
</p>
<h1 class="sr-only">Château du Faune</h1>
<!-- Hero title: rotunda text clips the forest/cloud video so it
appears to drift through the letters. The SVG scales by viewBox
(always one line); a gold drop-shadow gives the engraved edge. -->
<svg
ref="titleSvg"
class="hero-title -mt-1 block w-[min(92vw,52rem)] sm:mt-4"
:viewBox="titleViewBox"
aria-hidden="true"
<h1
class="mt-4 font-script font-bold text-6xl leading-none text-foreground drop-shadow-md md:text-7xl lg:text-8xl"
>
<defs>
<clipPath id="hero-title-clip">
<text
ref="titleText"
x="550"
y="122"
text-anchor="middle"
font-family="'Berry Rotunda', 'UnifrakturMaguntia', serif"
font-size="120"
>
Château du Faune
</text>
</clipPath>
</defs>
<foreignObject
:x="titleBox.x"
:y="titleBox.y"
:width="titleBox.w"
:height="titleBox.h"
clip-path="url(#hero-title-clip)"
>
<video
xmlns="http://www.w3.org/1999/xhtml"
autoplay
muted
loop
playsinline
:poster="titleWordmarkPoster"
class="h-full w-full object-cover"
>
<source :src="titleWordmark" type="video/mp4" />
</video>
</foreignObject>
</svg>
<video
autoplay
muted
loop
playsinline
aria-hidden="true"
Château du Faune
</h1>
<img
:src="cosmicStag"
alt=""
class="mt-4 h-80 w-80 object-contain md:h-[28rem] md:w-[28rem] lg:h-[36rem] lg:w-[36rem] xl:h-[42rem] xl:w-[42rem]"
>
<source :src="cosmicStagMorphWebm" type="video/webm" />
<img :src="cosmicStagMorphFallback" alt="" />
</video>
<p
class="mt-4 max-w-[90vw] text-balance bg-clip-text font-display text-[clamp(0.7rem,2.4vw,1.25rem)] uppercase tracking-[0.12em] text-transparent drop-shadow-[0_1px_4px_rgba(0,0,0,0.85)] sm:mt-6 sm:tracking-[0.2em]"
style="background-image: linear-gradient(to right, #b99f2c, #855c16)"
>
{{ t('home.heroStrip') }}
</p>
/>
</div>
</section>
@ -188,49 +96,38 @@ const featuredEvents = [
<p class="mt-6 text-base leading-relaxed text-foreground/90 md:text-lg">
{{ t('home.welcome.body') }}
</p>
<Button
as-child
variant="outline"
class="mt-8 h-auto max-w-full whitespace-normal rounded-3xl py-3 text-balance"
>
<Button as-child variant="outline" class="mt-8">
<RouterLink to="/concept">{{ t('home.welcome.cta') }}</RouterLink>
</Button>
</div>
</div>
</section>
<!-- Oyez.ariege.io callout: tile under a heavier near-black tint -->
<!-- Bouge.ariege.io callout: tile under a heavier near-black tint -->
<section class="px-3 py-3 sm:px-4 lg:px-6">
<div class="relative mx-auto overflow-hidden rounded-2xl">
<div class="absolute inset-0 opacity-80" :style="tileStyle"></div>
<div class="absolute inset-0 bg-zinc-950/80"></div>
<div class="relative mx-auto max-w-4xl px-4 py-20 text-center lg:py-28">
<p class="font-display text-xs uppercase tracking-[0.3em] text-accent">
{{ t('home.oyez.kicker') }}
{{ t('home.bouge.kicker') }}
</p>
<a
href="https://oyez.ariege.io"
target="_blank"
rel="noopener"
class="mt-4 block transition hover:opacity-90"
<h2
class="mt-4 font-script font-bold text-6xl leading-none text-accent md:text-7xl lg:text-8xl"
>
<img
:src="oyezBanner"
:alt="t('home.oyez.title')"
class="mx-auto w-5/6 max-w-md md:w-full"
/>
</a>
{{ t('home.bouge.title') }}
</h2>
<p class="mt-6 text-xs uppercase tracking-[0.2em] text-foreground/80">
{{ t('home.oyez.subtitle') }}
{{ t('home.bouge.subtitle') }}
</p>
<h3
class="mt-6 font-display text-2xl uppercase tracking-wider text-foreground md:text-3xl"
>
{{ t('home.oyez.body') }}
{{ t('home.bouge.body') }}
</h3>
<Button as-child class="mt-10">
<a href="https://oyez.ariege.io" target="_blank" rel="noopener">
{{ t('home.oyez.cta') }}
<a href="https://bouge.ariege.io" target="_blank" rel="noopener">
{{ t('home.bouge.cta') }}
</a>
</Button>
</div>
@ -329,12 +226,3 @@ const featuredEvents = [
</section>
</div>
</template>
<style scoped>
/* Gold engraved edge + soft shadow on the video-filled title, for the
engraved look and to keep it legible on the bright sky. */
.hero-title {
filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.55)) drop-shadow(0 0 1px #ffe87b);
overflow: visible;
}
</style>

View file

@ -3,9 +3,6 @@ import { useI18n } from 'vue-i18n'
import { RouterLink } from 'vue-router'
import { Button } from '@/components/ui/button'
import { Card } from '@/components/ui/card'
import PageHero from '@/components/layout/PageHero.vue'
import PageSection from '@/components/layout/PageSection.vue'
import PageShell from '@/components/layout/PageShell.vue'
const { t } = useI18n()
@ -13,22 +10,30 @@ const paths = ['exchange', 'rental', 'partial', 'funded'] as const
</script>
<template>
<PageShell>
<div>
<!-- Hero -->
<PageHero
:kicker="t('longStays.hero.kicker')"
:title="t('longStays.hero.title')"
:lede="t('longStays.hero.lede')"
/>
<section class="border-b border-border bg-secondary/40">
<div class="mx-auto max-w-4xl px-4 py-16 lg:px-6 lg:py-20">
<p class="text-xs uppercase tracking-[0.2em] text-accent">
{{ t('longStays.hero.kicker') }}
</p>
<h1 class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl">
{{ t('longStays.hero.title') }}
</h1>
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ t('longStays.hero.lede') }}
</p>
</div>
</section>
<!-- Paths -->
<PageSection>
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('longStays.pathsTitle') }}
</h2>
<div class="mt-8 grid gap-6 md:grid-cols-2">
<Card v-for="key in paths" :key="key" class="p-6">
<h3 class="font-display text-lg uppercase tracking-wider">
<h3 class="font-serif text-xl font-semibold">
{{ t(`longStays.paths.${key}Title`) }}
</h3>
<p class="mt-3 text-base leading-relaxed text-foreground/85">
@ -36,11 +41,11 @@ const paths = ['exchange', 'rental', 'partial', 'funded'] as const
</p>
</Card>
</div>
</PageSection>
</section>
<!-- Symposium teaser -->
<PageSection>
<div class="grid items-center gap-10 lg:grid-cols-2 lg:gap-14">
<section class="border-t border-border bg-secondary/30">
<div class="mx-auto grid max-w-7xl items-center gap-10 px-4 py-16 lg:grid-cols-2 lg:gap-14 lg:px-6">
<img
src="https://static.wixstatic.com/media/11062b_322db9c671074a6cb3d76de93ac013f0~mv2.jpg"
alt=""
@ -48,7 +53,7 @@ const paths = ['exchange', 'rental', 'partial', 'funded'] as const
loading="lazy"
/>
<div>
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('longStays.symposiumTeaser.title') }}
</h2>
<p class="mt-5 max-w-prose leading-relaxed">
@ -64,6 +69,6 @@ const paths = ['exchange', 'rental', 'partial', 'funded'] as const
</div>
</div>
</div>
</PageSection>
</PageShell>
</section>
</div>
</template>

View file

@ -2,9 +2,6 @@
import { useI18n } from 'vue-i18n'
import { Button } from '@/components/ui/button'
import { Card } from '@/components/ui/card'
import PageHero from '@/components/layout/PageHero.vue'
import PageSection from '@/components/layout/PageSection.vue'
import PageShell from '@/components/layout/PageShell.vue'
const { t } = useI18n()
@ -12,20 +9,28 @@ const categories = ['fresh', 'pantry', 'craft'] as const
</script>
<template>
<PageShell>
<PageHero
:kicker="t('marketplace.kicker')"
:title="t('marketplace.title')"
:lede="t('marketplace.lede')"
/>
<div>
<section class="border-b border-border bg-secondary/40">
<div class="mx-auto max-w-4xl px-4 py-16 lg:px-6 lg:py-20">
<p class="text-xs uppercase tracking-[0.2em] text-accent">
{{ t('marketplace.kicker') }}
</p>
<h1 class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl">
{{ t('marketplace.title') }}
</h1>
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ t('marketplace.lede') }}
</p>
</div>
</section>
<PageSection>
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('marketplace.categoriesTitle') }}
</h2>
<div class="mt-8 grid gap-6 md:grid-cols-3">
<Card v-for="key in categories" :key="key" class="border-dashed p-6">
<h3 class="font-display text-lg uppercase tracking-wider">
<h3 class="font-serif text-xl font-semibold">
{{ t(`marketplace.categories.${key}Title`) }}
</h3>
<p class="mt-3 text-base leading-relaxed text-foreground/85">
@ -33,11 +38,11 @@ const categories = ['fresh', 'pantry', 'craft'] as const
</p>
</Card>
</div>
</PageSection>
</section>
<PageSection width="narrow" padding="compact">
<div class="text-center">
<p class="text-lg italic text-foreground/85">
<section class="border-t border-border bg-secondary/30">
<div class="mx-auto max-w-4xl px-4 py-12 text-center lg:px-6">
<p class="font-serif text-lg italic text-foreground/85">
{{ t('marketplace.notice') }}
</p>
<Button as-child variant="outline" class="mt-6">
@ -46,6 +51,6 @@ const categories = ['fresh', 'pantry', 'craft'] as const
</a>
</Button>
</div>
</PageSection>
</PageShell>
</section>
</div>
</template>

View file

@ -4,7 +4,7 @@ import { RouterLink } from 'vue-router'
<template>
<article class="mx-auto max-w-3xl px-4 py-24 text-center">
<h1 class="font-display text-6xl uppercase tracking-wider">404</h1>
<h1 class="font-serif text-5xl font-semibold tracking-tight">404</h1>
<p class="mt-4 text-muted-foreground">Page introuvable / Page not found.</p>
<RouterLink to="/" class="mt-8 inline-block text-sm underline hover:text-primary">
Château du Faune

View file

@ -3,9 +3,6 @@ import { useI18n } from 'vue-i18n'
import { RouterLink } from 'vue-router'
import { Button } from '@/components/ui/button'
import { Card } from '@/components/ui/card'
import PageHero from '@/components/layout/PageHero.vue'
import PageSection from '@/components/layout/PageSection.vue'
import PageShell from '@/components/layout/PageShell.vue'
const { t } = useI18n()
@ -22,26 +19,34 @@ const applyKeys = ['model', 'window', 'open'] as const
</script>
<template>
<PageShell>
<div>
<!-- Hero -->
<PageHero
:kicker="t('opportunities.hero.kicker')"
:title="t('opportunities.hero.title')"
:lede="t('opportunities.hero.lede')"
/>
<section class="border-b border-border bg-secondary/40">
<div class="mx-auto max-w-4xl px-4 py-16 lg:px-6 lg:py-20">
<p class="text-xs uppercase tracking-[0.2em] text-accent">
{{ t('opportunities.hero.kicker') }}
</p>
<h1 class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl">
{{ t('opportunities.hero.title') }}
</h1>
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ t('opportunities.hero.lede') }}
</p>
</div>
</section>
<!-- Groups of positions -->
<PageSection>
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="max-w-3xl">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('opportunities.groupsTitle') }}
</h2>
<p class="mt-3 text-foreground/80">{{ t('opportunities.groupsSubtitle') }}</p>
<p class="mt-3 text-muted-foreground">{{ t('opportunities.groupsSubtitle') }}</p>
</div>
<ul class="mt-8 grid gap-6 md:grid-cols-2 lg:grid-cols-3">
<li v-for="key in groups" :key="key">
<Card class="p-6">
<h3 class="font-display text-lg uppercase tracking-wider">
<h3 class="font-serif text-xl font-semibold">
{{ t(`opportunities.groups.${key}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
@ -50,33 +55,35 @@ const applyKeys = ['model', 'window', 'open'] as const
</Card>
</li>
</ul>
</PageSection>
</section>
<!-- How we hire -->
<PageSection>
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
{{ t('opportunities.applyTitle') }}
</h2>
<div class="mt-8 grid gap-6 md:grid-cols-3">
<Card v-for="key in applyKeys" :key="key" class="p-6">
<h3 class="font-display text-lg uppercase tracking-wider">
{{ t(`opportunities.apply.${key}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`opportunities.apply.${key}Body`) }}
</p>
</Card>
<section class="border-t border-border bg-secondary/30">
<div class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('opportunities.applyTitle') }}
</h2>
<div class="mt-8 grid gap-6 md:grid-cols-3">
<Card v-for="key in applyKeys" :key="key" class="p-6">
<h3 class="font-serif text-lg font-semibold">
{{ t(`opportunities.apply.${key}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`opportunities.apply.${key}Body`) }}
</p>
</Card>
</div>
<div class="mt-10 flex flex-wrap items-center gap-3">
<Button as-child>
<a href="mailto:chateaudufaune@ariege.io?subject=Application%20%E2%80%94%20Ch%C3%A2teau%20du%20Faune">
{{ t('opportunities.ctaApply') }}
</a>
</Button>
<Button as-child variant="outline">
<RouterLink to="/symposium">{{ t('opportunities.ctaSymposium') }}</RouterLink>
</Button>
</div>
</div>
<div class="mt-10 flex flex-wrap items-center gap-3">
<Button as-child>
<a href="mailto:chateaudufaune@ariege.io?subject=Application%20%E2%80%94%20Ch%C3%A2teau%20du%20Faune">
{{ t('opportunities.ctaApply') }}
</a>
</Button>
<Button as-child variant="outline">
<RouterLink to="/symposium">{{ t('opportunities.ctaSymposium') }}</RouterLink>
</Button>
</div>
</PageSection>
</PageShell>
</section>
</div>
</template>

View file

@ -3,9 +3,6 @@ import { useI18n } from 'vue-i18n'
import { RouterLink } from 'vue-router'
import { Button } from '@/components/ui/button'
import { Card } from '@/components/ui/card'
import PageHero from '@/components/layout/PageHero.vue'
import PageSection from '@/components/layout/PageSection.vue'
import PageShell from '@/components/layout/PageShell.vue'
const { t } = useI18n()
@ -13,22 +10,30 @@ const kinds = ['weekend', 'retreat', 'gathering', 'residency'] as const
</script>
<template>
<PageShell>
<div>
<!-- Hero -->
<PageHero
:kicker="t('reservations.hero.kicker')"
:title="t('reservations.hero.title')"
:lede="t('reservations.hero.lede')"
/>
<section class="border-b border-border bg-secondary/40">
<div class="mx-auto max-w-4xl px-4 py-16 lg:px-6 lg:py-20">
<p class="text-xs uppercase tracking-[0.2em] text-accent">
{{ t('reservations.hero.kicker') }}
</p>
<h1 class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl">
{{ t('reservations.hero.title') }}
</h1>
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ t('reservations.hero.lede') }}
</p>
</div>
</section>
<!-- Kinds of stays -->
<PageSection>
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('reservations.kindsTitle') }}
</h2>
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-4">
<Card v-for="key in kinds" :key="key" class="p-6">
<h3 class="font-display text-lg uppercase tracking-wider">
<h3 class="font-serif text-xl font-semibold">
{{ t(`reservations.kinds.${key}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
@ -36,32 +41,34 @@ const kinds = ['weekend', 'retreat', 'gathering', 'residency'] as const
</p>
</Card>
</div>
</PageSection>
</section>
<!-- Values -->
<PageSection width="narrow">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
{{ t('reservations.valuesTitle') }}
</h2>
<p class="mt-5 max-w-prose text-base leading-relaxed">
{{ t('reservations.valuesBody') }}
</p>
</PageSection>
<section class="border-y border-border bg-card">
<div class="mx-auto max-w-4xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('reservations.valuesTitle') }}
</h2>
<p class="mt-5 max-w-prose text-base leading-relaxed">
{{ t('reservations.valuesBody') }}
</p>
</div>
</section>
<!-- Booking form placeholder + contact card -->
<PageSection>
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="grid gap-10 lg:grid-cols-5 lg:gap-14">
<div class="lg:col-span-3">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('reservations.formTitle') }}
</h2>
<p class="mt-3 max-w-prose text-foreground/80">
<p class="mt-3 max-w-prose text-muted-foreground">
{{ t('reservations.formSubtitle') }}
</p>
<div
class="mt-6 flex aspect-[4/3] items-center justify-center rounded-lg border border-dashed border-border bg-secondary/30 p-6 text-center text-muted-foreground"
>
<p class="italic">{{ t('reservations.formPlaceholder') }}</p>
<p class="font-serif italic">{{ t('reservations.formPlaceholder') }}</p>
</div>
<div class="mt-6 flex flex-wrap items-center gap-3">
<Button as-child>
@ -78,7 +85,7 @@ const kinds = ['weekend', 'retreat', 'gathering', 'residency'] as const
</div>
<Card class="p-6 lg:col-span-2">
<h3 class="font-display text-lg uppercase tracking-wider">
<h3 class="font-serif text-xl font-semibold">
{{ t('reservations.contactCard.title') }}
</h3>
<dl class="mt-4 space-y-4 text-sm">
@ -110,6 +117,6 @@ const kinds = ['weekend', 'retreat', 'gathering', 'residency'] as const
</dl>
</Card>
</div>
</PageSection>
</PageShell>
</section>
</div>
</template>

View file

@ -3,9 +3,6 @@ import { useI18n } from 'vue-i18n'
import { RouterLink } from 'vue-router'
import { Button } from '@/components/ui/button'
import { Card } from '@/components/ui/card'
import PageHero from '@/components/layout/PageHero.vue'
import PageSection from '@/components/layout/PageSection.vue'
import PageShell from '@/components/layout/PageShell.vue'
const { t } = useI18n()
@ -14,88 +11,101 @@ const applySteps = ['stepOne', 'stepTwo', 'stepThree'] as const
</script>
<template>
<PageShell>
<div>
<!-- Hero -->
<PageHero
:kicker="t('symposium.hero.kicker')"
:title="t('symposium.hero.title')"
:lede="t('symposium.hero.lede')"
>
<p class="mt-6 inline-block rounded-md bg-card px-3 py-2 text-base">
{{ t('symposium.hero.dates') }}
</p>
<template #aside>
<section class="border-b border-border bg-secondary/40">
<div class="mx-auto grid max-w-7xl gap-10 px-4 py-16 lg:grid-cols-2 lg:gap-14 lg:px-6 lg:py-20">
<div>
<p class="text-xs uppercase tracking-[0.2em] text-accent">
{{ t('symposium.hero.kicker') }}
</p>
<h1
class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl"
>
{{ t('symposium.hero.title') }}
</h1>
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ t('symposium.hero.lede') }}
</p>
<p class="mt-6 inline-block rounded-md bg-card px-3 py-2 font-serif text-base">
{{ t('symposium.hero.dates') }}
</p>
</div>
<img
src="https://static.wixstatic.com/media/f1cbb8_72455a57197944e2b3cd2d895d459ba0~mv2.jpg"
alt=""
class="aspect-[4/3] w-full rounded-lg object-cover"
loading="lazy"
/>
</template>
</PageHero>
</div>
</section>
<!-- Overview -->
<PageSection width="narrow">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<section class="mx-auto max-w-4xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('symposium.overview.title') }}
</h2>
<p class="mt-5 max-w-prose text-base leading-relaxed">
{{ t('symposium.overview.body') }}
</p>
</PageSection>
</section>
<!-- What's included -->
<PageSection>
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
{{ t('symposium.includedTitle') }}
</h2>
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-4">
<Card v-for="key in included" :key="key" class="bg-background p-6">
<h3 class="font-display text-lg uppercase tracking-wider">
{{ t(`symposium.included.${key}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`symposium.included.${key}Body`) }}
</p>
</Card>
<section class="border-y border-border bg-card">
<div class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('symposium.includedTitle') }}
</h2>
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-4">
<Card v-for="key in included" :key="key" class="bg-background p-6">
<h3 class="font-serif text-lg font-semibold">
{{ t(`symposium.included.${key}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`symposium.included.${key}Body`) }}
</p>
</Card>
</div>
</div>
</PageSection>
</section>
<!-- Eligibility -->
<PageSection width="narrow">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<section class="mx-auto max-w-4xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('symposium.eligibility.title') }}
</h2>
<p class="mt-5 max-w-prose text-base leading-relaxed">
{{ t('symposium.eligibility.body') }}
</p>
</PageSection>
</section>
<!-- How to apply -->
<PageSection>
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
{{ t('symposium.applyTitle') }}
</h2>
<ol class="mt-8 grid gap-6 md:grid-cols-3">
<li v-for="step in applySteps" :key="step">
<Card class="p-6">
<h3 class="font-display text-lg uppercase tracking-wider">
{{ t(`symposium.apply.${step}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`symposium.apply.${step}Body`) }}
</p>
</Card>
</li>
</ol>
<div class="mt-10 flex flex-wrap items-center gap-3">
<Button as-child>
<RouterLink to="/opportunities">{{ t('symposium.ctaApply') }}</RouterLink>
</Button>
<Button as-child variant="outline">
<a href="mailto:chateaudufaune@ariege.io">{{ t('symposium.ctaContact') }}</a>
</Button>
<section class="border-t border-border bg-secondary/30">
<div class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('symposium.applyTitle') }}
</h2>
<ol class="mt-8 grid gap-6 md:grid-cols-3">
<li v-for="step in applySteps" :key="step">
<Card class="p-6">
<h3 class="font-serif text-lg font-semibold">
{{ t(`symposium.apply.${step}Title`) }}
</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`symposium.apply.${step}Body`) }}
</p>
</Card>
</li>
</ol>
<div class="mt-10 flex flex-wrap items-center gap-3">
<Button as-child>
<RouterLink to="/opportunities">{{ t('symposium.ctaApply') }}</RouterLink>
</Button>
<Button as-child variant="outline">
<a href="mailto:chateaudufaune@ariege.io">{{ t('symposium.ctaContact') }}</a>
</Button>
</div>
</div>
</PageSection>
</PageShell>
</section>
</div>
</template>

View file

@ -1,9 +1,6 @@
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
import { Card } from '@/components/ui/card'
import PageHero from '@/components/layout/PageHero.vue'
import PageSection from '@/components/layout/PageSection.vue'
import PageShell from '@/components/layout/PageShell.vue'
const { t } = useI18n()
@ -23,79 +20,91 @@ const team = ['patrick', 'coco', 'charlie'] as const
</script>
<template>
<PageShell>
<div>
<!-- Hero -->
<PageHero
:kicker="t('vision.hero.kicker')"
:title="t('vision.hero.title')"
:lede="t('vision.hero.lede')"
/>
<section class="border-b border-border bg-secondary/40">
<div class="mx-auto max-w-4xl px-4 py-16 lg:px-6 lg:py-24">
<p class="text-xs uppercase tracking-[0.2em] text-accent">
{{ t('vision.hero.kicker') }}
</p>
<h1 class="mt-3 font-serif text-5xl font-semibold leading-tight tracking-tight md:text-6xl">
{{ t('vision.hero.title') }}
</h1>
<p class="mt-6 max-w-prose text-lg leading-relaxed text-foreground/90">
{{ t('vision.hero.lede') }}
</p>
</div>
</section>
<!-- Mission -->
<PageSection width="narrow">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<section class="mx-auto max-w-4xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('vision.mission.title') }}
</h2>
<p class="mt-5 max-w-prose text-base leading-relaxed">
{{ t('vision.mission.body') }}
</p>
</PageSection>
</section>
<!-- Philosophy -->
<PageSection>
<div class="max-w-3xl">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
{{ t('vision.philosophyTitle') }}
</h2>
<p class="mt-3 text-foreground/80">{{ t('vision.philosophySubtitle') }}</p>
<section class="border-y border-border bg-card">
<div class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="max-w-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('vision.philosophyTitle') }}
</h2>
<p class="mt-3 text-muted-foreground">{{ t('vision.philosophySubtitle') }}</p>
</div>
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-5">
<Card v-for="(p, i) in philosophy" :key="p" class="bg-background p-5">
<div class="font-serif text-2xl text-accent">{{ i + 1 }}</div>
<h3 class="mt-2 font-serif text-lg font-semibold">
{{ t(`vision.philosophy.${p}Title`) }}
</h3>
<p class="mt-2 text-sm leading-relaxed text-foreground/85">
{{ t(`vision.philosophy.${p}Body`) }}
</p>
</Card>
</div>
</div>
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-5">
<Card v-for="(p, i) in philosophy" :key="p" class="bg-background p-5">
<div class="font-display text-2xl text-accent">{{ i + 1 }}</div>
<h3 class="mt-2 font-display text-lg uppercase tracking-wider">
{{ t(`vision.philosophy.${p}Title`) }}
</h3>
<p class="mt-2 text-sm leading-relaxed text-foreground/85">
{{ t(`vision.philosophy.${p}Body`) }}
</p>
</Card>
</div>
</PageSection>
</section>
<!-- Operational pillars -->
<PageSection>
<section class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<div class="max-w-3xl">
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('vision.pillarsTitle') }}
</h2>
<p class="mt-3 text-foreground/80">{{ t('vision.pillarsSubtitle') }}</p>
<p class="mt-3 text-muted-foreground">{{ t('vision.pillarsSubtitle') }}</p>
</div>
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
<Card v-for="p in pillars" :key="p" class="p-6">
<h3 class="font-display text-lg uppercase tracking-wider">{{ t(`vision.pillars.${p}Title`) }}</h3>
<h3 class="font-serif text-xl font-semibold">{{ t(`vision.pillars.${p}Title`) }}</h3>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`vision.pillars.${p}Body`) }}
</p>
</Card>
</div>
</PageSection>
</section>
<!-- Team -->
<PageSection>
<h2 class="font-display text-2xl uppercase tracking-wider md:text-3xl">
{{ t('vision.teamTitle') }}
</h2>
<div class="mt-8 grid gap-6 md:grid-cols-3">
<Card v-for="m in team" :key="m" class="p-6">
<h3 class="font-display text-lg uppercase tracking-wider">{{ t(`vision.team.${m}Name`) }}</h3>
<p class="mt-1 text-xs uppercase tracking-wider text-accent">
{{ t(`vision.team.${m}Role`) }}
</p>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`vision.team.${m}Body`) }}
</p>
</Card>
<section class="border-t border-border bg-secondary/30">
<div class="mx-auto max-w-7xl px-4 py-16 lg:px-6">
<h2 class="font-serif text-3xl font-semibold tracking-tight">
{{ t('vision.teamTitle') }}
</h2>
<div class="mt-8 grid gap-6 md:grid-cols-3">
<Card v-for="m in team" :key="m" class="p-6">
<h3 class="font-serif text-xl font-semibold">{{ t(`vision.team.${m}Name`) }}</h3>
<p class="mt-1 text-xs uppercase tracking-wider text-accent">
{{ t(`vision.team.${m}Role`) }}
</p>
<p class="mt-3 text-sm leading-relaxed text-foreground/85">
{{ t(`vision.team.${m}Body`) }}
</p>
</Card>
</div>
</div>
</PageSection>
</PageShell>
</section>
</div>
</template>