/* Entrance animations. Only hidden when JS is on, so content is never lost without it. */
html.js [data-reveal] { opacity: 0.001; transition: opacity .5s cubic-bezier(.44,0,.56,1), transform .5s cubic-bezier(.44,0,.56,1); }
html.js [data-reveal="up"] { transform: translateY(20px); }
html.js [data-reveal="zoom"] { transform: scale(1.05); }
html.js [data-reveal].is-in { opacity: 1; transform: none; }

.letter { display: inline-block; }
html.js .letter { opacity: 0.001; filter: blur(6px); transform: scale(1.4); transition: opacity .4s ease, filter .4s ease, transform .4s ease; }
html.js .letter.is-in { opacity: 1; filter: blur(0); transform: none; }

/* Stat counters fade in as they start counting. */
html.js [data-count] { opacity: 0; transition: opacity .5s ease-in-out; }
html.js [data-count].is-in { opacity: 1; }

/* About section: opacity is driven from site.js. Images fade over time, paragraphs follow the scroll directly. */
[data-about-image] { transition: opacity .3s cubic-bezier(.44,0,.56,1); }
html.js [data-scroll-fade] { opacity: 0; }

/* Button hover */
.el-YDm9I { transition: background-color .3s cubic-bezier(.44,0,.56,1); }
.el-YDm9I:hover { background-color: #ccc !important; }
.el-1qw1xy7 { transition: transform .3s cubic-bezier(.44,0,.56,1); }
.el-YDm9I:hover .el-1qw1xy7 { transform: none !important; }

@media (prefers-reduced-motion: reduce) {
  html.js [data-reveal], html.js .letter, html.js [data-count] { opacity: 1; filter: none; transform: none; transition: none; }
  [data-about-image] { transition: none; }
}
