diff --git a/source/README b/source/README
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL1JFQURNRQ==
--- /dev/null
+++ b/source/README
@@ -0,0 +1,13 @@
+You generate this website by using yatiblog from here:
+
+http://github.com/tav/ampify/blob/master/environ/startup/yatiblog
+
+by running 
+
+yatiblog <path to website dir> you'll get a website subdirectory which
+contains all necessary stuff to upload and deploy.
+
+Other required dependencies (argh):
+    * "genshi" from http://genshi.edgewall.org/
+    * "pygments" from "easy_install pygments"
+    * "yaml" from ... (I give up at that point, as this doesn't compile)
diff --git a/source/TODO b/source/TODO
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL1RPRE8=
--- /dev/null
+++ b/source/TODO
@@ -0,0 +1,16 @@
+* drop-down or other menu that allows a one-click access to each
+  of the pages here
+
+* svn cp release/1.2.x release/1.2.0
+* svn cp release/1.2.x dist
+
+* finish the release announcement pypy/doc/release-1.2.0.txt
+
+* binary tarballs: use pypy/tool/package.py on Linux and Mac OS/X,
+  make it manually on Windows for now
+
+* source tarballs: make them manually?
+
+* move the tarballs to http://codespeak.net/download/pypy/
+
+* recompute the html files on codespeak, from dist and from trunk
diff --git a/source/_config.yml b/source/_config.yml
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL19jb25maWcueW1s
--- /dev/null
+++ b/source/_config.yml
@@ -0,0 +1,12 @@
+site_author: PyPy Team
+site_description: PyPy
+site_license: MIT
+site_title: PyPy
+site_url: http://pypy.org
+
+analytics_id: UA-90176-26
+section_id: code
+typekit: disabled
+
+index_pages:
+- archive.html: archive.genshi
diff --git a/source/_layouts/archive.genshi b/source/_layouts/archive.genshi
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL19sYXlvdXRzL2FyY2hpdmUuZ2Vuc2hp
--- /dev/null
+++ b/source/_layouts/archive.genshi
@@ -0,0 +1,34 @@
+---
+layout: site
+license: MIT
+---
+<div xmlns:py="http://genshi.edgewall.org/">
+<?python
+
+  MONTHS = [
+    'Zero Month',
+    'January', 'February', 'March', 'April', 'May', 'June',
+    'July', 'August', 'September', 'October', 'November', 'December'
+    ]
+
+  items = []
+
+?>
+<div class="section-info" id="all-articles"><strong>Blog Posts Archive</strong></div>
+<ul>
+  <li py:for="item in sorted([item for item in items if item.get('x-created') and not item.get('subtitle')], key=lambda x: x['x-created'], reverse=True)">
+    <a id="article-${item['__name__']}" href="${item['__name__']}.html">${Markup(item.get('title') or item['__title__'])}</a>
+	&mdash;
+	<span py:with="created=item['x-created']">${created[9:11]} ${MONTHS[int(created[6:8])]} ${created[1:5]}</span>
+  </li>
+</ul>
+
+<br />
+
+<div class="section-info" id="all-articles"><strong>Other Articles</strong></div>
+<ul>
+  <li py:for="item in sorted([item for item in items if not(item.get('x-created') and not item.get('subtitle'))], key=lambda x: x['__name__'])">
+    <a id="article-${item['__name__']}" href="${item['__name__']}.html">${Markup(item.get('title') or item['__title__'])}</a>
+  </li>
+</ul>
+</div>
diff --git a/source/_layouts/page.genshi b/source/_layouts/page.genshi
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL19sYXlvdXRzL3BhZ2UuZ2Vuc2hp
--- /dev/null
+++ b/source/_layouts/page.genshi
@@ -0,0 +1,37 @@
+---
+layout: site
+license: MIT
+---
+
+<div xmlns:py="http://genshi.edgewall.org/">
+<div id="main">
+<h1 class="title" py:if="defined('title')">${Markup(title)}</h1>
+${Markup(content)}
+</div>
+<div id="sidebar">
+<ul>
+  <li>
+  <div class="sidepic">
+  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick"/>
+<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
+"/>
+<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" />
+</form>
+    </div>
+  </li>
+  <li>
+    <div class="sidepic">
+      <a id="main_download" href="#"></a>
+    </div>
+  </li>
+</ul>
+<py:if test="defined('__by__')">
+<h3>Meta</h3>
+<div class="sidebar-text">
+This page was last updated by <a href="mailto:${__by__}">${__by__.split('@')[0] or 'unknown'}</a> on ${__updated__.strftime('%B %d, %Y')} @ <a href="http://github.com/tav/pypy-site/commits/master/${__id__}">${__updated__.strftime('%H:%M')}</a> <a href="http://github.com/tav/ampify/raw/master/LICENSE"><img src="http://static.ampify.it/gfx.public-domain.png" width="20px" height="20px" alt="Public Domain" class="absmiddle" /></a>
+</div>
+</py:if>
+</div>
+</div>
diff --git a/source/_layouts/site.genshi b/source/_layouts/site.genshi
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL19sYXlvdXRzL3NpdGUuZ2Vuc2hp
--- /dev/null
+++ b/source/_layouts/site.genshi
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<html xmlns:py="http://genshi.edgewall.org/">
+<?python
+
+  section_data = {
+    'code': [
+      ('Home', 'index.html'),
+      ('Download', 'download.html'),
+      ('Compatibility', 'compat.html'),
+      ('Performance', 'http://speed.pypy.org'),
+      ('Dev Site', 'http://codespeak.net/pypy/trunk/pypy/doc/index.html'),
+      ('Blog', 'http://morepypy.blogspot.com'),
+      ],
+    }
+
+  menu_class = {}
+
+  for section in section_data.keys():
+    if section == section_id:
+      menu_class[section] = {'class': 'selected'}
+    else:
+      menu_class[section] = {}
+
+?>
+<head>
+	<title py:if="defined('title')">PyPy :: ${title}</title>
+	<title py:if="not defined('title')">${site_title}</title>
+	<meta http-equiv="content-language" content="en" />
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<meta name="author" content="${site_author}" />
+	<meta name="description" content="${site_description}" />
+	<meta name="copyright" content="${site_license}" />
+	<meta name="document-rating" content="general" />
+	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
+	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
+	<py:if test="defined('typekit')">
+	<script type="text/javascript" src="http://use.typekit.com/hdt8sni.js"></script>
+	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+	</py:if>
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+  <script type="text/javascript" src="js/detect.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+	var _gaq = [['_setAccount', '${analytics_id}'], ['_trackPageview']];
+	if (document.location.protocol !== 'file:') {
+		(function() {
+			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
+		})();
+	}
+</script>
+
+<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
+
+<div id="header">
+	<div id="menu-follow">
+		<div><a href="http://search.twitter.com/search?q=%23pypy" title="Follow the conversation on Twitter"><img src="http://static.ampify.it/icon.twitter.gif" alt="Follow the conversation on Twitter" width="14px" height="14px" /></a></div>
+    <div><a href="http://codespeak.net/svn/pypy/trunk/"><img src="http://svn.apache.org/repos/asf/subversion/trunk/notes/logo/256-colour/subversion_logo_notxt-32.png" width="14px" height="14px"/></a></div>
+		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="http://static.ampify.it/icon.rss.png" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
+	</div>
+	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" width="149px" height="110px" /></a></div>
+	<!--
+	<div id="menu"><ul>
+		<li><a href="http://dev.ampify.it" py:attrs="menu_class['code']">Code</a></li>
+	</ul></div>
+	-->
+	<hr class="clear-left" />
+	<div id="menu-sub" py:with="section_info=section_data[section_id]; last_menu_idx=len(section_info)-1"><py:for each="idx, (menu_item, menu_url) in enumerate(section_info)"><a href="${menu_url}">${menu_item}</a><span py:if="idx != last_menu_idx" class="menu-sub-sep"> | </span></py:for></div>
+	<hr class="clear" />
+</div>
+
+<div id="content" py:if="defined('content')">
+${Markup(content)}
+</div>
+
+</div></div></div>
+
+</body>
+</html>
diff --git a/source/compat.txt b/source/compat.txt
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL2NvbXBhdC50eHQ=
--- /dev/null
+++ b/source/compat.txt
@@ -0,0 +1,67 @@
+---
+layout: page
+title: Python compatibility
+---
+
+PyPy implements Python language version 2.5. It supports all of the core
+language, passing Python test suite (with minor modifications that were
+already accepted in main python in newer versions). It supports most
+of commonly used Python `standard library modules`_, list below.
+
+PyPy does not support `CPython C API`_, which means that third party
+libraries for python, written in C, will not work.
+
+Standard library modules supported by PyPy, in alphabetical order:
+
+* ``__builtin__ __pypy__ _codecs _lsprof _minimal_curses _random _rawffi _socket _sre _weakref bz2 cStringIO crypt errno exceptions fcntl gc itertools marshal math md5 mmap operator parser posix pyexpat select sha signal struct symbol sys termios thread time token unicodedata zipimport zlib``
+
+Supported, but written in pure-python:
+
+* ``array binascii cPickle cmath collections ctypes datetime functools grp md5 pwd pyexpat sha sqlite3 syslog``
+
+All modules that are pure python in CPython of course work.
+
+Python libraries known to work under PyPy (the list is not exhaustive):
+
+* ctypes
+
+* django (without any DB but sqlite)
+
+* twisted (without ssl support)
+
+* pylons
+
+* divmod's nevow
+
+* pyglet
+
+Known differencies that are not going to be fixed:
+
+* PyPy does not support refcounting semantics. The code below
+  won't fill the file immediately, but only after a certain period
+  of time, when the GC will collect::
+
+    open("filename", "w").write("stuff")
+
+  The proper fix is::
+    
+    f = open("filename", "w")
+    f.write("stuff")
+    f.close()
+
+* We don't support certain attributes that were decided to be
+  implementation-dependent. For example ``gc.get_referrers``. ``gc.enable``
+  and ``gc.disable`` are supported, but they don't enable and disable GC,
+  but instead enable and disable running of finalizers.
+
+* You can't attach a ``__del__`` method to a class after its creation.
+
+* You can't store non-string keys in type objects. Example::
+
+    class A(object):
+        locals()[42] = 3
+
+  won't work.
+
+.. _`CPython C API`: http://docs.python.org/c-api/
+.. _`standard library modules`: http://docs.python.org/library/
diff --git a/source/download.txt b/source/download.txt
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL2Rvd25sb2FkLnR4dA==
--- /dev/null
+++ b/source/download.txt
@@ -0,0 +1,197 @@
+---
+layout: page
+title: Download and install
+---
+
+Download
+============================================================
+
+Here are the various binaries of **PyPy 1.2** that we provide for x86 Linux,
+Mac OS/X or Windows.
+
+* `With a JIT Compiler`_ **(recommended!)**
+* `With no JIT Compiler`_
+* `Sandboxed version`_
+* `Stackless version`_
+* `Building from source`_
+
+The release 1.2 of PyPy supports **Python version 2.5**. 
+If you are interested in helping
+with 2.6, 2.7 or 3.x features, `contact us`_!
+
+
+.. _`With a JIT Compiler`:
+
+"JIT Compiler" version
+-------------------------------
+
+These binaries include a Just-in-Time compiler.  They only work on
+**32-bit** `x86 (IA-32)`_ CPUs that have the SSE2_ instruction set (most of
+them do, nowadays), as well as on any `x86-64`_ machine in the 32-bit
+compatibility mode.
+
+* Linux binary
+* Mac OS/X binary
+* Windows binary (this version is alpha software!)
+
+If your CPU is really old, it may not have SSE2.  In this case, you need
+to translate_ yourself with the option ``--jit-backend=x86-without-sse2``.
+
+If your CPU is a 64-bit machine and you want to translate_ a 32-bit
+version of PyPy yourself, `here are hints`_.
+
+If you want to help us with implementing the 64-bit JIT backend,
+`contact us`_!
+
+
+.. _`With no JIT Compiler`:
+.. _`no jit version.`:
+
+"No JIT" version
+-------------------------------
+
+**WARNING!** Unless you really want to try this out, we recommend the JIT
+version.
+
+This version still has a few advantages over the JIT Compiler version.
+Notably, for Python programs that require large amounts of memory (at
+least a few hundred MBs), the following version of ``pypy-c`` runs them
+by requiring generally 1.5x or 2x less memory than CPython.  These
+binaries work on 32-bit `x86 (IA-32)`_ CPUs as well as `x86-64`_ CPUs
+in the 32-bit compatibility mode.
+
+* Linux binary
+* Mac OS/X binary
+* Windows binary
+
+If your CPU is a 64-bit machine and you want to translate_ a 32-bit
+version of PyPy yourself, `here are hints`_.
+
+If you want to help us with finishing the implementation of the native
+64-bit version (there are a few known issues, like missing code in
+`ctypes`_ to implement calls to C functions), `contact us`_ or
+**donate money**!
+
+
+.. _`Sandboxed version`:
+
+"Sandbox" version
+-------------------------------
+
+A special safe version.  Read the docs about sandboxing_.  These
+binaries work on 32-bit `x86 (IA-32)`_ CPUs as well as `x86-64`_ CPUs
+in the 32-bit compatibility mode.
+
+* Linux binary
+* Mac OS/X binary
+* Windows binary
+
+It is also possible to translate_ a version that includes both
+sandboxing and the JIT compiler, although as the JIT is relatively
+complicated, this reduce a bit the level of confidence we can put in it.
+
+If your CPU is a 64-bit machine and you want to translate_ a 32-bit
+version of PyPy yourself, `here are hints`_.
+
+The native 64-bit version needs testing and careful reviewing;
+`contact us`_!
+
+
+.. _`Stackless version`:
+
+"Stackless" version
+-------------------------------
+
+Provides Stackless_ extensions, as well as greenlets_.  These
+binaries work on 32-bit `x86 (IA-32)`_ CPUs as well as `x86-64`_ CPUs
+in the 32-bit compatibility mode.
+
+* Linux binary
+* Mac OS/X binary
+* Windows binary
+
+It is not possible right now to combine Stackless features with the JIT.
+
+If your CPU is a 64-bit machine and you want to translate_ a 32-bit
+version of PyPy yourself, `here are hints`_.
+
+For the native 64-bit version, see the issues of the `no jit version.`_.
+
+
+.. _translate:
+
+Building from source
+-------------------------------
+
+1. Get the source code.  The following packages contain the source at
+   the same revision as the above binaries:
+
+   * `pypy-1.2.0.tar.bz2`_ (sources, Unix line endings)
+   * `pypy-1.2.0.zip`_ (sources, Windows line endings)
+
+   Or you can checkout the current trunk using Subversion_ (the trunk
+   usually works and is of course more up-to-date)::
+
+     svn co http://codespeak.net/svn/pypy/trunk pypy-dist
+
+2. Enter the ``goal`` directory::
+
+     cd pypy-dist/pypy/translator/goal
+
+3. Run the ``translate.py`` script.  Here are the common combinations
+   of options::
+
+     python translate.py -Ojit                # get the JIT version
+     python translate.py -O2                  # get the no-jit version
+     python translate.py --sandbox            # get the sandbox version
+     python translate.py --stackless          # get the stackless version
+     python translate.py -Ojit --backend=cli  # only for branch/cli-jit
+
+4. Enjoy Mandelbrot ``:-)``  It takes on the order of one hour to
+   finish the translation, and 1.3 GB of RAM on a 32-bit system.
+   (Do not start a translation on a machine with 1GB or less!)
+
+
+.. _`here are hints`:
+
+Note on building a 32-bit version on 64-bit systems
++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+To build 32-bit versions of ``pypy-c`` you need to run ``translate.py``
+in a 32-bit version of Python.  You can check with::
+
+    $ python
+    Python 2.6.2 (...)
+    >>> import sys
+    >>> sys.maxint
+
+This prints 9223372036854775807 in 64-bit versions and 2147483647 in
+32-bit versions.
+
+On Linux, you may have to compile yourself a 32-bit Python, e.g.::
+
+    cd Python-2.6.4
+    CC="gcc -m32" LDFLAGS="-L/lib32 -L/usr/lib32 \
+      -L`pwd`/lib32 -Wl,-rpath,/lib32 -Wl,-rpath,/usr/lib32" \
+      ./configure
+    make
+    # and then use this ./python to run translate.py
+
+On Mac OS/X: the easiest is to systematically use Python 2.5 when
+working with PyPy.  Indeed, the standard Python 2.5 runs in 32-bit mode.
+
+On Windows, I only know about the solution of installing a 32-bit Python
+manually.
+
+
+.. _`x86 (IA-32)`: http://en.wikipedia.org/wiki/IA-32
+.. _`x86-64`: http://en.wikipedia.org/wiki/X86-64
+.. _SSE2: http://en.wikipedia.org/wiki/SSE2
+.. _`ctypes`: http://www.python.org/doc/2.5.4/lib/module-ctypes.html
+.. _`contact us`: http://codespeak.net/mailman/listinfo/pypy-dev
+.. _`sandboxing`: sandbox.html
+.. _`stackless`: http://www.stackless.com/
+.. _`greenlets`: http://codespeak.net/svn/greenlet/trunk/doc/greenlet.txt
+.. _`pypy-1.2.0.tar.bz2`: binaries/pypy-1.2.0.tar.bz2
+.. _`pypy-1.2.0.zip`: binaries/pypy-1.2.0.zip
+.. _Subversion: http://subversion.tigris.org/
diff --git a/source/index.txt b/source/index.txt
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL2luZGV4LnR4dA==
--- /dev/null
+++ b/source/index.txt
@@ -0,0 +1,45 @@
+---
+layout: page
+title: PyPy
+---
+
+PyPy is a `very compliant`_ implementation of the `Python`_ language.
+PyPy has several advantages and distinctive features:
+
+  * **Speed:** thanks to its Just-in-Time compiler, Python programs
+    often run `faster`_ on PyPy.  `(What is a JIT compiler?)`_
+
+  * **Memory usage:** large, memory-hungry Python programs might end up
+    taking `less space`_ than they do in CPython.
+
+  * **Sandboxing:** PyPy provides the ability to `run untrusted code`_ in a
+    fully secure way.
+
+  * **Stackless:** PyPy can be configured to run in `stackless`_ mode,
+    providing micro-threads for massive concurrency.
+
+  * As well as `other features`_.
+
+.. class:: download
+
+`Download and try out the PyPy release 1.2!`__
+
+.. __: download.html
+
+To read more about Python, look into `Python docs`_ and check our
+Compatibility_ page.  PyPy can run such python libraries as `twisted`_
+and `django`_ and supports `ctypes`_.
+
+.. _`stackless`: http://www.stackless.com/
+.. _`Python`: http://python.org/
+.. _`faster`: http://speed.pypy.org/
+.. _`(What is a JIT compiler?)`: http://en.wikipedia.org/wiki/Just-in-time_compilation
+.. _`run untrusted code`: sandbox.html
+.. _`very compliant`: compat.html
+.. _`Python docs`: http://www.python.org/doc/2.5.4/
+.. _`twisted`: http://twistedmatrix.com/
+.. _`django`: http://www.djangoproject.com/
+.. _`ctypes`: http://www.python.org/doc/2.5.4/lib/module-ctypes.html
+.. _`other features`: more.html
+.. _`less space`: http://morepypy.blogspot.com/2009/10/gc-improvements.html
+.. _Compatibility: compat.html
diff --git a/source/more.txt b/source/more.txt
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL21vcmUudHh0
--- /dev/null
+++ b/source/more.txt
@@ -0,0 +1,31 @@
+---
+layout: page
+title: More features
+---
+
+Other features
+===========================================================
+
+PyPy has many secondary features and semi-independent
+projects.  We will mention here:
+
+* **the .NET backend:** you get a version of ``pypy-c`` that runs
+  natively in the .NET/CLI VM.  Of particular interest is `the cli-jit
+  branch,`_ in which you can make a version of ``pypy-c`` which also
+  contains a high-level JIT compiler (it compiles your Python programs
+  Just in Time into CLR bytecodes, which are in turn compiled natively
+  by the VM).
+
+* **the Java backend:** PyPy can run on the Java VM, but more
+  care is needed to finish this project.  Writing a backend for our
+  high-level JIT compiler would be excellent.  `Contact us!`_
+
+* **Other languages:** available in a `separate part of the repository`_,
+  we implemented other languages too: Prolog_ (almost complete), as
+  well as Smalltalk, JavaScript, Io, Scheme and Gameboy.
+
+
+.. _`the cli-jit branch,`: http://codespeak.net/svn/pypy/branch/cli-jit/
+.. _`contact us!`: http://codespeak.net/mailman/listinfo/pypy-dev
+.. _`separate part of the repository`: http://codespeak.net/svn/pypy/lang/
+.. _Prolog: http://codespeak.net/svn/pypy/lang/prolog/trunk
diff --git a/source/sandbox.txt b/source/sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL3NhbmRib3gudHh0
--- /dev/null
+++ b/source/sandbox.txt
@@ -0,0 +1,19 @@
+---
+layout: page
+title: Sandboxing
+---
+
+PyPy's *sandboxing* is a working prototype for the idea of running untrusted
+user programs. Unlike other sandboxing approaches for Python, PyPy's does not
+try to limit language features considered "unsafe". Instead we replace all
+calls to external libraries (C or platform) with a stub that communicates
+with an external process handling the policy.
+
+To run the sandboxed process, get a `sandboxed pypy-c`_ and run::
+
+   pypy_interact.py pypy-c-sandbox
+
+To read more about its features, go to `our dev site`_.
+
+.. _`sandboxed pypy-c`: download.html#sandbox
+.. _`our dev site`: http://codespeak.net/pypy/dist/pypy/doc/sandbox.html
diff --git a/source/website/css/site.css b/source/website/css/site.css
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL3dlYnNpdGUvY3NzL3NpdGUuY3Nz
--- /dev/null
+++ b/source/website/css/site.css
@@ -0,0 +1,1352 @@
+/* No Copyright (-) 2010 The Ampify Authors. This file is under the */
+/* Public Domain license that can be found in the root LICENSE file. */
+
+/* Element styles */
+
+* {
+	margin: 0;
+	padding: 0;
+}
+
+html {
+	height: 100%;
+}
+
+body {
+	background-color: #efefef;
+	background-repeat: repeat;
+	font: 90%/1em 'Lucida Grande', 'Lucida Sans Unicode', Optima, Verdana, sans-serif;
+	height: 100%;
+	width: 100%;
+}
+
+a, a:visited, a:hover, a:active, a:hover {
+	color: blue;
+	text-decoration: underline;
+}
+
+a:hover {
+	text-decoration: none;
+}
+
+a.promote-fb, a.promote-fb:active, a.promote-fb:hover, a.promote-fb:visited {
+	background: url(http://static.ampify.it/gfx.share-facebook-sprite.png) no-repeat;
+	color: transparent;
+	display: block;
+	float: left;
+	height: 22px;
+	margin: 0 16px 0 0px;
+	outline; none;
+	overflow: hidden;
+	position: relative;
+	text-indent: 9999px !important;
+	top: -2px;
+	vertical-align: middle;
+	width: 146px;
+}
+
+a.promote-fb:hover {
+	background-position: 0 -22px;
+}
+
+a.promote-fb:active {
+	background-position: 0 -44px;
+}
+
+blockquote, p, dl, h1, h2, h3, h4, h5, h6, ol, ul {
+	padding-top: 0.5em;
+	padding-bottom: 0.5em;
+}
+
+code, .literal {
+	background-color: #f0f0f0;
+	border: 1px solid #dadada;
+	padding: 1px 3px;
+	font-family: Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace;
+}
+
+dl, ol, ul {
+	padding-left: 20px;
+}
+
+h1 {
+	font-size: 2.25em;
+}
+
+h1, h2 {
+	color: #c32528;
+	font-family: "museo-1", "museo-2", Verdana;
+	letter-spacing: 1px;
+	text-shadow: #eee 2px 2px 3px;
+}
+
+img {
+	border: 0;
+}
+
+label, input, select, textarea {
+	cursor: pointer;
+}
+
+pre {
+	background-color: #fff;
+	border: 1px solid #cacaca;
+	color: #101010;
+	font: 12px/1.4em Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace;
+	overflow: auto;
+	padding: 7px 0 8px 7px;
+	margin: 10px 30px 0 30px;
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+	-webkit-box-shadow: 0px 0px 7px #cacaca;
+}
+
+pre.ascii-art {
+	line-height: 1em;
+	overflow: visible;
+}
+
+pre code {
+	background-color: transparent;
+	border: 0;
+	padding: 0;
+}
+
+select {
+	max-width: 200px;
+}
+
+
+strong {
+	font-family: Museo, Verdana;
+	font-size: 1.1em;
+}
+
+table, table.docutils {
+	border: 0;
+	border-collapse: collapse;
+	margin: 0 auto;
+	text-align: left;
+}
+
+table.docutils {
+	margin: 5px 40px 10px 30px;
+}
+
+/*
+table a {
+	text-decoration: none;
+}
+*/
+
+th {
+	border-bottom: 2px solid #808096;
+	padding: 8px;
+}
+
+table.docutils td {
+	border-bottom: 1px solid #ccc;
+	padding: 9px 8px 8px 8px;
+}
+
+ul {
+	list-style-type: circle;
+}
+
+/* ID styles */
+
+#body {
+	background-color: #fff;
+	border-radius: 15px;
+	-webkit-border-radius: 15px;
+	-moz-border-radius: 15px;
+	padding: 5px;
+}
+
+#body-inner {
+   	margin: 0 auto;
+	padding: 10px 20px;
+	width: 950px;
+}
+
+#body-outer {
+	height: 100%;
+}
+
+body > #body-outer {
+	height: auto;
+	min-height: 100%;
+}
+
+#content {
+	line-height: 1.55em;
+}
+
+#footer-espians {
+	margin: 0 auto;
+	text-align: center;
+}
+
+#footer {
+	background-color: #161616;
+	background-image: url(http://static.ampify.it/gfx.footer-background.png);
+	background-position: top left;
+	background-repeat: repeat-x;
+	clear: both;
+	color: #fff;
+	height: 50px;
+	margin-top: -200px;
+	position: relative;
+	text-align: center;
+	width: 100%;
+}
+
+#footer-content {
+	margin: 0 auto;
+	padding-top: 15px;
+	text-align: center;
+}
+
+#header {
+	width: 100%;
+	border-bottom: 1px dashed #9e9e9e;
+	margin-bottom: 10px;
+}
+
+#logo {
+	float: left;
+}
+
+#main {
+	float: left;
+	padding: 10px 30px 0 10px;
+	width: 630px;
+	line-height: 2em;
+	font-size: 0.9em;
+}
+
+#main blockquote {
+	padding-left: 20px;
+}
+
+#main h1 {
+	font-size: 1.5em;
+	padding-top: 20px;
+	padding-bottom: 0;
+}
+
+#main h1.title {
+	font-size: 1.8em;
+	padding-top: 0;
+	padding-bottom: 10px;
+}
+
+#main p {
+	padding-top: 10px;
+}
+
+#main pre {
+	font-size: 14px;
+	font-family: "inconsolata-1", "inconsolata-2", Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace;
+}
+
+#main ul, #main ol {
+	padding-left: 35px;
+}
+
+#main li {
+	padding-top: 5px;
+}
+
+#sidebar {
+	float: left;
+	width: 270px;
+	font-size: 0.9em;
+	line-height: 1.6em;
+}
+
+#sidebar a, #sidebar a:hover, #sidebar a:active, #sidebar a:visited {
+	text-decoration: none;
+}
+
+#sidebar a:hover {
+	text-decoration: underline;
+}
+
+#sidebar h3 {
+	text-align: right;
+	border-bottom: 1px solid #cacaca;
+	margin-bottom: 10px;
+}
+
+#sidebar ul {
+	list-style-type: none;
+	padding: 0;
+	margin: 0;
+}
+
+#sidebar li {
+	padding-bottom: 12px;
+}
+
+#sidebar li div, .sidebar-text {
+	color: #6e6e6e;
+	font-size: 0.9em;
+}
+
+#table-of-contents {
+	float: right;
+	margin: 10px 0 10px 20px;
+	border: 1px solid #cacaca;
+}
+
+#table-of-contents .topic-title {
+	display: none;
+}
+
+#table-of-contents ul {
+	padding: 0 20px 5px 20px;
+}
+
+#main-support-page {
+	width: 540px;
+	margin: 0 auto;
+}
+
+#main-support-page pre {
+	width: 350px;
+}
+
+#menu ul {
+	list-style-type: none;
+	padding: 0;
+}
+
+#menu ul li {
+	background-color: #fff;
+	float: left;
+	margin-left: 12px;
+	text-align: center;
+}
+
+#menu a {
+	border-top: 2px solid #ccc;
+	color: #000;
+	display: block;
+	font-size: 18px;
+	padding-top: 6px;
+	padding-bottom: 8px;
+	text-decoration: none;
+}
+
+#menu a.selected, #menu a.selected:hover {
+	background-color: #f6f6f6;
+	border-top: 2px solid #a9151b;
+}
+
+#menu a:hover {
+	border-top: 2px solid #969696;
+}
+
+#menu-follow {
+	float: right;
+}
+
+#menu-follow div {
+	padding: 0 5px 5px 0;
+}
+
+#menu-lang {
+	margin: 0 105px 0 20px;
+	float: left;
+	text-align: right;
+	width: 140px;
+}
+
+#menu-lang select {
+	max-width: 120px;
+}
+
+#menu-lang-form {
+	display: none;
+	margin-top: 5px;
+}
+
+#menu-sub {
+	font-size: 1em;
+	padding-bottom: 10px;
+	text-align: center;
+}
+
+.menu-sub-sep {
+	color: #9f9f9f;
+	padding: 2px;
+}
+
+#spread-button {
+	background-color: #ffffff;
+	border-radius: 5px;
+	-webkit-border-radius: 5px;
+	-moz-border-radius: 5px;
+	padding: 5px;
+}
+
+/* Support site IDs */
+
+#help-spread-the-word {
+	float: left;
+}
+
+/* Class styles */
+
+.absmiddle {
+	vertical-align: middle;
+}
+
+.boxed {
+	border: 1px solid #cacaca;
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+	-webkit-box-shadow: 0px 0px 7px #cacaca;
+}
+
+.center {
+	text-align: center;
+}
+
+/* clear utility classes */
+
+.clear {
+	background-color: transparent;
+	border: 0px solid;
+	clear: both;
+	height: 0;
+	margin: 0;
+	padding: 0;
+	width: 0;
+}
+
+.clear-left {
+	background-color: transparent;
+	border: 0px solid;
+	clear: left;
+	height: 0;
+	margin: 0;
+	padding: 0;
+	width: 0;
+}
+
+.clear-right {
+	background-color: transparent;
+	border: 0px solid;
+	clear: right;
+	height: 0;
+	margin: 0;
+	padding: 0;
+	width: 0;
+}
+
+/* clearfix */
+
+.clearfix:after {
+	content: ".";
+	display: block;
+	height: 0;
+	clear: both;
+	visibility: hidden;
+}
+
+.clearfix {
+	display: inline-block;
+}
+
+/* Hides from IE-mac \*/
+* html .clearfix {
+	height: 1%;
+}
+.clearfix {
+	display: block;
+}
+/* End hide from IE-mac */
+
+/* float utility classes */
+
+.float-left {
+  float: left;
+  padding-bottom: 7px;
+  padding-right: 7px;
+}
+
+.float-right {
+  float: right;
+  padding-bottom: 7px;
+  padding-left: 7px;
+}
+
+/* footer classes */
+
+.footer-follow {
+	margin: 0 45px 15px 0;
+	float: left;
+}
+
+.footer-follow a {
+	color: #fff;
+	text-decoration: underline;
+	font-size: 10px;
+}
+
+.footer-follow a:hover {
+	text-decoration: none;
+}
+
+.footer-follow div {
+	white-space: nowrap;
+}
+
+.footer-menu {
+	float: right;
+	margin: 17px 50px 0 0;
+	font-size: 10px;
+}
+
+.footer-menu a {
+	color: #fff;
+	padding-left: 5px;
+	padding-right: 5px;
+}
+
+.footer-text {
+	text-align: left;
+}
+
+/* quoted blocks with attribution */
+
+.quote {
+	background: transparent url(http://static.ampify.it/gfx.blockquote.gif) no-repeat 0 0;
+	padding: 6px 12px 0 40px;
+	color: #575757;
+	font-size: 22px;
+	line-height: 28px;
+}
+
+.quote-attribution {
+	color: #575757;
+	font-size: 14px;
+	text-align: right;
+	padding: 10px 12px 10px 0;
+}
+
+.quote-attribution a, .quote-attribution a:active, .quote-attribution a:visited {
+	color: #575757;
+	text-decoration: underline;
+}
+
+.quote-attribution a:hover {
+	text-decoration: none;
+}
+
+/* Source code syntax highlighting */
+
+.syntax .c { color: #919191 } /* Comment */
+.syntax .cm { color: #919191 } /* Comment.Multiline */
+.syntax .cp { color: #919191 } /* Comment.Preproc */
+.syntax .cs { color: #919191 } /* Comment.Special */
+.syntax .c1 { color: #919191 } /* Comment.Single */
+
+.syntax .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+
+.syntax .g { color: #101010 } /* Generic */
+.syntax .gd { color: #d22323 } /* Generic.Deleted */
+.syntax .ge { color: #101010; font-style: italic } /* Generic.Emph */
+.syntax .gh { color: #101010 } /* Generic.Heading */
+.syntax .gi { color: #589819 } /* Generic.Inserted */
+.syntax .go { color: #6a6a6a } /* Generic.Output */
+.syntax .gp { color: #6a6a6a } /* Generic.Prompt */
+.syntax .gr { color: #d22323 } /* Generic.Error */
+.syntax .gs { color: #101010 } /* Generic.Strong */
+.syntax .gt { color: #d22323 } /* Generic.Traceback */
+.syntax .gu { color: #101010 } /* Generic.Subheading */
+
+.syntax .k { color: #c32528 } /* Keyword */ /* espian red */
+.syntax .k { color: #ff5600 } /* Keyword */ /* orangy */
+.syntax .kc { color: #ff5600 } /* Keyword.Constant */
+.syntax .kd { color: #ff5600 } /* Keyword.Declaration */
+.syntax .kd { color: #ff5600 } /* Keyword.Declaration */
+.syntax .kn { color: #ff5600 } /* Keyword */
+.syntax .kp { color: #ff5600 } /* Keyword.Pseudo */
+.syntax .kr { color: #ff5600 } /* Keyword.Reserved */
+.syntax .kt { color: #ff5600 } /* Keyword.Type */
+
+.syntax .l { color: #101010 } /* Literal */
+.syntax .ld { color: #101010 } /* Literal.Date */
+
+.syntax .m { color: #3677a9 } /* Literal.Number */ /* darkish pastely blue */
+.syntax .m { color: #00a33f } /* Literal.Number */ /* brightish green */
+.syntax .m { color: #1550a2 } /* Literal.Number */ /* darker blue */
+.syntax .m { color: #5d90cd } /* Literal.Number */ /* pastely blue */
+.syntax .mf { color: #5d90cd } /* Literal.Number.Float */
+.syntax .mh { color: #5d90cd } /* Literal.Number.Hex */
+.syntax .mi { color: #5d90cd } /* Literal.Number.Integer */
+.syntax .il { color: #5d90cd } /* Literal.Number.Integer.Long */
+.syntax .mo { color: #5d90cd } /* Literal.Number.Oct */
+
+.syntax .bp { color: #a535ae } /* Name.Builtin.Pseudo */
+.syntax .n { color: #101010 } /* Name */
+.syntax .na { color: #bbbbbb } /* Name.Attribute */
+.syntax .nb { color: #bf78cc } /* Name.Builtin */ /* pastely purple */
+.syntax .nb { color: #af956f } /* Name.Builtin */ /* pastely light brown */
+.syntax .nb { color: #a535ae } /* Name.Builtin */ /* brightish pastely purple */
+.syntax .nc { color: #101010 } /* Name.Class */
+.syntax .nd { color: #6d8091 } /* Name.Decorator */
+.syntax .ne { color: #af956f } /* Name.Exception */
+.syntax .nf { color: #3677a9 } /* Name.Function */
+.syntax .nf { color: #1550a2 } /* Name.Function */
+.syntax .ni { color: #101010 } /* Name.Entity */
+.syntax .nl { color: #101010 } /* Name.Label */
+.syntax .nn { color: #101010 } /* Name.Namespace */
+.syntax .nn { color: #101010 } /* Name.Namespace */
+.syntax .no { color: #101010 } /* Name.Constant */
+.syntax .nx { color: #101010 } /* Name.Other */
+.syntax .nt { color: #6d8091 } /* Name.Tag */
+.syntax .nv { color: #101010 } /* Name.Variable */
+.syntax .vc { color: #101010 } /* Name.Variable.Class */
+.syntax .vg { color: #101010 } /* Name.Variable.Global */
+.syntax .vi { color: #101010 } /* Name.Variable.Instance */
+.syntax .py { color: #101010 } /* Name.Property */
+
+.syntax .o { color: #ff5600 } /* Operator */ /* orangy */
+.syntax .o { color: #101010 } /* Operator */
+.syntax .ow { color: #101010 } /* Operator.Word */
+
+.syntax .p { color: #101010 } /* Punctuation */
+
+.syntax .s { color: #dd1144 } /* Literal.String */ /* darkish red */
+.syntax .s { color: #c32528 } /* Literal.String */ /* espian red */
+.syntax .s { color: #39946a } /* Literal.String */ /* pastely greeny */
+.syntax .s { color: #5d90cd } /* Literal.String */ /* pastely blue */
+.syntax .s { color: #00a33f } /* Literal.String */ /* brightish green */
+.syntax .sb { color: #00a33f } /* Literal.String.Backtick */
+.syntax .sc { color: #00a33f } /* Literal.String.Char */
+.syntax .sd { color: #00a33f } /* Literal.String.Doc */
+.syntax .se { color: #00a33f } /* Literal.String.Escape */
+.syntax .sh { color: #00a33f } /* Literal.String.Heredoc */
+.syntax .si { color: #00a33f } /* Literal.String.Interpol */
+.syntax .sr { color: #00a33f } /* Literal.String.Regex */
+.syntax .ss { color: #00a33f } /* Literal.String.Symbol */
+.syntax .sx { color: #00a33f } /* Literal.String.Other */
+.syntax .s1 { color: #00a33f } /* Literal.String.Single */
+.syntax .s2 { color: #00a33f } /* Literal.String.Double */
+
+.syntax .w { color: #101010 } /* Text.Whitespace */
+.syntax .x { color: #101010 } /* Other */
+
+.syntax.bash .nb { color: #101010 }
+.syntax.bash .nv { color: #c32528 }
+
+.syntax.css .k { color: #606060 }
+.syntax.css .nc { color: #c32528 }
+.syntax.css .nf { color: #c32528 }
+.syntax.css .nt { color: #c32528 }
+
+.syntax.rst .k { color: #5d90cd }
+.syntax.rst .ow { color: #5d90cd }
+.syntax.rst .p { color: #5d90cd }
+
+.syntax.yaml .l-Scalar-Plain { color: #5d90cd }
+.syntax.yaml .p-Indicator { color: #101010 }
+
+/* classes for support pages */
+
+.community-section {
+	margin: 10px auto 10px auto;
+	width: 500px;
+}
+
+.community-section-heading {
+	font-size: 1.6em;
+	margin-top: 10px;
+}
+
+.community-section-heading span {
+	background-color: #efd7d7;
+	line-height: 1.7em;
+}
+
+.community-section-text {
+	line-height: 1.6em;
+	padding: 10px 0 0 50px;
+}
+
+.support-page-banner {
+	font-size: 1.2em;
+	line-height: 1.6em;
+	margin: 20px 0;
+}
+
+.support-page-banner-text {
+	background-color: #f0f0f0;
+}
+
+/* classes for the main support page */
+
+.promote {
+	margin: 5px 0 0px 26px;
+}
+
+.promote-retweet {
+	margin-top: 2px;
+	float: left;
+}
+
+.promote-yahoo-buzz {
+	margin: -2px 15px 0 0;
+	float: left;
+	padding-bottom: 5px;
+}
+
+.promote-google-buzz, .promote-google-buzz:active, .promote-google-buzz:visited, .promote-google-buzz:hover {
+	background: url(http://static.ampify.it/icon.google-buzz.png) no-repeat 0 3px;
+	color: #666;
+	float: left;
+	font-size: 0.9em;
+	font-weight: bold;
+	margin-top: -2px;
+	padding: 0 10px 5px 20px;
+	text-decoration: none;
+}
+
+.promote-google-buzz:hover {
+	text-decoration: underline;
+}
+
+.share-text {
+	font-size: 18px;
+	line-height: 24px;
+	margin: 0px 0 12px 26px;
+	color: #aaa;
+}
+
+/* thanks to mashable.com for these wonderful share icons + css!! thanks guys -- you rock!! */
+
+ul.share-buttons {
+	line-height: normal;
+	margin: 12px 0 0 24px;
+	padding: 0;
+}
+
+.share-buttons li {
+	display: inline;
+	float: left;
+	list-style-type: none;
+	margin: 0 18px 12px 0;
+	padding-top: 1px;
+}
+
+.share-buttons a {
+	background: url(http://static.ampify.it/gfx.mashable-syndication.gif) no-repeat;
+	color: #575757;
+	display: block;
+	font-size: 7px;
+	height: 14px;
+	overflow: hidden;
+	padding: 33px 0 0;
+	text-align: center;
+	text-decoration: none;
+	white-space: nowrap;
+	width: 46px;
+}
+
+.share-buttons a:hover {
+	text-decoration:none;
+}
+
+.share-buttons .delicious a {
+	background-position: -138px 0;
+}
+
+.share-buttons .delicious a:hover {
+	background-position: -138px -47px;
+}
+
+.share-buttons .digg a {
+	background-position: 0 0;
+}
+
+.share-buttons .digg a:hover {
+	background-position: 0 -47px;
+}
+
+.share-buttons .facebook a {
+	background-position: -184px 0;
+}
+
+.share-buttons .facebook a:hover {
+	background-position: -184px -47px;
+}
+
+.share-buttons .google a {
+	background-position: -276px 0;
+}
+
+.share-buttons .google a:hover {
+	background-position: -276px -47px;
+}
+
+.share-buttons .myspace a {
+	background-position: -230px 0;
+}
+
+.share-buttons .myspace a:hover {
+	background-position: -230px -47px;
+}
+
+.share-buttons .reddit a {
+	background-position: -414px 0;
+}
+
+.share-buttons .reddit a:hover {
+	background-position: -414px -47px;
+}
+
+.share-buttons .sharethis a {
+	background-position: -460px 0;
+}
+
+.share-buttons .sharethis a:hover {
+	background-position: -460px -47px;
+}
+
+.share-buttons .stumbleupon a {
+	background-position: -92px 0;
+}
+
+.share-buttons .stumbleupon a:hover {
+	background-position: -92px -47px;
+}
+
+.share-buttons .technorati a {
+	background-position: -322px 0;
+}
+
+.share-buttons .technorati a:hover {
+	background-position: -322px -47px;
+}
+
+.share-buttons .twitter a {
+	background-position: -46px 0;
+}
+
+.share-buttons .twitter a:hover {
+	background-position: -46px -47px;
+}
+
+.share-buttons .yahoo a {
+	background-position: -368px 0;
+}
+
+.share-buttons .yahoo a:hover {
+	background-position: -368px -47px;
+}
+
+/* Unsorted */
+
+.columns {
+  max-width: 940px;
+  width: 940px;
+}
+
+.column, .column-last {
+  float: left;
+	/*
+  height: 180px;
+	   */
+  padding: 0 10px 0 0;
+  position: relative;
+  width: 227px;
+}
+
+.column-last {
+  padding: 0 0 0 0;
+}
+
+.column-text {
+  font-size: 12px;
+  line-height: 18px;
+  margin: 10px 0 20px 15px;
+}
+
+.column-footer {
+  background-image: url(bottom.gif);
+  background-repeat: no-repeat;
+  background-color: transparent;
+/*
+	background-attachment: scroll;
+	   */
+}
+
+.column-left {
+  border-right: 0px solid #f00;
+  float: left;
+  width: 455px;
+}
+
+.column-left-text {
+  font-size: 12px;
+  line-height: 18px;
+  margin-left: 12px;
+}
+
+.column-right {
+  float: right;
+  width: 485px;
+}
+
+.follow {
+  display: block;
+  list-style-type: none;
+  margin: 12px 0px 0px 24px;
+  padding: 0px;
+  text-align: center;
+}
+
+.follow li {
+  float: left;
+  display: block;
+  margin-right: 30px;
+  margin-bottom: 18px;
+}
+
+.follow a {
+  color: #575757;
+  display: block;
+  font-size: 10px;
+  margin-top: 7px;
+  text-decoration: underline;
+  text-decoration: none;
+  font-weight: bold;
+}
+
+.follow a:hover {
+  text-decoration: none;
+}
+
+.get-left {
+  float: left;
+  width: 230px;
+  margin-right: 12px;
+  font-weight: bold;
+}
+
+.get-right {
+  float: right;
+  width: 230px;
+  margin-right: 12px;
+  font-weight: bold;
+}
+
+.get-item {
+  border: 1px solid #ccc;
+  border-radius: 15px;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  margin-top: 10px;
+  font-weight: normal;
+  margin: 12px 0 12px 0;
+  padding: 10px;
+}
+
+.get-item img {
+  float: left;
+  margin-right: 5px;
+  padding-top: 3px;
+  vertical-align: middle;
+}
+
+.headline {
+  margin-bottom: 10px;
+  text-align: center;
+  line-height: 36px;
+}
+
+.headline-text {
+  background-color: #f0f0f0;
+  font-size: 20px;
+}
+
+.headline-text-small {
+  background-color: #f0f0f0;
+  font-size: 20px;
+}
+
+.lede {
+  background-color: #dfdfdf;
+}
+
+.link {
+  font-size: 16px;
+}
+
+.oneoff {
+  margin: 12px 12px 12px 0;
+  font-size: 14px;
+  line-height: 20px;
+  border-top: 1px solid #ccc;
+  border-bottom: 1px solid #ccc;
+  padding: 12px 0 12px 0;
+}
+
+.optional {
+  color: #666;
+  font-size: 9px;
+  vertical-align: super;
+}
+
+/* other */
+
+#callout {
+  background-color: #fff;
+  margin-bottom: 10px;
+/*
+  border-bottom-left-radius: 15px;
+  border-bottom-right-radius: 15px;
+  -moz-border-radius-bottomleft: 15px;
+  -moz-border-radius-bottomright: 15px;
+  -webkit-border-bottom-left-radius: 15px;
+  -webkit-border-bottom-right-radius: 15px;
+*/
+  padding: 10px;
+}
+
+#feature {
+  float: right;
+}
+
+#supporter-form {
+  font-size: 14px;
+  line-height: 26px;
+  margin: 8px 0 0 0;
+  padding-top: 5px;
+}
+
+#supporter-form td {
+  padding-top: 10px;
+  vertical-align: top;
+}
+
+#supporter-form .label {
+  text-align: right;
+  width: 205px;
+  padding-right: 10px;
+  padding-left: 10px;
+  font-size: 12px;
+  font-weight: bold;
+  white-space: nowrap;
+}
+
+.input-item input, .input-item textarea {
+  /* thanks soundcloud! */
+  background-image: url(http://static.ampify.it/gfx.button-repeat.png);
+  background-position: 0 -1200px;
+  background-repeat: repeat-x;
+  border: 1px solid #ccc;
+  border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  color: #333;
+  font-size: 20px;
+  max-width: 220px;
+  padding: 3px 0 3px 3px;
+  width: 220px;
+}
+
+.input-item select {
+  font-size: 16px;
+}
+
+.male {
+  border: 2px solid #70b1e6;
+  background-color: #eaf3fb;
+}
+
+.male .label {
+  color: #70b1e6;
+}
+
+.female {
+  border: 2px solid #ed6aa4;
+  background-color: #fee5f5;
+}
+
+.female .label {
+  color: #ed6aa4;
+}
+
+#supporter-submit {
+  text-align: center;
+  padding: 0 0 15px 0;
+}
+
+#support {
+  font-size: 20px;
+  margin-bottom: 15px;
+  margin-top: 5px;
+}
+
+.male-counter {
+  color: #70b1e6;
+  font-size: 12px;
+  margin-bottom: -50px;
+  white-space: nowrap;
+}
+
+.female-counter {
+  color: #ed6aa4;
+  font-size: 12px;
+  padding-left: 24px;
+  margin-bottom: -50px;
+  white-space: nowrap;
+}
+
+
+.tav-thanks {
+  font-size: 14px;
+  line-height: 26px;
+  margin: 12px 12px 12px 0;
+  color: #575757;
+  color: #000;
+  font-style: italic;
+}
+
+.tav-thanks img {
+  float: right;
+  margin-left: 12px;
+}
+
+.tav-thanks div {
+  text-align: right;
+  font-size: 12px;
+  line-height: 20px;
+  margin-top: 12px;
+}
+/*
+.tav-thanks a {
+  color: #000;
+  text-decoration: underline;
+}  
+
+.tav-thanks a:hover {
+  text-decoration: none;
+}  
+*/
+
+.the-disqus-section {
+  margin: 12px 12px 12px 0;
+  min-height: 500px;
+}
+
+.the-disqus-section h3 {
+  margin-top: 10px;
+  margin-bottom: 12px;
+  font-size: 20px;
+}
+
+.action-items {
+  font-size: 14px;
+  line-height: 26px;
+  margin: 10px 24px; 20px 24px;
+}
+
+.action-left {
+  float: left;
+  margin-right: 20px;
+}
+
+.action-link {
+  margin-top: 20px;
+}
+
+.action-text {
+  margin-top: 20px;
+}
+
+/* plan file related css */
+
+a.button {
+  background: transparent url('http://static.ampify.it/gfx.bg-button-a.gif') no-repeat scroll top right;
+  color: #444;
+  display: block;
+  float: left;
+  font: normal 12px arial, sans-serif;
+  height: 24px;
+  margin-right: 6px;
+  padding-right: 18px; /* sliding doors padding */
+  text-decoration: none;
+}
+
+a.button span {
+  background: transparent url('http://static.ampify.it/gfx.bg-button-span.gif') no-repeat;
+  display: block;
+  line-height: 14px;
+  padding: 5px 0 5px 18px;
+}
+
+a.button:active {
+  background-position: bottom right;
+  color: #000;
+  outline: none; /* hide dotted outline in Firefox */
+}
+
+a.button:active span {
+  background-position: bottom left;
+  padding: 6px 0 4px 18px; /* push text down 1px */
+}
+
+a.buttondown {
+  background: transparent url('http://static.ampify.it/gfx.bg-button-a.gif') no-repeat scroll top right;
+  color: #444;
+  display: block;
+  float: left;
+  font: normal 12px arial, sans-serif;
+  height: 24px;
+  margin-right: 6px;
+  padding-right: 18px; /* sliding doors padding */
+  text-decoration: none;
+  background-position: bottom right;
+  color: #000;
+  outline: none; /* hide dotted outline in Firefox */
+}
+
+a.buttondown span {
+  background: transparent url('http://static.ampify.it/gfx.bg-button-span.gif') no-repeat;
+  display: block;
+  line-height: 14px;
+  padding: 5px 0 5px 18px;
+  background-position: bottom left;
+  padding: 6px 0 4px 18px; /* push text down 1px */
+}
+
+.tag-segment {
+  text-align: right;
+}
+
+.tag-segment span {
+  color: #fff;
+  padding: 0.5em;
+  font-size: 0.7em;
+}
+
+.tag-link {
+  text-decoration: none;
+  color: #000;
+}
+
+.tag {
+  background-color: #696969;
+}
+
+.tag-val-done {
+  background-color: #007f16;
+  background-color: #00782d;
+  background-color: #006400;
+}
+
+.tag-val-needsreview {
+  background-color: #a4ff00;
+  color: #000 !important;
+}
+
+.tag-val-inreview {
+  background-color: #3056bf;
+}
+
+.tag-val-todo {
+  background-color: #a60c00;
+  background-color: #d0006e;
+  background-color: #8B0000;
+}
+
+.tag-val-wip {
+  background-color: #a66e00;
+  background-color: #ff550f;
+}
+
+.tag-type-1 {
+}
+
+.tag-type-2 { /* #hashtags */
+  background-color: #2a4580;
+  background-color: #696969;
+}
+
+.tag-type-dep {
+  display: none;
+}
+
+.tag-type-milestone {
+  background-color: #00008B;
+  background-color: #06276f;
+  background-color: #a4ff00; /* nice colour! */
+  /* color: #000 !important; */
+  background-color: #002ca6;
+  background-color: #3056bf;
+  background-color: #898989;
+}
+
+.tag-type-priority {
+  background-color: #481254;
+}
+
+.tag-type-zuser {
+  background-color: #4573d5;
+  background-color: #696969;
+}
+
+#plan-tags a, #site-tags a {
+  margin-bottom: 0.7em;
+}
+
+#plan-container {
+  margin-top: 1.2em;
+  margin-bottom: 2.4em;
+}
+
+.plan-help {
+  font-size: 0.9em;
+  font-weight: bold;
+  text-align: right;
+  margin-bottom: 1.4em;
+}
+
+.container {
+	padding-left: 20px;
+}
+
+.container blockquote {
+	padding: 0 0 0 30px;
+}
+
+.container > p:first-child {
+	font-weight: bold;
+	font-family: "museo-1", "museo-2", Verdana;
+	padding-bottom: 0;
+}
+
+.sidepic {
+    padding-top: 50px;
+    text-align: center;
+}
+
+a#main_download {
+    -moz-border-radius: 10px;
+    -webkit-border-radius: 10px;
+    border-radius: 5px;
+    margin-left: 10%;
+    margin-right: 10%;
+    padding: 5px;
+    display: block;
+    color: white;
+    background-color: #0b0;
+}
\ No newline at end of file
diff --git a/source/website/image/header-background.png b/source/website/image/header-background.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd1fbf805101c6387d906c30f75b59b552ff23cd
GIT binary patch
literal 421
zc$@*H0b2fvP)<h;3K|Lk000e1NJLTq00062005B)0ssI2W+wig00009a7bBm000XU
z000XU0RWnu7ytkPS4l)cR45fyl8Ft3Fbo8fh#Kg>Fls=eg51nHaFCPE_}K@CzVCZ$
zZM4=6y-yy-<hix2S1}1av(BV(OG}(50bJ*piO(cc!-tt742zmcF~JSPv=?+0^|JId
z7CmM0M;Udifjem?wdQd>5~wN534nhT_+L1Sp#km?xQBW!JpmM_ll<hxK=xvmv!RZu
z^bB~Qm*yCA$goU&-*2;;HK^e}AC~^!{6~n%MW*b+CFE7$w8($1QP;j$CWE7AR-D9m
z_>W}JA`i2K%8P(BYfFsCyzXc%tDN!b4tC-9yGN)1l8$VLe9UmJ3$W#+_UiLsv2XL<
ztt_e=^PQz=<~Jc{_NbSYxz@YKn3EaQ;ABmbiK9Wx=Ii<?<TmA0AbY`EnXspnxb$L5
zSyGG21}4t4!t2}RmRu2#r&sX1=qm2sm*tyn*LBHrp66faJ8~-=$HB-C+CVMEGy56z
P00000NkvXXu0mjf;Zw$K

diff --git a/source/website/image/pypy-logo.png b/source/website/image/pypy-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..e330518199f344cc3847f06623723655c5b5341a
GIT binary patch
literal 7265
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

diff --git a/source/website/js/detect.js b/source/website/js/detect.js
new file mode 100644
index 0000000000000000000000000000000000000000..abe76a60654c51abf6bffdaa2432163c57cca975_c291cmNlL3dlYnNpdGUvanMvZGV0ZWN0Lmpz
--- /dev/null
+++ b/source/website/js/detect.js
@@ -0,0 +1,18 @@
+
+$(document).ready(function() {
+    var download_url, download_text;
+    if (navigator.platform.indexOf('Linux') != -1) {
+        download_url = 'download/pypy-1.2.tar.bz2';
+        download_text = 'Download linux i386 bin';
+    } else if (navigator.platform.indexOf('Windows') != -1) {
+        download_url = 'download/pypy-1.2-win32.zip';
+        download_text = 'Download Windows i386 bin';
+    } else if (navigator.platform.indexOf('Mac') != 1) {
+        download_url = 'download/pypy-1.2-mac.tar.bz2';
+        downloat_text = 'Download Mac OS X 10.6 bin';
+    } else {
+        return;
+    }
+    $("#main_download").attr('href', download_url);
+    $("#main_download").text(download_text);
+});