.thumbnail { width: 100%; max-width: 300px; overflow: hidden; position: relative; .image { width: 100%; padding-bottom: 100%; position: relative; background-repeat: no-repeat; background-color: lighten(colour(dark_grey), 2%); background-position: 50% 50%; background-size: cover; border-radius: 3px; .light-theme & { background-color: colour(faint_grey); } } .zoom { @include animate(); display: none; position: absolute; bottom: 5px; right: 5px; z-index: 1; padding: 10px; border-radius: 100%; background: rgba(0,0,0,0.4); font-size: 12px; cursor: pointer; color: #FFFFFF; border: 0; &:hover { background: colour(black); } } &.small { max-width: 50px; } &.circle { .image { border-radius: 50%; } .zoom { bottom: 0; right: 0; } } &:hover { .zoom { display: block; } } } html, body { overflow: hidden; } main { perspective: 2px; transform-style: preserve-3d; overflow-y: scroll; height: 100vh; position: absolute; top: 0; right: 0; bottom: 0; left: 0; } .intro { overflow: hidden; } .parallax { height: 100%; overflow: hidden; background: colour(dark_grey); position: absolute; top: -30%; right: -10px; bottom: -10px; left: -10px; transform: translateZ(-2px) scale(2); z-index: -1; &__image { position: absolute; top: 0; left: 0; bottom: 0; right: 0; background-repeat: no-repeat; background-size: cover; background-position: 50% 50%; } &__overlay { content: ''; display: block; position: absolute; bottom: 0; left: 0; right: 0; height: 30%; background-image: linear-gradient(rgba(24,24,24,0), rgba(24,24,24,1)); z-index: 1; transform: translateZ(2px) scale(0.5); } canvas { width: 110%; height: 110%; opacity: 0; position: absolute; top: -5%; left: -5%; &.loaded { opacity: 1; } } &.blur { canvas { @include blur(); } } .light-theme & { background: colour(white); } }