{"id":552,"date":"2026-08-01T18:22:37","date_gmt":"2026-08-01T18:22:37","guid":{"rendered":"https:\/\/elabaura.company\/index.php\/celestia-rp\/"},"modified":"2026-08-01T18:22:37","modified_gmt":"2026-08-01T18:22:37","slug":"celestia-rp","status":"publish","type":"page","link":"https:\/\/elabaura.company\/index.php\/celestia-rp\/","title":{"rendered":"Celestia RP"},"content":{"rendered":"    <div class=\"elabaura-home elabaura-celestia-details is-online\" data-celestia-details>\n        <style>\n            body.elabaura-celestia-page{background:#07101d}\n            body.elabaura-celestia-page .elabaura-main>.elabaura-wrap{width:100%;max-width:none!important;margin:0!important;padding:0!important}\n            body.elabaura-celestia-page .elabaura-main{width:100%;max-width:none!important;margin:0!important;padding:0!important;background:#07101d}\n            .elabaura-celestia-details{--cel-bg:#07101d;--cel-bg-soft:#0b1728;--cel-panel:#101d30;--cel-panel-2:#13243a;--cel-text:#f3f7ff;--cel-muted:#95a5bc;--cel-line:rgba(147,177,220,.15);--cel-blue:#5d8dff;--cel-violet:#8c68ff;--cel-green:#35e58a;position:relative;display:block;overflow:hidden;width:100%;max-width:none!important;min-height:100vh;margin:0!important;padding:0!important;border-radius:0!important;box-shadow:none!important;background:radial-gradient(circle at 12% 25%,rgba(60,102,186,.12),transparent 26%),radial-gradient(circle at 85% 60%,rgba(111,74,194,.11),transparent 26%),var(--cel-bg);color:var(--cel-text);font-family:Inter,Segoe UI,Arial,sans-serif}\n            .elabaura-celestia-details *{box-sizing:border-box}\n            .celestia-detail-hero{position:relative;isolation:isolate;display:grid;place-items:center;min-height:clamp(650px,82vh,860px);overflow:hidden;background:#07101d}\n            .celestia-detail-hero .elabaura-service-banner{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;border:0;border-radius:0;aspect-ratio:auto;background:#07101d}\n            .celestia-detail-hero .elabaura-service-banner img{width:100%;height:100%;object-fit:cover;object-position:center 55%;filter:saturate(.92) contrast(1.07)}\n            .celestia-hero-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(5,11,22,.2) 0%,rgba(5,11,22,.38) 35%,rgba(5,11,22,.9) 92%,#07101d 100%),linear-gradient(90deg,rgba(7,16,29,.45),transparent 55%,rgba(7,16,29,.2));pointer-events:none}\n            .celestia-detail-hero-body{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;width:min(1100px,calc(100% - 40px));padding:110px 20px 65px;text-align:center}\n            .celestia-detail-eyebrow{display:inline-flex;align-items:center;gap:9px;margin:0 0 20px;padding:8px 14px;border:1px solid rgba(93,141,255,.42);border-radius:999px;background:rgba(10,24,46,.72);box-shadow:0 0 30px rgba(79,120,225,.16);color:#b8cdff;font-size:.76rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase;backdrop-filter:blur(12px)}\n            .celestia-live-dot{width:9px;height:9px;border-radius:50%;background:var(--cel-green);box-shadow:0 0 0 5px rgba(53,229,138,.1),0 0 18px rgba(53,229,138,.75);animation:celestiaPulse 2s infinite}\n            .elabaura-celestia-details.is-offline .celestia-live-dot{background:#ff637c;box-shadow:0 0 0 5px rgba(255,99,124,.1),0 0 18px rgba(255,99,124,.65)}\n            .celestia-detail-hero h1{max-width:1100px;margin:0;color:#fff;font-family:Impact,Arial Narrow,Arial,sans-serif;font-size:clamp(4rem,10vw,8.8rem);font-weight:900;letter-spacing:.015em;line-height:.86;text-transform:uppercase;text-shadow:0 12px 50px rgba(0,0,0,.48)}\n            .celestia-detail-hero h1 span{background:linear-gradient(100deg,#68a4ff,#896eff 55%,#b685ff);-webkit-background-clip:text;background-clip:text;color:transparent}\n            .celestia-detail-lead{max-width:780px;margin:25px auto 0;color:#c6d2e3;font-size:clamp(1rem,2vw,1.22rem);line-height:1.7;text-shadow:0 4px 20px rgba(0,0,0,.75)}\n            .celestia-detail-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:30px}\n            .celestia-detail-actions .elabaura-button{min-height:52px;margin:0;padding:0 24px;border:1px solid rgba(255,255,255,.13);border-radius:10px;background:linear-gradient(135deg,#4e83f3,#765cf2);box-shadow:0 12px 30px rgba(58,91,190,.3);color:#fff;font-weight:900;letter-spacing:.04em;text-transform:uppercase}\n            .celestia-detail-actions .elabaura-button:hover{transform:translateY(-2px);box-shadow:0 16px 38px rgba(58,91,190,.42)}\n            .celestia-detail-actions .elabaura-button-outline{background:rgba(13,24,42,.74);box-shadow:none;backdrop-filter:blur(10px)}\n            .celestia-hero-facts{display:grid;grid-template-columns:repeat(3,minmax(130px,1fr));gap:1px;width:min(620px,100%);margin-top:38px;overflow:hidden;border:1px solid rgba(255,255,255,.12);border-radius:14px;background:rgba(7,17,31,.72);backdrop-filter:blur(14px)}\n            .celestia-hero-fact{padding:14px 16px;border-right:1px solid rgba(255,255,255,.1)}\n            .celestia-hero-fact:last-child{border-right:0}\n            .celestia-hero-fact strong{display:block;color:#fff;font-size:1.15rem}\n            .celestia-hero-fact span{display:block;margin-top:3px;color:#8fa0b8;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}\n            .celestia-detail-nav{position:relative;z-index:30;display:flex;justify-content:center;gap:4px;overflow-x:auto;padding:12px 20px;border-top:1px solid var(--cel-line);border-bottom:1px solid var(--cel-line);background:rgba(7,16,29,.92);backdrop-filter:blur(18px)}\n            .celestia-detail-nav a{flex:0 0 auto;padding:10px 15px;border-radius:8px;color:#91a1b8;text-decoration:none;font-size:.76rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase}\n            .celestia-detail-nav a:hover,.celestia-detail-nav a:focus-visible{background:rgba(93,141,255,.14);color:#fff}\n            .celestia-live-grid,.celestia-info-grid,.celestia-content-panel{width:min(1180px,calc(100% - 40px));margin-left:auto;margin-right:auto}\n            .celestia-live-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding-top:54px;scroll-margin-top:78px}\n            .celestia-live-card{position:relative;isolation:isolate;min-height:205px;overflow:hidden;padding:23px;border:1px solid var(--cel-line);border-radius:18px;background:linear-gradient(145deg,rgba(19,36,58,.94),rgba(11,23,39,.98));box-shadow:0 20px 45px rgba(0,0,0,.2);display:flex;flex-direction:column;justify-content:space-between}\n            .celestia-live-card:before{content:\"\";position:absolute;z-index:-1;width:150px;height:150px;right:-65px;top:-65px;border-radius:50%;background:radial-gradient(circle,rgba(93,141,255,.2),transparent 70%)}\n            .celestia-live-card.is-server:before{background:radial-gradient(circle,rgba(53,229,138,.22),transparent 70%)}\n            .celestia-live-card-label{color:#7e91ab;font-size:.71rem;font-weight:900;letter-spacing:.13em;text-transform:uppercase}\n            .celestia-live-card-value{color:#fff;font-family:Arial Narrow,Arial,sans-serif;font-size:clamp(2rem,4vw,3.2rem);font-weight:900;line-height:1;text-transform:uppercase}\n            .celestia-live-card.is-server .celestia-live-card-value{color:var(--cel-green)}\n            .celestia-live-card.is-players .celestia-live-card-value{color:#70a5ff}\n            .celestia-live-card-value{display:inline-block;width:max-content;max-width:100%;background-size:220% 100%;background-position:0 50%;animation:celestiaTextSheen 4.8s ease-in-out infinite}\n            .celestia-live-card.is-server .celestia-live-card-value{background-image:linear-gradient(105deg,#25c96f 0%,#67ffad 38%,#effff6 50%,#46ec92 62%,#24bd68 100%);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 8px rgba(53,229,138,.46)) drop-shadow(0 0 22px rgba(53,229,138,.18))}\n            .celestia-live-card.is-players .celestia-live-card-value{background-image:linear-gradient(105deg,#4c7fff 0%,#7bb8ff 38%,#f2f8ff 50%,#72a6ff 62%,#4e76ef 100%);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 8px rgba(93,141,255,.5)) drop-shadow(0 0 24px rgba(93,141,255,.2));animation-delay:.55s}\n            .celestia-live-card:nth-child(3) .celestia-live-card-value{background-image:linear-gradient(105deg,#d2c3ff 0%,#ffffff 42%,#9d7bff 54%,#f5f0ff 67%,#b69cff 100%);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 8px rgba(140,104,255,.46)) drop-shadow(0 0 24px rgba(140,104,255,.2));animation-delay:1.05s}\n            .celestia-live-card.is-players .celestia-live-card-meta{color:#a8c7ff;text-shadow:0 0 8px rgba(93,141,255,.55),0 0 20px rgba(93,141,255,.2)}\n            .celestia-hero-fact:nth-child(3) strong{display:inline-block;background:linear-gradient(100deg,#78a8ff,#f2f6ff 48%,#ab91ff 62%,#78a8ff);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 8px rgba(93,141,255,.36));animation:celestiaTextSheen 5.2s ease-in-out infinite}\n            .js-celestia-ping{display:inline-block;min-width:1.5em;color:#a8c9ff;font-weight:900;text-shadow:0 0 7px rgba(93,141,255,.75),0 0 18px rgba(93,141,255,.35)}\n            .js-celestia-updated{color:#a9c7ff!important;text-shadow:0 0 8px rgba(93,141,255,.42)}\n            .celestia-live-card-meta{padding-top:14px;border-top:1px solid rgba(255,255,255,.09);color:#8fa0b8;font-size:.78rem}\n            .celestia-info-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:18px;padding-top:54px;scroll-margin-top:78px}\n            .celestia-content-panel{margin-top:54px;padding:30px;border:1px solid var(--cel-line);border-radius:20px;background:linear-gradient(145deg,rgba(16,29,48,.97),rgba(10,22,38,.97));box-shadow:0 22px 55px rgba(0,0,0,.18);scroll-margin-top:78px}\n            .celestia-info-grid .celestia-content-panel{width:auto;margin:0}\n            .celestia-content-panel h2{margin:0 0 13px;color:#fff;font-family:Arial Narrow,Arial,sans-serif;font-size:clamp(1.65rem,3vw,2.3rem);font-weight:900;letter-spacing:.015em;text-transform:uppercase}\n            .celestia-content-panel p{color:var(--cel-muted);line-height:1.7}\n            .celestia-definition-list{display:grid;gap:10px;margin-top:18px}\n            .celestia-definition-item{padding:15px 17px;border:1px solid rgba(93,141,255,.14);border-left:3px solid #668fff;border-radius:10px;background:rgba(93,141,255,.055)}\n            .celestia-definition-item strong{display:block;color:#f3f7ff}\n            .celestia-definition-item span{display:block;margin-top:4px;color:#92a3ba;font-size:.86rem;line-height:1.5}\n            .celestia-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}\n            .celestia-section-head h2{margin:0}\n            .celestia-section-head p{margin:6px 0 0}\n            .celestia-sync-badge{flex:0 0 auto;padding:7px 11px;border:1px solid rgba(93,141,255,.24);border-radius:999px;background:rgba(93,141,255,.1);color:#9abaff;font-size:.7rem;font-weight:900;text-transform:uppercase}\n            .celestia-jobs-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}\n            .celestia-job{padding:17px;border:1px solid var(--cel-line);border-radius:14px;background:rgba(20,38,62,.72)}\n            .celestia-job-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}\n            .celestia-job h3{margin:0;color:#fff;font-size:1.05rem}\n            .celestia-job p{margin:8px 0 0;color:#8fa0b8;font-size:.84rem;line-height:1.5}\n            .celestia-job-location{display:block;margin-top:11px;color:#8db3ff;font-size:.78rem;font-weight:800}\n            .celestia-recruitment{padding:4px 8px;border-radius:999px;background:rgba(255,255,255,.08);color:#8694a6;font-size:.65rem;font-weight:900;white-space:nowrap;text-transform:uppercase}\n            .celestia-recruitment.is-open{background:rgba(53,229,138,.14);color:#65efa2}\n            .celestia-jobs-empty{grid-column:1\/-1;padding:34px;border:1px dashed rgba(126,157,203,.24);border-radius:14px;background:rgba(7,17,31,.35);text-align:center;color:#889ab2}\n            .celestia-map-shell{overflow:hidden;padding:0;margin-bottom:64px}\n            .celestia-map-header{padding:28px 28px 17px}\n            .celestia-map-toolbar{display:flex;gap:8px;flex-wrap:wrap}\n            .celestia-map-control{width:42px;height:42px;border:1px solid rgba(126,157,203,.24);border-radius:9px;background:#142640;color:#c8d8ef;font-weight:900;cursor:pointer}\n            .celestia-map-control:hover{background:#1c3455;color:#fff}\n            .celestia-map-viewport{position:relative;overflow:hidden;height:min(68vh,640px);min-height:420px;border-top:1px solid var(--cel-line);background:#07131e;touch-action:none;cursor:grab}\n            .celestia-map-viewport.is-dragging{cursor:grabbing}\n            .celestia-map-canvas{position:absolute;left:50%;top:50%;width:1000px;height:1000px;transform-origin:center;background-color:#102432;background-image:linear-gradient(rgba(110,171,190,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(110,171,190,.06) 1px,transparent 1px);background-size:50px 50px}\n            .celestia-map-canvas.has-background{background-size:cover;background-position:center;background-repeat:no-repeat}\n            .celestia-map-terrain{position:absolute;inset:65px 80px 75px 95px;border:2px solid rgba(148,195,174,.28);border-radius:48% 42% 44% 38%;background:radial-gradient(circle at 64% 70%,rgba(166,119,68,.25),transparent 26%),radial-gradient(circle at 45% 35%,rgba(80,125,92,.4),transparent 39%),linear-gradient(145deg,#26433a,#1c312c 62%,#383529);box-shadow:0 0 70px rgba(0,0,0,.35)}\n            .celestia-map-terrain:before,.celestia-map-terrain:after{content:\"\";position:absolute;border:2px solid rgba(230,216,171,.18);border-radius:50%}\n            .celestia-map-terrain:before{inset:14% 18% 17% 22%}.celestia-map-terrain:after{inset:38% 9% 11% 31%}\n            .celestia-map-label{position:absolute;z-index:2;color:rgba(255,255,255,.46);font-size:14px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;pointer-events:none}\n            .celestia-map-label.is-north{left:47%;top:12%}.celestia-map-label.is-city{left:51%;top:72%}.celestia-map-label.is-desert{left:59%;top:39%}\n            .celestia-map-markers{position:absolute;inset:0;z-index:4}\n            .celestia-map-marker{position:absolute;width:34px;height:34px;margin:-17px 0 0 -17px;border:3px solid #fff;border-radius:50% 50% 50% 0;background:#5d8dff;color:#fff;box-shadow:0 8px 20px rgba(0,0,0,.35);transform:rotate(-45deg);cursor:pointer}\n            .celestia-map-marker span{display:grid;place-items:center;width:100%;height:100%;font-size:11px;font-weight:900;transform:rotate(45deg)}\n            .celestia-map-marker.is-recruiting{background:#35d982}\n            .celestia-map-empty{position:absolute;left:50%;bottom:22px;z-index:6;transform:translateX(-50%);width:min(520px,calc(100% - 30px));padding:10px 14px;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:rgba(5,12,20,.84);color:#9baabd;font-size:.78rem;text-align:center;backdrop-filter:blur(8px)}\n            .celestia-map-legend{display:flex;gap:15px;flex-wrap:wrap;padding:14px 22px 20px;color:#8394aa;font-size:.78rem}\n            .celestia-map-legend span:before{content:\"\";display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:50%;background:#5d8dff}.celestia-map-legend span:last-child:before{background:#35d982}\n            .celestia-detail-hero-body>*{animation:celestiaRise .65s ease both}.celestia-detail-hero-body>*:nth-child(2){animation-delay:.06s}.celestia-detail-hero-body>*:nth-child(3){animation-delay:.12s}.celestia-detail-hero-body>*:nth-child(4){animation-delay:.18s}.celestia-detail-hero-body>*:nth-child(5){animation-delay:.24s}\n            @keyframes celestiaRise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}\n            @keyframes celestiaPulse{0%,100%{opacity:1}50%{opacity:.5}}\n            @keyframes celestiaTextSheen{0%,18%{background-position:0 50%}48%,62%{background-position:100% 50%}100%{background-position:0 50%}}\n            @media(max-width:980px){.celestia-live-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.celestia-info-grid{grid-template-columns:1fr}.celestia-detail-hero{min-height:720px}}\n            @media(max-width:620px){.celestia-detail-hero{min-height:700px}.celestia-detail-hero-body{width:calc(100% - 24px);padding:95px 6px 45px}.celestia-detail-hero h1{font-size:clamp(3.7rem,20vw,5.8rem)}.celestia-detail-lead{font-size:.96rem}.celestia-detail-actions{display:grid;width:100%}.celestia-detail-actions .elabaura-button{text-align:center}.celestia-hero-facts{grid-template-columns:1fr}.celestia-hero-fact{border-right:0;border-bottom:1px solid rgba(255,255,255,.1)}.celestia-hero-fact:last-child{border-bottom:0}.celestia-live-grid,.celestia-info-grid,.celestia-content-panel{width:calc(100% - 24px)}.celestia-live-grid{grid-template-columns:1fr;padding-top:30px}.celestia-content-panel,.celestia-info-grid{margin-top:30px;padding-top:0}.celestia-content-panel{padding:20px}.celestia-info-grid .celestia-content-panel{padding:20px}.celestia-section-head{display:block}.celestia-sync-badge{display:inline-block;margin-top:10px}.celestia-map-shell{padding:0}.celestia-map-header{padding:20px}.celestia-map-viewport{min-height:430px}.celestia-detail-nav{justify-content:flex-start}}\n            @media(prefers-reduced-motion:reduce){.celestia-detail-hero-body>*,.celestia-live-card-value,.celestia-hero-fact:nth-child(3) strong{animation:none}.celestia-live-dot{animation:none}}\n        <\/style>\n\n        <section class=\"celestia-detail-hero\" id=\"celestia-top\">\n                        <div class=\"elabaura-service-banner\">\n                        <img decoding=\"async\" src=\"https:\/\/elabaura.company\/wp-content\/themes\/elabaura-theme\/assets\/celestia-hero-v1.png\" alt=\"Banni\u00e8re Celestia RP\">\n                    <\/div>\n                    <div class=\"celestia-hero-overlay\"><\/div>\n            <div class=\"celestia-detail-hero-body\">\n                <p class=\"celestia-detail-eyebrow\"><span class=\"celestia-live-dot\" aria-hidden=\"true\"><\/span><span class=\"js-celestia-hero-status\">Serveur en ligne<\/span> \u00b7 Semi whitelist \u00b7 Fran\u00e7ais<\/p>\n                <h1>CELESTIA <span>RP<\/span><\/h1>\n                <p class=\"celestia-detail-lead\">Un monde vivant, une communaut\u00e9 exigeante et la libert\u00e9 de construire une histoire qui vous appartient. Entrez dans une ville o\u00f9 chaque d\u00e9cision laisse une trace.<\/p>\n                <div class=\"celestia-detail-actions\">\n                    <a class=\"elabaura-button\" href=\"https:\/\/elabaura.company\/index.php\/connexion\/\">Connexion requise pour rejoindre<\/a>\n                    <a class=\"elabaura-button elabaura-button-outline\" href=\"#celestia-concept\">D\u00e9couvrir l\u2019univers<\/a>\n                <\/div>\n                <div class=\"celestia-hero-facts\" aria-label=\"Chiffres cl\u00e9s Celestia RP\">\n                    <div class=\"celestia-hero-fact\"><strong><span class=\"js-celestia-max\">48<\/span> places<\/strong><span>Capacit\u00e9 du serveur<\/span><\/div>\n                    <div class=\"celestia-hero-fact\"><strong><span class=\"js-celestia-resources\">35<\/span> ressources<\/strong><span>Contenu charg\u00e9<\/span><\/div>\n                    <div class=\"celestia-hero-fact\"><strong>Temps r\u00e9el<\/strong><span>Lecture toutes les 2 secondes<\/span><\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <section class=\"celestia-live-grid\" id=\"celestia-live\" aria-label=\"\u00c9tat en direct de Celestia RP\">\n            <article class=\"celestia-live-card is-server\">\n                <span class=\"celestia-live-card-label\">Serveur FiveM<\/span>\n                <strong class=\"celestia-live-card-value js-celestia-status\">OUVERT<\/strong>\n                <span class=\"celestia-live-card-meta js-celestia-address\">Adresse r\u00e9serv\u00e9e aux membres<\/span>\n            <\/article>\n            <article class=\"celestia-live-card is-players\">\n                <span class=\"celestia-live-card-label\">Joueurs connect\u00e9s<\/span>\n                <strong class=\"celestia-live-card-value\"><span class=\"js-celestia-players\">0<\/span>\/<span class=\"js-celestia-max\">48<\/span><\/strong>\n                <span class=\"celestia-live-card-meta\">Actualisation en temps r\u00e9el<\/span>\n            <\/article>\n            <article class=\"celestia-live-card\">\n                <span class=\"celestia-live-card-label\">Ressources charg\u00e9es<\/span>\n                <strong class=\"celestia-live-card-value js-celestia-resources\">35<\/strong>\n                <span class=\"celestia-live-card-meta\">Lecture directe de info.json<\/span>\n            <\/article>\n            <article class=\"celestia-live-card\">\n                <span class=\"celestia-live-card-label\">Mode de jeu<\/span>\n                <strong class=\"celestia-live-card-value js-celestia-mode\">ESX Legacy<\/strong>\n                <span class=\"celestia-live-card-meta\">Ping <span class=\"js-celestia-ping\">3<\/span> ms<\/span>\n            <\/article>\n        <\/section>\n\n        <section class=\"celestia-info-grid\" id=\"celestia-concept\">\n            <article class=\"celestia-content-panel\">\n                <h2>Que signifie \u00ab semi-whitelist \u00bb ?<\/h2>\n                <p>Un serveur semi-whitelist reste accessible plus facilement qu\u2019un serveur enti\u00e8rement whitelist\u00e9, mais certaines fonctions sensibles demandent une validation suppl\u00e9mentaire. L\u2019objectif est de laisser les nouveaux joueurs d\u00e9couvrir l\u2019univers tout en prot\u00e9geant les r\u00f4les qui influencent fortement l\u2019\u00e9conomie, la justice ou la s\u00e9curit\u00e9.<\/p>\n                <div class=\"celestia-definition-list\">\n                    <div class=\"celestia-definition-item\"><strong>Acc\u00e8s encadr\u00e9<\/strong><span>La communaut\u00e9 peut rejoindre le serveur selon les conditions annonc\u00e9es par Celestia.<\/span><\/div>\n                    <div class=\"celestia-definition-item\"><strong>M\u00e9tiers sensibles contr\u00f4l\u00e9s<\/strong><span>Police, secours, justice ou postes de direction peuvent demander une candidature et une validation.<\/span><\/div>\n                    <div class=\"celestia-definition-item\"><strong>Roleplay exig\u00e9<\/strong><span>Chaque joueur respecte le r\u00e8glement, son personnage et la coh\u00e9rence des sc\u00e8nes.<\/span><\/div>\n                <\/div>\n            <\/article>\n            <aside class=\"celestia-content-panel\">\n                <h2>Informations en direct<\/h2>\n                <p><strong>Carte :<\/strong> <span class=\"js-celestia-mapname\">San Andreas<\/span><\/p>\n                <p><strong>Capacit\u00e9 :<\/strong> <span class=\"js-celestia-capacity\">48<\/span> joueurs<\/p>\n                <p><strong>Statut :<\/strong> <span class=\"js-celestia-status-copy\">En ligne<\/span><\/p>\n                <p class=\"js-celestia-updated\">Actualisation automatique toutes les 2 secondes.<\/p>\n            <\/aside>\n        <\/section>\n\n        <section class=\"celestia-content-panel\" id=\"celestia-jobs\">\n            <div class=\"celestia-section-head\">\n                <div>\n                    <h2>M\u00e9tiers disponibles<\/h2>\n                    <p>Cette liste recevra automatiquement les m\u00e9tiers, leurs informations et leur \u00e9tat de recrutement depuis le futur script Celestia.<\/p>\n                <\/div>\n                <span class=\"celestia-sync-badge\">Synchronisation pr\u00e9par\u00e9e<\/span>\n            <\/div>\n            <div class=\"celestia-jobs-list\" data-celestia-jobs-list>\n                                    <div class=\"celestia-jobs-empty\">Aucun m\u00e9tier n\u2019est encore synchronis\u00e9. La rubrique est pr\u00eate pour le futur script serveur.<\/div>\n                            <\/div>\n        <\/section>\n\n        <section class=\"celestia-content-panel celestia-map-shell\" id=\"celestia-map\">\n            <div class=\"celestia-map-header\">\n                <div class=\"celestia-section-head\">\n                    <div>\n                        <h2>Carte interactive des m\u00e9tiers<\/h2>\n                        <p>Zoomez, d\u00e9placez la carte et s\u00e9lectionnez les futurs marqueurs de m\u00e9tiers.<\/p>\n                    <\/div>\n                    <div class=\"celestia-map-toolbar\" aria-label=\"Commandes de la carte\">\n                        <button type=\"button\" class=\"celestia-map-control\" data-map-zoom-in aria-label=\"Zoom avant\">+<\/button>\n                        <button type=\"button\" class=\"celestia-map-control\" data-map-zoom-out aria-label=\"Zoom arri\u00e8re\">\u2212<\/button>\n                        <button type=\"button\" class=\"celestia-map-control\" data-map-reset aria-label=\"R\u00e9initialiser la carte\">\u21ba<\/button>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"celestia-map-viewport\" data-celestia-map>\n                <div class=\"celestia-map-canvas\" data-map-canvas>\n                    <div class=\"celestia-map-terrain\"><\/div>                    <span class=\"celestia-map-label is-north\">Blaine County<\/span>\n                    <span class=\"celestia-map-label is-desert\">Grand Senora<\/span>\n                    <span class=\"celestia-map-label is-city\">Los Santos<\/span>\n                    <div class=\"celestia-map-markers\" data-map-markers><\/div>\n                <\/div>\n                <div class=\"celestia-map-empty\" data-map-empty>Les marqueurs appara\u00eetront d\u00e8s que le script transmettra les coordonn\u00e9es des m\u00e9tiers.<\/div>\n            <\/div>\n            <div class=\"celestia-map-legend\"><span>M\u00e9tier disponible<\/span><span>Recrutement ouvert<\/span><\/div>\n        <\/section>\n\n        <script>\n        document.addEventListener('DOMContentLoaded', function () {\n            var root = document.querySelector('[data-celestia-details]');\n            if (!root) {\n                return;\n            }\n\n            var ajaxUrl = \"https:\\\/\\\/elabaura.company\\\/wp-admin\\\/admin-ajax.php\";\n            var loggedIn = false;\n            var jobs = [];\n            var jobsList = root.querySelector('[data-celestia-jobs-list]');\n            var viewport = root.querySelector('[data-celestia-map]');\n            var canvas = root.querySelector('[data-map-canvas]');\n            var markers = root.querySelector('[data-map-markers]');\n            var mapEmpty = root.querySelector('[data-map-empty]');\n            var scale = 0.72;\n            var offsetX = 0;\n            var offsetY = 0;\n            var dragging = false;\n            var startX = 0;\n            var startY = 0;\n\n            var setText = function (selector, value) {\n                root.querySelectorAll(selector).forEach(function (element) {\n                    element.textContent = value;\n                });\n            };\n\n            var refreshStatus = function () {\n                fetch(ajaxUrl + '?action=elabaura_celestia_status&t=' + Date.now(), {\n                    credentials: 'same-origin',\n                    cache: 'no-store'\n                })\n                    .then(function (response) { return response.ok ? response.json() : null; })\n                    .then(function (payload) {\n                        if (!payload || !payload.success || !payload.data) {\n                            return;\n                        }\n                        var status = payload.data;\n                        var onlineNow = status.status === 'online';\n                        root.classList.toggle('is-online', onlineNow);\n                        root.classList.toggle('is-offline', !onlineNow);\n                        setText('.js-celestia-hero-status', onlineNow ? 'Serveur en ligne' : 'Serveur hors ligne');\n                        setText('.js-celestia-status', onlineNow ? 'OUVERT' : 'FERM\u00c9');\n                        setText('.js-celestia-status-copy', onlineNow ? 'En ligne' : 'Hors ligne');\n                        setText('.js-celestia-players', String(status.players || 0));\n                        setText('.js-celestia-max', status.max_players ? String(status.max_players) : '\u2014');\n                        setText('.js-celestia-capacity', status.max_players ? String(status.max_players) : '\u2014');\n                        setText('.js-celestia-resources', status.resources_available ? String(status.resource_count || 0) : '\u2014');\n                        setText('.js-celestia-mode', status.gametype || 'Semi whitelist');\n                        setText('.js-celestia-mapname', status.map || '\u2014');\n                        setText('.js-celestia-ping', onlineNow && status.latency_ms ? String(status.latency_ms) : '\u2014');\n                        setText('.js-celestia-address', loggedIn && status.address ? status.address : 'Adresse r\u00e9serv\u00e9e aux membres');\n                        setText('.js-celestia-updated', 'Mis \u00e0 jour \u00e0 ' + new Date().toLocaleTimeString('fr-FR') + ' \u00b7 prochaine lecture dans 2 secondes');\n                    })\n                    .finally(function () {\n                        window.setTimeout(refreshStatus, 2000);\n                    });\n            };\n\n            var createJobCard = function (job) {\n                var card = document.createElement('article');\n                card.className = 'celestia-job';\n                var top = document.createElement('div');\n                top.className = 'celestia-job-top';\n                var title = document.createElement('h3');\n                title.textContent = job.title || 'M\u00e9tier';\n                var recruitment = document.createElement('span');\n                recruitment.className = 'celestia-recruitment' + (job.recruiting ? ' is-open' : '');\n                recruitment.textContent = job.recruiting ? 'Recrute' : 'Ne recrute pas';\n                top.appendChild(title);\n                top.appendChild(recruitment);\n                card.appendChild(top);\n                if (job.description) {\n                    var description = document.createElement('p');\n                    description.textContent = job.description;\n                    card.appendChild(description);\n                }\n                var location = document.createElement('span');\n                location.className = 'celestia-job-location';\n                location.textContent = job.location || 'Localisation \u00e0 venir';\n                card.appendChild(location);\n                return card;\n            };\n\n            var worldToMap = function (x, y) {\n                var minX = -4200;\n                var maxX = 4500;\n                var minY = -4500;\n                var maxY = 8500;\n                return {\n                    left: Math.max(2, Math.min(98, ((x - minX) \/ (maxX - minX)) * 100)),\n                    top: Math.max(2, Math.min(98, (1 - ((y - minY) \/ (maxY - minY))) * 100))\n                };\n            };\n\n            var renderMapMarkers = function () {\n                markers.innerHTML = '';\n                var located = jobs.filter(function (job) {\n                    return job.coords\n                        && job.coords.x !== null\n                        && job.coords.y !== null\n                        && job.coords.x !== ''\n                        && job.coords.y !== ''\n                        && Number.isFinite(Number(job.coords.x))\n                        && Number.isFinite(Number(job.coords.y));\n                });\n                mapEmpty.hidden = located.length > 0;\n                located.forEach(function (job) {\n                    var point = worldToMap(Number(job.coords.x), Number(job.coords.y));\n                    var marker = document.createElement('button');\n                    marker.type = 'button';\n                    marker.className = 'celestia-map-marker' + (job.recruiting ? ' is-recruiting' : '');\n                    marker.style.left = point.left + '%';\n                    marker.style.top = point.top + '%';\n                    marker.title = (job.title || 'M\u00e9tier') + ' \u00b7 ' + (job.recruiting ? 'Recrutement ouvert' : 'Ne recrute pas');\n                    marker.setAttribute('aria-label', marker.title);\n                    var code = document.createElement('span');\n                    code.textContent = (job.title || 'M').substring(0, 2).toUpperCase();\n                    marker.appendChild(code);\n                    markers.appendChild(marker);\n                });\n            };\n\n            var renderJobs = function () {\n                jobsList.innerHTML = '';\n                if (!jobs.length) {\n                    var empty = document.createElement('div');\n                    empty.className = 'celestia-jobs-empty';\n                    empty.textContent = 'Aucun m\u00e9tier n\u2019est encore synchronis\u00e9. La rubrique est pr\u00eate pour le futur script serveur.';\n                    jobsList.appendChild(empty);\n                } else {\n                    jobs.forEach(function (job) {\n                        jobsList.appendChild(createJobCard(job));\n                    });\n                }\n                renderMapMarkers();\n            };\n\n            var refreshJobs = function () {\n                fetch(ajaxUrl + '?action=elabaura_celestia_jobs&t=' + Date.now(), {\n                    credentials: 'same-origin',\n                    cache: 'no-store'\n                })\n                    .then(function (response) { return response.ok ? response.json() : null; })\n                    .then(function (payload) {\n                        if (payload && payload.success && payload.data && Array.isArray(payload.data.jobs)) {\n                            jobs = payload.data.jobs;\n                            renderJobs();\n                        }\n                    })\n                    .finally(function () {\n                        window.setTimeout(refreshJobs, 5000);\n                    });\n            };\n\n            var applyTransform = function () {\n                canvas.style.transform = 'translate(calc(-50% + ' + offsetX + 'px), calc(-50% + ' + offsetY + 'px)) scale(' + scale + ')';\n            };\n            var setScale = function (nextScale) {\n                scale = Math.max(0.5, Math.min(2.4, nextScale));\n                applyTransform();\n            };\n\n            root.querySelector('[data-map-zoom-in]').addEventListener('click', function () { setScale(scale + 0.2); });\n            root.querySelector('[data-map-zoom-out]').addEventListener('click', function () { setScale(scale - 0.2); });\n            root.querySelector('[data-map-reset]').addEventListener('click', function () {\n                scale = 0.72;\n                offsetX = 0;\n                offsetY = 0;\n                applyTransform();\n            });\n\n            viewport.addEventListener('wheel', function (event) {\n                event.preventDefault();\n                setScale(scale + (event.deltaY < 0 ? 0.12 : -0.12));\n            }, { passive: false });\n            viewport.addEventListener('pointerdown', function (event) {\n                if (event.target.closest('.celestia-map-marker')) {\n                    return;\n                }\n                dragging = true;\n                startX = event.clientX - offsetX;\n                startY = event.clientY - offsetY;\n                viewport.classList.add('is-dragging');\n                viewport.setPointerCapture(event.pointerId);\n            });\n            viewport.addEventListener('pointermove', function (event) {\n                if (!dragging) {\n                    return;\n                }\n                offsetX = event.clientX - startX;\n                offsetY = event.clientY - startY;\n                applyTransform();\n            });\n            viewport.addEventListener('pointerup', function () {\n                dragging = false;\n                viewport.classList.remove('is-dragging');\n            });\n            viewport.addEventListener('pointercancel', function () {\n                dragging = false;\n                viewport.classList.remove('is-dragging');\n            });\n\n            applyTransform();\n            renderJobs();\n            refreshStatus();\n            refreshJobs();\n        });\n        <\/script>\n    <\/div>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-552","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/elabaura.company\/index.php\/wp-json\/wp\/v2\/pages\/552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elabaura.company\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elabaura.company\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elabaura.company\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/elabaura.company\/index.php\/wp-json\/wp\/v2\/comments?post=552"}],"version-history":[{"count":0,"href":"https:\/\/elabaura.company\/index.php\/wp-json\/wp\/v2\/pages\/552\/revisions"}],"wp:attachment":[{"href":"https:\/\/elabaura.company\/index.php\/wp-json\/wp\/v2\/media?parent=552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}