HTML preprocessors can make writing HTML more powerful or convenient. For instance, Markdown is designed to be easier to write and read for text documents and you could write a loop in Pug.
In CodePen, whatever you write in the HTML editor is what goes within the <body>
tags in a basic HTML5 template. So you don't have access to higher-up elements like the <html>
tag. If you want to add classes there that can affect the whole document, this is the place to do it.
In CodePen, whatever you write in the HTML editor is what goes within the <body>
tags in a basic HTML5 template. If you need things in the <head>
of the document, put that code here.
The resource you are linking to is using the 'http' protocol, which may not work when the browser is using https.
CSS preprocessors help make authoring CSS easier. All of them offer things like variables and mixins to provide convenient abstractions.
It's a common practice to apply CSS to a page that styles elements such that they are consistent across all browsers. We offer two of the most popular choices: normalize.css and a reset. Or, choose Neither and nothing will be applied.
To get the best cross-browser support, it is a common practice to apply vendor prefixes to CSS properties and values that require them to work. For instance -webkit-
or -moz-
.
We offer two popular choices: Autoprefixer (which processes your CSS server-side) and -prefix-free (which applies prefixes via a script, client-side).
Any URLs added here will be added as <link>
s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.
You can apply CSS to your Pen from any stylesheet on the web. Just put a URL to it here and we'll apply it, in the order you have them, before the CSS in the Pen itself.
You can also link to another Pen here (use the .css
URL Extension) and we'll pull the CSS from that Pen and include it. If it's using a matching preprocessor, use the appropriate URL Extension and we'll combine the code before preprocessing, so you can use the linked Pen as a true dependency.
JavaScript preprocessors can help make authoring JavaScript easier and more convenient.
Babel includes JSX processing.
Any URL's added here will be added as <script>
s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.
You can apply a script from anywhere on the web to your Pen. Just put a URL to it here and we'll add it, in the order you have them, before the JavaScript in the Pen itself.
If the script you link to has the file extension of a preprocessor, we'll attempt to process it before applying.
You can also link to another Pen here, and we'll pull the JavaScript from that Pen and include it. If it's using a matching preprocessor, we'll combine the code before preprocessing, so you can use the linked Pen as a true dependency.
Search for and use JavaScript packages from npm here. By selecting a package, an import
statement will be added to the top of the JavaScript editor for this package.
Using packages here is powered by Skypack, which makes packages from npm not only available on a CDN, but prepares them for native JavaScript ES6 import
usage.
All packages are different, so refer to their docs for how they work.
If you're using React / ReactDOM, make sure to turn on Babel for the JSX processing.
If active, Pens will autosave every 30 seconds after being saved once.
If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.
If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.
Visit your global Editor Settings.
<div class="loading" id="load-state">
<!-- Hi there! This awesome artwork came from this teenage artist: http://xamag.deviantart.com/
I asked her if I could help take her flash comics into the native browser, and she consented :D
Let's hope I can get this done fast enough!
(Also, she wanted to use Birthday Massacre's "Blue" for background music. But I think we can't just gank an MP3 like that. Going to have to think of an alternate plan, if time allows. Also, loading screen comes last.)
-->
<p class="ir best-by">
For full awesome, use Chrome. (There are some things other browsers just aren't ready for--yet.)
</p>
<div id="loader">
<div class="ir dolly"></div>
</div>
<div id="portal"><!--through which many things are learned.-->
<div id="opening">
<div class="scene" id="scene1">
<div class="cut"></div>
<div class="setting">
<div class="ir dolly-flop"></div>
<div class="ir dolly-fling"></div>
</div>
</div>
<div class="scene" id="scene2"></div>
</div>
<!--findables shared by multiple rooms-->
<div id="sign_scraps" class="sign ir">someone tore this up...</div>
<div id="sign_potatoe" class="sign ir">potatoe</div>
<div id="sign_painapple" class="sign ir">painapple</div>
<div id="sign_note2" class="sign ir"></div>
<!-- Secret Rooms, come find us! -->
<div id="secret-room1" class="secret-room">
<div data-sign="sign_diary" class="ir diary readable clickable"></div>
<div id="sign_diary" class="sign ir"></div>
<div data-sign="sign_photo-witches" class="ir photo-witches readable clickable"></div>
<div id="sign_photo-witches" class="sign ir"></div>
<a href="http://www.blackbrickroadofoz.com/index.php?id=14" class="ir next-page" target="_blank">Next page</a>
</div><!--/secret-room1-->
<div id="secret_pool" class="secret-room ir"></div>
<div class="pass-field" id="pass-gate1" data-passcode="Garden of Meats" data-access="secret-room2">
<div class="pass-wrap">
<label for="password">What's the secret password?</label>
<input type="text" id="password" /> <input type="submit" value="Try it..." />
</div>
</div>
<div id="secret-room2" class="secret-room">
<div data-sign="sign_photo-doc" class="ir photo-doc readable clickable"></div>
<div id="sign_photo-doc" class="sign ir"></div>
</div><!--/secret-room2-->
<!--the map-->
<div id="map">
<!-- interactive objects shared across the map-->
<div class="shared">
<div class="ir well clickable activatable"></div>
<div class="fountain ir activatable clickable"></div>
<label class="bulbs ir clickable switch-handler" for="toggle_bulbs">bulbs</label>
<input type="checkbox" class="switch" id="toggle_bulbs" />
<div class="bulbs off ir"></div>
<div class="bulbs-glow on ir"></div>
<div id="sign_book4" class="sign ir">"Blue Meanies" by S. Pepper</div>
<div class="lantern5">
<label class="lantern-heads ir clickable switch-handler" for="toggle_lantern5">Lantern</label>
<input type="checkbox" class="switch" id="toggle_lantern5" />
<div class="lantern ir off"></div>
<div class="lantern-glow ir on"></div>
</div>
</div> <!--/shared-->
<!-- rooms -->
<div class="stage initial" id="room1">
<div class="ir dolly-sitting">
<div class="dolly_eyes ir"></div>
<div class="dot-n-tot_eyes ir"></div>
</div>
<div class="dolly ir dolly-standing">
<div class="dolly_eyes ir"></div>
<div class="toothy_eyes ir"></div>
</div>
<div data-sign="sign_le-gume" class="ir readable clickable"></div>
<div id="sign_le-gume" class="sign ir">Le Gume</div>
<div class="mousey clickable activatable">
<div class="mouse ir"></div>
<div class="mouse-hole"></div>
</div>
<label class="lanterns-heads ir clickable switch-handler" for="toggle_lanterns1">Lanterns</label>
<input type="checkbox" class="switch" id="toggle_lanterns1" />
<div class="lantern ir off"></div>
<div class="lantern-glow ir on"></div>
<nav>
<div class="ir clickable arrow to-room2" data-destination="room2">Path 1</div>
<div class="ir clickable arrow to-room4" data-destination="room4">Path 2</div>
</nav>
</div>
<div class="stage" id="room2">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
<div class="toothy_eyes ir"></div>
</div>
<div class="ir blood"></div>
<div data-sign="sign_scraps" class="ir scraps readable clickable"></div>
<div data-sign="sign_album" class="ir album readable clickable"></div>
<div id="sign_album" class="sign ir">It looks like an album...</div>
<nav>
<div class="ir clickable arrow to-room1" data-destination="room1">Path 1</div>
<div class="ir clickable arrow to-room3" data-destination="room3">Path 2</div>
<div class="ir clickable arrow to-room5" data-destination="room5">Path 3</div>
</nav>
</div>
<div class="stage" id="room3">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
</div>
<div class="toothy ir"></div>
<div data-sign="sign_potatoe" class="ir potatoe readable clickable"></div>
<div data-sign="sign_recipe-scrap1" class="ir recipe-scrap1 readable clickable"></div>
<div id="sign_recipe-scrap1" class="sign ir">Potatoe</div>
<nav>
<div class="ir clickable arrow to-room2" data-destination="room2">Path 1</div>
<div class="ir clickable arrow to-room6" data-destination="room6">Path 2</div>
</nav>
</div>
<div class="stage" id="room4">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
</div>
<div data-sign="sign_note" class="ir note readable clickable"></div>
<div id="sign_note" class="sign ir">Potatoe</div>
<div class="pumpkin ir"></div>
<nav>
<div class="ir clickable arrow to-room1" data-destination="room1">Path 1</div>
<div class="ir clickable arrow to-room14" data-destination="room14">Path 2</div>
</nav>
</div>
<div class="stage" id="room5">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
</div>
<div data-sign="sign_scraps" class="ir scraps readable clickable"></div>
<label class="lantern-heads ir clickable switch-handler" for="toggle_lantern2">Lantern</label>
<input type="checkbox" class="switch" id="toggle_lantern2" />
<div class="lantern ir off"></div>
<div class="lantern-glow on ir"></div>
<div class="moth ir"></div>
<div data-sign="sign_cucu" class="ir cucu readable clickable"></div>
<div id="sign_cucu" class="sign ir"></div>
<nav>
<div class="ir clickable arrow to-room2" data-destination="room2">Path 1</div>
<div class="ir clickable arrow to-room13" data-destination="room13">Path 2</div>
<div class="ir clickable secret to-secret-room1" data-secret="secret-room1">Door 1</div>
<div class="ir clickable arrow to-room7" data-destination="room7">Path 4</div>
</nav>
</div>
<div class="stage" id="room6">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
<div class="toothy_eyes ir"></div>
</div>
<div data-sign="sign_note2" class="ir note2 readable clickable"></div>
<div data-sign="sign_moonflower" class="ir moonflower readable clickable"></div>
<div id="sign_moonflower" class="sign ir">moonflower</div>
<div data-sign="sign_potatoe" class="ir potatoe readable clickable"></div>
<nav>
<div class="ir clickable arrow to-room3" data-destination="room3">Path 1</div>
<div class="ir clickable arrow to-room7" data-destination="room7">Path 2</div>
</nav>
</div>
<div class="stage" id="room7">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
<div class="toothy_eyes ir"></div>
</div>
<div data-sign="sign_stuffings" class="ir stuffings readable clickable"></div>
<div id="sign_stuffings" class="sign ir">tasty meal stuffings for nasty lil' muffins</div>
<div data-sign="sign_note2" class="ir note2 readable clickable"></div>
<div class="flames ir"></div>
<div class="eyes ir"></div>
<div class="palms clickable activatable ir"></div>
<label class="lantern-heads ir clickable switch-handler" for="toggle_lantern3">Lantern</label>
<input type="checkbox" class="switch" id="toggle_lantern3" />
<div class="lantern ir off"></div>
<div class="lantern-glow ir on"></div>
<nav>
<div class="ir clickable arrow to-room6" data-destination="room6">Path 1</div>
<div class="ir clickable arrow to-room5" data-destination="room5">Path 2</div>
<div class="ir clickable arrow to-room8" data-destination="room8">Path 3</div>
<div class="ir clickable secret to-secret-room1" data-secret="secret-room1">Door 1</div>
</nav>
</div>
<div class="stage" id="room8">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
<div class="toothy_eyes ir"></div>
</div>
<div data-sign="sign_auburngine" class="ir auburngine readable clickable"></div>
<div id="sign_auburngine" class="sign ir">auburngine</div>
<div data-sign="sign_book1" class="ir book1 readable clickable"></div>
<div id="sign_book1" class="sign ir">"Axing the Elders" by R. Raskolnikoff</div>
<nav>
<div class="ir clickable arrow to-room7" data-destination="room7">Path 1</div>
<div class="ir clickable arrow to-room9" data-destination="room9">Path 2</div>
</nav>
</div>
<div class="stage" id="room9">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
<div class="toothy_eyes ir"></div>
</div>
<div data-sign="sign_auburngine2" class="ir auburngine2 readable clickable"></div>
<div id="sign_auburngine2" class="sign ir">auburngine</div>
<div data-sign="sign_painapple" class="ir painapple readable clickable"></div>
<div data-sign="sign_book2" class="ir book2 readable clickable"></div>
<div id="sign_book2" class="sign ir">"Thy Lights" by S. Mayor</div>
<div data-secret="secret_pool" class="ir pool clickable secret"></div>
<div data-secret="secret_pool" class="ir pool-arm clickable secret"></div>
<nav>
<div class="ir clickable arrow to-room8" data-destination="room8">Path 1</div>
<div class="ir clickable arrow to-room5" data-destination="room5">Path 2</div>
</nav>
</div>
<div class="stage" id="room10">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
<div class="toothy_eyes ir"></div>
</div>
<div data-sign="sign_musketmelon" class="ir musketmelon readable clickable"></div>
<div id="sign_musketmelon" class="sign ir">musketmelon</div>
<div data-sign="sign_painapple" class="ir painapple readable clickable"></div>
<div data-secret="secret_pool" class="ir pool-top clickable secret"></div>
<div data-secret="secret_pool" class="ir pool clickable secret"></div>
<div data-secret="secret_pool" class="ir pool-bottom clickable secret"></div>
<nav>
<div class="ir clickable arrow to-room11" data-destination="room11">Path 1</div>
<div class="ir clickable arrow to-room12" data-destination="room12">Path 2</div>
<div class="ir clickable arrow to-room13" data-destination="room13">Path 3</div>
</nav>
</div>
<div class="stage" id="room11">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
<div class="toothy_eyes ir"></div>
</div>
<div data-sign="sign_book3" class="ir book3 readable clickable"></div>
<div id="sign_book3" class="sign ir">"Giant Knives and Baked Dogs" by P. Head</div>
<div data-sign="sign_beats" class="ir beats readable clickable"></div>
<div id="sign_beats" class="sign ir">sugar beats</div>
<div data-sign="sign_painapple" class="ir painapple readable clickable"></div>
<div class="ir waterfall"></div>
<nav>
<div class="ir clickable arrow to-room10" data-destination="room10">Path 1</div>
</nav>
</div>
<div class="stage" id="room12">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
<div class="toothy_eyes ir"></div>
</div>
<div data-sign="sign_note3" class="ir note3 readable clickable"></div>
<div id="sign_note3" class="sign ir">
BLACK TONGUES SPEAK FASTER
THAN A CAR CRASH.
YOU SUPPLY THE RUMOURS
AND I'LL SUPPLY THE WRATH.
ROMANCH IS BREAKING
EVERY HEART IN TWO,
CASTING SHADOWS
IN A PALE SHADE OF BLUE.
</div>
<div data-sign="sign_octoberry" class="ir octoberry readable clickable"></div>
<div id="sign_octoberry" class="sign ir">octoberry</div>
<div class="ir worm clickable activatable"></div>
<nav>
<div class="ir clickable arrow to-room10" data-destination="room10">Path 1</div>
<div class="ir clickable arrow to-room13" data-destination="room13">Path 2</div>
</nav>
</div>
<div class="stage" id="room13">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
<div class="toothy_eyes ir"></div>
</div>
<div class="ir moth"></div>
<div class="lantern4">
<label class="lantern-heads ir clickable switch-handler" for="toggle_lantern4">Lantern</label>
<input type="checkbox" class="switch" id="toggle_lantern4" />
<div class="lantern ir off"></div>
<div class="lantern-glow ir on"></div>
</div>
<div data-sign="sign_book4" class="ir book4 readable clickable"></div>
<div data-sign="sign_musstardy" class="ir musstardy readable clickable"></div>
<div id="sign_musstardy" class="sign ir">musstardy</div>
<nav>
<div class="ir clickable arrow to-room5" data-destination="room5">Path 1</div>
<div class="ir clickable arrow to-room12" data-destination="room12">Path 2</div>
<div class="ir clickable arrow to-room14" data-destination="room14">Path 3</div>
<div class="ir clickable passkey to-secret-room2" data-pass="pass-gate1">Door 2</div>
</nav>
</div>
<div class="stage initial" id="room14">
<div class="dolly ir">
<div class="dolly_eyes ir"></div>
<div class="toothy_eyes ir"></div>
</div>
<div data-sign="sign_book4" class="ir book4 readable clickable"></div>
<div data-sign="sign_marrowslim" class="ir marrowslim readable clickable"></div>
<div id="sign_marrowslim" class="sign ir">musstardy</div>
<nav>
<div class="ir clickable arrow to-room4" data-destination="room4">Path 1</div>
<div class="ir clickable arrow to-room13" data-destination="room13">Path 2</div>
<div class="ir clickable passkey to-secret-room2" data-pass="pass-gate1">Door 2</div>
</nav>
</div>
</div>
</div>
<div class="credits">
<a href="http://www.blackbrickroadofoz.com/" class="xamag ir" target="blank">
art, idea & story by Xamag
</a>
<a class="logo ir" href="http://www.blackbrickroadofoz.com/index.php?id=14" target="blank">
The Black Brick Road of O.Z. #11 (read the rest)
</a>
<a href="http://rachelnabors.com/" class="rtg ir" target="blank">
CSS, HTML & JavaScript by Rachel <del>the Great</del> Nabors
</a>
</div>
</div>
html {
background: #000;
}
* { /* Otherwise all those replaced images = selectable + GROSS */
user-select: none;
}
.loaded #loader { display: none;}
#loader {
background: url(//stash.rachelnabors.com/oz/loading/bg_loading.jpg?3) 0 0 no-repeat;
animation: down-the-hole .5s steps(2) infinite;
transition: opacity .01s linear 2s;
}
@keyframes down-the-hole {
0% {background-position: 0 -450px;}
100% {background-position: 0 -1350px;}
}
#loader .dolly { transition: opacity .01ms linear -.01ms;
opacity: 0;}
.here-we-go #loader .dolly {
background: url(//stash.rachelnabors.com/oz/loading/dolly.png) 0 0 no-repeat;
opacity: 1;
top: -151px; left: 213px;
width: 218px; height: 463px;
animation: dolly-fall 2.5s ease-in 1;
animation-fill-mode: forwards;
}
.here-we-go #loader {
background: url(//stash.rachelnabors.com/oz/loading/bg_loading.jpg?3) 0 0 no-repeat;
animation: none;
}
@keyframes dolly-fall {
0% {top: -151px;}
35% { top: -250px; }
100% {top: 1500px;}
}
#portal, #loader {
width: 650px; height: 450px;
position: absolute;
top: 40px; left: 50%;
margin-left: -325px;
overflow: hidden;
}
.loaded #portal {transition: opacity .01s; }
.loading #portal { opacity: 0; } /* hide portal till everything is loaded */
#opening {
background: #000;
opacity: 1;
width: 650px; height: 450px; position: absolute;
transition: opacity 2s ease-out 7s;
}
#opening.playing {
opacity: 0;
}
.scene {
position: absolute;
width: 650px; height: 450px;
z-index: 10;/*Scenes top everything but loading screens*/
}
.cut { width: 100%; height: 100%; position: absolute; }
.playing .cut {
/*using a background image here, but I'd rather use a mask and gradient in the future, when browsers catch up.*/
background: url(//stash.rachelnabors.com/oz/opening/cut-hole.png?1) 70% 60% no-repeat /*radial-gradient(432px 257px, circle, transparent 650px, black 650px)*/;
background-size: 3000px 2077px;
animation: cut-hole 1s linear 1 1.25s;
animation-fill-mode: forwards;
z-index: 6;
}
@keyframes cut-hole {
0% { background-size: 3000px 2077px; }
100% { background-size: 650px 450px;}
}
#scene1 .setting {
background: url("//stash.rachelnabors.com/oz/opening/bg_opening.png") 0 0 no-repeat;
width: 650px; height: 450px;
}
#scene1 .dolly-fling {
background: url("//stash.rachelnabors.com/oz/opening/flying-up.png");
opacity: 1;
left: 289px; bottom: -127px;
width: 77px; height: 127px;
}
.playing #scene1 .dolly-fling {
bottom: 58px;
opacity: 0;
transition: bottom .15s linear, opacity .01s .16s;
}
#scene1 .dolly-flop {
background: url("//stash.rachelnabors.com/oz/opening/sprite_landing.png") 0 232px no-repeat;
left: 288px; top: 123px;
width: 241px; height: 232px;
}
.playing #scene1 .dolly-flop {
animation: dolly-landing .75s steps(10,start) 1 .16s;
animation-fill-mode: forwards;
}
@keyframes dolly-landing {
0% {background-position: 0 232px;}
100% {background-position: 0 -2098px;}
}
/* fade out scene 1 and roll scene2 */
.playing #scene1 {
opacity: 0;
transition: opacity .01s linear 4s;
}
/* Scene2 slides in slowly... */
#scene2 {
background: #0e1318 url("//stash.rachelnabors.com/oz/opening/quadling.jpg") 100px 0 no-repeat;
z-index: 1;
}
.loaded #scene2 { transition: background-position 4s linear 2.5s, opacity 1.5s ease-out 6s;}
.playing #scene2 {
background-position: 0 0;
opacity: 0;
}
/* Hide map while loading */
.loading #map {opacity: 0; }
/* add transition to it when loaded */
.loaded #map { transition: opacity 2s ease-out 8s, top 1s ease-out, left 1s ease-out;}
#map {
background: #720b0a url("//stash.rachelnabors.com/oz/bg_world.jpg?9") -0 0 no-repeat;
opacity:1;
position: absolute;
top: 0; left: -967px;
width: 2517px; height: 1864px;
}
.stage {
position: absolute;
width: 650px; height: 450px;
z-index: 0;
}
/*initial settings */
.initial { transition: none; }
#portal .dolly, .arrow, .toothy {
opacity: 0;
transition: opacity .2s ease-out 1s;
}
.location { z-index: 1;}
.location .dolly, .location .arrow, .location .toothy {
opacity: 1 !important; /* Overrides the inline opacity setting from JS*/
}
/* Image replacement */
.ir {
text-indent: 100%;
white-space: nowrap;
overflow: hidden;
position: absolute;
}
.ir br { display: none; }
/* Interactivity */
.clickable { cursor: pointer; }
input[type=checkbox] {
display: none;
/* For mobile, it's typically better to position checkbox on top of clickable
area and turn opacity to 0 instead. */
}
.activatable, .activatable * {
animation-play-state: paused;
}
.activated, .activated * {
animation-play-state: running;
}
.shared .switch-handler, .shared .activatable{ z-index: 2; } /* Make sure shared controls float on top of any overlapping layers */
.sign, .secret-room, .pass-field {
display: none;
z-index: 2;
}
.secret { position: absolute; }
.arrow {
background: url("//stash.rachelnabors.com/oz/arrow.png") 0 0 no-repeat;
width: 24px; height: 65px;
}
.scraps { width: 61px; height: 39px; }
.lantern-heads {
width: 158px; height: 100px;
z-index: 1;
}
.lantern {
background: url("//stash.rachelnabors.com/oz/sprite_lantern.png") 0 100% no-repeat;
width: 190px; height: 342px;
}
.lantern-glow {
background: url("//stash.rachelnabors.com/oz/sprite_lantern.png");
width: 190px; height: 342px;
}
.on { transition: opacity 1s linear;}
.switch-handler { z-index: 1; }
.switch:checked ~ .on {
opacity: 0;
}
.lantern5 .lantern-heads { left: 1842px; top: 927px;}
.lantern5 .lantern, .lantern5 .lantern-glow {
left: 1820px; top: 927px;
z-index: 1;
}
.bulbs, .bulbs-glow {
width: 67px; height: 54px;
top: 1423px; left: 1454px;
}
.bulbs.off { background: url("//stash.rachelnabors.com/oz/room10/sprite_bulbs.png") 0 0 no-repeat;}
.bulbs-glow { background: url("//stash.rachelnabors.com/oz/room10/sprite_bulbs.png") 0 -54px no-repeat;}
.fountain {
background: url("//stash.rachelnabors.com/oz/room5/sprite_fountain.png");
left: 1109px; top: 1076px;
width: 62px; height: 103px;
animation-fill-mode: forwards;
animation-play-state: running;
animation: fountain-spray .51s steps(2) infinite;
}
.fountain.activated {
animation: fountain-spurt 2s steps(7) 2 alternate;
}
@keyframes fountain-spray {
0% { background-position: 0 0; }
100% { background-position: 0 -206px; }
}
@keyframes fountain-spurt {
0% { background-position: 0 0; }
100% { background-position: 0 -721px; }
}
.painapple { width: 54px; height: 40px; }
#sign_book4 {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?4") 0 -1064px no-repeat;
left: 1956px; top: 914px;
width: 188px; height: 112px;
}
.pass-field {
background: #330b13;
border-radius: 4px;
color: #e0763e;
padding: 10px;
position: absolute;
width: 300px;
text-align: center;
top: 125px; left: 50%;
margin-left: -150px;
z-index: 3;
}
.pass-wrap {
border: dashed #5d070e 2px;
padding: 10px;
}
.pass-field label { text-transform: uppercase; }
.pass-field input {
box-sizing: border-box;
display: block;
margin-top: .75em;
padding: .5em 2em;
text-align: center;
width: 100%;
}
.pass-field input[type="submit"] {
background: #a12e04;
border: 0;
border-radius: 4px;
color: #fff;
}
.pass-field input[type="text"] {
background: #d39981;
border: 0;
}
/* Room 1 */
#room1 { top: 0; left: 967px; }
.in-room1 #map {
top: 0; left: -967px;
}
/* Show sitting dolly on first load, hide all other times. */
.initial .dolly-sitting { display: block; }
.initial .arrow { opacity: 1; }
.dolly-sitting { display: none; }
.in-room1 .dolly-standing {
background: url("//stash.rachelnabors.com/oz/room1/sprite_dolly_standing.png") 0 0 no-repeat;
width: 137px; height: 263px;
left: 254px; top: 119px;
}
#room1 .dolly-sitting {
background: url("//stash.rachelnabors.com/oz/room1/sprite_dolly_sitting.png");
width: 122px; height: 177px;
left: 248px; top:180px;
}
#room1 .dolly-sitting .dolly_eyes {
animation: room1_dolly_blink 3s steps(2, start) infinite;
background: url("//stash.rachelnabors.com/oz/room1/sprite_dolly_sitting.png") 0 -177px no-repeat;
top: 11px; left: 53px;
width: 18px; height: 15px;
}
@keyframes room1_dolly_blink {
0% { background-position: 52px 10px; }
15% { background-position: 0 -177px; }
85% { background-position: 52px 10px; }
100% { background-position: 0 -177px; } /* shows eyes */
}
#room1 .dolly-sitting .dot-n-tot_eyes {
animation: room1_dot-n-tot_blink 2s steps(1, start) 1s infinite;
background: url("//stash.rachelnabors.com/oz/room1/sprite_dolly_sitting.png") -104px -177px no-repeat;
top: 147px; left: 98px;
width: 18px; height: 15px;
}
@keyframes room1_dot-n-tot_blink {
0% { background-position: 0 0; }
15% { background-position: -104px -177px; }
75% { background-position: 0 0; }
100% { background-position: -104px -177px; }
}
#room1 .mousey {
width: 56px; height:19px;
position: absolute;
left: 245px; top: 359px;
}
#room1 .mouse-hole {
background: url("//stash.rachelnabors.com/oz/room1/sprite_mouse.png") 0 -19px no-repeat;
width: 56px; height:19px;
position: absolute;
}
#room1 .mouse {
background: url("//stash.rachelnabors.com/oz/room1/sprite_mouse.png") 0 0 no-repeat;
width: 28px; height:19px;
position: absolute;
top: 0; left: 16px;
}
#room1 .activated .mouse { animation: mouse-poke 2s linear 1; }
@keyframes mouse-poke {
50% { top: 1px; left: 43px; }
}
#room1 .lanterns-heads {
width: 316px; height: 100px;
top: 9px; left: 148px;
z-index: 1;
}
#room1 .lantern, #room1 .lantern-glow {
background: url("//stash.rachelnabors.com/oz/room1/sprite_lanterns.png");
width: 316px; height: 342px;
top: 9px; left: 148px;
}
#room1 .lantern.off { background-position: 0 -342px; }
#room1 input[type=checkbox]:checked ~ .lanterns {
background: url("//stash.rachelnabors.com/oz/room1/lanterns_off.png");
}
#room1 .readable {
left: 453px; top: 290px;
width: 53px; height: 37px;
}
#room1 .sign {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png") 0 0 no-repeat;
left: 415px; top: 197px;
width: 118px; height: 86px;
}
#room1 .to-room4 {
left: 462px; top: 318px;
transform: rotate(110deg);
}
#room1 .to-room2 {
left: 205px; top: 340px;
transform: rotate(200deg);
}
/* Room 2 */
#room2 { left: 1025px; top: 476px;}
.in-room2 #map { left: -1025px; top: -476px;}
#room2 .dolly {
background: url("//stash.rachelnabors.com/oz/room2/sprite_dolly.png") 0 0 no-repeat;
left: 235px; top: 66px;
width: 83px; height: 145px;
}
#room2 .blood {
background: url("//stash.rachelnabors.com/oz/room2/sprite_blood.png") 0 0 no-repeat;
animation: drip 6s steps(7) infinite;
left: 503px; top: 124px;
width: 18px; height: 71px;
}
@keyframes drip {
0% { background-position: 0 0; }
90% { background-position: 0 0; }
100% { background-position: 0 -497px; }
}
.well {
background: url("//stash.rachelnabors.com/oz/room2/sprite_well.png") 0 0 no-repeat;
left: 1377px; top: 772px;
width: 91px; height: 84px;
}
.well.activated { animation: well-turn 2s steps(6) 2 alternate;}
@keyframes well-turn {
0% { background-position: 0 0; }
100% { background-position: 0 -504px; }
}
#room2 .scraps {
left: 163px; top: 330px;
}
#sign_scraps {
background: url("//stash.rachelnabors.com/oz/room2/sprite_papers.png") 0 -450px no-repeat;
left: 105px; top: 10px;
width: 453px; height:433px
}
#room2 .album {
left: 196px; top: 138px;
width: 48px; height: 39px;
}
#sign_album {
background: url("//stash.rachelnabors.com/oz/room2/sprite_papers.png") -66px -22px no-repeat;
left: 66px; top: 22px;
width: 518px; height:401px
}
#room2 .to-room1 {
left: 58px; top: 46px;
transform: rotate(30deg);
}
#room2 .to-room3 {
left: 32px; top: 151px;
transform: rotate(-70deg);
}
#room2 .to-room5 {
left: 114px; top: 369px;
transform: rotate(190deg);
}
/* Room 3 */
#room3 { left: 441px; top: 331px;}
.in-room3 #map { left: -441px; top: -331px;}
#room3 .dolly {
background: url("//stash.rachelnabors.com/oz/room3/sprite_dolly.png") 0 0 no-repeat;
left: 398px; top: 172px;
width: 91px; height: 148px;
}
#room3 .toothy {
background: url("//stash.rachelnabors.com/oz/room3/sprite_toothy.png") 0 0 no-repeat;
animation: toothy-lick 1s steps(6) infinite alternate;
left: 363px; top: 289px;
width: 36px; height: 51px;
}
@keyframes toothy-lick {
0% { background-position: 0 0 ;}
100% { background-position: 0 -306px }
}
#room3 .potatoe {
left: 112px; top: 245px;
width: 48px; height: 21px;
}
.in-room3 #sign_potatoe {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") 0 -86px no-repeat;
left: 76px; top: 143px;
width: 105px; height: 73px;
}
#room3 .recipe-scrap1 {
left: 304px; top: 349px;
width: 27px; height: 19px;
}
#sign_recipe-scrap1 {
background: url("//stash.rachelnabors.com/oz/room3/paper.png") 0 -0 no-repeat;
left: 99px; top: 38px;
width: 409px; height: 359px;
}
#room3 .to-room2 {
left: 528px; top: 222px;
transform: rotate(90deg);
}
#room3 .to-room6 {
left: 146px; top: 282px;
transform: rotate(220deg);
}
/* Room 4 */
#room4 { left: 1618px; top: 344px;}
.in-room4 #map { left: -1618px; top: -344px;}
#room4 .dolly {
background: url("//stash.rachelnabors.com/oz/room4/sprite_dolly.png") 0 0 no-repeat;
left: 415px; top: 222px;
width: 133px; height: 172px;
}
#room4 .pumpkin {
background: url("//stash.rachelnabors.com/oz/room4/sprite_pumpkin.png") 0 0 no-repeat;
animation-fill-mode: forwards;
left: 362px; top: 380px;
width: 29px; height: 20px;
}
.in-room4 .pumpkin { animation: pumpkin-grin 2s steps(11) 1 1s;}
@keyframes pumpkin-grin {
0% { background-position: 0 0 ;}
100% { background-position: 0 -220px }
}
#room4 .note {
left: 360px; top: 135px;
width: 63px; height: 51px;
}
#sign_note {
background: url("//stash.rachelnabors.com/oz/room4/paper.png") 0 -0 no-repeat;
left: 138px; top: 14px;
width: 368px; height: 413px;
}
#room4 .to-room1 {
left: 49px; top: 185px;
transform: rotate(310deg);
}
#room4 .to-room14 {
left: 187px; top: 365px;
transform: rotate(220deg);
}
/* Room 5 */
#room5 { left: 819px; top: 772px;}
.in-room5 #map { left: -819px; top: -772px;}
#room5 .dolly {
background: url("//stash.rachelnabors.com/oz/room5/sprite_dolly.png") 0 0 no-repeat;
left: 242px; top: 134px;
width: 108px; height: 155px;
}
#room5 .scraps { left: 369px; top: 33px;}
#room5 .lantern-heads { top: 0; left: 64px;}
#room5 .lantern, #room5 .lantern-glow { top: 0; left: 48px;}
#room5 .moth {
background: url("//stash.rachelnabors.com/oz/room5/sprite_moth.png");
left: 179px; top: 21px;
width: 31px; height: 32px;
animation: moth-flutter 1.5s steps(3) infinite;
}
@keyframes moth-flutter {
0% { background-position: 0 0; }
65% { background-position: 0 -96px; }
}
#room5 .cucu {
left: 426px; top: 224px;
width: 43px; height: 49px;
}
#sign_cucu {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?3") 0 -159px no-repeat;
left: 396px; top: 141px;
width: 122px; height: 74px;
}
#secret-room1 {
background: url("//stash.rachelnabors.com/oz/room5/secret-room1.png");
position: absolute;
width: 631px; height: 450px;
left: 18px; top: 0;
z-index: 3;
}
#secret-room1 .photo-witches {
width: 37px; height: 46px;
top: 199px; left: 473px;
}
#sign_photo-witches {
background: url("//stash.rachelnabors.com/oz/room5/photo.png");
width: 333px; height: 418px;
top: 16px; left: 138px;
}
#secret-room1 .diary {
width: 76px; height: 41px;
top: 162px; left: 207px;
}
#sign_diary {
background: url("//stash.rachelnabors.com/oz/room5/diary.png");
width: 626px; height: 450px;
top: 0; left: -18px;
}
#room5 .to-room2 {
left: 329px; top: 55px;
transform: rotate(380deg);
}
#room5 .to-room13 {
left: 487px; top: 305px;
transform: rotate(100deg);
}
#room5 .to-room7 {
left: 92px; top: 291px;
transform: rotate(245deg);
}
#room5 .to-secret-room1 {
left: 0; top: 103px;
width: 130px; height: 200px;
}
/* Room 6 */
#room6 { left: 0; top: 553px;}
.in-room6 #map {left: 0; top: -553px; }
#room6 .dolly {
background: url("//stash.rachelnabors.com/oz/room6/sprite_dolly.png") 0 0 no-repeat;
left: 169px; top: 144px;
width: 152px; height: 151px;
animation: hmm .5s steps(2) infinite;
}
@keyframes hmm {
0% { background-position: 0 0;}
100% {background-position: 0 -304px;}
}
.in-room6 #sign_potatoe {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png") 0 -234px no-repeat;
left: 501px; top: 46px;
width: 104px; height: 77px;
}
#room6 .potatoe {
width: 43px; height: 26px;
left: 562px; top: 16px;
}
#room6 .moonflower {
width: 59px; height: 38px;
left: 56px; top: 196px;
}
#sign_moonflower {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png") 0 -311px no-repeat;
left: 26px; top: 110px;
width: 168px; height: 85px;
}
#room6 .note2 {
width: 33px; height: 29px;
left: 227px; top: 349px;
}
#sign_note2 {
background: url("//stash.rachelnabors.com/oz/room6/note2.png") 0 0 no-repeat;
left: 64px; top: 70px;
width: 505px; height: 397px;
}
#room6 .to-room3 {
left: 443px; top: 184px;
transform: rotate(60deg);
}
#room6 .to-room7 {
left: 310px; top: 350px;
transform: rotate(150deg);
}
/* Room 7 */
#room7 { left: 181px; top: 849px; }
.in-room7 #map { left: -181px; top: -849px;}
#room7 .dolly {
background: url("//stash.rachelnabors.com/oz/room7/sprite_dolly.png") 0 0 no-repeat;
left: 177px; top: 134px;
width: 162px; height: 157px;
}
#room7 .note2 {
width: 33px; height: 25px;
left: 44px; top: 56px;
}
#room7 .stuffings {
width: 100px; height: 84px;
left: 171px; top: 296px;
}
#sign_stuffings {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") 0 -396px no-repeat;
left: 280px; top: 271px;
width: 275px; height: 98px;
}
#room7 .lantern, #room7 .lantern-glow { left: 477px;
top: -41px;}
#room7 .lantern-heads {left: 492px;top: -41px;}
#room7 .flames {
background: url("//stash.rachelnabors.com/oz/room7/sprite_flame.png") 0 -0 no-repeat;
left: 441px; top: 305px;
width: 50px; height: 37px;
animation: flame-flicker .5s steps(3) infinite;
}
@keyframes flame-flicker {
0% { background-position: 0 0;}
100% {background-position: 0 -108px;}
}
#room7 .eyes {
background: url("//stash.rachelnabors.com/oz/room7/eyes.png") 0 -24px no-repeat;
left: 376px; top: 349px;
width: 47px; height: 24px;
animation: plant-eyes-blink 2s steps(2) infinite alternate;
}
@keyframes plant-eyes-blink {
0% { background-position: 0 0;}
20% { background-position: 0 -48px; }
}
#room7 .palms {
background: url("//stash.rachelnabors.com/oz/room7/sprite_palms.png") 0 0 no-repeat;
top: 317px; left: 466px;
width: 63px; height: 42px;
}
#room7 .palms.activated { animation: palms-wave 1.5s steps(7) 1; }
@keyframes palms-wave {
0% { background-position: 0 0;}
100% {background-position: 0 -294px;}
}
#room7 .to-secret-room1 {
width: 100px; height: 172px;
top: 55px; left: 550px;
}
#room7 .to-room5 {
left: 529px; top: 234px;
transform: rotate(90deg);
}
#room7 .to-room6 {
left: 129px; top: 54px;
transform: rotate(330deg);
}
#room7 .to-room8 {
left: 150px; top: 370px;
transform: rotate(160deg);
}
/* Room 8 */
#room8 { left: 314px; top: 1296px; }
.in-room8 #map { left: -314px; top: -1296px;}
.in-room8 #room8 {
background: url("//stash.rachelnabors.com/oz/room8/bg_waves.png") 0 231px no-repeat;
/* animation: waves-lapping 1s steps(2) infinite; */
}
@keyframes waves-lapping {
0% {background-position: 0 231px ;}
100% { background-position: 0 681px; }
}
#room8 .dolly {
background: url("//stash.rachelnabors.com/oz/room8/sprite_dolly.png") 0 0 no-repeat;
left: 218px; top: 42px;
width: 138px; height: 154px;
}
#room8 .auburngine {
width: 35px; height: 40px;
left: 405px; top: 141px;
}
#sign_auburngine {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") -127px -159px no-repeat;
left: 345px; top: 50px;
width: 148px; height: 78px;
}
#room8 .book1{
width: 171px; height: 134px;
left: 218px; top: 256px;
}
#sign_book1 {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") 0 -494px no-repeat;
left: 340px; top: 187px;
width: 252px; height: 107px;
}
#room8 .to-room7 {
left: 179px; top: 14px;
transform: rotate(310deg);
}
#room8 .to-room9 {
left: 400px; top: 40px;
transform: rotate(60deg);
}
/* Room 9 */
#room9 { left: 672px; top: 1066px; }
.in-room9 #map { left: -672px; top: -1066px;}
#room9 .dolly {
background: url("//stash.rachelnabors.com/oz/room9/sprite_dolly.png") 0 0 no-repeat;
left: 250px; top: 77px;
width: 85px; height: 217px;
}
#room9 .auburngine2 {
width: 35px; height: 40px;
left: 46px; top: 370px;
}
#sign_auburngine2 {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") -127px -159px no-repeat;
left: 2px; top: 284px;
width: 148px; height: 78px;
}
#room9 .book2 {
width: 51px; height: 48px;
left: 112px; top: 191px;
}
#sign_book2 {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") 0 -601px no-repeat;
left: 61px; top: 252px;
width: 173px; height: 130px;
}
#room9 .painapple { left: 533px; top: 403px;}
.in-room9 #sign_painapple {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") -127px -237px no-repeat;
left: 482px; top: 293px;
width: 132px; height: 75px;
}
#room9 .pool {
top: 124px; left: 311px;
width: 339px; height: 276px;
}
#room9 .pool-arm {
top: 156px; left: 271px;
width: 40px; height: 66px;
}
#secret_pool {
background: url("//stash.rachelnabors.com/oz/room9/pool.png") 0 0 no-repeat;
left: 158px; top: 16px;
width: 349px; height: 412px;
}
#room9 .to-room8 {
left: 129px; top: 280px;
transform: rotate(240deg);
}
#room9 .to-room5 {
left: 370px; top: 20px;
}
/* Room 10 */
#room10 { left: 1041px; top: 1132px; }
.in-room10 #map { left: -1041px; top: -1132px;}
#room10 .dolly {
background: url("//stash.rachelnabors.com/oz/room10/sprite_dolly.png") 0 0 no-repeat;
left: 325px; top: 104px;
width: 169px; height: 144px;
animation: dolly-poke .5s steps(2) infinite;
}
@keyframes dolly-poke {
0%{background-position: 0 0;}
100%{background-position: 0 -288px;}
}
#room10 .musketmelon {
width: 51px; height: 48px;
left: 542px; top: 361px;
}
#sign_musketmelon {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") -121px 0 no-repeat;
left: 464px; top: 278px;
width: 154px; height: 79px;
}
#room10 .painapple { left: 162px; top: 336px; }
.in-room10 #sign_painapple {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") -127px -237px no-repeat;
left: 123px; top: 253px;
width: 132px; height: 75px;
}
#room10 .pool {
top: 103px; left: 0;
width: 406px; height: 152px;
}
#room10 .pool-top {
top: 50px; left: 0;
width: 331px; height: 58px;
}
#room10 .pool-bottom {
top: 249px; left: 0;
width: 273px; height: 66px;
}
#room10 .to-room11 {
left: 365px; top: 350px;
transform: rotate(180deg);
}
#room10 .to-room12 {
left: 560px; top: 195px;
transform: rotate(100deg);
}
#room10 .to-room13 {
left: 550px; top: 25px;
transform: rotate(50deg);
}
/* Room 11 */
#room11 { left: 866px; top: 1416px; }
.in-room11 #map { left: -866px; top: -1416px;}
#room11 .dolly {
background: url("//stash.rachelnabors.com/oz/room11/sprite_dolly.png") 0 0 no-repeat;
left: 296px; top: 200px;
width: 169px; height: 144px;
animation: dolly-kick .75s steps(2) infinite;
}
@keyframes dolly-kick {
0%{background-position: 0 0;}
100%{background-position: 0 -288px;}
}
#room11 .waterfall {
background: url("//stash.rachelnabors.com/oz/room11/sprite_waterfall.png") 0 0 no-repeat;
top: 34px; left: 54px;
width:224px; height: 309px;
animation: waterfall-splash .75s steps(2) infinite;
}
@keyframes waterfall-splash {
0%{background-position: 0 0;}
100%{background-position: 0 -618px;}
}
#room11 .painapple { left: 339px; top: 53px; }
#room11 .book3 {
left: 421px;top: 201px;
width: 39px;height: 42px;
}
#room11 .beats {
left: 480px; top: 330px;
width: 66px; height: 33px;
}
#sign_book3 {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") 0 -812px no-repeat;
left: 296px; top: 32px;
width: 242px; height: 164px;
}
#sign_beats {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") 0 -732px no-repeat;
left: 456px; top: 224px;
width: 147px; height: 81px;
}
.in-room11 #sign_painapple {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") -127px -86px no-repeat;
left: 413px; top: 39px;
width: 145px; height: 64px;
}
#room11 .to-room10 {
left: 540px; top: 90px;
}
/* Room 12 */
#room12 { left: 1634px; top: 1318px; }
.in-room12 #map { left: -1634px; top: -1318px;}
#room12 .dolly {
background: url("//stash.rachelnabors.com/oz/room12/sprite_dolly.png") 0 0 no-repeat;
left: 226px; top: 110px;
width:152px; height: 163px;
}
#room12 .worm {
background: url("//stash.rachelnabors.com/oz/room12/sprite_worm.png") 0 97px no-repeat;
left: 310px; top: 249px;
width:59px; height: 97px;
}
#room12 .worm.activated { animation: wormy-wiggle 1s steps(14) 1; }
@keyframes wormy-wiggle {
0%{background-position: 0 97;}
100%{background-position: 0 -1261px;}
}
#room12 .note3 {
left: 171px; top: 176px;
width: 32px; height: 18px;
}
#room12 .octoberry {
left: 175px; top: 109px;
width: 66px; height: 29px;
}
#sign_note3 {
background: url("//stash.rachelnabors.com/oz/room12/note3.png") 0 0 no-repeat;
left: 42px; top: 40px;
width: 568px; height: 364px;
}
#sign_octoberry {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?1") 0 -976px no-repeat;
left: 154px; top: 20px;
width: 135px; height: 88px;
}
#room12 .to-room10 {
left: 70px; top: 170px;
transform: rotate(270deg);
}
#room12 .to-room13 {
left: 269px; top: 15px;
}
/* Room 13 */
#room13 { left: 1522px; top: 881px }
.in-room13 #map { left: -1522px; top: -881px;}
#room13 .dolly {
background: url("//stash.rachelnabors.com/oz/room13/sprite_dolly.png") 0 0 no-repeat;
left: 167px; top: 193px;
width:141px; height: 167px;
z-index: 3;
}
#room13 .moth {
background: url("//stash.rachelnabors.com/oz/room13/sprite_moth.png") 0 0 no-repeat;
left: 368px; top: 44px;
width: 32px; height: 31px;
z-index: 1;
animation: moth-flutter2 steps(2) .25s infinite alternate;
}
@keyframes moth-flutter2 {
100%{background-position: 0 -62px;}
}
#room13 .musstardy {
left: 239px; top: 296px;
width: 95px; height: 39px;
}
#sign_musstardy {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?4") 0 -1178px no-repeat;
left: 260px; top: 206px;
width: 149px; height: 94px;
}
#room13 .book4 {
left: 505px; top: 156px;
width: 54px; height: 37px;
}
#room13 .to-secret-room2 {
left: 212px; top: 122px;
width: 212px; height: 165px;
}
#secret-room2 {
background: url("//stash.rachelnabors.com/oz/room13/secret-room2.png");
position: absolute;
width: 631px; height: 450px;
left: 0; top: 0;
}
#secret-room2 .photo-doc {
width: 37px; height: 31px;
top: 150px; left: 283px;
}
#sign_photo-doc {
background: url("//stash.rachelnabors.com/oz/room13/photo2.png");
width: 318px; height: 232px;
top: 123px; left: 170px;
}
#room13 .lantern4 .lantern-heads { top: 0; left: 116px;}
#room13 .lantern4 .lantern, #room13 .lantern4 .lantern-glow { top: -9px; left: 99px;}
#room13 .to-room5 {
left: 50px; top: 250px;
transform: rotate(270deg);
}
#room13 .to-room12 {
left: 330px; top: 370px;
transform: rotate(150deg);
}
#room13 .to-room14 {
left: 579px; top: 360px;
transform: rotate(40deg);
}
/* Room 14 */
#room14 { left: 1864px; top: 853px }
.in-room14 #map { left: -1864px; top: -853px;}
#room14 .dolly {
background: url("//stash.rachelnabors.com/oz/room14/sprite_dolly.png") 0 0 no-repeat;
left: 300px; top: 107px;
width:166px; height: 177px;
}
#room14 .marrowslim {
left: 494px; top: 248px;
width: 46px; height: 46px;
}
#sign_marrowslim {
background: url("//stash.rachelnabors.com/oz/sprite_signs.png?4") 0 -1272px no-repeat;
left: 457px; top: 311px;
width: 157px; height: 84px;
}
#room14 .book4 {
left: 165px; top: 186px;
width: 54px; height: 37px;
}
#room14 .to-secret-room2 {
left: 0;top: 164px;
width: 91px; height: 165px;
}
#room14 .to-room4 {
left: 275px; top: 80px;
transform: rotate(323deg);
}
#room14 .to-room13 {
left: 268px; top: 370px;
transform: rotate(240deg);
}
/* Thank you for reading :) */
.credits {
background: url("//stash.rachelnabors.com/oz/sprite_frame.png");
left: 50%; top: 40px;
margin-left: -325px; margin-top: 450px;
position: absolute;
width: 650px; height: 214px;
}
.xamag {
background: url("//stash.rachelnabors.com/oz/sprite_frame.png?2");
position: absolute; left: 0; top: 0;
width: 217px; height: 155px;
}
.logo {
background: url("//stash.rachelnabors.com/oz/sprite_frame.png?2") -244px 0;
position: absolute; left: 244px; top: 0;
width: 168px; height: 214px;
}
.rtg {
background: url("//stash.rachelnabors.com/oz/sprite_frame.png?2") -412px 0;
position: absolute; left: 412px; top: 0;
width: 238px; height: 179px;
}
.best-by {
background: url("//stash.rachelnabors.com/oz/sprite_frame.png?2") 0 -214px;
left: 50%; top: 0;
margin-left: -325px;
position: absolute;
width: 650px; height: 40px;
opacity: 0;
transition: opacity .5s ease-in-out 4s;
}
.next-page {
width: 90px;
height: 70px;
top: 140px;
left: 100px;
}
// This could all be more modular. I want to refactor.
// No time. Only 7 days. The screaming grows louder...
// Hurry, the passcode... the passcode...
$(window).load(function(){
setTimeout(function(){ //gotta wait a lil' bit
$("#load-state").addClass("here-we-go");
setTimeout(function(){ //gotta wait a lil' bit
$("#load-state").removeClass("loading").addClass("loaded");
$("#opening").addClass("playing");
}, 3500);
}, 2000);
});
// Some items can be activated with a click to run an animation
$(".activatable").on("click", function() {
// add the activated class. Animations should be on this class.
$(this).addClass("activated").removeClass("activatable");
// When the animation is over, remove class -> reset animation
$(this).on('webkitAnimationEnd', function() {
$(this).removeClass("activated").addClass("activatable");
});
});
// When you click anywhere on the body, hide all the "discoverables" and clear any forms...
$("body").on("click", function(){
$(".sign, .secret-room, .pass-field").hide();
$(".pass-field").find("input[type='text']").val("");
});
// Some things are "readable," and will show their content ("signs") on click-age
$(".readable").on("click", function() {
var sign = $(this).data("sign");
var sign = "#" + sign;
$(".sign").hide(); // hide any open signs before
$(sign).show(); // show target sign
//stop propogation so the hiding function above won't fire
return false;
});
// Some rooms are secret. This is how you reveal them.
$(".secret").on("click", function() {
var secret = $(this).data("secret");
var secret = "#" + secret;
$(secret).show();
//stop propogation so the hiding function above won't fire
return false;
});
// When you click inside secret rooms, hide any open signs without hiding the room.
$(".secret-room").on("click", function(){
var shown = $(this).children(".sign").filter(":visible");
if (shown.length) { //if you have some signs open in a secret room
$(".sign").hide(); //hide them
return false; //and stop click from closing room
}
});
// changing rooms
// when arrow is clicked
$(".arrow").on("click", function(){
// find out where we're going
var destination = $(this).data("destination");
// hide dollies
$(".dolly, .toothy, .arrow").css("opacity", 0);
// change room state
// bring into focus room (CSS)
$("#portal").removeClass().addClass("in-" + destination);
//show that room's dollies (CSS?)
$(".stage").removeClass("location initial")
.filter("#" + destination).addClass("location");
});
// Ultra-super-secret password protected room-age
$(".passkey").on("click", function() {
var password = $(this).data("pass");
var password = "#" + password;
$(password).show().find("input[type='text']").first().focus();
//stop propogation so the hiding function above won't fire
return false;
});
$(".pass-field").on("click", function() {
return false;
});
$(".pass-field").on("click", "input[type='submit']", function() {
var tryPasscode = $(this).prev("input[type='text']").val().toLowerCase();
var realPasscode = $(this).parents(".pass-field").data("passcode").toLowerCase();
var access = $(this).parents(".pass-field").data("access");
var gate = $(this).parents(".pass-field");
knockKnock(tryPasscode, realPasscode, access, gate);
});
// Protect those passwords!
function knockKnock(tryPasscode, realPasscode, access, gate) {
if (tryPasscode === realPasscode) { // correct password
var access = "#" + access;
$(".sign, .secret-room, .pass-field").hide();
$(access).show();
} else { // wrong password
$(gate).find("input[type='text']").val("Errnt! Have a look around.");
}
}
Also see: Tab Triggers