/* ============================================================
   Ornix24 Animated Titles — Frontend CSS
   ============================================================ */

.ornix24-at-wrapper {
    position: relative;
    overflow: hidden;
    min-height: 1.5em;
}

.ornix24-at-stage {
    position: relative;
    display: inline-block;
    width: 100%;
}

/* ── Titre ── */
.ornix24-at-title {
    display: inline-block;
    margin: 0;
    padding: 0;
    line-height: inherit;
    transition: color 0.3s ease;
}

.ornix24-at-title a {
    color: inherit;
    text-decoration: inherit;
}
.ornix24-at-title a:hover {
    text-decoration: underline;
}

/* ── Curseur typewriter ── */
.ornix24-at-cursor {
    display: inline-block;
    margin-left: 2px;
    user-select: none;
    line-height: 1;
}
.ornix24-at-cursor.blink {
    animation: ornix24-cursor-blink 0.75s step-end infinite;
}
@keyframes ornix24-cursor-blink {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0; }
}

/* ── Lettres typewriter ── */
.ornix24-at-char {
    display: inline;
}

/* ════════════════════════════════════════
   ANIMATIONS
   ════════════════════════════════════════ */

/* --- fade_in --- */
@keyframes ornix24-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes ornix24-fade-out {
    from { opacity: 1; }
    to   { opacity: 0; }
}
.ornix24-at-title.anim-fade-in    { animation: ornix24-fade-in  var(--ornix24-anim-dur, 0.8s) ease forwards; }
.ornix24-at-title.anim-fade-out   { animation: ornix24-fade-out var(--ornix24-anim-dur, 0.8s) ease forwards; }

/* --- slide_up --- */
@keyframes ornix24-slide-up-in {
    from { opacity: 0; transform: translateY(60px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes ornix24-slide-up-out {
    from { opacity: 1; transform: translateY(0); }
    to   { opacity: 0; transform: translateY(-60px); }
}
.ornix24-at-title.anim-slide-up-in  { animation: ornix24-slide-up-in  var(--ornix24-anim-dur, 0.8s) cubic-bezier(.22,.61,.36,1) forwards; }
.ornix24-at-title.anim-slide-up-out { animation: ornix24-slide-up-out var(--ornix24-anim-dur, 0.8s) cubic-bezier(.22,.61,.36,1) forwards; }

/* --- slide_down --- */
@keyframes ornix24-slide-down-in {
    from { opacity: 0; transform: translateY(-60px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes ornix24-slide-down-out {
    from { opacity: 1; transform: translateY(0); }
    to   { opacity: 0; transform: translateY(60px); }
}
.ornix24-at-title.anim-slide-down-in  { animation: ornix24-slide-down-in  var(--ornix24-anim-dur, 0.8s) cubic-bezier(.22,.61,.36,1) forwards; }
.ornix24-at-title.anim-slide-down-out { animation: ornix24-slide-down-out var(--ornix24-anim-dur, 0.8s) cubic-bezier(.22,.61,.36,1) forwards; }

/* --- slide_left --- */
@keyframes ornix24-slide-left-in {
    from { opacity: 0; transform: translateX(80px); }
    to   { opacity: 1; transform: translateX(0); }
}
@keyframes ornix24-slide-left-out {
    from { opacity: 1; transform: translateX(0); }
    to   { opacity: 0; transform: translateX(-80px); }
}
.ornix24-at-title.anim-slide-left-in  { animation: ornix24-slide-left-in  var(--ornix24-anim-dur, 0.8s) cubic-bezier(.22,.61,.36,1) forwards; }
.ornix24-at-title.anim-slide-left-out { animation: ornix24-slide-left-out var(--ornix24-anim-dur, 0.8s) cubic-bezier(.22,.61,.36,1) forwards; }

/* --- slide_right --- */
@keyframes ornix24-slide-right-in {
    from { opacity: 0; transform: translateX(-80px); }
    to   { opacity: 1; transform: translateX(0); }
}
@keyframes ornix24-slide-right-out {
    from { opacity: 1; transform: translateX(0); }
    to   { opacity: 0; transform: translateX(80px); }
}
.ornix24-at-title.anim-slide-right-in  { animation: ornix24-slide-right-in  var(--ornix24-anim-dur, 0.8s) cubic-bezier(.22,.61,.36,1) forwards; }
.ornix24-at-title.anim-slide-right-out { animation: ornix24-slide-right-out var(--ornix24-anim-dur, 0.8s) cubic-bezier(.22,.61,.36,1) forwards; }

/* --- bounce_up --- */
@keyframes ornix24-bounce-up-in {
    0%   { opacity: 0; transform: translateY(60px); }
    60%  { opacity: 1; transform: translateY(-16px); }
    80%  { transform: translateY(6px); }
    100% { opacity: 1; transform: translateY(0); }
}
@keyframes ornix24-bounce-up-out {
    0%   { opacity: 1; transform: translateY(0); }
    20%  { transform: translateY(8px); }
    100% { opacity: 0; transform: translateY(-70px); }
}
.ornix24-at-title.anim-bounce-up-in  { animation: ornix24-bounce-up-in  var(--ornix24-anim-dur, 0.8s) ease forwards; }
.ornix24-at-title.anim-bounce-up-out { animation: ornix24-bounce-up-out var(--ornix24-anim-dur, 0.8s) ease forwards; }

/* --- bounce_down --- */
@keyframes ornix24-bounce-down-in {
    0%   { opacity: 0; transform: translateY(-60px); }
    60%  { opacity: 1; transform: translateY(16px); }
    80%  { transform: translateY(-6px); }
    100% { opacity: 1; transform: translateY(0); }
}
@keyframes ornix24-bounce-down-out {
    0%   { opacity: 1; transform: translateY(0); }
    20%  { transform: translateY(-8px); }
    100% { opacity: 0; transform: translateY(70px); }
}
.ornix24-at-title.anim-bounce-down-in  { animation: ornix24-bounce-down-in  var(--ornix24-anim-dur, 0.8s) ease forwards; }
.ornix24-at-title.anim-bounce-down-out { animation: ornix24-bounce-down-out var(--ornix24-anim-dur, 0.8s) ease forwards; }
