/* RJSID:112 Functions */
.ToastContainer {
    position: fixed;
    top: 40px;
    right: 20px;
    z-index: 170000;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    pointer-events: none;
    opacity: 0.9;
    max-width: 250px;
}

.ToastMessage {
    display: none;
    background-color: rgba(39,175,76,0.9); /* Default background color */
    color: white;
    padding: 15px 20px;
    border-radius: 4px;
    pointer-events: auto;
    margin-top: 10px; /* Space between messages */
    font-size: 16px;
}


.RetamaPrompt--Wrapper {
    min-width: 20rem;
    padding: 0 1rem;
}
.RetamaPrompt--Message {
    text-align: center;
    font-size: 1rem;
    padding: 0 0 0.75rem;
    color: #333;
}
body.Night .RetamaPrompt--Message {
    color: #ddd;
}
.RetamaPrompt--Input {
    width: 100%;
    padding: 0.5rem 0.65rem;
    font-size: 1rem;
    border: 1px solid #bbb;
    border-radius: 4px;
    box-sizing: border-box;
    background: #ffffff;
    color: #000000;
    font-family: inherit;
}
.RetamaPrompt--Input:focus {
    outline: none;
    border-color: #0088ff;
    box-shadow: 0 0 0 3px rgba(0, 136, 255, 0.25);
}
body.Night .RetamaPrompt--Input {
    background: #151515;
    color: #f5f5f5;
    border-color: #444;
}

/* /RJSID:112 Functions */

/* RJSID:61 AnimationClasses */
.PulsingOffScreen {
	position: relative;
}
.PulsingOffScreen::after {
	content:'';
	position: absolute;
	top: 50%;
	left: 50%;
	height: 100%;
	width: 100%;
	transform: translate(-50%, -50%);
	animation: pulsing-off-screen 2000ms infinite;
	border-radius: inherit;
}
@keyframes pulsing-off-screen {
  0% {
    opacity: 1;
    box-shadow: 6px 6px 15px rgba(33,33,33,.64);
  }

  50% {
    box-shadow: 1px 1px 5px rgba(33,33,33,.64);
  }
  100% {
    box-shadow: 6px 6px 15px rgba(33,33,33,.64);
    opacity: 1
  }
}

.PulsingOffScreenSmall {
	position: relative;
}
.PulsingOffScreenSmall::after {
	content:'';
	position: absolute;
	top: 50%;
	left: 50%;
	height: 100%;
	width: 100%;
	transform: translate(-50%, -50%);
	animation: pulsing-off-screen-small 2000ms infinite;
	border-radius: inherit;
}
@keyframes pulsing-off-screen-small {
  0% {
    opacity: 1;
    box-shadow: 3px 3px 9px rgba(33,33,33,.64);
  }

  50% {
    box-shadow: 1px 1px 3px rgba(33,33,33,.64);
  }
  100% {
    box-shadow: 3px 3px 9px rgba(33,33,33,.64);
    opacity: 1
  }
}

.SubtleGlowPulse {
	position: relative;
	animation: subtle-glow-pulse 2000ms infinite
}
@keyframes subtle-glow-pulse {
	0% { box-shadow: inset 0 0 10px rgba(255,255,255,0.3) }
	50% { box-shadow: inset 0 0 0px rgba(255,255,255,0.3) }
	100% { box-shadow: inset 0 0 10px rgba(255,255,255,0.3) }
}

.SubtleDarkenPulse {
	position: relative;
	animation: subtle-darken-pulse 2000ms infinite
}
@keyframes subtle-darken-pulse {
	0% { box-shadow: inset 0 0 10px rgba(0,0,0,0.3) }
	50% { box-shadow: inset 0 0 0px rgba(0,0,0,0.3) }
	100% { box-shadow: inset 0 0 10px rgba(0,0,0,0.3) }
}

/* /RJSID:61 AnimationClasses */

/* RJSID:119 ContextMenu Function */
.RetamaContextMenu.Hidden {
	display: none;
}
.RetamaContextMenu {
	background-color: rgba(0,0,0,0.9);
    border: 1px solid rgba(255,255,255,0.2);
    box-shadow: 3px 3px rgb(0 0 0 / 20%);
    min-width: 120px;
    z-index: 999999;
    padding: 5px 5px;
    position: absolute;
}
.RetamaContextMenuItem {
	padding: 0.2em;
    font-size: 0.6em;
    cursor: pointer;
}
.RetamaContextMenuItem:hover {
	background-color: #075b84;
	color: white;
}

/* /RJSID:119 ContextMenu Function */

/* RJSID:152 ChatClient */
.Retama--ChatClient {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    background-color: #1a1a1a;
    color: #ffffff;
    font-family: 'Arial', sans-serif;
}
.Retama--ChatClient .ChatContainer {
    flex: 1;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    padding: 20px;
}
.Retama--ChatClient .MessagesContainer {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    min-height: min-content;
}
.Retama--ChatClient .InputContainer {
    display: flex;
    padding: 20px;
    background-color: #2a2a2a;
}
.Retama--ChatClient .ChatInput {
    flex-grow: 1;
    padding: 10px;
    border: none;
    border-radius: 5px 0 0 5px;
    background-color: #3a3a3a;
    color: #ffffff;
    font-size: 16px;
}
.Retama--ChatClient .SendButton {
    padding: 10px 20px;
    border: none;
    border-radius: 0 5px 5px 0;
    background-color: #4CAF50;
    color: white;
    font-size: 16px;
    cursor: pointer;
    transition: background-color 0.3s;
}
.Retama--ChatClient .SendButton:hover {
    background-color: #45a049;
}
.Retama--ChatClient .Message {
    margin-bottom: 15px;
    padding: 10px;
    border-radius: 5px;
    background-color: #2a2a2a;
    max-width: 80%;
    align-self: flex-start;
}
.Retama--ChatClient .Message:nth-child(even) {
    align-self: flex-end;
    background-color: #3a3a3a;
}
.Retama--ChatClient .Sender {
    font-weight: bold;
    margin-bottom: 5px;
    color: #ff9800;
}
.Retama--ChatClient .Content {
    word-wrap: break-word;
}
.Retama--ChatClient .LoadingIcon {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 40px;
    height: 40px;
    border: 4px solid #f3f3f3;
    border-top: 4px solid #3498db;
    border-radius: 50%;
    animation: spin 1s linear infinite;
    display: none;
}
@keyframes spin {
    0% { transform: translate(-50%, -50%) rotate(0deg); }
    100% { transform: translate(-50%, -50%) rotate(360deg); }
}
/* Rainbow theme for actionable items */
.Retama--ChatClient .SendButton { background-color: #4CAF50; }
.Retama--ChatClient .SendButton:hover { background-color: #45a049; }
.Retama--ChatClient .ChatInput:focus { box-shadow: 0 0 5px #3498db; }
.Retama--ChatClient .Sender { color: #ff9800; }
.Retama--ChatClient .LoadingIcon { border-top-color: #e74c3c; }
/* /RJSID:152 ChatClient */

/* RJSID:171 FlashcardSystem */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');

.Retama--FlashcardSystem {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, #0f0c29 0%, #302b63 50%, #24243e 100%);
    z-index: 50000;
    font-family: 'Inter', sans-serif;
    overflow: hidden;
}


.Retama--FlashcardSystem .FlashcardContainer {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    padding-left: 10px;
    padding-right: 10px;
    box-sizing: border-box;
}

/* --- User Selection Screen --- */
.Retama--FlashcardSystem .UserSelectionScreen {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10;
    padding: 20px;
    box-sizing: border-box;
}

.Retama--FlashcardSystem .UserSelectionContent {
    text-align: center;
    padding: 40px 50px;
    background: rgba(255, 255, 255, 0.95);
    border-radius: 30px;
    box-shadow:
        0 30px 80px rgba(0, 0, 0, 0.3),
        0 0 150px rgba(147, 112, 219, 0.4);
    max-width: 550px;
    width: 90%;
    box-sizing: border-box;
}

.Retama--FlashcardSystem .UserSelectionTitle {
    font-size: 36px;
    font-weight: 700;
    color: #2d3436;
    margin-bottom: 30px;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.Retama--FlashcardSystem .UserListContainer {
    max-height: 300px;
    overflow-y: auto;
    padding-right: 10px;
    margin-top: 20px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}
.Retama--FlashcardSystem .UserListContainer::-webkit-scrollbar { width: 8px; }
.Retama--FlashcardSystem .UserListContainer::-webkit-scrollbar-track { background: rgba(0,0,0,0.05); border-radius: 4px; }
.Retama--FlashcardSystem .UserListContainer::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.2); border-radius: 4px; }
.Retama--FlashcardSystem .UserListContainer::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.3); }


.Retama--FlashcardSystem .UserListLoading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 20px;
    color: #636e72;
}
.Retama--FlashcardSystem .UserListLoading .Spinner {
    width: 40px;
    height: 40px;
    border: 3px solid rgba(0, 0, 0, 0.1);
    border-top-color: #667eea;
    border-radius: 50%;
    animation: spin 1s linear infinite;
    margin-bottom: 15px;
}
.Retama--FlashcardSystem .UserListLoading span { font-size: 16px; }


.Retama--FlashcardSystem .UserSelectItem {
    background: linear-gradient(135deg, #f0f2f5 0%, #e6e9ed 100%);
    color: #3b3e4f;
    border: 1px solid rgba(0,0,0,0.1);
    padding: 15px 25px;
    font-size: 18px;
    font-weight: 500;
    border-radius: 12px;
    cursor: pointer;
    text-align: center;
    width: 100%;
    transition: all 0.25s ease-out;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);
}

.Retama--FlashcardSystem .UserSelectItem:hover {
    transform: translateY(-2px) scale(1.02);
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: white;
    box-shadow: 0 8px 20px rgba(102, 126, 234, 0.3);
}
.Retama--FlashcardSystem .UserSelectItem:active {
    transform: translateY(0px) scale(1);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}

.Retama--FlashcardSystem .UserSelectionError {
    color: #d63031;
    font-size: 16px;
    padding: 20px;
    background-color: rgba(214, 48, 49, 0.1);
    border-radius: 8px;
    border: 1px solid rgba(214, 48, 49, 0.3);
}


/* Start Screen */
.Retama--FlashcardSystem .StartScreen {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10;
    padding: 20px;
    box-sizing: border-box;
}

.Retama--FlashcardSystem .StartContent {
    text-align: center;
    padding: 10px;
    background: rgba(255, 255, 255, 0.95);
    border-radius: 30px;
    box-shadow:
        0 30px 80px rgba(0, 0, 0, 0.3),
        0 0 150px rgba(147, 112, 219, 0.4);
    max-width: 500px;
    box-sizing: border-box;
}

.Retama--FlashcardSystem .StartTitle {
    font-size: 48px;
    font-weight: 700;
    color: #2d3436;
    margin-bottom: 20px;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.Retama--FlashcardSystem .StartSubtitle {
    font-size: 20px;
    color: #636e72;
    margin-bottom: 40px;
}

.Retama--FlashcardSystem .StartButton {
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: white;
    border: none;
    padding: 20px 50px;
    font-size: 20px;
    font-weight: 600;
    border-radius: 50px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 15px;
    transition: all 0.3s ease;
    box-shadow: 0 10px 30px rgba(102, 126, 234, 0.4);
}

.Retama--FlashcardSystem .StartButton:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 40px rgba(102, 126, 234, 0.6);
}
.Retama--FlashcardSystem .StartButton i { font-size: 24px; }


/* --- NEW: Congrats Screen --- */
.Retama--FlashcardSystem .CongratsScreen {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 9; /* Below StartScreen/UserSelection if they ever overlap, but generally won't */
    padding: 20px;
    box-sizing: border-box;
}

.Retama--FlashcardSystem .CongratsContent {
    text-align: center;
    padding: 40px 50px;
    background: rgba(255, 255, 255, 0.97); /* Slightly more opaque */
    border-radius: 30px;
    box-shadow:
        0 30px 80px rgba(0, 0, 0, 0.35), /* Slightly stronger shadow */
        0 0 150px rgba(255, 215, 0, 0.3); /* Goldish glow for congrats */
    max-width: 600px; /* Can be a bit wider */
    width: 90%;
    box-sizing: border-box;
    border: 2px solid rgba(255, 215, 0, 0.5); /* Gold border */
}

.Retama--FlashcardSystem .CongratsIcon {
    font-size: 60px;
    color: #ffd700; /* Gold */
    margin-bottom: 15px;
    animation: trophyPulse 2s infinite ease-in-out;
}

@keyframes trophyPulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.15); }
}

.Retama--FlashcardSystem .CongratsTitle {
    font-size: 42px;
    font-weight: 700;
    color: #2d3436;
    margin-bottom: 15px;
    background: linear-gradient(135deg, #fccb2d 0%, #fc9c2d 100%); /* Gold/Orange gradient */
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.Retama--FlashcardSystem .CongratsMessage {
    font-size: 18px;
    color: #57606f;
    margin-bottom: 30px;
    line-height: 1.6;
}

.Retama--FlashcardSystem .AddMoreOptions {
    margin-bottom: 30px;
    padding: 20px;
    background-color: rgba(0,0,0,0.03);
    border-radius: 15px;
}

.Retama--FlashcardSystem .AddMorePrompt {
    font-size: 16px;
    font-weight: 500;
    color: #2d3436;
    margin-bottom: 20px;
}
.Retama--FlashcardSystem .AddMoreButtonContainer {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 15px;
}

.Retama--FlashcardSystem .AddMoreButton {
    background: linear-gradient(135deg, #6ab04c 0%, #badc58 100%); /* Greenish */
    color: white;
    border: none;
    padding: 12px 25px;
    font-size: 15px;
    font-weight: 600;
    border-radius: 25px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s ease;
    box-shadow: 0 5px 15px rgba(106, 176, 76, 0.3);
}

.Retama--FlashcardSystem .AddMoreButton:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(106, 176, 76, 0.5);
}
.Retama--FlashcardSystem .AddMoreButton i { font-size: 16px; }

.Retama--FlashcardSystem .FinishSessionButton {
    background: linear-gradient(135deg, #ff7675 0%, #d63031 100%); /* Reddish */
    color: white;
    border: none;
    padding: 15px 40px;
    font-size: 17px;
    font-weight: 600;
    border-radius: 25px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s ease;
    box-shadow: 0 5px 15px rgba(214, 48, 49, 0.3);
}
.Retama--FlashcardSystem .FinishSessionButton:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(214, 48, 49, 0.5);
}
.Retama--FlashcardSystem .FinishSessionButton i { font-size: 18px; }


/* Loading Overlay */
.Retama--FlashcardSystem .LoadingOverlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.8);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    opacity: 0;
    pointer-events: none;
}


.Retama--FlashcardSystem .LoadingSpinner { text-align: center; }

.Retama--FlashcardSystem .Spinner {
    width: 60px;
    height: 60px;
    border: 3px solid rgba(255, 255, 255, 0.1);
    border-top-color: #fff;
    border-radius: 50%;
    animation: spin 1s linear infinite;
    margin: 0 auto 20px;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.Retama--FlashcardSystem .LoadingText {
    color: white;
    font-size: 18px;
    font-weight: 300;
}

/* Stats Display */
.Retama--FlashcardSystem .StatsDisplay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 30px;
    box-sizing: border-box;
    z-index: 5;
}

.Retama--FlashcardSystem .TopLeftTimers { display: flex; flex-direction: column; gap: 8px; }
.Retama--FlashcardSystem .TopLeftTimers .StatItem.Timer { display: flex; align-items: center; gap: 6px; color: rgba(255, 255, 255, 0.9); font-size: 14px; }
.Retama--FlashcardSystem .TopLeftTimers .StatItem.Timer i { font-size: 13px; opacity: 0.7; }
.Retama--FlashcardSystem .TopLeftTimers .StatItem.Timer .StatValue { font-weight: 500; font-variant-numeric: tabular-nums; }

.Retama--FlashcardSystem .TopRightStats {
    display: flex;
    gap: 20px;
    background: rgba(255, 255, 255, 0.08);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    padding: 10px 20px;
    border-radius: 50px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}

.Retama--FlashcardSystem .TopRightStats .StatItem { display: flex; align-items: center; gap: 8px; color: white; font-size: 14px; }
.Retama--FlashcardSystem .TopRightStats .StatItem i { font-size: 16px; opacity: 0.8; }
.Retama--FlashcardSystem .TopRightStats .StatValue { font-weight: 600; font-size: 15px; }
.Retama--FlashcardSystem .TopRightStats .StatLabel { font-size: 12px; opacity: 0.7; text-transform: uppercase; letter-spacing: 0.5px; }

.Retama--FlashcardSystem .TopRightStats .Progress.Low .StatValue { color: #ff7675; }
.Retama--FlashcardSystem .TopRightStats .Progress.Medium .StatValue { color: #fdcb6e; }
.Retama--FlashcardSystem .TopRightStats .Progress.High .StatValue { color: #55efc4; }
.Retama--FlashcardSystem .TopRightStats .NewCardsStat .StatValue { color: #74b9ff; }
.Retama--FlashcardSystem .TopRightStats .NewCardsStat i { color: #74b9ff; opacity: 1;}
.Retama--FlashcardSystem .TopRightStats .MissedCardsStat .StatValue { color: #fab1a0; }
.Retama--FlashcardSystem .TopRightStats .MissedCardsStat i { color: #fab1a0; opacity: 1;}
.Retama--FlashcardSystem .TopRightStats .LearnedCardsStat .StatValue { color: #a29bfe; }
.Retama--FlashcardSystem .TopRightStats .LearnedCardsStat i { color: #a29bfe; opacity: 1;}


/* Card Styles */
.Retama--FlashcardSystem .CardFront, .Retama--FlashcardSystem .CardBack {
    background: rgba(255, 255, 255, 1);
    border-radius: 20px;
    box-shadow:
        0 20px 60px rgba(0, 0, 0, 0.3),
        0 0 120px rgba(147, 112, 219, 0.3),
        inset 0 0 30px rgba(147, 112, 219, 0.1);
    padding: 10px;
    position: relative;
    width: 100%;
    max-width: 800px;
    box-sizing: border-box;
    opacity: 1;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

.Retama--FlashcardSystem .CardFront {
    min-height: 400px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    transform-origin: center center;
    transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.5s ease, min-height 0.5s ease;
}

.Retama--FlashcardSystem .CardFront.Flipped {
    transform: translateY(-40%) scale(0.8);
    opacity: 0.7;
    min-height: 200px;
    cursor: default;
}


.Retama--FlashcardSystem .CardBack {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    min-height: 300px;
    cursor: default;
    z-index: 2;
}

.Retama--FlashcardSystem .CardContent { text-align: center; position: relative; }
.Retama--FlashcardSystem .CardText { padding: 0 30px; font-size: 32px; font-weight: 600; color: #2d3436; line-height: 1.4; margin-bottom: 0px; }
.Retama--FlashcardSystem .CardBack .CardText { font-size: 28px; padding: 0 30px; }
.Retama--FlashcardSystem .CardHTML { font-size: 20px; color: #636e72; line-height: 1.6; }
.Retama--FlashcardSystem .CardHTML img { max-width: 100%; height: auto; border-radius: 10px; margin: 5px auto; padding: 2px; box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1); }

.Retama--FlashcardSystem .SoundButton {
    position: absolute;
    top: 0px;
    right: 0px;
    width: 30px;
    height: 30px;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);
    z-index: 3;
}
.Retama--FlashcardSystem .SoundButton:hover { transform: scale(1.1); box-shadow: 0 8px 25px rgba(102, 126, 234, 0.6); }
.Retama--FlashcardSystem .SoundButton i { color: white; font-size: 20px; }

.Retama--FlashcardSystem .FlipHint { position: absolute; bottom: -50px; left: 50%; transform: translateX(-50%); opacity: 0; transition: opacity 0.3s ease-in-out; }
.Retama--FlashcardSystem .CardFront:not(.Flipped):not(.animate__zoomOut) .FlipHint { opacity: 0.8; }
.Retama--FlashcardSystem .HintText { color: rgba(255, 255, 255, 0.8); font-size: 16px; display: flex; align-items: center; gap: 10px; }
.Retama--FlashcardSystem .HintText kbd { background: rgba(255, 255, 255, 0.2); padding: 5px 12px; border-radius: 8px; font-family: monospace; font-size: 14px; border: 1px solid rgba(255, 255, 255, 0.3); }

.Retama--FlashcardSystem .ResponseButtons { position: absolute; bottom: 40px; left: 0; right: 0; padding: 0 10px; box-sizing: border-box; z-index: 3; }
.Retama--FlashcardSystem .ButtonWrapper { display: flex; gap: 20px; justify-content: center; max-width: 800px; margin: 0 auto; }

.Retama--FlashcardSystem .ResponseButton {
    flex: 1;
    background: rgba(255, 255, 255, 0.9);
    border: none;
    border-radius: 15px;
    padding: 20px;
    cursor: pointer;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
}
.Retama--FlashcardSystem .ResponseButton::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, transparent, rgba(255, 255, 255, 0.4)); transform: translateX(-100%); transition: transform 0.6s; z-index: 0; }
.Retama--FlashcardSystem .ResponseButton:hover:not(.Selected) { transform: translateY(-5px); box-shadow: 0 15px 40px rgba(0, 0, 0, 0.3); }
.Retama--FlashcardSystem .ResponseButton:hover:not(.Selected)::before { transform: translateX(100%); }
.Retama--FlashcardSystem .ResponseButton.Selected { transform: scale(0.95); box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
.Retama--FlashcardSystem .ResponseButton.animate__pulse { animation-iteration-count: 1; }

.Retama--FlashcardSystem .ButtonNumber { position: absolute; top: 8px; left: 12px; width: 24px; height: 24px; background: rgba(0, 0, 0, 0.1); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 600; z-index: 1; }
.Retama--FlashcardSystem .ButtonLabel, .Retama--FlashcardSystem .ButtonDelay { position: relative; z-index: 1; }
.Retama--FlashcardSystem .ButtonLabel { font-size: 18px; font-weight: 600; color: white; }
.Retama--FlashcardSystem .ButtonDelay { font-size: 14px; color: white; opacity: 0.8; }

.Retama--FlashcardSystem .NoIdea { background: linear-gradient(135deg, #ff6b6b 0%, #ee5a6f 100%); color: white; }
.Retama--FlashcardSystem .NoIdea .ButtonNumber, .Retama--FlashcardSystem .NoIdea .ButtonLabel, .Retama--FlashcardSystem .NoIdea .ButtonDelay { color: white; }
.Retama--FlashcardSystem .NoIdea .ButtonNumber { background: rgba(255, 255, 255, 0.2); }
.Retama--FlashcardSystem .Hard { background: linear-gradient(135deg, #ffd93d 0%, #f9ca24 100%); color: white; }
.Retama--FlashcardSystem .Good { background: linear-gradient(135deg, #6bcf7f 0%, #4cd137 100%); color: white; }
.Retama--FlashcardSystem .Good .ButtonNumber, .Retama--FlashcardSystem .Good .ButtonLabel, .Retama--FlashcardSystem .Good .ButtonDelay { color: white; }
.Retama--FlashcardSystem .Good .ButtonNumber { background: rgba(255, 255, 255, 0.2); }
.Retama--FlashcardSystem .Easy { background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%); color: white; }
.Retama--FlashcardSystem .Easy .ButtonNumber, .Retama--FlashcardSystem .Easy .ButtonLabel, .Retama--FlashcardSystem .Easy .ButtonDelay { color: white; }
.Retama--FlashcardSystem .Easy .ButtonNumber { background: rgba(255, 255, 255, 0.2); }

/* Responsive Design */
@media (max-width: 768px) {
    .Retama--FlashcardSystem .UserSelectionContent { padding: 30px 20px; max-width: 90%; }
    .Retama--FlashcardSystem .UserSelectionTitle { font-size: 28px; margin-bottom: 20px;}
    .Retama--FlashcardSystem .UserListContainer { max-height: 250px; gap: 10px; }
    .Retama--FlashcardSystem .UserSelectItem { font-size: 16px; padding: 12px 20px; }

    .Retama--FlashcardSystem .StartContent { padding: 40px 20px; }
    .Retama--FlashcardSystem .StartTitle { font-size: 36px; }
    .Retama--FlashcardSystem .StartSubtitle { font-size: 16px; }
    .Retama--FlashcardSystem .StartButton { padding: 16px 40px; font-size: 18px; }

    .Retama--FlashcardSystem .CongratsContent { padding: 30px 20px; max-width: 90%; }
    .Retama--FlashcardSystem .CongratsIcon { font-size: 50px; }
    .Retama--FlashcardSystem .CongratsTitle { font-size: 32px; }
    .Retama--FlashcardSystem .CongratsMessage { font-size: 16px; margin-bottom: 20px;}
    .Retama--FlashcardSystem .AddMoreOptions { margin-bottom: 20px; padding: 15px; }
    .Retama--FlashcardSystem .AddMorePrompt { font-size: 15px; margin-bottom: 15px; }
    .Retama--FlashcardSystem .AddMoreButtonContainer { flex-direction: column; gap: 10px; }
    .Retama--FlashcardSystem .AddMoreButton { font-size: 14px; padding: 10px 20px; width: 100%; box-sizing: border-box;}
    .Retama--FlashcardSystem .FinishSessionButton { font-size: 16px; padding: 12px 30px; }


    .Retama--FlashcardSystem .StatsDisplay { padding: 15px; align-items: flex-start; gap: 10px; }
    .Retama--FlashcardSystem .TopRightStats { padding: 8px 12px; gap: 10px; border-radius: 12px; align-self: flex-end; }
    .Retama--FlashcardSystem .TopLeftTimers .StatItem.Timer { font-size: 12px; gap: 4px; }
    .Retama--FlashcardSystem .TopLeftTimers .StatItem.Timer i { font-size: 11px; }
    .Retama--FlashcardSystem .TopRightStats .StatItem { font-size: 11px; gap: 4px; }
    .Retama--FlashcardSystem .TopRightStats .StatItem i { font-size: 13px; }
    .Retama--FlashcardSystem .TopRightStats .StatValue { font-size: 12px; }
    .Retama--FlashcardSystem .TopRightStats .StatLabel { display: none; }

    .Retama--FlashcardSystem .CardFront, .Retama--FlashcardSystem .CardBack { padding: 10px 5px; width: 95%; }
    .Retama--FlashcardSystem .CardFront { min-height: 300px; }
    .Retama--FlashcardSystem .CardFront.Flipped { transform: translateY(-30%) scale(0.85); min-height: 150px; }
    .Retama--FlashcardSystem .CardBack { top: 47%; min-height: 200px; }
    .Retama--FlashcardSystem .CardText { font-size: 24px; }
    .Retama--FlashcardSystem .CardBack .CardText { font-size: 20px; }
    .Retama--FlashcardSystem .CardHTML { font-size: 16px; }

    .Retama--FlashcardSystem .FlipHint { bottom: -40px; }
    .Retama--FlashcardSystem .HintText { font-size: 14px; }
    .Retama--FlashcardSystem .HintText kbd { display: none; }

    .Retama--FlashcardSystem .ResponseButtons { bottom: 15px; padding: 0 10px; }
    .Retama--FlashcardSystem .ButtonWrapper { flex-wrap: wrap; gap: 8px; }
    .Retama--FlashcardSystem .ResponseButton { min-width: calc(50% - 4px); padding: 12px 10px; border-radius: 10px; gap: 5px; }
    .Retama--FlashcardSystem .ButtonNumber { width: 20px; height: 20px; font-size: 10px; top: 5px; left: 7px; }
    .Retama--FlashcardSystem .ButtonLabel { font-size: 14px; }
    .Retama--FlashcardSystem .ButtonDelay { font-size: 11px; }
    .Retama--FlashcardSystem .SoundButton { width: 30px; height: 30px; top: 0px; right: 0px; }
    .Retama--FlashcardSystem .SoundButton i { font-size: 16px; }
}

@media (max-width: 420px) {
    .Retama--FlashcardSystem .UserSelectionContent { padding: 20px 15px; }
    .Retama--FlashcardSystem .UserSelectionTitle { font-size: 24px; }
    .Retama--FlashcardSystem .UserSelectItem { font-size: 15px; padding: 10px 15px; }

    .Retama--FlashcardSystem .StartContent { padding: 30px 15px; }
    .Retama--FlashcardSystem .StatsDisplay { padding: 10px; gap: 5px; }
    .Retama--FlashcardSystem .TopRightStats { gap: 5px; padding: 6px 8px; }
    .Retama--FlashcardSystem .TopRightStats .StatItem i { font-size: 11px; }
    .Retama--FlashcardSystem .TopRightStats .StatValue { font-size: 11px; }

    .Retama--FlashcardSystem .CongratsContent { padding: 25px 15px; }
    .Retama--FlashcardSystem .CongratsIcon { font-size: 40px; }
    .Retama--FlashcardSystem .CongratsTitle { font-size: 28px; }
    .Retama--FlashcardSystem .CongratsMessage { font-size: 14px;}
    .Retama--FlashcardSystem .AddMoreButton { font-size: 13px; padding: 10px 15px; }
    .Retama--FlashcardSystem .FinishSessionButton { font-size: 14px; padding: 10px 25px; }


    .Retama--FlashcardSystem .CardText { font-size: 20px; }
    .Retama--FlashcardSystem .CardBack .CardText { font-size: 14px; margin-right: 30px; }
    .Retama--FlashcardSystem .CardBack .CardHTML {  }
    .Retama--FlashcardSystem .ResponseButton { padding: 10px 8px; }
    .Retama--FlashcardSystem .ButtonLabel { font-size: 13px; }
    .Retama--FlashcardSystem .ButtonDelay { font-size: 10px; }
}

/* Animate.css classes (ensure these are available or define them) */
.Retama--FlashcardSystem .animate__animated {
    animation-duration: 0.6s; /* Default duration */
    animation-fill-mode: both;
}
.Retama--FlashcardSystem .animate__animated.animate__faster {
  animation-duration: calc(0.6s * 0.5); /* Adjusted to 0.5s from 0.6s base for faster */
}
.Retama--FlashcardSystem .animate__animated.animate__fast {
  animation-duration: calc(0.6s * 0.8);
}
.Retama--FlashcardSystem .animate__animated.animate__slow {
  animation-duration: calc(0.6s * 2);
}
.Retama--FlashcardSystem .animate__animated.animate__slower {
  animation-duration: calc(0.6s * 3);
}

/* Specific animation durations */
.Retama--FlashcardSystem .animate__zoomIn,
.Retama--FlashcardSystem .animate__zoomOut {
    animation-duration: 0.4s;
}
.Retama--FlashcardSystem .animate__fadeIn,
.Retama--FlashcardSystem .animate__fadeOut,
.Retama--FlashcardSystem .animate__slideInUp {
    animation-duration: 0.6s;
}
.Retama--FlashcardSystem .animate__bounceIn {
    animation-duration: 0.75s; /* Standard bounceIn duration */
}

/* /RJSID:171 FlashcardSystem */

/* RJSID:178 FlashcardAddForm */
/* --- Flashcard Add Form Styles --- */
.Retama--FlashcardAddForm {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, #0f0c29 0%, #302b63 50%, #24243e 100%);
    z-index: 50000;
    font-family: 'Inter', sans-serif;
    overflow: auto; /* Allow scrolling if content is too long */
    display: flex; /* Use flexbox for centering */
    align-items: center;
    justify-content: center;
    padding: 20px; /* Padding for small screens */
    box-sizing: border-box;
    /* Important: Removed initial opacity/display properties here,
       as they are now controlled by JS with animate.css classes. */
}

.Retama--FlashcardAddForm .AddFlashcardContainer {
    width: 100%;
    max-width: 650px; /* Slightly wider to accommodate longer phrases */
    background: rgba(255, 255, 255, 0.97);
    border-radius: 30px;
    box-shadow:
        0 30px 80px rgba(0, 0, 0, 0.3),
        0 0 150px rgba(100, 149, 237, 0.4); /* A nice blue glow */
    padding: 40px 50px;
    box-sizing: border-box;
    text-align: center;
    /* We expect this to be hidden by JS initially (style="display:none;")
       and then shown with animations */
}

.Retama--FlashcardAddForm .AddFlashcardTitle {
    font-size: 38px;
    font-weight: 700;
    color: #2d3436;
    margin-bottom: 15px;
    background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%); /* Blue gradient */
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.Retama--FlashcardAddForm .AddFlashcardSubtitle {
    font-size: 18px;
    color: #636e72;
    margin-bottom: 30px;
    line-height: 1.5;
}

.Retama--FlashcardAddForm .FlashcardForm {
    display: flex;
    flex-direction: column;
    gap: 25px;
    margin-bottom: 30px;
}

.Retama--FlashcardAddForm .FormFieldGroup {
    text-align: left;
    margin-bottom: 15px;
}

.Retama--FlashcardAddForm .FormFieldGroup label {
    display: block;
    font-size: 16px;
    font-weight: 600;
    color: #4a4a4a;
    margin-bottom: 8px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.Retama--FlashcardAddForm .FlashcardInput {
    width: 100%;
    padding: 15px 20px;
    border: 2px solid #dfe6e9;
    border-radius: 12px;
    font-size: 17px;
    font-family: 'Inter', sans-serif;
    color: #2d3436;
    background-color: #f8f8f8;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
    resize: vertical; /* Allow vertical resizing */
    min-height: 80px; /* Minimum height for multi-line input */
    max-height: 200px; /* Max height before scrollbar appears */
    box-sizing: border-box;
}

.Retama--FlashcardAddForm .FlashcardInput:focus {
    outline: none;
    border-color: #667eea;
    box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.2);
    background-color: white;
}

.Retama--FlashcardAddForm .FlashcardInput::placeholder {
    color: #b2bec3;
}

.Retama--FlashcardAddForm .SubmitFlashcardButton {
    background: linear-gradient(135deg, #6ab04c 0%, #badc58 100%); /* Green for adding */
    color: white;
    border: none;
    padding: 18px 40px;
    font-size: 19px;
    font-weight: 600;
    border-radius: 50px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    transition: all 0.3s ease;
    box-shadow: 0 10px 30px rgba(106, 176, 76, 0.4);
    width: auto; /* Allow button to size itself */
    align-self: center; /* Center the button */
    margin-top: 15px;
}

.Retama--FlashcardAddForm .SubmitFlashcardButton:hover:not(:disabled) {
    transform: translateY(-3px);
    box-shadow: 0 15px 40px rgba(106, 176, 76, 0.6);
}

.Retama--FlashcardAddForm .SubmitFlashcardButton:active:not(:disabled) {
    transform: translateY(0px);
    box-shadow: 0 5px 15px rgba(106, 176, 76, 0.3);
}

.Retama--FlashcardAddForm .SubmitFlashcardButton:disabled {
    background: linear-gradient(135deg, #a4b0be 0%, #747d8c 100%); /* Grey out when disabled */
    cursor: not-allowed;
    box-shadow: 0 5px 15px rgba(0,0,0,0.2);
}

.Retama--FlashcardAddForm .SubmitFlashcardButton i { font-size: 22px; }

.Retama--FlashcardAddForm .SuccessMessage {
    color: #4CAF50; /* Green */
    font-size: 17px;
    font-weight: 500;
    margin-top: -15px; /* Adjust to sit closer to the form */
    margin-bottom: 20px;
    display: flex; /* Changed to flex for centering content */
    align-items: center;
    justify-content: center;
    gap: 10px;
    background-color: rgba(76, 175, 80, 0.1);
    border: 1px solid rgba(76, 175, 80, 0.3);
    padding: 10px 20px;
    border-radius: 10px;
    /* Important: We expect this to be hidden by JS initially (style="display:none;")
       and then shown with animations */
}
.Retama--FlashcardAddForm .SuccessMessage i {
    font-size: 20px;
}

.Retama--FlashcardAddForm .BackToStudyButton {
    background: transparent;
    color: #764ba2; /* Purple tone from original background */
    border: 2px solid #764ba2;
    padding: 12px 25px;
    font-size: 16px;
    font-weight: 500;
    border-radius: 30px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s ease;
    margin-top: 20px;
}

.Retama--FlashcardAddForm .BackToStudyButton:hover {
    background: #764ba2;
    color: white;
    box-shadow: 0 5px 15px rgba(118, 75, 162, 0.4);
}
.Retama--FlashcardAddForm .BackToStudyButton i { font-size: 18px; }

/* Responsive adjustments for Add Form */
@media (max-width: 768px) {
    .Retama--FlashcardAddForm .AddFlashcardContainer {
        padding: 30px 25px;
        max-width: 95%;
    }
    .Retama--FlashcardAddForm .AddFlashcardTitle { font-size: 32px; }
    .Retama--FlashcardAddForm .AddFlashcardSubtitle { font-size: 16px; margin-bottom: 25px; }
    .Retama--FlashcardAddForm .FormFieldGroup { margin-bottom: 20px; }
    .Retama--FlashcardAddForm .FormFieldGroup label { font-size: 15px; margin-bottom: 6px; }
    .Retama--FlashcardAddForm .FlashcardInput { font-size: 16px; padding: 12px 15px; min-height: 70px; }
    .Retama--FlashcardAddForm .SubmitFlashcardButton { font-size: 17px; padding: 15px 30px; gap: 10px; }
    .Retama--FlashcardAddForm .SubmitFlashcardButton i { font-size: 20px; }
    .Retama--FlashcardAddForm .SuccessMessage { font-size: 15px; padding: 8px 15px; }
    .Retama--FlashcardAddForm .BackToStudyButton { font-size: 15px; padding: 10px 20px; }
}

@media (max-width: 480px) {
    .Retama--FlashcardAddForm .AddFlashcardContainer {
        padding: 25px 15px;
        border-radius: 20px;
    }
    .Retama--FlashcardAddForm .AddFlashcardTitle { font-size: 28px; margin-bottom: 10px; }
    .Retama--FlashcardAddForm .AddFlashcardSubtitle { font-size: 14px; margin-bottom: 20px; }
    .Retama--FlashcardAddForm .FormFieldGroup { margin-bottom: 15px; }
    .Retama--FlashcardAddForm .FlashcardInput { font-size: 15px; padding: 10px 12px; min-height: 60px; }
    .Retama--FlashcardAddForm .SubmitFlashcardButton { font-size: 16px; padding: 12px 25px; }
    .Retama--FlashcardAddForm .SubmitFlashcardButton i { font-size: 18px; }
    .Retama--FlashcardAddForm .SuccessMessage { font-size: 14px; }
    .Retama--FlashcardAddForm .BackToStudyButton { font-size: 14px; padding: 8px 18px; }
}

/* Animate.css classes (ensure these are available or define them) */
.Retama--FlashcardAddForm .animate__animated {
    animation-duration: 0.6s; /* Default duration */
    animation-fill-mode: both;
}
.Retama--FlashcardAddForm .animate__animated.animate__faster {
  animation-duration: calc(0.6s * 0.5);
}
.Retama--FlashcardAddForm .animate__animated.animate__fast {
  animation-duration: calc(0.6s * 0.8);
}
.Retama--FlashcardAddForm .animate__animated.animate__slow {
  animation-duration: calc(0.6s * 2);
}
.Retama--FlashcardAddForm .animate__animated.animate__slower {
  animation-duration: calc(0.6s * 3);
}

/* Specific animation durations */
.Retama--FlashcardAddForm .animate__fadeIn,
.Retama--FlashcardAddForm .animate__fadeOut {
    animation-duration: 0.6s;
}
.Retama--FlashcardAddForm .animate__bounceIn {
    animation-duration: 0.75s;
}
.Retama--FlashcardAddForm .animate__pulse {
    animation-duration: 0.8s; /* Good for a quick emphasis */
    animation-iteration-count: 1; /* Only play once unless specified */
}
.Retama--FlashcardAddForm .animate__shakeX {
    animation-duration: 0.6s;
}
/* /RJSID:178 FlashcardAddForm */

/* RJSID:180 AudioPlayer */
/* ═══════════════════════════════════════════════════════════════
   Retama AudioPlayer — Dark Violet / Green Chromatic Theme
   ═══════════════════════════════════════════════════════════════ */

.Retama--AudioPlayer {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 50000;
    background: #0a0a10;
    font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
    color: #d4d0e8;
    overflow: hidden;
}

/* ── Main 3-column layout ── */
.Retama--AudioPlayer .APLayout {
    display: flex;
    width: 100%;
    height: 100%;
}

/* ══════════════════════════════════
   LEFT PANEL — Track List
   ══════════════════════════════════ */
.Retama--AudioPlayer .APTrackList {
    width: 300px;
    min-width: 260px;
    height: 100%;
    background: linear-gradient(180deg, #0d0b16 0%, #0f0d1a 50%, #0a0e12 100%);
    border-right: 1px solid rgba(130, 80, 255, 0.12);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.Retama--AudioPlayer .APTrackListHeader {
    padding: 20px 20px 14px;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2.5px;
    color: rgba(160, 140, 255, 0.6);
    border-bottom: 1px solid rgba(130, 80, 255, 0.08);
    flex-shrink: 0;
}

.Retama--AudioPlayer .APHeaderIcon {
    display: inline-block;
    margin-right: 6px;
    background: linear-gradient(135deg, #8250ff, #40ffaa);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    font-size: 15px;
}

.Retama--AudioPlayer .APTrackListInner {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 8px 0;
    scrollbar-width: thin;
    scrollbar-color: rgba(130, 80, 255, 0.25) transparent;
}

.Retama--AudioPlayer .APTrackListInner::-webkit-scrollbar {
    width: 5px;
}
.Retama--AudioPlayer .APTrackListInner::-webkit-scrollbar-track {
    background: transparent;
}
.Retama--AudioPlayer .APTrackListInner::-webkit-scrollbar-thumb {
    background: rgba(130, 80, 255, 0.25);
    border-radius: 4px;
}

/* ── Individual track item ── */
.Retama--AudioPlayer .APTrackItem {
    display: flex;
    align-items: center;
    padding: 10px 16px;
    margin: 1px 8px;
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.2s ease;
    position: relative;
    gap: 12px;
    user-select: none;
}

.Retama--AudioPlayer .APTrackItem:hover {
    background: rgba(130, 80, 255, 0.08);
}

.Retama--AudioPlayer .APTrackItem.APTrackHover {
    background: rgba(130, 80, 255, 0.06);
}

.Retama--AudioPlayer .APTrackItem.APTrackActive {
    background: linear-gradient(135deg, rgba(130, 80, 255, 0.15) 0%, rgba(64, 255, 170, 0.06) 100%);
    border-left: 3px solid;
    border-image: linear-gradient(180deg, #8250ff, #40ffaa) 1;
}

.Retama--AudioPlayer .APTrackItem.APTrackPlaying .APTrackNumber {
    animation: ap-pulse 1.5s ease-in-out infinite;
}

@keyframes ap-pulse {
    0%, 100% { opacity: 0.5; }
    50% { opacity: 1; }
}

.Retama--AudioPlayer .APTrackNumber {
    width: 22px;
    text-align: center;
    font-size: 12px;
    font-weight: 600;
    color: rgba(160, 140, 255, 0.35);
    flex-shrink: 0;
}

.Retama--AudioPlayer .APTrackActive .APTrackNumber {
    color: #8250ff;
}

.Retama--AudioPlayer .APTrackItemInfo {
    flex: 1;
    overflow: hidden;
    min-width: 0;
}

.Retama--AudioPlayer .APTrackItemTitle {
    font-size: 13.5px;
    font-weight: 500;
    color: #cdc8e0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.4;
}

.Retama--AudioPlayer .APTrackActive .APTrackItemTitle {
    background: linear-gradient(90deg, #c8b4ff, #80ffc8);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    font-weight: 600;
}

.Retama--AudioPlayer .APTrackItemDesc {
    font-size: 11px;
    color: rgba(160, 155, 180, 0.45);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.3;
    margin-top: 2px;
}

.Retama--AudioPlayer .APTrackPlayIcon {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    color: rgba(160, 140, 255, 0.3);
    transition: color 0.2s;
}

.Retama--AudioPlayer .APTrackItem:hover .APTrackPlayIcon {
    color: rgba(160, 140, 255, 0.7);
}

.Retama--AudioPlayer .APTrackActive .APTrackPlayIcon {
    color: #8250ff;
}


/* ══════════════════════════════════
   CENTER PANEL — Now Playing
   ══════════════════════════════════ */
.Retama--AudioPlayer .APCenterPanel {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 30px 40px 24px;
    position: relative;
    overflow: hidden;
    min-width: 0;
}

/* Subtle radial glow behind center */
.Retama--AudioPlayer .APCenterPanel::before {
    content: '';
    position: absolute;
    top: 30%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 500px;
    height: 500px;
    background: radial-gradient(circle, rgba(130, 80, 255, 0.06) 0%, rgba(64, 255, 170, 0.02) 40%, transparent 70%);
    pointer-events: none;
    z-index: 0;
}

/* ── Visualizer ── */
.Retama--AudioPlayer .APVisualizer {
    width: 100%;
    max-width: 600px;
    height: 180px;
    position: relative;
    z-index: 1;
    border-radius: 12px;
    overflow: hidden;
    background: rgba(15, 12, 25, 0.6);
    border: 1px solid rgba(130, 80, 255, 0.08);
    margin-bottom: 28px;
    flex-shrink: 0;
}

.Retama--AudioPlayer .APVisualizerCanvas {
    width: 100%;
    height: 100%;
    display: block;
}

/* ── Track Title & Description ── */
.Retama--AudioPlayer .APNowPlaying {
    text-align: center;
    z-index: 1;
    margin-bottom: 24px;
    max-width: 600px;
    width: 100%;
}

.Retama--AudioPlayer .APTrackTitle {
    font-size: 26px;
    font-weight: 700;
    letter-spacing: -0.5px;
    line-height: 1.3;
    background: linear-gradient(135deg, #d4c0ff 0%, #a8e6cf 50%, #c8b4ff 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    background-size: 200% 200%;
    animation: ap-gradient-shift 6s ease-in-out infinite;
}

@keyframes ap-gradient-shift {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

.Retama--AudioPlayer .APTrackDescription {
    font-size: 13px;
    color: rgba(180, 170, 200, 0.5);
    margin-top: 6px;
    line-height: 1.4;
}

/* ── Progress Bar ── */
.Retama--AudioPlayer .APProgressWrapper {
    display: flex;
    align-items: center;
    width: 100%;
    max-width: 600px;
    gap: 12px;
    z-index: 1;
    margin-bottom: 20px;
}

.Retama--AudioPlayer .APTimeCurrent,
.Retama--AudioPlayer .APTimeTotal {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.5px;
    color: rgba(160, 140, 255, 0.5);
    min-width: 38px;
    text-align: center;
    font-variant-numeric: tabular-nums;
}

.Retama--AudioPlayer .APProgressBar {
    flex: 1;
    height: 5px;
    background: rgba(255, 255, 255, 0.06);
    border-radius: 4px;
    position: relative;
    cursor: pointer;
    transition: height 0.15s ease;
}

.Retama--AudioPlayer .APProgressBar:hover {
    height: 8px;
}

.Retama--AudioPlayer .APProgressBuffer {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    background: rgba(130, 80, 255, 0.1);
    border-radius: 4px;
    pointer-events: none;
}

.Retama--AudioPlayer .APProgressFill {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    border-radius: 4px;
    background: linear-gradient(90deg, #8250ff, #40ffaa);
    pointer-events: none;
    box-shadow: 0 0 12px rgba(130, 80, 255, 0.3);
}

.Retama--AudioPlayer .APProgressHandle {
    position: absolute;
    top: 50%;
    width: 14px;
    height: 14px;
    background: #fff;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.15s ease;
    box-shadow: 0 0 8px rgba(130, 80, 255, 0.5);
}

.Retama--AudioPlayer .APProgressBar:hover .APProgressHandle {
    opacity: 1;
}

/* ── Transport Controls ── */
.Retama--AudioPlayer .APControls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    z-index: 1;
}

.Retama--AudioPlayer .APBtn {
    background: none;
    border: none;
    color: rgba(200, 190, 230, 0.6);
    font-size: 16px;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
    position: relative;
    outline: none;
}

.Retama--AudioPlayer .APBtn:hover {
    color: #d4c0ff;
    background: rgba(130, 80, 255, 0.1);
}

.Retama--AudioPlayer .APBtn:active {
    transform: scale(0.93);
}

/* Play/Pause button is larger */
.Retama--AudioPlayer .APBtnPlayPause {
    width: 56px;
    height: 56px;
    font-size: 20px;
    background: linear-gradient(135deg, rgba(130, 80, 255, 0.2) 0%, rgba(64, 255, 170, 0.1) 100%);
    border: 1px solid rgba(130, 80, 255, 0.2);
    color: #d4c0ff;
}

.Retama--AudioPlayer .APBtnPlayPause:hover {
    background: linear-gradient(135deg, rgba(130, 80, 255, 0.35) 0%, rgba(64, 255, 170, 0.15) 100%);
    border-color: rgba(130, 80, 255, 0.4);
    color: #fff;
    box-shadow: 0 0 20px rgba(130, 80, 255, 0.2);
}

.Retama--AudioPlayer .APBtnLabel {
    font-size: 8px;
    font-weight: 700;
    position: absolute;
    bottom: 7px;
    right: 7px;
    color: inherit;
    opacity: 0.6;
}

/* ── Volume ── */
.Retama--AudioPlayer .APVolumeWrapper {
    display: flex;
    align-items: center;
    margin-left: 20px;
    gap: 6px;
}

.Retama--AudioPlayer .APBtnMute {
    width: 34px;
    height: 34px;
    font-size: 14px;
}

.Retama--AudioPlayer .APVolumeBar {
    width: 80px;
    height: 4px;
    background: rgba(255, 255, 255, 0.06);
    border-radius: 3px;
    position: relative;
    cursor: pointer;
}

.Retama--AudioPlayer .APVolumeBar:hover {
    height: 6px;
}

.Retama--AudioPlayer .APVolumeFill {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    border-radius: 3px;
    background: linear-gradient(90deg, #8250ff, #40ffaa);
    pointer-events: none;
}

.Retama--AudioPlayer .APVolumeHandle {
    position: absolute;
    top: 50%;
    width: 10px;
    height: 10px;
    background: #fff;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.15s ease;
    box-shadow: 0 0 6px rgba(130, 80, 255, 0.4);
}

.Retama--AudioPlayer .APVolumeBar:hover .APVolumeHandle {
    opacity: 1;
}


/* ══════════════════════════════════
   RIGHT PANEL — Lyrics
   ══════════════════════════════════ */
.Retama--AudioPlayer .APLyrics {
    width: 320px;
    min-width: 260px;
    height: 100%;
    background: linear-gradient(180deg, #0d0b16 0%, #0f0d1a 50%, #0a0e12 100%);
    border-left: 1px solid rgba(64, 255, 170, 0.08);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.Retama--AudioPlayer .APLyricsHeader {
    padding: 20px 20px 14px;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2.5px;
    color: rgba(100, 230, 180, 0.45);
    border-bottom: 1px solid rgba(64, 255, 170, 0.06);
    flex-shrink: 0;
}

.Retama--AudioPlayer .APLyricsContent {
    flex: 1;
    overflow-y: auto;
    padding: 24px 20px;
    font-size: 14.5px;
    line-height: 2;
    color: rgba(200, 195, 220, 0.55);
    letter-spacing: 0.1px;
    scrollbar-width: thin;
    scrollbar-color: rgba(64, 255, 170, 0.15) transparent;
}

.Retama--AudioPlayer .APLyricsContent::-webkit-scrollbar {
    width: 5px;
}
.Retama--AudioPlayer .APLyricsContent::-webkit-scrollbar-track {
    background: transparent;
}
.Retama--AudioPlayer .APLyricsContent::-webkit-scrollbar-thumb {
    background: rgba(64, 255, 170, 0.15);
    border-radius: 4px;
}

.Retama--AudioPlayer .APLyricsPlaceholder {
    display: block;
    text-align: center;
    padding-top: 60px;
    color: rgba(160, 155, 180, 0.25);
    font-size: 13px;
    font-style: italic;
}


/* ══════════════════════════════════
   Mobile Tab Bar (hidden on desktop)
   ══════════════════════════════════ */
.Retama--AudioPlayer .APMobileTabBar {
    display: none;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 100;
    background: linear-gradient(180deg, #13101e 0%, #0a0a10 100%);
    border-top: 1px solid rgba(130, 80, 255, 0.15);
    padding: 6px 0 env(safe-area-inset-bottom, 6px);
    justify-content: space-around;
}

.Retama--AudioPlayer .APMobileTab {
    flex: 1;
    background: none;
    border: none;
    color: rgba(180, 170, 210, 0.4);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.5px;
    padding: 8px 0;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    transition: color 0.2s ease;
    outline: none;
}

.Retama--AudioPlayer .APMobileTab i {
    font-size: 16px;
}

.Retama--AudioPlayer .APMobileTab.APMobileTabActive {
    color: #c8b4ff;
}

.Retama--AudioPlayer .APMobileTab.APMobileTabActive::after {
    content: '';
    position: absolute;
    top: 0;
    left: 20%;
    right: 20%;
    height: 2px;
    background: linear-gradient(90deg, #8250ff, #40ffaa);
    border-radius: 0 0 2px 2px;
}

/* ══════════════════════════════════
   Responsive
   ══════════════════════════════════ */
@media (max-width: 1100px) {
    .Retama--AudioPlayer .APLyrics {
        display: none;
    }
}

@media (max-width: 750px) {
    /* Show the tab bar */
    .Retama--AudioPlayer .APMobileTabBar {
        display: flex;
    }

    /* Layout becomes stacked, each panel is full-width */
    .Retama--AudioPlayer .APLayout {
        flex-direction: column;
        height: calc(100% - 58px); /* leave room for tab bar */
    }

    /* Hide all panels by default on mobile */
    .Retama--AudioPlayer .APTrackList,
    .Retama--AudioPlayer .APCenterPanel,
    .Retama--AudioPlayer .APLyrics {
        display: none !important;
        width: 100% !important;
        min-width: 0 !important;
        height: 100% !important;
        border: none !important;
    }

    /* Show active panel based on class */
    .Retama--AudioPlayer .APLayout.APShowPlayer .APCenterPanel {
        display: flex !important;
    }

    .Retama--AudioPlayer .APLayout.APShowTracks .APTrackList {
        display: flex !important;
    }

    .Retama--AudioPlayer .APLayout.APShowLyrics .APLyrics {
        display: flex !important;
    }

    /* Default to player visible */
    .Retama--AudioPlayer .APLayout:not(.APShowTracks):not(.APShowLyrics) .APCenterPanel {
        display: flex !important;
    }

    /* Center panel adjustments for mobile */
    .Retama--AudioPlayer .APCenterPanel {
        padding: 16px 20px;
        justify-content: center;
    }

    .Retama--AudioPlayer .APVisualizer {
        height: 130px;
        margin-bottom: 20px;
    }

    .Retama--AudioPlayer .APTrackTitle {
        font-size: 20px;
    }

    .Retama--AudioPlayer .APControls {
        gap: 4px;
    }

    .Retama--AudioPlayer .APVolumeWrapper {
        margin-left: 12px;
    }

    /* Lyrics panel mobile */
    .Retama--AudioPlayer .APLyricsContent {
        padding: 20px 16px;
        font-size: 15px;
        line-height: 2.1;
    }

    /* Track list mobile */
    .Retama--AudioPlayer .APTrackListInner {
        padding: 4px 0;
    }
}
/* /RJSID:180 AudioPlayer */

/* RJSID:195 RenderInBackgroundResult */
[ClassName='RenderInBackgroundResult'] {
	min-height: 320px;
	display: block;
	padding: 48px 24px;
	text-align: center;
	color: #999;
	font-size: 14px;
}

/* /RJSID:195 RenderInBackgroundResult */

/* RJSID:181 BookReader */
/* ═══════════════════════════════════════════════════════════════
   Retama BookReader — Dark Literary Theme
   Matches AudioPlayer violet/green chromatic palette.
   Typography: Crimson Pro (serif) for comfortable long-form reading.
   ═══════════════════════════════════════════════════════════════ */

.Retama--BookReader {
    position: fixed;
    inset: 0;
    z-index: 50001;
    background: #09090f;
    font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
    color: #d4d0e8;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    -webkit-tap-highlight-color: transparent;
}


/* ══════════════════════════════════
   HEADER
   ══════════════════════════════════ */

.Retama--BookReader .BRHeader {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 13px 28px 11px;
    background: linear-gradient(180deg, #0d0b16 0%, rgba(13, 11, 22, 0) 100%);
    border-bottom: 1px solid rgba(130, 80, 255, 0.09);
    flex-shrink: 0;
    z-index: 10;
    transition: opacity 0.35s ease, transform 0.35s ease;
    gap: 16px;
}

.Retama--BookReader .BRHeader.BRUIHidden {
    opacity: 0;
    transform: translateY(-100%);
    pointer-events: none;
}

.Retama--BookReader .BRTitleText {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    background: linear-gradient(90deg, #c8b4ff 0%, #80ffc8 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
    min-width: 0;
}

/* ── Font-size controls ── */
.Retama--BookReader .BRFontControls {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.Retama--BookReader .BRFontBtn {
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    width: 34px;
    height: 28px;
    background: rgba(130, 80, 255, 0.1);
    border: 1px solid rgba(130, 80, 255, 0.18);
    color: #beb0e8;
    border-radius: 6px;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
    outline: none;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    user-select: none;
}

.Retama--BookReader .BRFontBtn:hover {
    background: rgba(130, 80, 255, 0.22);
    color: #e0d4ff;
}

.Retama--BookReader .BRFontBtn:active {
    transform: scale(0.93);
}

.Retama--BookReader .BRFontSizeLabel {
    font-size: 11px;
    color: rgba(160, 140, 255, 0.38);
    min-width: 36px;
    text-align: center;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.3px;
}

/* ── Page counter ── */
.Retama--BookReader .BRPageCounter {
    font-size: 11.5px;
    color: rgba(160, 140, 255, 0.38);
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.3px;
    flex-shrink: 0;
    min-width: 64px;
    text-align: right;
}


/* ══════════════════════════════════
   READING AREA
   ══════════════════════════════════ */

.Retama--BookReader .BRReadingArea {
    flex: 1;
    overflow: hidden;
    position: relative;
    display: flex;
    justify-content: center;
    align-items: stretch;
}

/* Subtle ambient glow that doesn't compete with text */
.Retama--BookReader .BRReadingArea::before {
    content: '';
    position: absolute;
    top: 25%;
    left: 50%;
    transform: translateX(-50%);
    width: 70%;
    height: 50%;
    background: radial-gradient(ellipse, rgba(130, 80, 255, 0.025) 0%, transparent 70%);
    pointer-events: none;
    z-index: 0;
}

/* Page content — the actual readable text */
.Retama--BookReader .BRPageContent {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 680px;
    height: 100%;
    padding: 36px 44px 32px;
    box-sizing: border-box;
    overflow: hidden;

    /* Typography for comfortable long-form reading */
    font-family: 'Crimson Pro', Georgia, 'Times New Roman', serif;
    font-size: 17px;
    line-height: 1.9;
    color: #e4ddd2; /* warm off-white — easier on eyes than pure white */
    letter-spacing: 0.015em;
    word-spacing: 0.03em;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    /* Safety buffer — JS also subtracts 28px from measured H, belt-and-suspenders */
    padding-bottom: 16px;
}

/* Paragraph styling */
.Retama--BookReader .BRPara {
    margin: 0 0 0.85em 0;
    text-indent: 1.8em;
}

.Retama--BookReader .BRPara:first-child {
    text-indent: 0; /* No indent on first paragraph of a page */
}


/* ══════════════════════════════════
   PAGE TURN ANIMATIONS
   ══════════════════════════════════ */

@keyframes brSlideOutLeft {
    0%   { opacity: 1; transform: translateX(0); }
    100% { opacity: 0; transform: translateX(-38px); }
}

@keyframes brSlideOutRight {
    0%   { opacity: 1; transform: translateX(0); }
    100% { opacity: 0; transform: translateX(38px); }
}

@keyframes brSlideInFromRight {
    0%   { transform: translateX(38px); }
    100% { transform: translateX(0); }
}

@keyframes brSlideInFromLeft {
    0%   { transform: translateX(-38px); }
    100% { transform: translateX(0); }
}

.Retama--BookReader .BRSlideOutLeft {
    animation: brSlideOutLeft 0.18s ease-in forwards;
}

.Retama--BookReader .BRSlideOutRight {
    animation: brSlideOutRight 0.18s ease-in forwards;
}

/* Initial state before animation starts */
.Retama--BookReader .BRSlideInRight {
    opacity: 0;
    transform: translateX(38px);
}

.Retama--BookReader .BRSlideInLeft {
    opacity: 0;
    transform: translateX(-38px);
}

/* Fires after double-rAF to trigger the animation */
.Retama--BookReader .BRSlideInRight.BRAnimateIn {
    animation: brSlideInFromRight 0.28s ease-out forwards;
}

.Retama--BookReader .BRSlideInLeft.BRAnimateIn {
    animation: brSlideInFromLeft 0.28s ease-out forwards;
}


/* ══════════════════════════════════
   FOOTER / NAVIGATION
   ══════════════════════════════════ */

.Retama--BookReader .BRFooter {
    display: flex;
    align-items: center;
    padding: 9px 24px 16px;
    gap: 14px;
    background: linear-gradient(0deg, #0d0b16 0%, rgba(13, 11, 22, 0) 100%);
    border-top: 1px solid rgba(64, 255, 170, 0.06);
    flex-shrink: 0;
    transition: opacity 0.35s ease, transform 0.35s ease;
    z-index: 10;
}

.Retama--BookReader .BRFooter.BRUIHidden {
    opacity: 0;
    transform: translateY(100%);
    pointer-events: none;
}

/* Nav buttons */
.Retama--BookReader .BRBtn {
    background: none;
    border: none;
    outline: none;
    cursor: pointer;
    color: rgba(200, 185, 240, 0.45);
    font-size: 15px;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: color 0.2s, background 0.2s, transform 0.1s;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
}

.Retama--BookReader .BRBtn:hover {
    color: #d4c0ff;
    background: rgba(130, 80, 255, 0.1);
}

.Retama--BookReader .BRBtn:active {
    transform: scale(0.9);
}

.Retama--BookReader .BRBtn.BRBtnDisabled {
    opacity: 0.18;
    cursor: default;
    pointer-events: none;
}

/* Progress bar */
.Retama--BookReader .BRProgressBar {
    flex: 1;
    height: 3px;
    background: rgba(255, 255, 255, 0.05);
    border-radius: 2px;
    position: relative;
    overflow: visible;
}

/* Footer page counter */
.Retama--BookReader .BRFooterPageCounter {
    font-size: 11px;
    color: rgba(160, 140, 255, 0.45);
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.3px;
    white-space: nowrap;
    flex-shrink: 0;
    min-width: 60px;
    text-align: center;
}

.Retama--BookReader .BRProgressFill {
    height: 100%;
    border-radius: 2px;
    background: linear-gradient(90deg, #8250ff, #40ffaa);
    transition: width 0.5s ease;
    box-shadow: 0 0 8px rgba(130, 80, 255, 0.25);
    position: relative;
    min-width: 3px;
}

/* Glowing marker at the reading position */
.Retama--BookReader .BRProgressFill::after {
    content: '';
    position: absolute;
    right: -4px;
    top: 50%;
    transform: translateY(-50%);
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: #c0a0ff;
    box-shadow: 0 0 7px rgba(130, 80, 255, 0.7);
    transition: background 0.5s;
}


/* ══════════════════════════════════
   LOADING OVERLAY
   ══════════════════════════════════ */

.Retama--BookReader .BRLoadingOverlay {
    position: absolute;
    inset: 0;
    background: #09090f;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 200;
    gap: 22px;
}

.Retama--BookReader .BRLoadingSpinner {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 2px solid rgba(130, 80, 255, 0.1);
    border-top-color:  #8250ff;
    border-right-color: #40ffaa;
    animation: brSpin 0.9s linear infinite;
}

@keyframes brSpin {
    to { transform: rotate(360deg); }
}

.Retama--BookReader .BRLoadingMsg {
    font-size: 12px;
    letter-spacing: 2.5px;
    text-transform: uppercase;
    color: rgba(160, 140, 255, 0.38);
}


/* ══════════════════════════════════
   SCROLLBAR (for reading area if overflow shown)
   ══════════════════════════════════ */

.Retama--BookReader .BRPageContent::-webkit-scrollbar {
    width: 4px;
}
.Retama--BookReader .BRPageContent::-webkit-scrollbar-track {
    background: transparent;
}
.Retama--BookReader .BRPageContent::-webkit-scrollbar-thumb {
    background: rgba(130, 80, 255, 0.2);
    border-radius: 4px;
}


/* ══════════════════════════════════
   RESPONSIVE — Tablet
   ══════════════════════════════════ */

@media (max-width: 900px) {
    .Retama--BookReader .BRPageContent {
        max-width: 100%;
        padding: 28px 36px;
    }
}


/* ══════════════════════════════════
   RESPONSIVE — Mobile
   ══════════════════════════════════ */

@media (max-width: 600px) {
    .Retama--BookReader .BRPageContent {
        padding: 22px 22px 18px;
        font-size: 16px;
        line-height: 1.85;
    }

    .Retama--BookReader .BRHeader {
        padding: 10px 16px 9px;
    }

    .Retama--BookReader .BRTitleText {
        font-size: 11px;
        letter-spacing: 1.5px;
    }

    .Retama--BookReader .BRFooter {
        padding: 7px 16px 18px; /* extra bottom for iPhone home indicator */
        padding-bottom: max(18px, env(safe-area-inset-bottom, 18px));
    }

    .Retama--BookReader .BRPageCounter {
        display: none; /* footer counter covers this on mobile */
    }

    .Retama--BookReader .BRFooterPageCounter {
        font-size: 10px;
        min-width: 48px;
    }

    .Retama--BookReader .BRFontBtn {
        width: 32px;
        height: 26px;
        font-size: 12px;
    }
}
/* /RJSID:181 BookReader */

/* RJSID:41 Alert */
.RetamaAlertContainer * {
	box-sizing: border-box;
}
.RetamaAlertContainer {
	position: fixed;
	top: 30px;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 999999;
	display: flex;
	/*
		visibility: hidden;
		opacity: 0;
	*/
	flex-direction: column;
	align-items: center;
	overflow: hidden;
	-webkit-overflow-scrolling: touch;
	background: rgba(0, 0, 0, .65);
	width: 100%;
	cursor: pointer;
}
body.Night .RetamaAlertContainer {
	background: rgba(255,255,255,.65);
}

.RetamaAlert {
	position: relative;
	flex-shrink: 0;
	/*margin-top: auto;
	margin-bottom: auto;*/
	min-width: 25rem;
	max-width: 100%;
	margin: 30px auto;
	border-radius: 5px;
	font-size: 16px;
	padding: 20px 5px;
	min-height: 50px;
	background: whitesmoke;
	opacity: 1;
	cursor: auto;
	will-change: transform, opacity;
}

body.Night .RetamaAlert {
	background-color: #090909;
	color: white;
}

.RetamaAlertContainer.Left {
	align-items: flex-start;
}
.RetamaAlertContainer.Right {
	align-items: flex-end;
}

.RetamaAlertContainer.Left .RetamaAlert {
	margin-left: 1em;
}

.RetamaAlertContainer.Right .RetamaAlert {
	margin-right: 1em;
}

.RetamaAlertContainer.Top .RetamaAlert {
	margin-top: 1em;
}
.RetamaAlertContainer.Bottom .RetamaAlert {
	margin-top: auto;
	margin-bottom: 1em;
}

.RetamaAlert .RetamaAlert--Title {
	font-size: 2rem;
	font-weight: bold;
	text-align: center;
	color: #555555;
}
body.Night .RetamaAlert .RetamaAlert--Title {
	color: #aaaaaa;
}

.RetamaAlert .RetamaAlert--Icon {
	padding: 5px;
	text-align: center;
	color: black;
}
.RetamaAlert .RetamaAlert--IconStyleContainer {
	padding: 1.5rem;
	display: inline-block;
}

.RetamaAlert .RetamaAlert--IconStyleContainer.Circle {
	border-radius: 50%;
	-moz-box-shadow:    inset 0 -0.75rem 0 rgba(0, 0, 0, 0.5);
   	-webkit-box-shadow: inset 0 -0.75rem 0 rgba(0, 0, 0, 0.5);
   	box-shadow:         inset 0 -0.75rem 0 rgba(0, 0, 0, 0.5);
}

.RetamaAlert .RetamaAlert--Element {
	padding-top: 10px;
	padding-bottom: 10px;
}

.RetamaAlert .RetamaAlert--Body {
	padding-top: 10px;
	padding-bottom: 10px;
}

.RetamaAlert .RetamaAlert--Footer {
	padding: 10px;
	border-top: 2px dotted #dddddd;
}

.RetamaAlert .RetamaAlert--ButtonRow {
	text-align: center;
	margin-top: 2em;
}

.RetamaAlert .RetamaAlert--CloseButton {
	position: absolute;
	top: 0;
	right: 0;
	justify-content: center;
	width: 1.2em;
	height: 1.2em;
	padding: 0;
	overflow: hidden;
	border: none;
	border-radius: 0;
	outline: initial;
	background: 0 0;
	color: #ccc;
	font-family: serif;
	font-size: 2.5em;
	line-height: 1.2;
	cursor: pointer;
	display: flex;
}


/* /RJSID:41 Alert */

/* RJSID:45 EditInPlace */
[ClassName="EditInPlace"] {
	cursor: pointer;
}

/* /RJSID:45 EditInPlace */

/* RJSID:55 ToggleButtonList */
.ToggleButtonList_Container {
    line-height: 2rem;
    font-size: 1rem;
    display: inline-block;
}
.ToggleButtonList_Item {
	background-color: #a22153;
    color: white;
    border-radius: 0.25em;
    padding: 0.25em 0.3em;
    font-size: 1em;
    cursor: pointer;
    white-space: nowrap;
    user-select: none;
    filter: drop-shadow(0.1em 0.1em 0.1em rgba(0,0,0,0.5));
    margin: 0 0.1em;
}
.ToggleButtonList_Item .ToggleButtonList_NewValue {
	color: #f8fd3e;
    font-size: 1em;
    white-space: nowrap;
    cursor: pointer;
    margin: 0.1em 0.1em;
    user-select: none;
    padding: 0 0.5em;
}

.ToggleButtonList_Item:after {
    content: " ";
    white-space: normal;
}
.ToggleButtonList_Item:hover {
    background-color: #c24173;
    filter: none;
}
.ToggleButtonList_Item:active {
    filter: none;
    color: white;
    background-color: black;
}
.ToggleButtonList_Item.Checked {
    background-color: white;
    color: #a22153 !important;
}
.ToggleButtonList_Item.Checked .ToggleButtonList_NewValue {
	background-color: #8e0a3d;
    color: white;
    padding: 0em 0.5em;
	border-radius: 0.15em;
}
/* /RJSID:55 ToggleButtonList */

/* RJSID:59 TraitSelector */
.TraitSelector_SelectBox {
    border: 1px solid #555; /* Darker border */
    position: absolute;
    padding: 10px;
    background-color: #312633; /* Dark background similar to the modal */
    color: #fff; /* White text for contrast */
    font-size: 14px;
    overflow-x: hidden;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3), 0 6px 20px rgba(0, 0, 0, 0.3); /* Stronger shadow for depth */
    border-radius: 8px;
    z-index: 999999;
    display: none; /* Hide by default */
}

.TraitSelector_SelectBox .Traits {
    overflow-y: auto;
    max-height: 300px;
    width: auto;
    padding: 5px;
    text-align: left;
    background-color: rgba(44, 44, 84, 0.8); /* Semi-transparent background for the list */
}

.TraitSelector_SelectBox input,
.TraitSelector_SelectBox input[type=text],
.TraitSelector_SelectBox .FilterInput {
    display: block;
    margin-bottom: 10px;
    width: calc(100% - 20px);
    padding: 8px;
    border: 1px solid #777; /* Darker border for input */
    background-color: #201922; /* Dark input background */
    color: #fff; /* White text for input */
    border-radius: 4px;
    box-sizing: border-box;
    outline: none; /* Remove the outline */
}

.TraitsList {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow-y: auto;
    max-height: 200px;
}

.TraitOption {
	padding: 5px;
    /* border-bottom: 1px solid #3e3e5e; */
    cursor: pointer;
    background-color: #312633;
    transition: background-color 0.3s;
    border-radius: 5px;
    margin: 2px 5px;
}

.TraitOption:last-child {
    border-bottom: none;
}

.TraitOption:hover,
.TraitOption.Selected {
    background-color: #f7fc37; 
    color: black;
}

/* Additional style for the 'Selected' state to add a glow effect */
.TraitOption.Selected {
    position: relative;
    outline: 2px solid #9c9931;
    border-radius: 4px;
}
/* /RJSID:59 TraitSelector */

/* RJSID:42 Button */
[Traits~=Button] {
	display: none;
}
.RetamaButton {
	display: inline-block;
	text-align: center;
	vertical-align: middle;
	-webkit-user-select: none;
	-moz-user-select: none;
	font-family: Calibri, "Blokk", Arial, sans-serif;
	-ms-user-select: none;
	cursor: pointer;
	user-select: none;
	border-color: transparent;
	border-width: 0;
	line-height: 1.5;
	font-size: 1rem;
	padding: 0;
	margin: 0.1rem;
	border-radius: 0.25em;
	transition: color 0.35s ease-in, background-color 0.35s ease-in, border-color 0.35s ease-in, box-shadow 0.35s ease-in;
}

.RetamaButton[disabled], .RetamaButton.Dull {
	opacity: 0.6;
}

.RetamaButton .HoverLayer {
	display: inline-block;
	font-weight: 400;
	text-align: center;
	vertical-align: middle;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	padding: 0.18em 0.375em;

	background-color: rgba(0, 0, 0, 0.1);
	border: 0.2em solid transparent;
	line-height: 1.4;
	border-radius: 0.25em;
	transition: color 0.35s ease-in, background-color 0.35s ease-in, border-color 0.35s ease-in, box-shadow 0.35s ease-in;
}

.RetamaButton:hover .HoverLayer {
	border-radius: 0.25em;
	border: 0.2em solid rgba(0, 0, 0, 0.3);
	/* background-color: rgba(255, 255, 255, 0.4); */
	box-shadow: 0 0 0 0.1em rgba(0, 0, 0, 0.15);

}

.RetamaButton .Content {

}

.RetamaButton:focus, .RetamaButton.focus {
	/* border: 30px solid red; */
	outline: 0px solid red;
	box-shadow: 0 0 0 0.4em rgba(0, 123, 255, 0.45);
}

.RetamaButton .Icon {
	display: inline-block;
	padding: 0.18em 0.375em;
}
.RetamaButton[IconPosition="Left"] .Icon {
	padding: 0.18em 0.375em 0.18em 0.18em;
}
.RetamaButton[IconPosition="Right"] .Icon {
	padding: 0.18em 0.18em 0.18em 0.375em;
}
.RetamaButton[IconPosition="Top"] .Icon {
	padding: 0.18em 0.375em;
}
.RetamaButton[IconPosition="Bottom"] .Icon {
	padding: 0.18em 0.375em;
}


.RetamaButton .Icon.Circle {
	background-color: rgba(255,255,255,0.05);
	border-radius: 50%;
}
.RetamaButton .Icon.Square {
	background-color: rgba(255,255,255,0.05);
	border-radius: 5%;
}

/* /RJSID:42 Button */

/* RJSID:49 Icon */
.Retama--IconTrait {
	display: inline-block;
	position: relative;
	/* padding: 1.5em; */
}
.Retama--IconTrait .Retama--IconTraitIcon {
	width: 1em;
	font-size: 3em;
	text-align: center;
}

.Retama--IconTrait .Retama--IconTraitInnerContainer {
	border-radius: inherit;
	display: inline-block;
}

.Retama--IconTrait .Retama--IconTraitBoxShadowContainer {
	padding: 1.5em;
	border-radius: inherit;
	display: inline-block;
}

.Retama--IconTrait.Orb .Retama--IconTraitGloss {

}





/******* ORB **/
	.Retama--IconTrait.Orb {
		border-radius: 50%;
	}
	.Retama--IconTrait.Orb .Retama--IconTraitInnerContainer {
		animation: SubtleFlash 3s ease-in-out;
		animation-iteration-count: infinite;
	}

	.Retama--IconTrait.Orb .Retama--IconTraitBoxShadowContainer {
		-moz-box-shadow: 0.1em 0.1em 0 rgba(0,0,0,0.4), inset 0 -0.30em 0 rgba(0, 0, 0, 0.2), inset 0 0.4em 1em 0.1em rgba(0, 0, 0, 0.5);
		-webkit-box-shadow: 0.1em 0.1em 0 rgba(0,0,0,0.4), inset 0 -0.30em 0 rgba(0, 0, 0, 0.2), inset 0 0.4em 1em 0.1em rgba(0, 0, 0, 0.5);
		box-shadow: 0.1em 0.1em 0 rgba(0,0,0,0.4), inset 0 -0.30em 0 rgba(0, 0, 0, 0.2), inset 0 0.4em 1em 0.1em rgba(0, 0, 0, 0.5);
	}

	@keyframes SubtleFlash {
		from,
		50%,
		to {
			background-color: rgba(0,0,0, 0.2);
		}

		25%,
		75% {
			background-color: rgba(0,0,0, 0.0);
		}
	}

	.Retama--IconTrait.Orb .Retama--IconTraitGloss {
		position: absolute;
		top: 0.4em;
		left: 0.9em;
		border-radius: 50%;
		display: block;
		width: 4.2em;
		height: 3em;
		background-image: linear-gradient(180deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255, 0.8) 5%, transparent);
	}
/*** /ORB **/


.Retama--IconTrait.CircleOriginal {
	border-radius: 50%;
	-moz-box-shadow:    inset 0 -0.60em 0 rgba(0, 0, 0, 0.5);
   	-webkit-box-shadow: inset 0 -0.60em 0 rgba(0, 0, 0, 0.5);
   	box-shadow:         inset 0 -0.60em 0 rgba(0, 0, 0, 0.5);
}

.Retama--IconTrait.Square {
	border-radius: 0;
	-moz-box-shadow:    inset 0 0 0.8em 0.4em rgba(0, 0, 0, 0.3);
   	-webkit-box-shadow: inset 0 0 0.8em 0.4em rgba(0, 0, 0, 0.3);
   	box-shadow:         inset 0 0 0.8em 0.4em rgba(0, 0, 0, 0.3);
}

.Retama--IconTrait.RoundedEdges {
	border-radius: 1em;
	-moz-box-shadow:    inset 0 0 0.8em 0.4em rgba(0, 0, 0, 0.3);
   	-webkit-box-shadow: inset 0 0 0.8em 0.4em rgba(0, 0, 0, 0.3);
   	box-shadow:         inset 0 0 0.8em 0.4em rgba(0, 0, 0, 0.3);
}

.Retama--IconTrait.DropShadow {
	text-shadow: 0.1em 0.1em 0.1em rgba(0, 0, 0, 0.4);
}

.Retama--IconTrait.IconDropShadow .Retama--IconTraitIcon {
	text-shadow: 0.1em 0.1em 0.1em rgba(0, 0, 0, 0.4);
}


/* /RJSID:49 Icon */

/* RJSID:160 BringToFrontOnHover */
.BringToFrontHover-fade-out {
    transition: opacity 0.5s ease;
    opacity: 0;
}
/* /RJSID:160 BringToFrontOnHover */

/* RJSID:125 animate.css */
@charset "UTF-8";

/*!
 * animate.css -https://daneden.github.io/animate.css/
 * Version - 3.7.1
 * Licensed under the MIT license - http://opensource.org/licenses/MIT
 *
 * Copyright (c) 2019 Daniel Eden
 */

@-webkit-keyframes bounce {
  from,
  20%,
  53%,
  80%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  40%,
  43% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -webkit-transform: translate3d(0, -30px, 0);
    transform: translate3d(0, -30px, 0);
  }

  70% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -webkit-transform: translate3d(0, -15px, 0);
    transform: translate3d(0, -15px, 0);
  }

  90% {
    -webkit-transform: translate3d(0, -4px, 0);
    transform: translate3d(0, -4px, 0);
  }
}

@keyframes bounce {
  from,
  20%,
  53%,
  80%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  40%,
  43% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -webkit-transform: translate3d(0, -30px, 0);
    transform: translate3d(0, -30px, 0);
  }

  70% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -webkit-transform: translate3d(0, -15px, 0);
    transform: translate3d(0, -15px, 0);
  }

  90% {
    -webkit-transform: translate3d(0, -4px, 0);
    transform: translate3d(0, -4px, 0);
  }
}

.bounce {
  -webkit-animation-name: bounce;
  animation-name: bounce;
  -webkit-transform-origin: center bottom;
  transform-origin: center bottom;
}

@-webkit-keyframes flash {
  from,
  50%,
  to {
    opacity: 1;
  }

  25%,
  75% {
    opacity: 0;
  }
}

@keyframes flash {
  from,
  50%,
  to {
    opacity: 1;
  }

  25%,
  75% {
    opacity: 0;
  }
}

.flash {
  -webkit-animation-name: flash;
  animation-name: flash;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */

@-webkit-keyframes pulse {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  50% {
    -webkit-transform: scale3d(1.05, 1.05, 1.05);
    transform: scale3d(1.05, 1.05, 1.05);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

@keyframes pulse {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  50% {
    -webkit-transform: scale3d(1.05, 1.05, 1.05);
    transform: scale3d(1.05, 1.05, 1.05);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

.pulse {
  -webkit-animation-name: pulse;
  animation-name: pulse;
}

@-webkit-keyframes rubberBand {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  30% {
    -webkit-transform: scale3d(1.25, 0.75, 1);
    transform: scale3d(1.25, 0.75, 1);
  }

  40% {
    -webkit-transform: scale3d(0.75, 1.25, 1);
    transform: scale3d(0.75, 1.25, 1);
  }

  50% {
    -webkit-transform: scale3d(1.15, 0.85, 1);
    transform: scale3d(1.15, 0.85, 1);
  }

  65% {
    -webkit-transform: scale3d(0.95, 1.05, 1);
    transform: scale3d(0.95, 1.05, 1);
  }

  75% {
    -webkit-transform: scale3d(1.05, 0.95, 1);
    transform: scale3d(1.05, 0.95, 1);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

@keyframes rubberBand {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  30% {
    -webkit-transform: scale3d(1.25, 0.75, 1);
    transform: scale3d(1.25, 0.75, 1);
  }

  40% {
    -webkit-transform: scale3d(0.75, 1.25, 1);
    transform: scale3d(0.75, 1.25, 1);
  }

  50% {
    -webkit-transform: scale3d(1.15, 0.85, 1);
    transform: scale3d(1.15, 0.85, 1);
  }

  65% {
    -webkit-transform: scale3d(0.95, 1.05, 1);
    transform: scale3d(0.95, 1.05, 1);
  }

  75% {
    -webkit-transform: scale3d(1.05, 0.95, 1);
    transform: scale3d(1.05, 0.95, 1);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

.rubberBand {
  -webkit-animation-name: rubberBand;
  animation-name: rubberBand;
}

@-webkit-keyframes shake {
  from,
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  10%,
  30%,
  50%,
  70%,
  90% {
    -webkit-transform: translate3d(-10px, 0, 0);
    transform: translate3d(-10px, 0, 0);
  }

  20%,
  40%,
  60%,
  80% {
    -webkit-transform: translate3d(10px, 0, 0);
    transform: translate3d(10px, 0, 0);
  }
}

@keyframes shake {
  from,
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  10%,
  30%,
  50%,
  70%,
  90% {
    -webkit-transform: translate3d(-10px, 0, 0);
    transform: translate3d(-10px, 0, 0);
  }

  20%,
  40%,
  60%,
  80% {
    -webkit-transform: translate3d(10px, 0, 0);
    transform: translate3d(10px, 0, 0);
  }
}

.shake {
  -webkit-animation-name: shake;
  animation-name: shake;
}

@-webkit-keyframes headShake {
  0% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
  }

  6.5% {
    -webkit-transform: translateX(-6px) rotateY(-9deg);
    transform: translateX(-6px) rotateY(-9deg);
  }

  18.5% {
    -webkit-transform: translateX(5px) rotateY(7deg);
    transform: translateX(5px) rotateY(7deg);
  }

  31.5% {
    -webkit-transform: translateX(-3px) rotateY(-5deg);
    transform: translateX(-3px) rotateY(-5deg);
  }

  43.5% {
    -webkit-transform: translateX(2px) rotateY(3deg);
    transform: translateX(2px) rotateY(3deg);
  }

  50% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes headShake {
  0% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
  }

  6.5% {
    -webkit-transform: translateX(-6px) rotateY(-9deg);
    transform: translateX(-6px) rotateY(-9deg);
  }

  18.5% {
    -webkit-transform: translateX(5px) rotateY(7deg);
    transform: translateX(5px) rotateY(7deg);
  }

  31.5% {
    -webkit-transform: translateX(-3px) rotateY(-5deg);
    transform: translateX(-3px) rotateY(-5deg);
  }

  43.5% {
    -webkit-transform: translateX(2px) rotateY(3deg);
    transform: translateX(2px) rotateY(3deg);
  }

  50% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
  }
}

.headShake {
  -webkit-animation-timing-function: ease-in-out;
  animation-timing-function: ease-in-out;
  -webkit-animation-name: headShake;
  animation-name: headShake;
}

@-webkit-keyframes swing {
  20% {
    -webkit-transform: rotate3d(0, 0, 1, 15deg);
    transform: rotate3d(0, 0, 1, 15deg);
  }

  40% {
    -webkit-transform: rotate3d(0, 0, 1, -10deg);
    transform: rotate3d(0, 0, 1, -10deg);
  }

  60% {
    -webkit-transform: rotate3d(0, 0, 1, 5deg);
    transform: rotate3d(0, 0, 1, 5deg);
  }

  80% {
    -webkit-transform: rotate3d(0, 0, 1, -5deg);
    transform: rotate3d(0, 0, 1, -5deg);
  }

  to {
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
    transform: rotate3d(0, 0, 1, 0deg);
  }
}

@keyframes swing {
  20% {
    -webkit-transform: rotate3d(0, 0, 1, 15deg);
    transform: rotate3d(0, 0, 1, 15deg);
  }

  40% {
    -webkit-transform: rotate3d(0, 0, 1, -10deg);
    transform: rotate3d(0, 0, 1, -10deg);
  }

  60% {
    -webkit-transform: rotate3d(0, 0, 1, 5deg);
    transform: rotate3d(0, 0, 1, 5deg);
  }

  80% {
    -webkit-transform: rotate3d(0, 0, 1, -5deg);
    transform: rotate3d(0, 0, 1, -5deg);
  }

  to {
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
    transform: rotate3d(0, 0, 1, 0deg);
  }
}

.swing {
  -webkit-transform-origin: top center;
  transform-origin: top center;
  -webkit-animation-name: swing;
  animation-name: swing;
}

@-webkit-keyframes swing2 {
  25% {
    -webkit-transform: rotate3d(0, 0, 1, 15deg);
    transform: rotate3d(0, 0, 1, 15deg);
  }

  50% {
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
    transform: rotate3d(0, 0, 1, 0deg);
  }

  75% {
    -webkit-transform: rotate3d(0, 0, 1, -15deg);
    transform: rotate3d(0, 0, 1, -15deg);
  }

  to {
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
    transform: rotate3d(0, 0, 1, 0deg);
  }
}

@keyframes swing2 {
  25% {
    -webkit-transform: rotate3d(0, 0, 1, 180deg);
    transform: rotate3d(0, 0, 1, 180deg);
  }

  50% {
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
    transform: rotate3d(0, 0, 1, 0deg);
  }

  75% {
    -webkit-transform: rotate3d(0, 0, 1, -180deg);
    transform: rotate3d(0, 0, 1, -180deg);
  }

  to {
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
    transform: rotate3d(0, 0, 1, 0deg);
  }
}

.swing2 {
  -webkit-transform-origin: top center;
  transform-origin: top center;
  -webkit-animation-name: swing2;
  animation-name: swing2;
  animation-timing-function: linear;
}

@-webkit-keyframes tada {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  10%,
  20% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
    transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
  }

  30%,
  50%,
  70%,
  90% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  }

  40%,
  60%,
  80% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

@keyframes tada {
  from {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }

  10%,
  20% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
    transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
  }

  30%,
  50%,
  70%,
  90% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  }

  40%,
  60%,
  80% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  }

  to {
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

.tada {
  -webkit-animation-name: tada;
  animation-name: tada;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */

@-webkit-keyframes wobble {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  15% {
    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
  }

  30% {
    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
  }

  45% {
    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
  }

  60% {
    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
  }

  75% {
    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes wobble {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  15% {
    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
  }

  30% {
    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
  }

  45% {
    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
  }

  60% {
    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
  }

  75% {
    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.wobble {
  -webkit-animation-name: wobble;
  animation-name: wobble;
}

@-webkit-keyframes jello {
  from,
  11.1%,
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  22.2% {
    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
    transform: skewX(-12.5deg) skewY(-12.5deg);
  }

  33.3% {
    -webkit-transform: skewX(6.25deg) skewY(6.25deg);
    transform: skewX(6.25deg) skewY(6.25deg);
  }

  44.4% {
    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
    transform: skewX(-3.125deg) skewY(-3.125deg);
  }

  55.5% {
    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
    transform: skewX(1.5625deg) skewY(1.5625deg);
  }

  66.6% {
    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
    transform: skewX(-0.78125deg) skewY(-0.78125deg);
  }

  77.7% {
    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
    transform: skewX(0.390625deg) skewY(0.390625deg);
  }

  88.8% {
    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
  }
}

@keyframes jello {
  from,
  11.1%,
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  22.2% {
    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
    transform: skewX(-12.5deg) skewY(-12.5deg);
  }

  33.3% {
    -webkit-transform: skewX(6.25deg) skewY(6.25deg);
    transform: skewX(6.25deg) skewY(6.25deg);
  }

  44.4% {
    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
    transform: skewX(-3.125deg) skewY(-3.125deg);
  }

  55.5% {
    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
    transform: skewX(1.5625deg) skewY(1.5625deg);
  }

  66.6% {
    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
    transform: skewX(-0.78125deg) skewY(-0.78125deg);
  }

  77.7% {
    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
    transform: skewX(0.390625deg) skewY(0.390625deg);
  }

  88.8% {
    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
  }
}

.jello {
  -webkit-animation-name: jello;
  animation-name: jello;
  -webkit-transform-origin: center;
  transform-origin: center;
}

@-webkit-keyframes heartBeat {
  0% {
    -webkit-transform: scale(1);
    transform: scale(1);
  }

  14% {
    -webkit-transform: scale(1.3);
    transform: scale(1.3);
  }

  28% {
    -webkit-transform: scale(1);
    transform: scale(1);
  }

  42% {
    -webkit-transform: scale(1.3);
    transform: scale(1.3);
  }

  70% {
    -webkit-transform: scale(1);
    transform: scale(1);
  }
}

@keyframes heartBeat {
  0% {
    -webkit-transform: scale(1);
    transform: scale(1);
  }

  14% {
    -webkit-transform: scale(1.3);
    transform: scale(1.3);
  }

  28% {
    -webkit-transform: scale(1);
    transform: scale(1);
  }

  42% {
    -webkit-transform: scale(1.3);
    transform: scale(1.3);
  }

  70% {
    -webkit-transform: scale(1);
    transform: scale(1);
  }
}

.heartBeat {
  -webkit-animation-name: heartBeat;
  animation-name: heartBeat;
  -webkit-animation-duration: 1.3s;
  animation-duration: 1.3s;
  -webkit-animation-timing-function: ease-in-out;
  animation-timing-function: ease-in-out;
}

@-webkit-keyframes bounceIn {
  from,
  20%,
  40%,
  60%,
  80%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  0% {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
    transform: scale3d(0.3, 0.3, 0.3);
  }

  20% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
    transform: scale3d(1.1, 1.1, 1.1);
  }

  40% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9);
    transform: scale3d(0.9, 0.9, 0.9);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(1.03, 1.03, 1.03);
    transform: scale3d(1.03, 1.03, 1.03);
  }

  80% {
    -webkit-transform: scale3d(0.97, 0.97, 0.97);
    transform: scale3d(0.97, 0.97, 0.97);
  }

  to {
    opacity: 1;
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

@keyframes bounceIn {
  from,
  20%,
  40%,
  60%,
  80%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  0% {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
    transform: scale3d(0.3, 0.3, 0.3);
  }

  20% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
    transform: scale3d(1.1, 1.1, 1.1);
  }

  40% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9);
    transform: scale3d(0.9, 0.9, 0.9);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(1.03, 1.03, 1.03);
    transform: scale3d(1.03, 1.03, 1.03);
  }

  80% {
    -webkit-transform: scale3d(0.97, 0.97, 0.97);
    transform: scale3d(0.97, 0.97, 0.97);
  }

  to {
    opacity: 1;
    -webkit-transform: scale3d(1, 1, 1);
    transform: scale3d(1, 1, 1);
  }
}

.bounceIn {
  -webkit-animation-duration: 0.75s;
  animation-duration: 0.75s;
  -webkit-animation-name: bounceIn;
  animation-name: bounceIn;
}

@-webkit-keyframes bounceInDown {
  from,
  60%,
  75%,
  90%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  0% {
    opacity: 0;
    -webkit-transform: translate3d(0, -3000px, 0);
    transform: translate3d(0, -3000px, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, 25px, 0);
    transform: translate3d(0, 25px, 0);
  }

  75% {
    -webkit-transform: translate3d(0, -10px, 0);
    transform: translate3d(0, -10px, 0);
  }

  90% {
    -webkit-transform: translate3d(0, 5px, 0);
    transform: translate3d(0, 5px, 0);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes bounceInDown {
  from,
  60%,
  75%,
  90%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  0% {
    opacity: 0;
    -webkit-transform: translate3d(0, -3000px, 0);
    transform: translate3d(0, -3000px, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, 25px, 0);
    transform: translate3d(0, 25px, 0);
  }

  75% {
    -webkit-transform: translate3d(0, -10px, 0);
    transform: translate3d(0, -10px, 0);
  }

  90% {
    -webkit-transform: translate3d(0, 5px, 0);
    transform: translate3d(0, 5px, 0);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.bounceInDown {
  -webkit-animation-name: bounceInDown;
  animation-name: bounceInDown;
}

@-webkit-keyframes bounceInLeft {
  from,
  60%,
  75%,
  90%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  0% {
    opacity: 0;
    -webkit-transform: translate3d(-3000px, 0, 0);
    transform: translate3d(-3000px, 0, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(25px, 0, 0);
    transform: translate3d(25px, 0, 0);
  }

  75% {
    -webkit-transform: translate3d(-10px, 0, 0);
    transform: translate3d(-10px, 0, 0);
  }

  90% {
    -webkit-transform: translate3d(5px, 0, 0);
    transform: translate3d(5px, 0, 0);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes bounceInLeft {
  from,
  60%,
  75%,
  90%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  0% {
    opacity: 0;
    -webkit-transform: translate3d(-3000px, 0, 0);
    transform: translate3d(-3000px, 0, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(25px, 0, 0);
    transform: translate3d(25px, 0, 0);
  }

  75% {
    -webkit-transform: translate3d(-10px, 0, 0);
    transform: translate3d(-10px, 0, 0);
  }

  90% {
    -webkit-transform: translate3d(5px, 0, 0);
    transform: translate3d(5px, 0, 0);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.bounceInLeft {
  -webkit-animation-name: bounceInLeft;
  animation-name: bounceInLeft;
}

@-webkit-keyframes bounceInRight {
  from,
  60%,
  75%,
  90%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  from {
    opacity: 0;
    -webkit-transform: translate3d(3000px, 0, 0);
    transform: translate3d(3000px, 0, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(-25px, 0, 0);
    transform: translate3d(-25px, 0, 0);
  }

  75% {
    -webkit-transform: translate3d(10px, 0, 0);
    transform: translate3d(10px, 0, 0);
  }

  90% {
    -webkit-transform: translate3d(-5px, 0, 0);
    transform: translate3d(-5px, 0, 0);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes bounceInRight {
  from,
  60%,
  75%,
  90%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  from {
    opacity: 0;
    -webkit-transform: translate3d(3000px, 0, 0);
    transform: translate3d(3000px, 0, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(-25px, 0, 0);
    transform: translate3d(-25px, 0, 0);
  }

  75% {
    -webkit-transform: translate3d(10px, 0, 0);
    transform: translate3d(10px, 0, 0);
  }

  90% {
    -webkit-transform: translate3d(-5px, 0, 0);
    transform: translate3d(-5px, 0, 0);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.bounceInRight {
  -webkit-animation-name: bounceInRight;
  animation-name: bounceInRight;
}

@-webkit-keyframes bounceInUp {
  from,
  60%,
  75%,
  90%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 3000px, 0);
    transform: translate3d(0, 3000px, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
    transform: translate3d(0, -20px, 0);
  }

  75% {
    -webkit-transform: translate3d(0, 10px, 0);
    transform: translate3d(0, 10px, 0);
  }

  90% {
    -webkit-transform: translate3d(0, -5px, 0);
    transform: translate3d(0, -5px, 0);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes bounceInUp {
  from,
  60%,
  75%,
  90%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }

  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 3000px, 0);
    transform: translate3d(0, 3000px, 0);
  }

  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
    transform: translate3d(0, -20px, 0);
  }

  75% {
    -webkit-transform: translate3d(0, 10px, 0);
    transform: translate3d(0, 10px, 0);
  }

  90% {
    -webkit-transform: translate3d(0, -5px, 0);
    transform: translate3d(0, -5px, 0);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.bounceInUp {
  -webkit-animation-name: bounceInUp;
  animation-name: bounceInUp;
}

@-webkit-keyframes bounceOut {
  20% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9);
    transform: scale3d(0.9, 0.9, 0.9);
  }

  50%,
  55% {
    opacity: 1;
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
    transform: scale3d(1.1, 1.1, 1.1);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
    transform: scale3d(0.3, 0.3, 0.3);
  }
}

@keyframes bounceOut {
  20% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9);
    transform: scale3d(0.9, 0.9, 0.9);
  }

  50%,
  55% {
    opacity: 1;
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
    transform: scale3d(1.1, 1.1, 1.1);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
    transform: scale3d(0.3, 0.3, 0.3);
  }
}

.bounceOut {
  -webkit-animation-duration: 0.75s;
  animation-duration: 0.75s;
  -webkit-animation-name: bounceOut;
  animation-name: bounceOut;
}

@-webkit-keyframes bounceOutDown {
  20% {
    -webkit-transform: translate3d(0, 10px, 0);
    transform: translate3d(0, 10px, 0);
  }

  40%,
  45% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
    transform: translate3d(0, -20px, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }
}

@keyframes bounceOutDown {
  20% {
    -webkit-transform: translate3d(0, 10px, 0);
    transform: translate3d(0, 10px, 0);
  }

  40%,
  45% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
    transform: translate3d(0, -20px, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }
}

.bounceOutDown {
  -webkit-animation-name: bounceOutDown;
  animation-name: bounceOutDown;
}

@-webkit-keyframes bounceOutLeft {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(20px, 0, 0);
    transform: translate3d(20px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }
}

@keyframes bounceOutLeft {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(20px, 0, 0);
    transform: translate3d(20px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }
}

.bounceOutLeft {
  -webkit-animation-name: bounceOutLeft;
  animation-name: bounceOutLeft;
}

@-webkit-keyframes bounceOutRight {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(-20px, 0, 0);
    transform: translate3d(-20px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }
}

@keyframes bounceOutRight {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(-20px, 0, 0);
    transform: translate3d(-20px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }
}

.bounceOutRight {
  -webkit-animation-name: bounceOutRight;
  animation-name: bounceOutRight;
}

@-webkit-keyframes bounceOutUp {
  20% {
    -webkit-transform: translate3d(0, -10px, 0);
    transform: translate3d(0, -10px, 0);
  }

  40%,
  45% {
    opacity: 1;
    -webkit-transform: translate3d(0, 20px, 0);
    transform: translate3d(0, 20px, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }
}

@keyframes bounceOutUp {
  20% {
    -webkit-transform: translate3d(0, -10px, 0);
    transform: translate3d(0, -10px, 0);
  }

  40%,
  45% {
    opacity: 1;
    -webkit-transform: translate3d(0, 20px, 0);
    transform: translate3d(0, 20px, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }
}

.bounceOutUp {
  -webkit-animation-name: bounceOutUp;
  animation-name: bounceOutUp;
}

@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

.fadeIn {
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

@-webkit-keyframes fadeInDown {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeInDown {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.fadeInDown {
  -webkit-animation-name: fadeInDown;
  animation-name: fadeInDown;
}

@-webkit-keyframes fadeInDownBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeInDownBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.fadeInDownBig {
  -webkit-animation-name: fadeInDownBig;
  animation-name: fadeInDownBig;
}

@-webkit-keyframes fadeInLeft {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeInLeft {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.fadeInLeft {
  -webkit-animation-name: fadeInLeft;
  animation-name: fadeInLeft;
}

@-webkit-keyframes fadeInLeftBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeInLeftBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.fadeInLeftBig {
  -webkit-animation-name: fadeInLeftBig;
  animation-name: fadeInLeftBig;
}

@-webkit-keyframes fadeInRight {
  from {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeInRight {
  from {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.fadeInRight {
  -webkit-animation-name: fadeInRight;
  animation-name: fadeInRight;
}

@-webkit-keyframes fadeInRightBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeInRightBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.fadeInRightBig {
  -webkit-animation-name: fadeInRightBig;
  animation-name: fadeInRightBig;
}

@-webkit-keyframes fadeInUp {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.fadeInUp {
  -webkit-animation-name: fadeInUp;
  animation-name: fadeInUp;
}

@-webkit-keyframes fadeInUpBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeInUpBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.fadeInUpBig {
  -webkit-animation-name: fadeInUpBig;
  animation-name: fadeInUpBig;
}

@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
  }
}

@keyframes fadeOut {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
  }
}

.fadeOut {
  -webkit-animation-name: fadeOut;
  animation-name: fadeOut;
}

@-webkit-keyframes fadeOutDown {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }
}

@keyframes fadeOutDown {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }
}

.fadeOutDown {
  -webkit-animation-name: fadeOutDown;
  animation-name: fadeOutDown;
}

@-webkit-keyframes fadeOutDownBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }
}

@keyframes fadeOutDownBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
    transform: translate3d(0, 2000px, 0);
  }
}

.fadeOutDownBig {
  -webkit-animation-name: fadeOutDownBig;
  animation-name: fadeOutDownBig;
}

@-webkit-keyframes fadeOutLeft {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes fadeOutLeft {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

.fadeOutLeft {
  -webkit-animation-name: fadeOutLeft;
  animation-name: fadeOutLeft;
}

@-webkit-keyframes fadeOutLeftBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }
}

@keyframes fadeOutLeftBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
    transform: translate3d(-2000px, 0, 0);
  }
}

.fadeOutLeftBig {
  -webkit-animation-name: fadeOutLeftBig;
  animation-name: fadeOutLeftBig;
}

@-webkit-keyframes fadeOutRight {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes fadeOutRight {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

.fadeOutRight {
  -webkit-animation-name: fadeOutRight;
  animation-name: fadeOutRight;
}

@-webkit-keyframes fadeOutRightBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }
}

@keyframes fadeOutRightBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
    transform: translate3d(2000px, 0, 0);
  }
}

.fadeOutRightBig {
  -webkit-animation-name: fadeOutRightBig;
  animation-name: fadeOutRightBig;
}

@-webkit-keyframes fadeOutUp {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

@keyframes fadeOutUp {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

.fadeOutUp {
  -webkit-animation-name: fadeOutUp;
  animation-name: fadeOutUp;
}

@-webkit-keyframes fadeOutUpBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }
}

@keyframes fadeOutUpBig {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
    transform: translate3d(0, -2000px, 0);
  }
}

.fadeOutUpBig {
  -webkit-animation-name: fadeOutUpBig;
  animation-name: fadeOutUpBig;
}

@-webkit-keyframes flip {
  from {
    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0)
      rotate3d(0, 1, 0, -360deg);
    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg);
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }

  40% {
    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
      rotate3d(0, 1, 0, -190deg);
    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
      rotate3d(0, 1, 0, -190deg);
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }

  50% {
    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
      rotate3d(0, 1, 0, -170deg);
    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
      rotate3d(0, 1, 0, -170deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  80% {
    -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0)
      rotate3d(0, 1, 0, 0deg);
    transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0)
      rotate3d(0, 1, 0, 0deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  to {
    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0)
      rotate3d(0, 1, 0, 0deg);
    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@keyframes flip {
  from {
    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0)
      rotate3d(0, 1, 0, -360deg);
    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg);
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }

  40% {
    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
      rotate3d(0, 1, 0, -190deg);
    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
      rotate3d(0, 1, 0, -190deg);
    -webkit-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }

  50% {
    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
      rotate3d(0, 1, 0, -170deg);
    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
      rotate3d(0, 1, 0, -170deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  80% {
    -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0)
      rotate3d(0, 1, 0, 0deg);
    transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0)
      rotate3d(0, 1, 0, 0deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  to {
    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0)
      rotate3d(0, 1, 0, 0deg);
    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

.animated.flip {
  -webkit-backface-visibility: visible;
  backface-visibility: visible;
  -webkit-animation-name: flip;
  animation-name: flip;
}

@-webkit-keyframes flipInX {
  from {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
    opacity: 0;
  }

  40% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  60% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  }

  to {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }
}

@keyframes flipInX {
  from {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
    opacity: 0;
  }

  40% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  60% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  }

  to {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }
}

.flipInX {
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  -webkit-animation-name: flipInX;
  animation-name: flipInX;
}

@-webkit-keyframes flipInY {
  from {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
    opacity: 0;
  }

  40% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  60% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  }

  to {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }
}

@keyframes flipInY {
  from {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
    opacity: 0;
  }

  40% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }

  60% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  }

  to {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }
}

.flipInY {
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  -webkit-animation-name: flipInY;
  animation-name: flipInY;
}

@-webkit-keyframes flipOutX {
  from {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }

  30% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    opacity: 1;
  }

  to {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    opacity: 0;
  }
}

@keyframes flipOutX {
  from {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }

  30% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    opacity: 1;
  }

  to {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    opacity: 0;
  }
}

.flipOutX {
  -webkit-animation-duration: 0.75s;
  animation-duration: 0.75s;
  -webkit-animation-name: flipOutX;
  animation-name: flipOutX;
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
}

@-webkit-keyframes flipOutY {
  from {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }

  30% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
    opacity: 1;
  }

  to {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    opacity: 0;
  }
}

@keyframes flipOutY {
  from {
    -webkit-transform: perspective(400px);
    transform: perspective(400px);
  }

  30% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
    opacity: 1;
  }

  to {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    opacity: 0;
  }
}

.flipOutY {
  -webkit-animation-duration: 0.75s;
  animation-duration: 0.75s;
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  -webkit-animation-name: flipOutY;
  animation-name: flipOutY;
}

@-webkit-keyframes lightSpeedIn {
  from {
    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
    transform: translate3d(100%, 0, 0) skewX(-30deg);
    opacity: 0;
  }

  60% {
    -webkit-transform: skewX(20deg);
    transform: skewX(20deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: skewX(-5deg);
    transform: skewX(-5deg);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes lightSpeedIn {
  from {
    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
    transform: translate3d(100%, 0, 0) skewX(-30deg);
    opacity: 0;
  }

  60% {
    -webkit-transform: skewX(20deg);
    transform: skewX(20deg);
    opacity: 1;
  }

  80% {
    -webkit-transform: skewX(-5deg);
    transform: skewX(-5deg);
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.lightSpeedIn {
  -webkit-animation-name: lightSpeedIn;
  animation-name: lightSpeedIn;
  -webkit-animation-timing-function: ease-out;
  animation-timing-function: ease-out;
}

@-webkit-keyframes lightSpeedOut {
  from {
    opacity: 1;
  }

  to {
    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
    transform: translate3d(100%, 0, 0) skewX(30deg);
    opacity: 0;
  }
}

@keyframes lightSpeedOut {
  from {
    opacity: 1;
  }

  to {
    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
    transform: translate3d(100%, 0, 0) skewX(30deg);
    opacity: 0;
  }
}

.lightSpeedOut {
  -webkit-animation-name: lightSpeedOut;
  animation-name: lightSpeedOut;
  -webkit-animation-timing-function: ease-in;
  animation-timing-function: ease-in;
}

@-webkit-keyframes rotateIn {
  from {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, -200deg);
    transform: rotate3d(0, 0, 1, -200deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

@keyframes rotateIn {
  from {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, -200deg);
    transform: rotate3d(0, 0, 1, -200deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

.rotateIn {
  -webkit-animation-name: rotateIn;
  animation-name: rotateIn;
}

@-webkit-keyframes rotateInDownLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

@keyframes rotateInDownLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

.rotateInDownLeft {
  -webkit-animation-name: rotateInDownLeft;
  animation-name: rotateInDownLeft;
}

@-webkit-keyframes rotateInDownRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

@keyframes rotateInDownRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

.rotateInDownRight {
  -webkit-animation-name: rotateInDownRight;
  animation-name: rotateInDownRight;
}

@-webkit-keyframes rotateInUpLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

@keyframes rotateInUpLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

.rotateInUpLeft {
  -webkit-animation-name: rotateInUpLeft;
  animation-name: rotateInUpLeft;
}

@-webkit-keyframes rotateInUpRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -90deg);
    transform: rotate3d(0, 0, 1, -90deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

@keyframes rotateInUpRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -90deg);
    transform: rotate3d(0, 0, 1, -90deg);
    opacity: 0;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}

.rotateInUpRight {
  -webkit-animation-name: rotateInUpRight;
  animation-name: rotateInUpRight;
}

@-webkit-keyframes rotateOut {
  from {
    -webkit-transform-origin: center;
    transform-origin: center;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, 200deg);
    transform: rotate3d(0, 0, 1, 200deg);
    opacity: 0;
  }
}

@keyframes rotateOut {
  from {
    -webkit-transform-origin: center;
    transform-origin: center;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: center;
    transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, 200deg);
    transform: rotate3d(0, 0, 1, 200deg);
    opacity: 0;
  }
}

.rotateOut {
  -webkit-animation-name: rotateOut;
  animation-name: rotateOut;
}

@-webkit-keyframes rotateOutDownLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
}

@keyframes rotateOutDownLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
    transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
}

.rotateOutDownLeft {
  -webkit-animation-name: rotateOutDownLeft;
  animation-name: rotateOutDownLeft;
}

@-webkit-keyframes rotateOutDownRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}

@keyframes rotateOutDownRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}

.rotateOutDownRight {
  -webkit-animation-name: rotateOutDownRight;
  animation-name: rotateOutDownRight;
}

@-webkit-keyframes rotateOutUpLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}

@keyframes rotateOutUpLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}

.rotateOutUpLeft {
  -webkit-animation-name: rotateOutUpLeft;
  animation-name: rotateOutUpLeft;
}

@-webkit-keyframes rotateOutUpRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 90deg);
    transform: rotate3d(0, 0, 1, 90deg);
    opacity: 0;
  }
}

@keyframes rotateOutUpRight {
  from {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    opacity: 1;
  }

  to {
    -webkit-transform-origin: right bottom;
    transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 90deg);
    transform: rotate3d(0, 0, 1, 90deg);
    opacity: 0;
  }
}

.rotateOutUpRight {
  -webkit-animation-name: rotateOutUpRight;
  animation-name: rotateOutUpRight;
}

@-webkit-keyframes hinge {
  0% {
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }

  20%,
  60% {
    -webkit-transform: rotate3d(0, 0, 1, 80deg);
    transform: rotate3d(0, 0, 1, 80deg);
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }

  40%,
  80% {
    -webkit-transform: rotate3d(0, 0, 1, 60deg);
    transform: rotate3d(0, 0, 1, 60deg);
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
    opacity: 1;
  }

  to {
    -webkit-transform: translate3d(0, 700px, 0);
    transform: translate3d(0, 700px, 0);
    opacity: 0;
  }
}

@keyframes hinge {
  0% {
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }

  20%,
  60% {
    -webkit-transform: rotate3d(0, 0, 1, 80deg);
    transform: rotate3d(0, 0, 1, 80deg);
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }

  40%,
  80% {
    -webkit-transform: rotate3d(0, 0, 1, 60deg);
    transform: rotate3d(0, 0, 1, 60deg);
    -webkit-transform-origin: top left;
    transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
    opacity: 1;
  }

  to {
    -webkit-transform: translate3d(0, 700px, 0);
    transform: translate3d(0, 700px, 0);
    opacity: 0;
  }
}

.hinge {
  -webkit-animation-duration: 2s;
  animation-duration: 2s;
  -webkit-animation-name: hinge;
  animation-name: hinge;
}

@-webkit-keyframes jackInTheBox {
  from {
    opacity: 0;
    -webkit-transform: scale(0.1) rotate(30deg);
    transform: scale(0.1) rotate(30deg);
    -webkit-transform-origin: center bottom;
    transform-origin: center bottom;
  }

  50% {
    -webkit-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }

  70% {
    -webkit-transform: rotate(3deg);
    transform: rotate(3deg);
  }

  to {
    opacity: 1;
    -webkit-transform: scale(1);
    transform: scale(1);
  }
}

@keyframes jackInTheBox {
  from {
    opacity: 0;
    -webkit-transform: scale(0.1) rotate(30deg);
    transform: scale(0.1) rotate(30deg);
    -webkit-transform-origin: center bottom;
    transform-origin: center bottom;
  }

  50% {
    -webkit-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }

  70% {
    -webkit-transform: rotate(3deg);
    transform: rotate(3deg);
  }

  to {
    opacity: 1;
    -webkit-transform: scale(1);
    transform: scale(1);
  }
}

.jackInTheBox {
  -webkit-animation-name: jackInTheBox;
  animation-name: jackInTheBox;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */

@-webkit-keyframes rollIn {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes rollIn {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
  }

  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.rollIn {
  -webkit-animation-name: rollIn;
  animation-name: rollIn;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */

@-webkit-keyframes rollOut {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
  }
}

@keyframes rollOut {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
  }
}

.rollOut {
  -webkit-animation-name: rollOut;
  animation-name: rollOut;
}

@-webkit-keyframes zoomIn {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
    transform: scale3d(0.3, 0.3, 0.3);
  }

  50% {
    opacity: 1;
  }
}

@keyframes zoomIn {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
    transform: scale3d(0.3, 0.3, 0.3);
  }

  50% {
    opacity: 1;
  }
}

.zoomIn {
  -webkit-animation-name: zoomIn;
  animation-name: zoomIn;
}

@-webkit-keyframes zoomInDown {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomInDown {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

.zoomInDown {
  -webkit-animation-name: zoomInDown;
  animation-name: zoomInDown;
}

@-webkit-keyframes zoomInLeft {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomInLeft {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

.zoomInLeft {
  -webkit-animation-name: zoomInLeft;
  animation-name: zoomInLeft;
}

@-webkit-keyframes zoomInRight {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomInRight {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

.zoomInRight {
  -webkit-animation-name: zoomInRight;
  animation-name: zoomInRight;
}

@-webkit-keyframes zoomInUp {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomInUp {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

.zoomInUp {
  -webkit-animation-name: zoomInUp;
  animation-name: zoomInUp;
}

@-webkit-keyframes zoomOut {
  from {
    opacity: 1;
  }

  50% {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
    transform: scale3d(0.3, 0.3, 0.3);
  }

  to {
    opacity: 0;
  }
}

@keyframes zoomOut {
  from {
    opacity: 1;
  }

  50% {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
    transform: scale3d(0.3, 0.3, 0.3);
  }

  to {
    opacity: 0;
  }
}

.zoomOut {
  -webkit-animation-name: zoomOut;
  animation-name: zoomOut;
}

@-webkit-keyframes zoomOutDown {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
    -webkit-transform-origin: center bottom;
    transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomOutDown {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
    -webkit-transform-origin: center bottom;
    transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

.zoomOutDown {
  -webkit-animation-name: zoomOutDown;
  animation-name: zoomOutDown;
}

@-webkit-keyframes zoomOutLeft {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);
    transform: scale(0.1) translate3d(-2000px, 0, 0);
    -webkit-transform-origin: left center;
    transform-origin: left center;
  }
}

@keyframes zoomOutLeft {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);
    transform: scale(0.1) translate3d(-2000px, 0, 0);
    -webkit-transform-origin: left center;
    transform-origin: left center;
  }
}

.zoomOutLeft {
  -webkit-animation-name: zoomOutLeft;
  animation-name: zoomOutLeft;
}

@-webkit-keyframes zoomOutRight {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);
    transform: scale(0.1) translate3d(2000px, 0, 0);
    -webkit-transform-origin: right center;
    transform-origin: right center;
  }
}

@keyframes zoomOutRight {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
  }

  to {
    opacity: 0;
    -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);
    transform: scale(0.1) translate3d(2000px, 0, 0);
    -webkit-transform-origin: right center;
    transform-origin: right center;
  }
}

.zoomOutRight {
  -webkit-animation-name: zoomOutRight;
  animation-name: zoomOutRight;
}

@-webkit-keyframes zoomOutUp {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
    -webkit-transform-origin: center bottom;
    transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomOutUp {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }

  to {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
    -webkit-transform-origin: center bottom;
    transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

.zoomOutUp {
  -webkit-animation-name: zoomOutUp;
  animation-name: zoomOutUp;
}

@-webkit-keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.slideInDown {
  -webkit-animation-name: slideInDown;
  animation-name: slideInDown;
}

@-webkit-keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.slideInLeft {
  -webkit-animation-name: slideInLeft;
  animation-name: slideInLeft;
}

@-webkit-keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.slideInRight {
  -webkit-animation-name: slideInRight;
  animation-name: slideInRight;
}

@-webkit-keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }

  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

.slideInUp {
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

@-webkit-keyframes slideOutDown {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }
}

@keyframes slideOutDown {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }
}

.slideOutDown {
  -webkit-animation-name: slideOutDown;
  animation-name: slideOutDown;
}

@-webkit-keyframes slideOutLeft {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes slideOutLeft {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

.slideOutLeft {
  -webkit-animation-name: slideOutLeft;
  animation-name: slideOutLeft;
}

@-webkit-keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

.slideOutRight {
  -webkit-animation-name: slideOutRight;
  animation-name: slideOutRight;
}

@-webkit-keyframes slideOutUp {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

@keyframes slideOutUp {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

.slideOutUp {
  -webkit-animation-name: slideOutUp;
  animation-name: slideOutUp;
}

.animated {
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
}

.animated.infinite {
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
}

.animated.delay-1s {
  -webkit-animation-delay: 1s;
  animation-delay: 1s;
}

.animated.delay-2s {
  -webkit-animation-delay: 2s;
  animation-delay: 2s;
}

.animated.delay-3s {
  -webkit-animation-delay: 3s;
  animation-delay: 3s;
}

.animated.delay-4s {
  -webkit-animation-delay: 4s;
  animation-delay: 4s;
}

.animated.delay-5s {
  -webkit-animation-delay: 5s;
  animation-delay: 5s;
}

.animated.fast {
  -webkit-animation-duration: 800ms;
  animation-duration: 800ms;
}

.animated.faster {
  -webkit-animation-duration: 500ms;
  animation-duration: 500ms;
}

.animated.slow {
  -webkit-animation-duration: 2s;
  animation-duration: 2s;
}

.animated.slower {
  -webkit-animation-duration: 3s;
  animation-duration: 3s;
}

@media (print), (prefers-reduced-motion: reduce) {
  .animated {
    -webkit-animation-duration: 1ms !important;
    animation-duration: 1ms !important;
    -webkit-transition-duration: 1ms !important;
    transition-duration: 1ms !important;
    -webkit-animation-iteration-count: 1 !important;
    animation-iteration-count: 1 !important;
  }
}

/* /RJSID:125 animate.css */