*{box-sizing:border-box} :root{--ink:#172b38;--muted:#52666b;--mint:#bce5d4;--peach:#f5c29b}body{margin:0;background:#f8faf7;color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",sans-serif}body:before{content:"";position:fixed;inset:0;background:radial-gradient(ellipse at 80% 30%,#dcefe5 0,transparent 55%),radial-gradient(ellipse at 0 100%,#fae9dc 0,transparent 50%);z-index:-2}.texture{position:fixed;inset:0;background:url(assets/filigrane.png) center/850px;opacity:.025;pointer-events:none;z-index:-1}.wrap{width:min(1180px,calc(100% - 64px));margin:auto}header{padding:32px 0;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:12px;align-items:center;font-weight:760;font-size:23px;letter-spacing:-.8px;text-decoration:none;color:inherit}.brand img{width:42px;height:42px}.header-note{font-size:12px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.layout{display:grid;grid-template-columns:1.15fr 1fr;gap:32px;align-items:center;min-height:calc(100svh - 210px);padding:32px 0 56px}.badge{display:inline-flex;align-items:center;gap:9px;border:1px solid #c6d9ce;border-radius:30px;padding:9px 14px;font-size:12px;font-weight:650;background:#ffffff90}.dot{width:7px;height:7px;border-radius:50%;background:#3c8065;box-shadow:0 0 0 4px #3c806510;animation:breathe 3s ease-in-out infinite}h1{font-size:clamp(42px,5.2vw,70px);line-height:1.06;letter-spacing:-3px;font-weight:650;margin:26px 0}h1 em{font-style:normal;color:#42715d}.intro{font-size:17px;line-height:1.8;color:var(--muted);max-width:475px}.cta{display:inline-flex;gap:32px;align-items:center;margin:23px 0 15px;background:var(--ink);color:#fff;padding:17px 22px;border-radius:10px;text-decoration:none;font-size:14px;font-weight:600;transition:transform .2s,background .2s}.cta:hover{transform:translateY(-3px);background:#315546}a:focus-visible{outline:3px solid #a46a31;outline-offset:5px}.email{font-size:13px;color:var(--muted);margin:0}.email a{color:inherit;text-underline-offset:4px}.tags{display:flex;flex-wrap:wrap;gap:9px;margin-top:37px}.tags span{font-size:11px;border:1px solid #d8e1d9;border-radius:6px;padding:7px 10px;color:#516559}.stage{height:470px;position:relative;display:grid;place-items:center}.orbit{position:absolute;width:370px;height:370px;border:1px solid #adcabc75;border-radius:50%;animation:spin 35s linear infinite}.orbit:before{content:"";position:absolute;top:45px;left:45px;width:11px;height:11px;background:#78a78e;border:3px solid #f7faf7;border-radius:50%;box-shadow:0 0 0 1px #a2c5b1}.orbit.two{width:285px;height:285px;animation-direction:reverse;animation-duration:28s;border-style:dashed;border-color:#acc4b47a}.orbit.two:before{background:var(--peach);top:32px;left:32px}.core{position:relative;width:205px;height:205px;border-radius:44px;background:linear-gradient(140deg,#ffffffef,#e6f0e9);border:1px solid white;box-shadow:0 24px 70px #45684a15,inset 0 0 40px #fff;display:grid;place-items:center;animation:float 7s ease-in-out infinite;transform:rotate(-7deg)}.core img{width:139px;height:139px;opacity:.88}.float-card{position:absolute;padding:13px 17px;background:#fffffff0;box-shadow:0 12px 35px #3755400b;border:1px solid #e5ebe2;border-radius:12px;font-size:11px;display:flex;align-items:center;gap:10px;animation:float 6s ease-in-out infinite}.float-card b{display:grid;place-items:center;background:#e3f2e9;color:#527c65;width:25px;height:25px;border-radius:7px;font-size:13px}.card-top{top:58px;right:10px;animation-delay:-2s}.card-bottom{bottom:61px;left:1px;animation-delay:-4s}.caption{position:absolute;bottom:0;font-family:monospace;font-size:10px;letter-spacing:2px;color:#64806d;text-transform:uppercase}.status-line{display:flex;gap:8px;align-items:center}.status-line i{height:3px;width:22px;border-radius:5px;background:#90b49b;animation:bars 3s infinite}.status-line i:nth-child(2){animation-delay:.4s}.status-line i:nth-child(3){animation-delay:.8s}footer{border-top:1px solid #dbe4da;padding:22px 0;display:flex;justify-content:space-between;gap:15px;font-size:11px;color:var(--muted)}footer a{color:inherit;text-underline-offset:4px}.maintenance .dot{background:#b67e4c}.maintenance .badge{border-color:#e8d7c8}.maintenance h1 em{color:#a6744b}.maintenance .core{background:linear-gradient(140deg,#fff,#f6e6d7)}.maintenance .float-card b{background:#faecdf;color:#9a7048}@keyframes float{0%,100%{translate:0 0}50%{translate:0 -13px}}@keyframes spin{to{rotate:360deg}}@keyframes breathe{50%{box-shadow:0 0 0 7px #3c806508}}@keyframes bars{50%{opacity:.25}}@media(min-width:1500px){.layout{min-height:720px}}@media(max-width:800px){.wrap{width:calc(100% - 40px)}header{padding:23px 0}.header-note{font-size:9px}.layout{grid-template-columns:1fr;padding-top:30px;gap:5px}.stage{height:390px;max-width:450px;width:100%;margin:auto}h1{letter-spacing:-2px;max-width:600px}.intro{max-width:560px}.tags{margin-top:25px}.orbit{width:310px;height:310px}.orbit.two{width:245px;height:245px}.orbit:before{top:36px;left:36px}.orbit.two:before{top:26px;left:26px}.core{width:175px;height:175px}.core img{width:120px;height:120px}.card-top{top:34px;right:0}.card-bottom{bottom:45px;left:0}.caption{bottom:5px}footer{flex-wrap:wrap}.float-card{font-size:10px;padding:10px 12px}}@media(prefers-reduced-motion:reduce){*,*:before{animation:none!important;transition:none!important}}
/* Point du badge : halo qui se propage */
.badge .dot {
    position: relative;
    animation: status-blink 2.4s ease-in-out infinite;
}

.badge .dot::after {
    content: "";
    position: absolute;
    inset: -1px;
    border: 1px solid currentColor;
    border-radius: 50%;
    animation: status-wave 2.4s ease-out infinite;
}

.construction .dot {
    color: #3c8065;
}

.maintenance .dot {
    color: #b67e4c;
}

@keyframes status-blink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.55; }
}

@keyframes status-wave {
    0% {
        transform: scale(1);
        opacity: 0.7;
    }
    80%, 100% {
        transform: scale(3.5);
        opacity: 0;
    }
}

/* Logo : flottement doux et légère inclinaison */
.core {
    animation: logo-float 5s ease-in-out infinite;
}

@keyframes logo-float {
    0%, 100% {
        transform: translateY(0) rotate(-7deg);
    }
    50% {
        transform: translateY(-16px) rotate(-3deg);
    }
}

/* Petits encarts : mouvements décalés */
.float-card {
    animation: card-float 5s ease-in-out infinite;
}

.card-top {
    animation-delay: -1s;
}

.card-bottom {
    animation-delay: -3s;
}

@keyframes card-float {
    0%, 100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-12px);
    }
}

/* Orbites : leurs petits points tournent autour du logo */
.orbit {
    animation: orbit-turn 22s linear infinite;
}

.orbit.two {
    animation: orbit-turn 16s linear infinite reverse;
}

@keyframes orbit-turn {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* Suppression des anciens décalages pour éviter leur cumul */
.core,
.float-card {
    translate: none;
}

.orbit {
    rotate: none;
}

/* Respect du réglage d’accessibilité du visiteur */
@media (prefers-reduced-motion: reduce) {
    .badge .dot,
    .badge .dot::after,
    .core,
    .float-card,
    .orbit,
    .orbit.two {
        animation: none !important;
    }
}