.agence-recrutement {
position: relative;
z-index: 8;
background-color: var(--color-white);
padding: var(--space-3xl) var(--space-xl);
display: flex;
flex-direction: column;
gap: var(--space-2xl);
}
.escalier-k-active .page-agence .agence-recrutement {
margin-top: calc(-60 * var(--vp-unit));
}
.agence-recrutement__header {
display: flex;
flex-direction: column;
gap: 24px;
width: 100%;
max-width: 1344px;
margin-inline: auto;
}
.agence-recrutement__pretitle-wrap {
display: flex;
align-items: center;
gap: 32px;
width: 100%;
}
.agence-recrutement__pretitle {
display: inline-flex;
flex-shrink: 0;
align-items: center;
gap: 6px;
padding: 8px;
border-radius: var(--radius-sm);
}
.agence-recrutement__pretitle-dot {
flex-shrink: 0;
width: 4px;
height: 4px;
border-radius: 50%;
background-color: var(--color-primary);
}
.agence-recrutement__pretitle-text {
font-family: var(--font-body);
font-size: 12px;
font-weight: var(--font-weight-medium);
line-height: 1;
text-transform: uppercase;
color: var(--color-black);
}
.agence-recrutement__separator {
flex: 1 1 0;
min-width: 0;
height: 1px;
background-color: color-mix(in srgb, var(--color-black) 15%, transparent);
}
.agence-recrutement__title-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 48px;
width: 100%;
}
.agence-recrutement__titre {
flex: 0 0 auto;
width: 660px;
max-width: 100%;
margin: 0;
font-family: var(--font-display);
font-weight: var(--font-weight-book);
font-size: 56px;
line-height: 1;
letter-spacing: 1.12px;
color: var(--color-black);
}
.agence-recrutement__paragraphe {
flex: 0 0 auto;
width: 432px;
max-width: 100%;
margin: 0;
font-family: var(--font-body);
font-weight: var(--font-weight-medium);
font-size: 14px;
line-height: 1.6;
color: var(--color-black);
}
.agence-recrutement__liste {
list-style: none;
margin: 0 auto;
padding: 0;
width: 100%;
max-width: 1344px;
}
.agence-recrutement__offre {
position: relative;
isolation: isolate;
display: grid;
grid-template-columns: minmax(180px, 1.1fr) 140px minmax(0, 2fr) 130px;
gap: 32px;
align-items: start;
padding: 40px 0;
border-top: 1px solid color-mix(in srgb, var(--color-black) 15%, transparent);
}
.agence-recrutement__offre-trigger {
position: absolute;
inset: 0;
z-index: 1;
margin: 0;
padding: 0;
border: none;
background: transparent;
cursor: pointer;
}
.agence-recrutement__offre-trigger:focus-visible {
outline: 2px solid var(--color-primary);
outline-offset: -4px;
border-radius: var(--radius-lg);
}
.agence-recrutement__offre-intitule {
font-family: var(--font-display);
font-weight: var(--font-weight-book);
font-size: 28px;
line-height: 1.1;
color: var(--color-black);
}
.agence-recrutement__offre-type {
font-family: var(--font-body);
font-size: 12px;
font-weight: var(--font-weight-medium);
line-height: 1.4;
text-transform: uppercase;
color: var(--color-gray-600);
}
.agence-recrutement__offre-desc {
font-family: var(--font-body);
font-size: 14px;
font-weight: var(--font-weight-medium);
line-height: 1.5;
color: var(--color-black);
padding-right: var(--space-md);
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
line-clamp: 2;
overflow: hidden;
}
.agence-recrutement__offre-postuler {
justify-self: end;
margin-right: var(--space-md);
display: inline-flex;
align-items: center;
gap: 4px;
padding: 12px 20px;
border-radius: var(--radius-md);
background-color: transparent;
font-family: var(--font-body);
font-size: 14px;
font-weight: var(--font-weight-medium);
line-height: 1;
text-transform: uppercase;
color: var(--color-black);
text-decoration: none;
transition: background-color var(--duration-fast) var(--easing-default),
color var(--duration-fast) var(--easing-default);
}
@media (hover: hover) {
.agence-recrutement__offre::before {
content: '';
position: absolute;
inset: 0 -16px;
z-index: -1;
background-color: var(--color-gray-100);
border-radius: var(--radius-lg);
clip-path: inset(50% 0 round var(--radius-lg));
transition: clip-path var(--duration-fast) var(--easing-default);
}
.agence-recrutement__offre:hover::before,
.agence-recrutement__offre:has(.agence-recrutement__offre-trigger:focus-visible)::before {
clip-path: inset(0 0 round var(--radius-lg));
}
.agence-recrutement__offre:hover,
.agence-recrutement__offre:has(.agence-recrutement__offre-trigger:focus-visible),
.agence-recrutement__offre:hover + .agence-recrutement__offre,
.agence-recrutement__offre:has(.agence-recrutement__offre-trigger:focus-visible) + .agence-recrutement__offre {
border-top-color: transparent;
}
.agence-recrutement__offre-type,
.agence-recrutement__offre-desc,
.agence-recrutement__offre-postuler {
transition: color var(--duration-fast) var(--easing-default),
background-color var(--duration-fast) var(--easing-default);
}
.agence-recrutement__offre:hover .agence-recrutement__offre-type,
.agence-recrutement__offre:has(.agence-recrutement__offre-trigger:focus-visible) .agence-recrutement__offre-type {
color: var(--color-black);
}
.agence-recrutement__offre:hover .agence-recrutement__offre-postuler,
.agence-recrutement__offre:has(.agence-recrutement__offre-trigger:focus-visible) .agence-recrutement__offre-postuler {
background-color: var(--color-primary);
color: var(--color-white);
}
}
@media (hover: hover) and (prefers-reduced-motion: reduce) {
.agence-recrutement__offre::before,
.agence-recrutement__offre-type,
.agence-recrutement__offre-postuler {
transition: none;
}
}
.agence-recrutement__offre-postuler-icon {
display: inline-flex;
width: 16px;
height: 16px;
}
.agence-recrutement__offre-postuler-icon svg {
display: block;
width: 100%;
height: 100%;
stroke: currentColor;
fill: none;
}
.agence-recrutement__offre--has-media {
grid-template-columns: minmax(180px, 1.1fr) 150px 140px minmax(0, 2fr) 130px;
}
.agence-recrutement__offre-media {
align-self: stretch;
position: relative;
pointer-events: none;
}
.agence-recrutement__offre-media-img {
position: absolute;
top: 50%;
left: 50%;
width: 128px;
height: auto;
aspect-ratio: 4 / 5;
object-fit: cover;
border-radius: var(--radius-sm);
--offre-media-tilt: -5deg;
transform: translate(-50%, -50%) rotate(var(--offre-media-tilt));
opacity: 0;
pointer-events: none;
}
.agence-recrutement__offre:nth-child(even) .agence-recrutement__offre-media-img {
--offre-media-tilt: 5deg;
}
@media (hover: hover) {
.agence-recrutement__offre-media-img {
transition: opacity var(--duration-fast) var(--easing-default);
}
.agence-recrutement__offre:hover .agence-recrutement__offre-media-img,
.agence-recrutement__offre:has(.agence-recrutement__offre-trigger:focus-visible) .agence-recrutement__offre-media-img {
opacity: 1;
}
.agence-recrutement__offre:hover,
.agence-recrutement__offre:has(.agence-recrutement__offre-trigger:focus-visible) {
z-index: 1;
}
}
@media (hover: hover) and (prefers-reduced-motion: reduce) {
.agence-recrutement__offre-media-img {
transition: none;
}
}
@media (max-width: 1235px) {
.agence-recrutement__title-row {
flex-direction: column;
gap: 24px;
}
.agence-recrutement__titre,
.agence-recrutement__paragraphe {
width: 100%;
}
}
@media (max-width: 940px) {
.agence-recrutement__offre {
grid-template-columns: 1fr;
gap: 12px;
padding: 28px 0;
}
.agence-recrutement__offre-media {
display: none;
}
.agence-recrutement__offre-desc {
padding-right: 0;
}
.agence-recrutement__offre-postuler {
justify-self: start;
}
}
@media (max-width: 767px) {
.agence-recrutement {
padding: var(--space-2xl) var(--space-sm);
}
.agence-recrutement__titre {
font-size: 40px;
letter-spacing: 0.02em;
}
.agence-recrutement__offre-intitule {
font-size: 24px;
line-height: 1.2;
letter-spacing: 0.04em;
}
.agence-recrutement__offre-desc {
line-height: 1.6;
}
.agence-recrutement__pretitle-text {
font-size: var(--text-sm);
}
.agence-recrutement__pretitle-dot {
width: 5px;
height: 5px;
}
}
.agence-recrutement__data-sources {
display: none;
}
.agence-recrutement__modale {
position: fixed;
inset: 0;
z-index: 200;
display: flex;
align-items: center;
justify-content: center;
padding: 24px;
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity 250ms var(--easing-default), visibility 0ms 250ms;
}
.agence-recrutement__modale.is-open {
opacity: 1;
visibility: visible;
pointer-events: auto;
transition: opacity 250ms var(--easing-default), visibility 0ms 0ms;
}
.agence-recrutement__modale-overlay {
position: absolute;
inset: 0;
background-color: color-mix(in srgb, var(--color-black) 70%, transparent);
cursor: pointer;
}
.agence-recrutement__modale-panel {
position: relative;
background-color: var(--color-white);
border-radius: 24px;
width: min(720px, 100%);
max-height: 100%;
overflow: hidden;
display: flex;
}
.agence-recrutement__modale-close {
position: absolute;
top: 24px;
right: 24px;
width: 44px;
height: 44px;
background: transparent;
border: none;
color: var(--color-black);
cursor: pointer;
z-index: 2;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0;
transition: opacity var(--duration-fast) var(--easing-default);
}
.agence-recrutement__modale-close:hover {
opacity: 0.6;
}
.agence-recrutement__modale-close:focus-visible {
outline: 2px solid var(--color-primary);
outline-offset: 4px;
border-radius: var(--radius-sm);
}
.agence-recrutement__modale-close svg {
display: block;
width: 24px;
height: 24px;
}
.agence-recrutement__modale-content {
flex: 1 1 0;
min-width: 0;
display: flex;
flex-direction: column;
gap: 24px;
padding: 56px 48px 48px;
overflow-y: auto;
color: var(--color-black);
}
.agence-recrutement__modale-content:focus-visible {
outline: 2px solid var(--color-primary);
outline-offset: -3px;
}
.agence-recrutement__modale-titre {
margin: 0;
padding-right: 40px;
font-family: var(--font-display);
font-weight: var(--font-weight-book);
font-size: 40px;
line-height: 1.05;
letter-spacing: 0.8px;
color: var(--color-black);
}
.agence-recrutement__modale-meta {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 12px 24px;
}
.agence-recrutement__modale-type {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 8px;
border-radius: var(--radius-sm);
}
.agence-recrutement__modale-type-dot {
flex-shrink: 0;
width: 4px;
height: 4px;
border-radius: 50%;
background-color: var(--color-primary);
}
.agence-recrutement__modale-type-text {
font-family: var(--font-body);
font-size: 12px;
font-weight: var(--font-weight-medium);
line-height: 1;
text-transform: uppercase;
color: var(--color-black);
}
.agence-recrutement__modale-date {
display: inline-flex;
align-items: center;
gap: 6px;
font-family: var(--font-body);
font-size: 12px;
font-weight: var(--font-weight-medium);
line-height: 1;
text-transform: uppercase;
}
.agence-recrutement__modale-date-label {
color: var(--color-gray-600);
}
.agence-recrutement__modale-date-text {
color: var(--color-black);
}
.agence-recrutement__modale-desc,
.agence-recrutement__modale-missions,
.agence-recrutement__modale-profil {
font-family: var(--font-body);
font-weight: var(--font-weight-medium);
font-size: 16px;
line-height: 1.6;
color: var(--color-black);
}
.agence-recrutement__modale-missions-block,
.agence-recrutement__modale-profil-block {
display: flex;
flex-direction: column;
gap: 8px;
}
.agence-recrutement__modale-block-titre,
.agence-recrutement__candidature-label {
margin: 0;
font-family: var(--font-body);
font-size: 12px;
font-weight: var(--font-weight-medium);
line-height: 1;
letter-spacing: 0.5px;
text-transform: uppercase;
color: var(--color-gray-600);
}
.agence-recrutement__candidature {
display: flex;
flex-direction: column;
gap: 12px;
margin-top: 8px;
}
.agence-recrutement__candidature-email {
font-family: var(--font-body);
font-weight: var(--font-weight-medium);
font-size: clamp(20px, 3.2vw, 28px);
line-height: 1.2;
color: var(--color-black);
word-break: break-word;
user-select: all;
}
.agence-recrutement__candidature-actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 12px;
margin-top: 4px;
}
.agence-recrutement__candidature-copy {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 14px 24px;
border: none;
border-radius: var(--radius-md);
background-color: var(--color-primary);
color: var(--color-white);
font-family: var(--font-body);
font-size: 14px;
font-weight: var(--font-weight-medium);
line-height: 1;
text-transform: uppercase;
cursor: pointer;
transition: background-color var(--duration-fast) var(--easing-default);
}
.agence-recrutement__candidature-copy:hover {
background-color: color-mix(in srgb, var(--color-primary) 85%, var(--color-black));
}
.agence-recrutement__candidature-copy:focus-visible {
outline: 2px solid var(--color-primary);
outline-offset: 4px;
}
.agence-recrutement__candidature-copy.is-copied {
background-color: var(--color-black);
}
.agence-recrutement__candidature-mailto {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 12px 20px;
border: 1px solid color-mix(in srgb, var(--color-black) 20%, transparent);
border-radius: var(--radius-md);
background-color: transparent;
color: var(--color-black);
font-family: var(--font-body);
font-size: 14px;
font-weight: var(--font-weight-medium);
line-height: 1;
text-transform: uppercase;
text-decoration: none;
transition: border-color var(--duration-fast) var(--easing-default),
background-color var(--duration-fast) var(--easing-default);
}
.agence-recrutement__candidature-mailto:hover {
border-color: var(--color-black);
background-color: color-mix(in srgb, var(--color-black) 4%, transparent);
}
.agence-recrutement__candidature-mailto:focus-visible {
outline: 2px solid var(--color-primary);
outline-offset: 4px;
}
.agence-recrutement__candidature-mailto-icon {
display: inline-flex;
width: 16px;
height: 16px;
}
.agence-recrutement__candidature-mailto-icon svg {
display: block;
width: 100%;
height: 100%;
stroke: currentColor;
fill: none;
}
.agence-recrutement__candidature-hint {
margin: 0;
font-family: var(--font-body);
font-size: 13px;
font-weight: var(--font-weight-medium);
line-height: 1.5;
color: var(--color-gray-600);
}
@media (max-width: 767px) {
.agence-recrutement__modale {
padding: 12px;
}
.agence-recrutement__modale-panel {
border-radius: 16px;
}
.agence-recrutement__modale-content {
padding: 48px 24px 32px;
gap: 20px;
}
.agence-recrutement__modale-titre {
font-size: 30px;
padding-right: 32px;
}
.agence-recrutement__modale-close {
top: 16px;
right: 16px;
}
}
@media (prefers-reduced-motion: reduce) {
.agence-recrutement__modale,
.agence-recrutement__modale.is-open {
transition: none;
}
}
