/* === IMPROVEMENT 10/10: Kassiope Agency Design Sublimation === */
/* Boutons avec glow pulse animation */
@keyframes glowPulse {
0% { box-shadow: 0 0 5px rgba(108, 99, 255, 0.4), 0 0 10px rgba(108, 99, 255, 0.2); }
50% { box-shadow: 0 0 20px rgba(108, 99, 255, 0.6), 0 0 40px rgba(108, 99, 255, 0.3); }
100% { box-shadow: 0 0 5px rgba(108, 99, 255, 0.4), 0 0 10px rgba(108, 99, 255, 0.2); }
}
@keyframes glowPulseCyan {
0% { box-shadow: 0 0 5px rgba(0, 212, 255, 0.4), 0 0 10px rgba(0, 212, 255, 0.2); }
50% { box-shadow: 0 0 20px rgba(0, 212, 255, 0.6), 0 0 40px rgba(0, 212, 255, 0.3); }
100% { box-shadow: 0 0 5px rgba(0, 212, 255, 0.4), 0 0 10px rgba(0, 212, 255, 0.2); }
}
.btn-ka,
.btn-primary,
.btn[class*="primary"],
section .btn:not(.btn-link):not(.o_we_force_no_glow) {
animation: glowPulse 2.5s ease-in-out infinite;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.btn-ka:hover,
.btn-primary:hover,
.btn[class*="primary"]:hover,
section .btn:not(.btn-link):hover {
animation-play-state: paused;
transform: translateY(-3px) scale(1.03);
box-shadow: 0 8px 30px rgba(108, 99, 255, 0.5);
}
.btn-ka-secondary,
.btn-secondary {
animation: glowPulseCyan 2.5s ease-in-out infinite;
}
/* Grile services avec hover scale + gradient overlay */
.o_we_service_card,
.service-card,
.card.o_we_service,
.col-lg-4 .oe_structure > div,
section .col-lg-4 > div {
position: relative;
overflow: hidden;
transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275),
box-shadow 0.4s ease;
}
.o_we_service_card:hover,
.service-card:hover,
.card.o_we_service:hover,
.col-lg-4 .oe_structure > div:hover,
section .col-lg-4 > div:hover {
transform: scale(1.05);
box-shadow: 0 15px 45px rgba(108, 99, 255, 0.25),
0 5px 15px rgba(0, 0, 0, 0.2);
}
.o_we_service_card::after,
.service-card::after,
.card.o_we_service::after {
content: '';
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
background: linear-gradient(135deg, rgba(108, 99, 255, 0.2) 0%, transparent 50%, rgba(0, 212, 255, 0.1) 100%);
opacity: 0;
transition: opacity 0.5s ease;
pointer-events: none;
z-index: 1;
}
.o_we_service_card:hover::after,
.service-card:hover::after,
.card.o_we_service:hover::after {
opacity: 1;
}
.o_we_service_card:hover img,
.service-card:hover img,
.card.o_we_service:hover img {
transform: scale(1.1);
}
.o_we_service_card img,
.service-card img,
.card.o_we_service img {
transition: transform 0.6s ease;
}
/* Animations entrance au scroll (stagger) */
@keyframes fadeUpKA {
from { opacity: 0; transform: translateY(60px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes fadeInScale {
from { opacity: 0; transform: scale(0.9); }
to { opacity: 1; transform: scale(1); }
}
.ka-fade-up {
animation: fadeUpKA 0.7s ease forwards;
}
.ka-fade-scale {
animation: fadeInScale 0.6s ease forwards;
}
/* Stagger on cards grid */
.row > .col-lg-4,
.row > .col-md-6,
.row > .col-sm-6 {
animation: fadeUpKA 0.7s ease forwards;
opacity: 0;
}
.row > .col-lg-4:nth-child(1),
.row > .col-md-6:nth-child(1),
.row > .col-sm-6:nth-child(1) { animation-delay: 0.05s; }
.row > .col-lg-4:nth-child(2),
.row > .col-md-6:nth-child(2),
.row > .col-sm-6:nth-child(2) { animation-delay: 0.15s; }
.row > .col-lg-4:nth-child(3),
.row > .col-md-6:nth-child(3),
.row > .col-sm-6:nth-child(3) { animation-delay: 0.25s; }
.row > .col-lg-4:nth-child(4),
.row > .col-md-6:nth-child(4),
.row > .col-sm-6:nth-child(4) { animation-delay: 0.35s; }
.row > .col-lg-4:nth-child(5),
.row > .col-md-6:nth-child(5),
.row > .col-sm-6:nth-child(5) { animation-delay: 0.45s; }
.row > .col-lg-4:nth-child(6),
.row > .col-md-6:nth-child(6),
.row > .col-sm-6:nth-child(6) { animation-delay: 0.55s; }
.row > .col-lg-4:nth-child(7),
.row > .col-md-6:nth-child(7),
.row > .col-sm-6:nth-child(7) { animation-delay: 0.65s; }
.row > .col-lg-4:nth-child(8),
.row > .col-md-6:nth-child(8),
.row > .col-sm-6:nth-child(8) { animation-delay: 0.75s; }
.row > .col-lg-4:nth-child(9),
.row > .col-md-6:nth-child(9),
.row > .col-sm-6:nth-child(9) { animation-delay: 0.85s; }
/* Stats section with animated counter suggestion */
.counter-stat,
.stat-box,
.o_counter {
position: relative;
padding: 30px 20px;
text-align: center;
}
.counter-stat .stat-number,
.stat-box .number,
.o_counter .o_counter_number {
font-size: 3.5rem;
font-weight: 800;
background: linear-gradient(135deg, #6C63FF, #00D4FF);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.counter-stat .stat-label,
.stat-box .label,
.o_counter .o_counter_label {
font-size: 1rem;
text-transform: uppercase;
letter-spacing: 2px;
color: rgba(255, 255, 255, 0.7);
margin-top: 8px;
}
/* Kassiope palette utilities */
.text-ka-violet { color: #6C63FF; }
.text-ka-cyan { color: #00D4FF; }
.bg-ka-dark { background-color: #0A1628; }
.bg-ka-card { background-color: #0F1D35; }
/* Dark theme polish for Kassiope sections */
section:not(.o_we_force_no_dark) {
background-color: #0A1628;
}
section:not(.o_we_force_no_dark) h1,
section:not(.o_we_force_no_dark) h2,
section:not(.o_we_force_no_dark) h3 {
color: #ffffff;
}
section:not(.o_we_force_no_dark) p,
section:not(.o_we_force_no_dark) .lead {
color: rgba(255, 255, 255, 0.85);
}
/* Sticky nav with blur for Kassiope */
header.o_header_affix,
nav.navbar.fixed-top {
backdrop-filter: blur(14px) saturate(200%);
-webkit-backdrop-filter: blur(14px) saturate(200%);
background-color: rgba(10, 22, 40, 0.9) !important;
border-bottom: 1px solid rgba(108, 99, 255, 0.15);
}
/* Card background on dark */
.card, .o_we_service_card, .service-card {
background: #0F1D35;
border: 1px solid rgba(108, 99, 255, 0.1);
border-radius: 12px;
}
Se rendre au contenu
À propos
Kassiope n'est pas une agence.C'est un studio créatif.
On ne facture pas des heures de réunion. On livre du contenu pro chaque semaine, sous un seul interlocuteur, pour des PME premium qui veulent une image qui matche leur ambition.
Notre mission
Donner aux PME premium l'image qu'elles méritent.
Trop de marques artisanales et de PME ambitieuses se traînent une image bas de gamme par manque de temps, de budget, ou de bon prestataire. Kassiope existe pour combler ce gap — avec une équipe intégrée, une livraison régulière, et un tarif qui reste sous celui d'un cumul freelances.
VALEUR 01
Founder-direct, pas d'écran
Tu travailles avec Madson, pas avec un chef de projet qui te renvoie à son équipe. Décision rapide, ajustement immédiat, zéro friction de communication.
VALEUR 02
Stack tech moderne
Automation n8n, IA Claude, ElevenLabs, kie.ai. On livre 2x plus vite que les agences qui restent sur des process 2018, à un coût marginal divisé par 3.
VALEUR 03
Transparence radicale
Tarifs publics affichés. Engagement résiliable. Reporting actionnable, pas un PDF de 40 pages bullshit. Tu sais exactement ce que tu paies et ce que tu reçois.
MK
Madson Kurtis
De technicien GL Events à founder Kassiope.
J'ai passé 8 ans sur des tournages événementiels chez GL Events — Roland-Garros, Cannes, Le Mans. Ça m'a donné un truc rare : savoir capter de l'image utilisable peu importe la pression, la lumière, le délai.
En 2024, j'ai monté Kassiope parce que je voyais autour de moi des PME premium à Poitiers — restos, hôtels, artisans — traîner une image digitale catastrophique. Pas par flemme. Par manque de temps et de bon prestataire local. La promesse : leur livrer une image de niveau parisien à un tarif provincial, sous un seul interlocuteur.
Deux ans plus tard, Kassiope = 3 clients actifs (Ducasse, Mamie&Co, Placycle), 28 articles publiés, une formation onboarding RS en ligne. La suite : passer de 0 à 10 clients retainer d'ici juin 2027.
— Madson Kurtis, fondateur Kassiope Studio
Ils nous font confiance
3 clients. 3 univers différents.
D
Photo culinaire
Ducasse Le Mans
Restaurant gastronomique. 60+ photos retouchées plats + ambiance + équipe, livrées en 14 jours.
M
E-commerce afro
Mamie&Co Hair Secrets
Marque cosmétique cheveux afro. Refonte image, packshots, lifestyle, stratégie cross-canal Insta + Shopify.
P
Impact CSR
Placycle
Startup recyclage plastique Côte d'Ivoire. Brand strategy + activation 50k€ levée fin 2026.
On bosse ensemble ?
Prête à donner à ton image le niveau qu'elle mérite ?
Audit 297€ ou call de qualif 15 min. Aucune pression, aucune relance bidon — juste les bonnes décisions, vite.