<!DOCTYPE html><html lang="fr"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Beecolis — Connexion</title><meta name="description" content="Connectez-vous à votre espace Beecolis."/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="icon" type="image/svg+xml" href="/app/brand/beecolis-picto.svg"/><link rel="icon" type="image/png" sizes="32x32" href="/app/brand/favicon-32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/app/brand/favicon-16.png"/><link rel="apple-touch-icon" sizes="180x180" href="/app/brand/apple-touch-icon.png"/><link rel="manifest" href="/app/brand/site.webmanifest"/><link rel="modulepreload" href="/app/assets/entry.client-Cf7S_jd7.js"/><link rel="modulepreload" href="/app/assets/jsx-runtime-C0lzDPiW.js"/><link rel="modulepreload" href="/app/assets/root-7e-HixyH.js"/><link rel="modulepreload" href="/app/assets/auth-MwpWBqId.js"/><link rel="modulepreload" href="/app/assets/catalog-T-mjyr2Z.js"/><link rel="modulepreload" href="/app/assets/login-B8d1odvj.js"/><link rel="stylesheet" href="/app/assets/root-DlD_MG5l.css"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&amp;display=swap"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&amp;family=JetBrains+Mono:wght@400;500&amp;display=swap"/></head><body><main class="flex min-h-screen items-center justify-center bg-[#FAF8F2] p-4"><div class="w-full max-w-sm space-y-4"><div class="flex flex-col items-center gap-6 rounded-2xl border border-[var(--color-border-default)] bg-white p-6 shadow-[var(--shadow-modal)] sm:p-8"><div class="flex flex-col items-center gap-2"><svg viewBox="0 0 200 120" role="img" aria-label="Beecolis" class="inline-block w-auto h-20 select-none"><g transform="translate(68,4)"><g><defs><clipPath id="_R_5hb5_-hex"><polygon points="32,8 54,21 54,46 32,58 10,46 10,21"></polygon></clipPath><clipPath id="_R_5hb5_-bee"><ellipse cx="0" cy="0" rx="7" ry="4.6"></ellipse></clipPath></defs><polygon points="32,8 54,21 54,46 32,58 10,46 10,21" fill="#161B22"></polygon><g clip-path="url(#_R_5hb5_-hex)" fill="#D97706"><rect x="0" y="24" width="64" height="5"></rect><rect x="0" y="33" width="64" height="5"></rect><rect x="0" y="42" width="64" height="5"></rect></g><polygon points="32,8 54,21 54,46 32,58 10,46 10,21" fill="none" stroke="#161B22" stroke-width="2.4" stroke-linejoin="round"></polygon><g transform="translate(52 11)"><ellipse cx="-1" cy="-5.5" rx="4.2" ry="2.8" fill="#FAF8F2" stroke="#161B22" stroke-width="0.9" transform="rotate(-22 -1 -5.5)"></ellipse><ellipse cx="3.5" cy="-5" rx="3.6" ry="2.4" fill="#FAF8F2" stroke="#161B22" stroke-width="0.9" transform="rotate(20 3.5 -5)"></ellipse><ellipse cx="0" cy="0" rx="7" ry="4.6" fill="#D97706" stroke="#161B22" stroke-width="1.1"></ellipse><g clip-path="url(#_R_5hb5_-bee)" fill="#161B22"><rect x="-1.2" y="-5" width="2.2" height="10"></rect><rect x="3" y="-5" width="2.2" height="10"></rect></g><path d="M 7 0 L 10.5 -1.2 L 10.5 1.2 Z" fill="#161B22"></path><circle cx="-6" cy="0" r="1.3" fill="#161B22"></circle></g></g></g><text x="100" y="100" text-anchor="middle" fill="#161B22" font-size="32" style="font-family:&#x27;Space Grotesk&#x27;, system-ui, sans-serif;font-weight:700;letter-spacing:-0.02em">beecolis</text></svg><p class="text-center text-[14px] text-[var(--color-text-secondary)]">Connectez-vous à votre espace Beecolis.</p></div><div class="w-full"><div><form class="space-y-4" noValidate=""><div class="space-y-1.5"><label for="_R_6hb5_" class="text-[13px] font-medium text-[var(--color-text-primary)]">Email</label><input id="_R_6hb5_" class="h-[var(--control-height-md)] w-full rounded-[var(--radius-6)] border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] px-3 text-[14px] text-[var(--color-text-primary)] placeholder:text-[var(--color-text-muted)] transition-[border-color,box-shadow] duration-150 ease-out focus-visible:border-[var(--color-border-focus)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg-surface)]" type="email" autoComplete="email" placeholder="vous@exemple.dz" name="email"/></div><div class="space-y-1.5"><label for="_R_ahb5_" class="text-[13px] font-medium text-[var(--color-text-primary)]">Mot de passe</label><input id="_R_ahb5_" class="h-[var(--control-height-md)] w-full rounded-[var(--radius-6)] border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] px-3 text-[14px] text-[var(--color-text-primary)] placeholder:text-[var(--color-text-muted)] transition-[border-color,box-shadow] duration-150 ease-out focus-visible:border-[var(--color-border-focus)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg-surface)]" type="password" autoComplete="current-password" placeholder="••••••••" name="password"/></div><button class="inline-flex items-center justify-center gap-2 rounded-[var(--radius-6)] border font-medium transition-[colors,opacity,box-shadow] duration-150 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--color-bg-app)] disabled:cursor-not-allowed disabled:opacity-60 bg-[var(--color-primary-500)] text-white border-[var(--color-primary-600)] hover:bg-[var(--color-primary-600)] h-[var(--control-height-md)] px-4 text-[14px] mt-2 w-full" type="submit">Se connecter</button></form></div></div></div></div></main><script>((storageKey2, restoreKey) => {
    if (!window.history.state || !window.history.state.key) {
      let key = Math.random().toString(32).slice(2);
      window.history.replaceState({ key }, "");
    }
    try {
      let positions = JSON.parse(sessionStorage.getItem(storageKey2) || "{}");
      let storedY = positions[restoreKey || window.history.state.key];
      if (typeof storedY === "number") {
        window.scrollTo(0, storedY);
      }
    } catch (error) {
      console.error(error);
      sessionStorage.removeItem(storageKey2);
    }
  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/app/","future":{"unstable_optimizeDeps":false,"unstable_passThroughRequests":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"unstable_previewServerPrerendering":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"lazy","manifestPath":"/__manifest"},"ssr":true,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script><script type="module" async="">;
import * as route0 from "/app/assets/root-7e-HixyH.js";
import * as route1 from "/app/assets/login-B8d1odvj.js";
  window.__reactRouterManifest = {
  "entry": {
    "module": "/app/assets/entry.client-Cf7S_jd7.js",
    "imports": [
      "/app/assets/jsx-runtime-C0lzDPiW.js"
    ],
    "css": []
  },
  "routes": {
    "root": {
      "id": "root",
      "path": "",
      "hasAction": false,
      "hasLoader": false,
      "hasClientAction": false,
      "hasClientLoader": false,
      "hasClientMiddleware": false,
      "hasDefaultExport": true,
      "hasErrorBoundary": true,
      "module": "/app/assets/root-7e-HixyH.js",
      "imports": [
        "/app/assets/jsx-runtime-C0lzDPiW.js",
        "/app/assets/auth-MwpWBqId.js",
        "/app/assets/catalog-T-mjyr2Z.js"
      ],
      "css": [
        "/app/assets/root-DlD_MG5l.css"
      ]
    },
    "routes/login": {
      "id": "routes/login",
      "parentId": "root",
      "index": true,
      "hasAction": false,
      "hasLoader": false,
      "hasClientAction": false,
      "hasClientLoader": false,
      "hasClientMiddleware": false,
      "hasDefaultExport": true,
      "hasErrorBoundary": false,
      "module": "/app/assets/login-B8d1odvj.js",
      "imports": [
        "/app/assets/jsx-runtime-C0lzDPiW.js",
        "/app/assets/auth-MwpWBqId.js"
      ],
      "css": []
    }
  },
  "url": "/app/assets/manifest-a623449f.js",
  "version": "a623449f"
};
  window.__reactRouterRouteModules = {"root":route0,"routes/login":route1};

import("/app/assets/entry.client-Cf7S_jd7.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$--><script>window.__reactRouterContext.streamController.close();</script><!--/$--><!--/$--></body></html>