@keyframes popIn { 0% { opacity: 0; transform: scale(0); } 55% { opacity: 0; transform: scale(0); } 75% { opacity: 1; transform: scale(1.1); } 90% { opacity: 1; transform: scale(0.9); } 100% { opacity: 1; transform: scale(1); } } @keyframes sonarEffect { 0% { opacity: 1; } 40% { opacity: 0.5; box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.2); } 100% { box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.2); transform: scale(1.5); opacity: 0; } } @keyframes fadeIn { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } } .huh-launcher { animation: popIn 0.8s ease-in-out; bottom: 30px; position: fixed; right: 20px; z-index: 500001; } .huh-launcher--button { -webkit-appearance: none; background: #009688; border: none; border-radius: 50px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); box-sizing: border-box; cursor: pointer; height: 50px; padding: 0; position: relative; transition: transform ease-out 0.1s; width: 50px; z-index: 1; } .huh-launcher--button svg { fill: #fff; float: right; height: 50px; left: 0; position: absolute; top: 0; transition: transform 0.2s; width: 50px; } .huh-launcher--button .huh-launcher--icon-close { height: 30px; opacity: 0; padding: 10px; transform: scale(0.2); width: 30px; } .huh-launcher--button.active .huh-launcher--icon-enable { opacity: 0; transform: scale(0.2); } .huh-launcher--button.active .huh-launcher--icon-close { opacity: 1; transform: scale(1); } .huh-launcher--button::after, .huh-launcher--button::before { border-radius: 50%; box-sizing: content-box; content: ''; left: 0; height: 100%; pointer-events: none; position: absolute; top: 0; transform: scale(0.9); width: 100%; } .huh-launcher--button:hover, .huh-launcher--button:focus { outline: none; transform: scale(0.9); } .huh-launcher--button:hover::after, .huh-launcher--button:focus::after { animation: sonarEffect 1.3s ease-out; } .huh-launcher--label { display: block; font-size: 0; height: 0; width: 0; } .huh-container { background: #fff; border-radius: 4px; bottom: 90px; box-shadow: 0 5px 20px rgba(0, 0, 0, 0.15); display: none; height: calc( 100% - 150px ); max-height: 550px; max-width: 350px; position: fixed; right: 20px; width: 100%; z-index: 500001; } .huh-container.open { animation: fadeIn 0.3s ease-in-out; display: flex; flex-direction: column; } @media screen and (max-width: 600px) { .huh-container { bottom: 0; border-radius: 0; height: 100%; max-width: none; right: 0; top: 46px; } } .huh-container--head { background: #009688; border-radius: 4px 4px 0 0; height: 60px; flex-shrink: 0; overflow: hidden; position: relative; transition: background 0.3s; } @media screen and (max-width: 600px) { .huh-container--head { border-radius: 0; } } .huh-container--head.with-content { background: #f5f5f5 !important; border-bottom: 1px solid #ddd; } .huh-container--head.with-content .huh-container--heading { transform: translateX(-100%); } .huh-container--head.with-content .huh-container--back { transform: translateX(0); } .huh-container--heading, .huh-container--back { box-sizing: border-box; font-size: 16px; left: 0; line-height: 60px; margin: 0; padding: 0 20px; position: absolute; top: 0; transition: transform 0.2s; width: 100%; } .huh-container--heading { color: #fff; font-weight: 400; text-align: center; transform: translateX(0); width: 100%; } @media all and (max-width: 600px) { .huh-container--heading { text-align: left; } } .huh-container--back { text-decoration: none; transform: translateX(100%); } .huh-container--back > svg { display: inline-block; fill: #444; height: 16px; position: relative; top: 2px; width: 16px; } .huh-container--content { overflow: scroll; padding: 0 20px 20px; } .huh-container--content::after { background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 55%, #fff 100%); background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 55%, #fff 100%); background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, #fff 55%, #fff 100%); bottom: 0; content: ''; display: block; height: 20px; left: 0; position: absolute; width: 100%; } .huh-container--content p, .huh-container--content ul, .huh-container--content ol { font-size: 14px; } .huh-container--content img { max-width: 100%; } .huh-container--content code, .huh-container--content pre { max-width: 100%; overflow: scroll; white-space: pre-wrap; word-wrap: break-word; } .huh-container--close-mobile { cursor: pointer; display: none; fill: #fff; height: 24px; padding: 17px 10px; position: absolute; right: 0; top: 0; width: 24px; } @media all and (max-width: 600px) { .huh-container--close-mobile { display: block; } } .huh-toc--trigger { border-bottom: 1px solid #eee; cursor: pointer; display: block; font-size: 16px; font-weight: 600; margin: 0 -20px; padding: 20px; position: relative; transition: background 0.3s, box-shadow 0.1s; } .huh-toc--trigger > span { color: #666; float: right; opacity: 0; transform: translateX(10px); transition: opacity 0.3s, transform 0.3s; } .huh-toc--trigger:hover { background: #f9f9f9; } .huh-toc--trigger:hover > span { opacity: 1; transform: translateX(0); } .huh-toc--trigger.hidden { display: none; } .huh-toc--trigger.current { animation: fadeIn 0.3s ease-in-out; border: 0; color: #222; cursor: auto; display: block; font-size: 18px; padding-bottom: 0; } .huh-toc--trigger.current > span { display: none; } .huh-toc--trigger.current:hover { background: 0; box-shadow: none; } .huh-toc--trigger.show { animation: fadeIn 0.3s ease-in-out; } .huh-toc--content { display: none; } .huh-toc--content.open { animation: fadeIn 0.3s ease-in-out; display: block; }