/* ============================================================
   UTILS — Helpers, visibility classes, shared micro-components
   ============================================================ */

/* --- Visibility --- */
.mobile  { display: none; }
.desktop { display: inline-block; }

/* --- Color utilities --- */
.yellow    { color: var(--color-primary); }
.fullwidth { width: 100%; }

/* --- Alignment --- */
.align_left { text-align: left; }

.row.align_left input {
    float: left;
    width: 20px;
    margin: 0 10px 0 0;
}

/* --- Hidden upload iframe --- */
.iframe_upload {
    position: absolute;
    height: 100%;
    width: 100%;
    overflow: hidden;
    border: 0;
    opacity: 0;
    filter: alpha(opacity=0);
    cursor: pointer;
    z-index: 1;
    left: 0;
    top: 0;
}

/* --- Parallelogram shape --- */
.parallelogram { transform: skewX(-10deg); }
.parallelogram > div { transform: skewX(10deg); }

/* --- Back navigation links (legacy — intro only) --- */
.intro .back {
    position: absolute;
    top: 50px;
    left: 44px;
    z-index: 1;
}

.intro .back, .compte-links a {
    display: flex;
    height: 22px;
    align-items: center;
    align-content: center;
    gap: 10px;
    font-family: var(--font-body);
    font-size: 150%;
    color: #FFF;
    text-decoration: underline;
    margin: 0 16px;
}

.intro .back {
    font-size: 1.5em;
    margin: 0;
    padding-bottom: 0.5em;
    border-bottom: 1px solid #ffffff;
    text-decoration: none;
}

.back img {
    height: 100%;
    fill: #fff;
    position: absolute;
    margin-left: -1em;
}

/* --- Content top block (intro text overlay) --- */
.content-top {
    display: flex;
    text-align: center;
    flex-direction: column;
    justify-content: space-between;
    width: 100%;
    padding-bottom: 2em;
}

.content-top h2 {
    letter-spacing: 0.1em;
    display: flex;
    flex-direction: column;
    font-family: var(--font-display-black-italic);
    font-size: 3.5em;
    line-height: 1em;
    text-transform: uppercase;
}

.content-top > a {
    margin-top: 0;
    text-decoration: underline;
}

.content-top > a.link-challengers {
    /* Hero is on a dark background so the default color stays white;
       the rest matches the modern link spec (text/body3/book/desktop). */
    color: var(--color-gray-white);

    font-family: var(--font-sans);
    font-size: 14px;
    font-style: normal;
    font-weight: 325;
    line-height: 18px;
    text-decoration: underline;
    /* Reserve focus border space so layout doesn't shift */
    border: 2px solid transparent;
    border-radius: 2px;
    padding: 0 2px;
}

.content-top > a.link-challengers:hover {
    color: var(--color-gray-white);
}

.content-top > a.link-challengers:focus,
.content-top > a.link-challengers:focus-visible {
    outline: none;
    border-color: var(--color-primary);
}

.content-top > a.link-challengers:visited {
    /* color: var(--color-tertiary-blue-dark); */
}

.content-top div.inscription {
    display: flex;
    justify-content: center;
    gap: 8.625em;
    margin: 1em auto;
}

/* --- Compte navigation links --- */
.compte-links {
    display: flex;
    margin-bottom: 75px;
}

/* --- Slick carousel --- */
.slick-slide { float: left; }

/* --- Password toggle icon --- */
input:has(+ .toggle-password), .popup form .fields input:has(+ .toggle-password) {
    padding-right: 1.5em;
}

input + .toggle-password {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: 0.5em;
    width: 1em;
    height: 1em;
    cursor: pointer;
}

.popup form .fields .double-input {
    position: relative;
}

.popup form .fields .double-input input:first-child + .toggle-password {
    right: unset;
    left: calc(50% - 2em);
}

/* --- Copy confirmation tooltip --- */
.copied-message {
    position: absolute;
    background-color: #fff;
    color: #000;
    border: 1px solid #ccc;
    border-radius: 8px;
    padding: 0 8px;
    box-shadow: 2px 2px 5px #ccc;
    opacity: 1;
    transition: opacity 0.5s ease-in-out;
    text-align: center;
    z-index: 1000;
}
