Full Code of rootvc/cli-website for AI

main e988c7bc969e cached
36 files
575.6 KB
192.2k tokens
82 symbols
1 requests
Download .txt
Showing preview only (598K chars total). Download the full file or copy to clipboard to get everything.
Repository: rootvc/cli-website
Branch: main
Commit: e988c7bc969e
Files: 36
Total size: 575.6 KB

Directory structure:
gitextract_vtgkc4un/

├── .github/
│   └── workflows/
│       ├── claude.yml
│       └── test.yml
├── .gitignore
├── .stignore
├── LICENSE
├── README.md
├── config/
│   ├── commands.js
│   ├── fs.js
│   ├── help.js
│   ├── jobs.js
│   ├── portfolio.js
│   └── team.js
├── css/
│   ├── bootstrap.css
│   └── styles.css
├── index.html
├── js/
│   ├── addon-fit.js
│   ├── addon-web-links.js
│   ├── app.bundle.js
│   ├── ascii-art.js
│   ├── bootstrap.js
│   ├── comcastify.js
│   ├── geo.js
│   ├── rickroll.js
│   ├── terminal-ext.js
│   └── terminal.js
├── netlify/
│   └── functions/
│       └── submit-application.js
├── netlify.toml
├── package.json
├── scripts/
│   └── build-assets.js
├── tests/
│   ├── ascii-art.test.js
│   ├── bootstrap.test.js
│   ├── fs.test.js
│   ├── helpers/
│   │   └── browser-env.js
│   ├── terminal-ext.test.js
│   └── terminal.test.js
└── welcome.htm

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/workflows/claude.yml
================================================
name: Claude PR Assistant

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  issues:
    types: [opened, assigned]
  pull_request_review:
    types: [submitted]

jobs:
  claude-code-action:
    if: |
      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
      (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Run Claude PR Action
        uses: anthropics/claude-code-action@beta
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          timeout_minutes: "60"


================================================
FILE: .github/workflows/test.yml
================================================
name: Test

on:
  push:
    branches:
      - main
      - "codex/**"
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm

      - run: npm ci
      - run: npm test
      - run: npm run build


================================================
FILE: .gitignore
================================================
# for build
css/xterm.css
js/xterm*.js*
js/aalib.js*

images/*Zone.Identifier

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

.vscode/settings.json

# Local Netlify folder
.netlify

.DS_Store
**/.DS_Store


================================================
FILE: .stignore
================================================
.git
# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules
jspm_packages

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# parcel-bundler cache (https://parceljs.org/)
.cache

# next.js build output
.next

# nuxt.js build output
.nuxt

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless



================================================
FILE: LICENSE
================================================
MIT License With Custom Attribution Condition

Copyright (c) 2025 Root Ventures

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

> You must give Root Ventures a shoutout on at least one (1) of: LinkedIn, X,
podcast interview, television news interview, your next Annual General Meeting,
or OnlyFans.

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# cli-website
Who needs a website when you have a terminal.

[![Netlify Status](https://api.netlify.com/api/v1/badges/f3bfb854-9bc6-40a7-8d4c-2cccd3850764/deploy-status)](https://app.netlify.com/sites/rootvc-cli-website/deploys)

## Basic Commands
  - help: list all commands
  - whois root: learn about us
  - whois [partner]: learn about a partner
  - tldr: list all portfolio companies
  - tldr: [company_name]": learn about a portfolio company
  - email: reach out to us
  - twitter: twitter accounts
  - instagram: instagram account
  - git: this repo
  - github: all repos
  - test: do not use
  - other: try your favorite linux commands

## Advanced Commands
 - alias
 - cat
 - cd
 - chmod
 - chown
 - clear
 - cp
 - curl
 - df
 - echo
 - emacs
 - exit
 - fdisk
 - find
 - finger
 - free
 - ftp
 - grep
 - groups
 - gzip
 - head
 - history
 - kill
 - less
 - ls
 - man (alias: woman)
 - mkdir
 - more
 - mv
 - nano
 - open
 - passwd
 - pico
 - pine
 - ps
 - pwd
 - quit
 - rm
 - say
 - sftp
 - ssh
 - stop
 - su
 - sudo
 - tail
 - top
 - touch
 - uname
 - vi
 - vim
 - zsh

Missing a favorite one? Make a PR!

## Portfolio CLIs
Future project: get the Hello Worlds working for every portfolio company with a CLI or npm/pypi/cargo package
 - esper
 - great_expectations (alias: ge)
 - meroxa
 - okteto
 - particle
 - privacy_dynamics (alias: privacy)
 - zed

## Build Notes
Run `npm run build` before serving the site locally or deploying.

That build now:
 - copies and minifies the xterm vendor assets
 - bundles the app boot/runtime code into `js/app.bundle.js`
 - emits a minified lazy-load asset for the RickRoll animation

## Performance Notes
The terminal now initializes on `DOMContentLoaded` instead of waiting for `window.onload`, and optional work such as ASCII art preloading happens after the terminal is already usable.

In local repeated Chromium benchmarks against the previous `HEAD`, median startup timings improved roughly:
 - homepage prompt visible: `1941.7ms` -> `70.1ms`
 - homepage first command rendered: `2076.5ms` -> `223.5ms`
 - `#whois-lee` deep link rendered: `1159.9ms` -> `151.9ms`

Live at: [https://root.vc](https://root.vc).

Special thanks to [Jerry Neumann](https://www.linkedin.com/in/jerryneumann/) at [Neu Venture Capital](https://neuvc.com/) for the inspiration for this website concept.

Thanks to the team at [divshot](https://www.divshot.com) for the awesome and hilarious [Geocities Bootstrap Theme](https://github.com/divshot/geo-bootstrap).

_aut viam inveniam aut faciam_


================================================
FILE: config/commands.js
================================================
// commands.js — Terminal command definitions for the Root Ventures interactive CLI.
//
// Each key in `commands` maps to a function that runs when the user types that
// command. Commands receive `args` as an array of whitespace-split tokens
// (everything after the command name). They communicate with the user via the
// global `term` object (see terminal-ext.js for its API).
//
// To add a new command, add an entry to `commands` below.
// To add a simple redirect (alias), add an entry to `_aliases` at the bottom.

// Blurb displayed by `whois root`.
const whoisRoot =
  "Root Ventures is a San Francisco-based deep tech seed fund. As engineers ourselves, we specialize in leading initial funding for founders tackling new technical opportunities. Our initial investments typically range from $3-5M. With a selective few new deals a year and 2/3 of our funds in reserve, we are committed to being a long-term partner. Try %whois% and one of avidan, kane, chrissy, lee, ben, zodi, or laelah to learn more about our team.";

// Set to 10 during development to speed up animated sequences (upgrade, etc.).
const timeUnit = 1000;

// Tracks whether the user has "killed" the fake crypto miner easter egg (pid 337).
let killed = false;

// Emits a series of styled strings that the RickRoll animation in rickroll.js
// interprets as frame pointers. Triggered by `cat id_rsa` or `test`.
function SpawnRickRollPointers() {
  function padNumber(num, length) {
    let str = num.toString();
    while (str.length < length) {
      str = "0" + str;
    }
    return str;
  }

  const colSize = term.cols >= 90 ? 39 : 24;

  for (let i = 0; i <= colSize; i++) {
    term.stylePrint(
      `${colorText(`vsabnBRXofjub${padNumber(i, 2)}`, "command")}`,
      false
    );
  }
}

const commands = {

  // ── Info & Discovery ────────────────────────────────────────────────────────

  // Lists all public commands from help.js, aligned to terminal width.
  help: function () {
    const maxCmdLength = Math.max(...Object.keys(help).map((x) => x.length));
    Object.entries(help).forEach(function (kv) {
      const cmd = kv[0];
      const desc = kv[1];
      if (term.cols >= 80) {
        const rightPad = maxCmdLength - cmd.length + 2;
        const sep = " ".repeat(rightPad);
        term.stylePrint(`${cmd}${sep}${desc}`);
      } else {
        if (cmd != "help") {
          // skip second leading newline
          term.writeln("");
        }
        term.stylePrint(cmd);
        term.stylePrint(desc);
      }
    });
  },

  // Displays bio and ASCII art portrait for a team member, or the firm blurb.
  whois: function (args) {
    const name = args[0];
    const people = Object.keys(team);

    if (!name) {
      term.stylePrint(
        "%whois%: Learn about the firm, or a partner - usage:\r\n"
      );
      term.stylePrint("%whois% root");
      for (const p of people) {
        term.stylePrint(`%whois% ${p}`);
      }
    } else if (name == "root") {
      const description = whoisRoot;
      term.printArt("rootvc-square");
      term.stylePrint(description);
    } else if (Object.keys(team).includes(name)) {
      const person = team[name];
      term.printArt(name);
      term.stylePrint(
        `\r\n${person["name"]}, ${person["title"]} - ${name}@root.vc`
      );
      term.stylePrint(`${person["linkedin"]}\r\n`);
      term.stylePrint(person["description"]);
    } else {
      term.stylePrint(`User ${name || ""} not found. Try:\r\n`);
      term.stylePrint("%whois% root");
      for (const p of people) {
        term.stylePrint(`%whois% ${p}`);
      }
    }
  },

  // Displays info about a portfolio company, or lists all companies.
  // Each entry is sourced from portfolio.js; companies with a `demo` field
  // also get a runnable command registered at the bottom of this file.
  tldr: function (args) {
    const name = args[0] || "";
    if (!name) {
      const companies = Object.keys(portfolio);
      term.stylePrint("%tldr%: Learn about a portfolio company - usage:\r\n");
      for (const c of companies.sort()) {
        const data = portfolio[c];
        const tabs = c.length > 10 ? "\t" : "\t\t";
        const sep = term.cols >= 76 ? tabs : "\r\n";
        term.stylePrint(`%tldr% ${c}${sep}${data["url"]}`);
        if (term.cols < 76 && c != companies[companies.length - 1]) {
          term.writeln("");
        }
      }
    } else if (!portfolio[name]) {
      term.stylePrint(
        `Portfolio company ${name} not found. Should we talk to them? Email us: hello@root.vc`
      );
    } else {
      const company = portfolio[name];
      term.cols >= 60 ? term.printArt(name) : term.writeln("");
      term.stylePrint(company["name"]);
      term.stylePrint(company["url"]);
      if (company["memo"]) {
        term.stylePrint(`Investment Memo: ${company["memo"]}`);
      }
      term.stylePrint("");
      term.stylePrint(company["description"]);
      if (company["demo"]) {
        term.stylePrint(`Try it with command: %${name}%`);
      }
    }
  },

  // ── Social & Contact ────────────────────────────────────────────────────────

  git: function () {
    term.displayURL("https://github.com/rootvc/cli-website");
  },

  agm: function () {
    term.openURL("http://annualmeeting.root.vc");
  },

  github: function () {
    term.displayURL("https://github.com/rootvc");
  },

  twitter: function () {
    term.displayURL("https://twitter.com/rootvc");
    term.displayURL("https://twitter.com/machinepix");
  },

  instagram: function () {
    term.displayURL("https://instagram.com/machinepix/");
  },

  pine: function () {
    term.openURL("mailto:hello@root.vc");
  },

  // ── File System ─────────────────────────────────────────────────────────────
  // The virtual file system is defined in fs.js. Files are stored as hidden
  // DOM elements and fetched from GitHub on first load.

  other: function () {
    term.stylePrint(
      "Yeah, I didn't literally mean %other%. I mean try some Linux commands"
    );
  },

  echo: function (args) {
    const message = args.join(" ");
    term.stylePrint(message);
  },

  say: function (args) {
    const message = args.join(" ");
    term.stylePrint(`(Robot voice): ${message}`);
  },

  // Expands ~ to /home/<user> to mimic a real shell.
  pwd: function () {
    term.stylePrint("/" + term.cwd.replaceAll("~", `home/${term.user}`));
  },

  ls: function () {
    term.stylePrint(_filesHere().join("   "));
  },

  // Simulates a minimal Unix directory tree:
  //   /
  //   ├── bin/   (contains zsh)
  //   └── home/  (contains guest, root, and each team member)
  //       └── ~/  (the current user's home)
  //
  // Team member home dirs are always permission-denied to keep things fun.
  // Paths are matched by regex before the switch so we don't have to hardcode
  // team member names here — they're derived from team.js at runtime.
  cd: function (args) {
    let dir = args[0] || "~";
    if (dir !== "/") {
      dir = dir.replace(/\/$/, ""); // strip trailing slash
    }

    const teamMembers = Object.keys(team);

    // ../home/<member> — relative path from ~ or /bin
    const relativeHomeMatch = dir.match(/^\.\.\/home\/(.+)$/);
    if (relativeHomeMatch) {
      if (term.cwd === "~" || term.cwd === "bin") {
        term.command(`cd ${relativeHomeMatch[1]}`);
      } else {
        term.stylePrint(`No such directory: ${dir}`);
      }
      return;
    }

    // /home/<member> — absolute path to a home dir
    const absoluteHomeMatch = dir.match(/^\/home\/(.+)$/);
    if (absoluteHomeMatch) {
      const member = absoluteHomeMatch[1];
      if (teamMembers.includes(member)) {
        term.stylePrint(`You do not have permission to access this directory`);
      } else {
        term.stylePrint(`No such directory: ${dir}`);
      }
      return;
    }

    // Bare team member name (e.g. `cd avidan`)
    if (teamMembers.includes(dir)) {
      term.stylePrint(`You do not have permission to access this directory`);
      return;
    }

    switch (dir) {
      case "~":
        term.cwd = "~";
        break;
      case "..":
        if (term.cwd === "~") {
          term.command("cd /home");
        } else if (term.cwd === "home" || term.cwd === "bin") {
          term.command("cd /");
        }
        break;
      // Any deeply nested upward traversal just lands at root.
      case "../..":
      case "../../..":
      case "../../../..":
      case "/":
        term.cwd = "/";
        break;
      case "home":
        // `home` alone is only reachable from /
        if (term.cwd === "/") {
          term.command("cd /home");
        } else {
          term.stylePrint(`You do not have permission to access this directory`);
        }
        break;
      case "/home":
        term.cwd = "home";
        break;
      // guest and root can only cd to their own home
      case "guest":
      case "root":
        if (term.cwd === "home") {
          if (term.user === dir) {
            term.command("cd ~");
          } else {
            term.stylePrint(`You do not have permission to access this directory`);
          }
        } else {
          term.stylePrint(`No such directory: ${dir}`);
        }
        break;
      case "/bin":
        term.cwd = "bin";
        break;
      case "bin":
        if (term.cwd === "/") {
          term.cwd = "bin";
        } else {
          term.stylePrint(`No such directory: ${dir}`);
        }
        break;
      case ".":
        break; // no-op
      default:
        term.stylePrint(`No such directory: ${dir}`);
        break;
    }
  },

  // Reinitializes the terminal under the current user (simulates a new shell).
  zsh: function () {
    term.init(term.user);
  },

  // Reading id_rsa triggers the RickRoll easter egg.
  cat: function (args) {
    const filename = args[0];

    if (_filesHere().includes(filename)) {
      term.writeln(getFileContents(filename));
    } else {
      term.stylePrint(`No such file: ${filename}`);
    }
    if (filename == "id_rsa") {
      SpawnRickRollPointers();
    }
  },

  // Grepping id_rsa redirects to an appropriate reaction GIF instead.
  grep: function (args) {
    const q = args[0];
    const filename = args[1];

    if (filename == "id_rsa") {
      term.openURL("https://i.imgur.com/Q2Unw.gif");
    }

    if (!q || !filename) {
      term.stylePrint("usage: %grep% [pattern] [filename]");
      return;
    }

    if (_filesHere().includes(filename)) {
      let file = getFileContents(filename);
      const matches = file.matchAll(q);
      for (const match of matches) {
        file = file.replaceAll(match[0], colorText(match[0], "files"));
      }
      term.writeln(file);
    } else {
      term.stylePrint(`No such file or directory: ${filename}`);
    }
  },

  // `open test.htm` is an easter egg; all other .htm files open in-page.
  open: function (args) {
    if (!args.length) {
      term.stylePrint("%open%: open a file - usage:\r\n");
      term.stylePrint("%open% test.htm");
    } else if (
      args[0].split(".")[0] == "test" &&
      args[0].split(".")[1] == "htm"
    ) {
      term.openURL("https://i.imgur.com/Q2Unw.gif");
    } else if (args[0].split(".")[1] == "htm") {
      term.openURL(`./${args[0]}`, false);
    } else if (args.join(" ") == "the pod bay doors") {
      term.stylePrint("I'm sorry Dave, I'm afraid I can't do that.");
    } else {
      term.command(`cat ${args.join(" ")}`);
    }
  },

  find: function (args) {
    const file = args[0];
    if (Object.keys(_FILES).includes(file)) {
      term.stylePrint(_FULL_PATHS[file]);
    } else {
      term.stylePrint(`%find%: ${file}: No such file or directory`);
    }
  },

  // ── Users & Permissions ─────────────────────────────────────────────────────
  // These mimic standard Unix user commands. guest and root are the only two
  // switchable users; team member home dirs are always permission-denied.

  // Reports login info. Team member data comes from team.js.
  finger: function (args) {
    const user = args[0];
    if (user === "guest") {
      term.stylePrint("Login: guest            Name: Guest");
      term.stylePrint("Directory: /home/guest  Shell: /bin/zsh");
    } else if (user === "root") {
      term.stylePrint("Login: root             Name: That's Us!");
      term.stylePrint("Directory: /home/root   Shell: /bin/zsh");
    } else if (team[user]) {
      term.stylePrint(`Login: ${user}   Name: ${team[user]["name"]}`);
      term.stylePrint(`Directory: /home/${user}   Shell: /bin/zsh`);
    } else {
      term.stylePrint(
        user ? `%finger%: ${user}: no such user` : "usage: %finger% [user]"
      );
    }
  },

  // Group memberships live in each person's entry in team.js.
  // guest and root have their own special groups defined inline here.
  groups: function (args) {
    const user = args[0];
    const specialGroups = {
      guest: "guest lps founders engineers investors",
      root: "wheel investors engineers deep tech firms",
    };
    if (specialGroups[user] !== undefined) {
      term.stylePrint(specialGroups[user]);
    } else if (team[user]) {
      term.stylePrint(team[user].groups);
    } else {
      term.stylePrint(
        user ? `%groups%: ${user}: no such user` : "usage: %groups% [user]"
      );
    }
  },

  whoami: function () {
    term.stylePrint(term.user);
  },

  passwd: function () {
    term.stylePrint(
      "Wow. Maybe don't enter your password into a sketchy web-based term.command prompt?"
    );
  },

  // Only root can sudo; otherwise logs an incident (just like real life).
  sudo: function (args) {
    if (term.user == "root") {
      term.command(args.join(" "));
    } else {
      term.stylePrint(
        `${colorText(
          term.user,
          "user"
        )} is not in the sudoers file. This incident will be reported`
      );
    }
  },

  // Switch between the two valid users: guest and root.
  su: function (args) {
    const user = args[0] || "root";

    if (user == "root" || user == "guest") {
      term.user = user;
      term.command("cd ~");
    } else {
      term.stylePrint("su: Sorry");
    }
  },

  chown: function () {
    term.stylePrint("You do not have permission to %chown%");
  },

  chmod: function () {
    term.stylePrint("You do not have permission to %chmod%");
  },

  mv: function (args) {
    const src = args[0];

    if (_filesHere().includes(src)) {
      term.stylePrint(`You do not have permission to move file ${src}`);
    } else {
      term.stylePrint(`%mv%: ${src}: No such file or directory`);
    }
  },

  cp: function (args) {
    const src = args[0];

    if (_filesHere().includes(src)) {
      term.stylePrint(`You do not have permission to copy file ${src}`);
    } else {
      term.stylePrint(`%cp%: ${src}: No such file or directory`);
    }
  },

  touch: function () {
    term.stylePrint("You can't %touch% this");
  },

  // ── Process & System ────────────────────────────────────────────────────────

  // Shows a fake process list. PID 337 is a fake crypto miner that stays
  // visible until the user runs `kill 337`.
  ps: function () {
    term.stylePrint("PID TTY       TIME CMD");
    term.stylePrint("424 ttys00 0:00.33 %-zsh%");
    term.stylePrint("158 ttys01 0:09.70 %/bin/npm start%");
    term.stylePrint("767 ttys02 0:00.02 %/bin/sh%");
    if (!killed) {
      term.stylePrint("337 ttys03 0:13.37 %/bin/cgminer -o pwn.d%");
    }
  },

  // `kill 337` disables the fake crypto miner shown in `ps`.
  kill: function (args) {
    if (args && args.slice(-1) == 337) {
      killed = true;
      term.stylePrint("Root Ventures crypto miner disabled.");
    } else {
      term.stylePrint("You can't kill me!");
    }
  },

  locate: function () {
    term.stylePrint("Root Ventures");
    term.stylePrint("2670 Harrison St");
    term.stylePrint("San Francisco, CA 94110");
  },

  history: function () {
    term.history.forEach((element, index) => {
      term.stylePrint(`${1000 + index}  ${element}`);
    });
  },

  uname: function (args) {
    switch (args[0]) {
      case "-a":
        term.stylePrint(
          "RootPC rootpc 0.0.1 RootPC Kernel Version 0.0.1 root:xnu-31415.926.5~3/RELEASE_X86_64 x86_64"
        );
        break;
      case "-mrs":
        term.stylePrint("RootPC 0.0.1 x86_64");
        break;
      default:
        term.stylePrint("RootPC");
    }
  },

  ping: function () {
    term.stylePrint("pong");
  },

  // Opens the GeoCities-style welcome page (welcome.htm).
  exit: function () {
    term.command("open welcome.htm");
  },

  // Reinitializes the terminal, clearing history and resetting the prompt.
  clear: function () {
    term.init();
  },

  // ── Easter Eggs & Jokes ─────────────────────────────────────────────────────

  gzip: function () {
    term.stylePrint(
      "What are you going to do with a zip file on a fake terminal, seriously?"
    );
  },

  free: function () {
    term.stylePrint("Honestly, our memory isn't what it used to be.");
  },

  rm: function () {
    term.stylePrint("I'm sorry Dave, I'm afraid I can't do that.");
  },

  mkdir: function () {
    term.stylePrint("Come on, don't mess with our immaculate file system.");
  },

  alias: function () {
    term.stylePrint("Just call me HAL.");
  },

  df: function () {
    term.stylePrint("Nice try. Just get a Dropbox.");
  },

  // Editor wars — each editor points you to a different one.
  emacs: function () {
    term.stylePrint("%emacs% not installed. try: %vi%");
  },

  vim: function () {
    term.stylePrint("%vim% not installed. try: %emacs%");
  },

  vi: function () {
    term.stylePrint("%vi% not installed. try: %emacs%");
  },

  pico: function () {
    term.stylePrint("%pico% not installed. try: %vi% or %emacs%");
  },

  nano: function () {
    term.stylePrint("%nano% not installed. try: %vi% or %emacs%");
  },

  // Cross-origin policy joke — all network commands hit this wall.
  curl: function (args) {
    term.stylePrint(
      `Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource ${args[0]}. Use a real terminal.`
    );
  },

  // scp gets a more redacted treatment than curl.
  scp: function (args) {
    term.stylePrint(
      `████████████ Request Blocked: The ███████████ Policy disallows reading the ██████ resource ${args[0]}.`
    );
  },

  zed: function () {
    term.stylePrint("Coming soon! ;)");
  },

  eval: function (args) {
    term.stylePrint(
      "please instead build a webstore with macros. in the meantime, the result is: " +
        eval(args.join(" "))
    );
  },

  test: function () {
    SpawnRickRollPointers();
    if (typeof window.ensureRickRollLoaded === "function") {
      window.ensureRickRollLoaded().then(() => {
        window.requestAnimationFrame(() => {
          window.requestAnimationFrame(() => {
            if (typeof RickRoll === "function") {
              RickRoll();
            }
          });
        });
      });
    }
  },

  // ── Upgrade ─────────────────────────────────────────────────────────────────

  // Animated sequence that "upgrades" the terminal to fund version 4.0.
  // Locks the terminal during the animation to block user input.
  upgrade: async function (args) {
    term.VERSION = 4;
    term.init();
    term.locked = true;
    term.write(
      `\r\n${colorText(
        "==>",
        "hyperlink"
      )} Downloading https://ghcr.io/v2/homebrew/core/rootvc/manifests/4.0.0`
    );
    await term.progressBar(4 * timeUnit);
    term.write(
      `\r\n${colorText(
        "==>",
        "hyperlink"
      )} Downloading https://ghcr.io/v2/homebrew/core/go/blobs/sha256:51869c798355307b59992918e9a595c53072d7a29458dbe5b8d105b63d3dd1c0`
    );
    await term.progressBar(2 * timeUnit);
    term.write(
      `\r\n${colorText(
        "==>",
        "hyperlink"
      )} Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:51869c798355307b59992918e9a595c53072d7a29458dbe5b8d105b6`
    );
    await term.progressBar(1 * timeUnit);
    term.write(
      `\r\n${colorText("==>", "hyperlink")} npm install left-pad@latest`
    );
    await term.progressBar(0.5 * timeUnit);

    await term.delayStylePrint("\r\n", 1 * timeUnit);
    await term.dottedPrint("Calculating new fund size", 3);
    await term.delayPrint(
      `Updated fund size:          ${colorText("$190M", "prompt")}\r\n`,
      1 * timeUnit
    );
    await term.delayPrint(
      `Updated typical check size: ${colorText("up to $5M", "prompt")}\r\n`,
      1 * timeUnit
    );
    await term.delayPrint(
      `Found mission:              ${colorText(
        "Seeding bold engineers.",
        "user"
      )}\r\n`,
      1 * timeUnit
    );
    await term.delayPrint(
      `Thesis (no update):         ${colorText(
        "Investing at the earliest stages of technical founders taking engineering risk.",
        "user"
      )}\r\n`,
      1 * timeUnit
    );

    await term.delayStylePrint(
      `\r\n${colorText(
        "You are now running Root Ventures version 4.0.",
        "hyperlink"
      )}\r\n`,
      1 * timeUnit
    );
    await term.delayStylePrint(
      `To learn more about this release, RTFM at: ${colorText(
        "https://bit.ly/rvfund4",
        "hyperlink"
      )}\r\n`,
      0.5 * timeUnit
    );
    await term.delayStylePrint(
      `or remote into our coffee grinder at: ${colorText(
        "https://rootventures.coffee",
        "hyperlink"
      )}\r\n`,
      0.5 * timeUnit
    );
    await term.delayPrint(
      "Note that VERSION 4.0 is an unstable build of the terminal.\r\n",
      1 * timeUnit
    );
    await term.delayPrint("Please report any bugs you find.\r\n", 1 * timeUnit);

    term.stylePrint(
      `\r\nType ${colorText(
        "help",
        "command"
      )} to get started. Or type ${colorText(
        "exit",
        "command"
      )} for web version.`,
      false
    );

    term.prompt();
    term.clearCurrentLine();
    term.locked = false;
  },

  // ── Jobs & Recruiting ────────────────────────────────────────────────────────
  // Job data lives in jobs.js. Each job is an array of lines where index 0
  // is the title and the rest is the description shown by `fg`.

  jobs: function () {
    const jobIds = Object.keys(jobs);
    if (jobIds.length === 0) {
      term.stylePrint(`No jobs currently found. Check back later.`);
    } else {
      term.stylePrint(`Open positions:\r\n`);
      jobIds.forEach((id) => {
        const jobTitle = jobs[id][0];
        term.stylePrint(`[${id}] ${jobTitle}`);
      });
      term.stylePrint(`\r\nUse %fg% [job_id] to view details, or %apply% [job_id] to apply.`);
    }
  },

  bg: function (args) {
    term.stylePrint(
      `Sorry. If you want to background one of these jobs, you'll need to help us fill it. Try %fg% ${args} instead.`
    );
  },

  // Prints all lines of a job listing.
  fg: function (args) {
    const job = jobs[args];

    if (job) {
      job.map((line) => term.stylePrint(line));
      term.stylePrint(`\r\n%apply% ${args} to apply!`);
    } else {
      term.stylePrint(`job id ${args} not found.`);
    }
  },

  // Multi-step async application form. The terminal is locked during collection
  // so normal keypress handling is suspended. Returns 1 to tell the main input
  // loop not to re-render the prompt — the async IIFE does that itself when done.
  //
  // collectInput() resolves to: a string on submit, "" if skipped (optional
  // fields), or null on Ctrl+C. Null means the user cancelled.
  apply: function (args) {
    if (args == 1 || (args.length > 0 && args[0] == 1)) {
      term.locked = true;

      (async () => {
        // Shared cancellation handler — restores the terminal to a usable state.
        const cancel = () => {
          term.stylePrint("\r\nApplication cancelled.");
          term.prompt();
          term.clearCurrentLine(true);
          term.locked = false;
        };

        term.stylePrint(
          "Great! Let's get your application started. (Press Ctrl+C to cancel at any time)\r\n"
        );

        const name = await term.collectInput("What's your name?");
        if (!name) { cancel(); return; }

        const email = await term.collectInput("Email address");
        if (!email) { cancel(); return; }

        const linkedin = await term.collectInput("LinkedIn profile URL", true);
        if (linkedin === null) { cancel(); return; }

        const github = await term.collectInput("GitHub username", true);
        if (github === null) { cancel(); return; }

        const notes = await term.collectInput(
          "Why Root? What makes you a great fit?",
          true
        );
        if (notes === null) { cancel(); return; }

        term.stylePrint("\r\nSubmitting application...");

        try {
          const response = await fetch("/.netlify/functions/submit-application", {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              name,
              email,
              linkedin: linkedin || undefined,
              github: github || undefined,
              notes: notes || undefined,
              position: "Venture Capital Associate",
            }),
          });

          const result = await response.json();

          if (response.ok) {
            term.stylePrint(
              `\r\n${colorText("✓", "prompt")} Application submitted successfully!`
            );
            term.stylePrint(
              "\r\nThanks for applying! We'll review your application and get back to you soon."
            );
            term.stylePrint(
              `\r\nIn the meantime, check out our portfolio with ${colorText(
                "tldr",
                "command"
              )} or learn more about the team with ${colorText(
                "whois",
                "command"
              )}.`
            );
          } else {
            throw new Error(result.error || "Submission failed");
          }
        } catch (error) {
          term.stylePrint(
            `\r\n${colorText("✗", "user")} Error submitting application: ${error.message}`
          );
          term.stylePrint(
            "\r\nPlease try again or email us directly at hello@root.vc"
          );
        }

        term.prompt();
        term.clearCurrentLine(true);
        term.locked = false;
      })();

      // Return 1 synchronously so terminal.js skips its automatic prompt render.
      return 1;
    } else if (!args || args == "" || args.length === 0) {
      term.stylePrint(
        "Please provide a job id. Use %jobs% to list all current jobs."
      );
    } else {
      term.stylePrint(
        `Job id ${args[0]} not found. Use %jobs% to list all current jobs.`
      );
    }
  },
};

// ── Portfolio Demo Commands ────────────────────────────────────────────────────
// For any portfolio company that has a `demo` URL, register a command with the
// company's key that opens the demo. E.g. `meroxa` opens meroxa's demo URL.
for (const [key, val] of Object.entries(portfolio)) {
  if (val["demo"]) {
    commands[key] = () => term.displayURL(val["demo"]);
  }
}

// Returns the list of files visible in the current directory.
// README.md is hidden from guest — root can see everything.
function _filesHere() {
  return _DIRS[term.cwd].filter((e) => e != "README.md" || term.user == "root");
}

// ── Aliases ───────────────────────────────────────────────────────────────────
// Simple one-to-one redirects. Each alias forwards its args to the target
// command. Chains are fine — ge → great_expectations → superconductive.
const _aliases = {
  // Standard file viewing aliases
  tail: "cat", less: "cat", head: "cat", more: "cat",
  // Network commands all hit the same CORS wall
  ftp: "curl", ssh: "curl", sftp: "curl",
  // man/woman both show the tldr for a portfolio company
  man: "tldr", woman: "tldr",
  // Session control
  quit: "exit", stop: "exit",
  // Process management
  killall: "kill",
  top: "ps",
  fdisk: "rm",
  // Contact shortcuts
  email: "pine",
  insta: "instagram",
  // Portfolio easter egg chains
  ge: "great_expectations",
  great_expectations: "superconductive",
  privacy: "privacy_dynamics",
};
for (const [alias, target] of Object.entries(_aliases)) {
  commands[alias] = (args) => term.command([target, ...args].join(" ").trim());
}


================================================
FILE: config/fs.js
================================================
// fs.js — Virtual file system for the Root Ventures terminal.
//
// Since there's no real file system in the browser, files are stored as hidden
// <div> elements in the DOM (inside #files-all). Content is written to
// div.innerText on load and read back via div.innerHTML when accessed —
// the browser's HTML entity encoding/decoding is what necessitates the
// replaceAll() calls in getFileContents().
//
// Remote files (README.md, welcome.htm) are fetched from GitHub on first load
// and inserted into the DOM the same way. Local files are inserted directly.

// Files with hardcoded content that don't need to be fetched.
const _LOCAL_FILES = {
  "id_rsa": "Nice try!",
};

// Files fetched from GitHub at startup. The key is used as the DOM element ID.
const _REMOTE_FILES = {
  "README.md": "https://raw.githubusercontent.com/rootvc/cli-website/main/README.md",
  "welcome.htm": "https://raw.githubusercontent.com/rootvc/cli-website/main/welcome.htm",
};

// Combined map of all known files (used by `find`).
const _FILES = {
  ..._LOCAL_FILES,
  ..._REMOTE_FILES,
}

// Directory structure. "home" is populated dynamically from team.js so we
// don't have to update it when team members are added or removed.
const _DIRS = {
  "~": ["id_rsa", "welcome.htm", "README.md"],
  "bin": ["zsh"],
  "home": Object.keys(team).concat("guest", "root").sort(),
  "/": ["bin", "home"],
};

// Pre-compute absolute paths for every known file, used by `find`.
let _FULL_PATHS = {};
let _LOADING_FILES = {};
for (const [key, values] of Object.entries(_DIRS)) {
  for (const value of values) {
    switch (key) {
      case "~":
        _FULL_PATHS[value] = `${key}/${value}`;
        break;
      case "/":
        _FULL_PATHS[value] = `/${value}`;
        break;
      default:
        _FULL_PATHS[value] = `/${key}/${value}`;
    }
  }
}

// Called at terminal init to populate the DOM with file content.
function preloadFiles() {
  for (const name of Object.keys(_REMOTE_FILES)) {
    _loadFile(name);
  }

  for (const [name, content] of Object.entries(_LOCAL_FILES)) {
    _insertFileToDOM(name, content);
  }
}

// Fetches a remote file and inserts it into the DOM when ready.
function _loadFile(name) {
  if (document.getElementById(name)) {
    return Promise.resolve();
  }

  if (_LOADING_FILES[name]) {
    return _LOADING_FILES[name];
  }

  _LOADING_FILES[name] = fetch(_REMOTE_FILES[name])
    .then(response => response.text())
    .then((body) => _insertFileToDOM(name, body))
    .finally(() => {
      delete _LOADING_FILES[name];
    });

  return _LOADING_FILES[name];
}

function ensureFileLoaded(name) {
  if (!_FILES[name]) {
    return Promise.resolve();
  }

  if (document.getElementById(name)) {
    return Promise.resolve();
  }

  if (_REMOTE_FILES[name]) {
    return _loadFile(name);
  }

  if (_LOCAL_FILES[name]) {
    _insertFileToDOM(name, _LOCAL_FILES[name]);
  }

  return Promise.resolve();
}

function getPreloadFileForCommand(cmd, args) {
  const filename = args[0];
  if (!filename) {
    return null;
  }

  if (["cat", "grep"].includes(cmd) && _REMOTE_FILES[filename]) {
    return filename;
  }

  return null;
}

// Stores file content as the innerText of a <div id="{name}"> inside #files-all.
// innerText is used (vs innerHTML) so the content is treated as plain text and
// won't be interpreted as HTML markup.
function _insertFileToDOM(name, txt) {
  const parentDiv = document.getElementById("files-all");
  let div = document.getElementById(name);

  if (!div) {
    div = document.createElement("div");
    div.id = name;
    parentDiv.appendChild(div);
  }
  div.innerText = txt;
  return txt;
}

// Retrieves file content from the DOM. We read innerHTML (not innerText) because
// the browser HTML-encodes the plain text when it was written — innerHTML gives
// us the encoded form, which we then manually decode back to the original chars.
function getFileContents(filename) {
  const div = document.getElementById(filename);
  if (!div) {
    if (_REMOTE_FILES[filename]) {
      _loadFile(filename);
      return `Loading ${filename}. Try again in a moment.`;
    }

    return `File not found: ${filename}`;
  }

  return div.innerHTML
    .replaceAll("<br>", "\r\n")
    .replaceAll("&gt;", ">")
    .replaceAll("&lt;", "<");
}


================================================
FILE: config/help.js
================================================
const help = {
  "%help%": "list all commands (you're looking at it)",
  "%whois%": "list all partners",
  "%whois% [partner]": "learn about a partner",
  "%whois% root": "learn about us",
  "%tldr%": "list all portfolio companies",
  "%tldr% [company_name]": "learn about a portfolio company",
  "%email%": "reach out to us",
  "%twitter%": "twitter accounts",
  "%instagram%": "instagram account",
  "%git%": "this repo",
  "%github%": "all repos",
  "%locate%": "physical address",
  "%jobs%": "check out our job openings",
  "%test%": "do not use",
  "%upgrade%": "upgrade to the latest version of Root Ventures",
  "%other%": "try your fav commands (e.g. %ls%, %groups%, %su%)",
};


================================================
FILE: config/jobs.js
================================================
const jobs = {
  1: [
    "Venture Capital Associate",
    "",
    "Root Ventures is looking for a technical associate to join our team in San Francisco.",
    "",
    "We're a deep tech seed fund that invests in bold engineers building the future.",
    "As an associate, you'll work directly with partners to source deals, conduct",
    "technical diligence, and support portfolio companies.",
    "",
    "What we're looking for:",
    "  • Strong technical background (CS degree, engineering experience, or equivalent)",
    "  • Genuine curiosity about emerging technologies and startups",
    "  • Excellent communication skills - you can explain complex tech simply",
    "  • Hustle and resourcefulness - you figure things out",
    "  • Passion for working with technical founders",
    "",
    "Bonus points:",
    "  • You've built side projects or contributed to open source",
    "  • You're active in technical communities",
    "  • You have startup experience",
    "",
    "This is a rare opportunity to learn venture capital from experienced operators",
    "and work with some of the most innovative technical founders in the world.",
  ],
};


================================================
FILE: config/portfolio.js
================================================
const portfolio = {
  esper: {
    name: "Esper",
    url: "https://esper.io",
    description:
      "Esper is devops for devices, allowing teams to seamlessly build and manage enterprise hardware.",
    memo: null,
    demo: "https://esper.io/signup",
  },

  meroxa: {
    name: "Meroxa",
    url: "https://meroxa.com",
    description:
      "Meroxa is a platform for software engineers to build mature, scalable data engineering infrastructure with a single command.",
    memo: "https://github.com/rootvc/investment-memos/blob/main/meroxa.md",
    demo: "https://meroxa.com/#data-warehouse",
  },

  particle: {
    name: "Particle",
    url: "https://particle.io",
    description:
      "Particle is the largest professional IoT development platform.",
    demo: "https://docs.particle.io/",
  },

  daily: {
    name: "Daily",
    url: "https://daily.co",
    description:
      "Daily makes it easier for developers to add video to websites and apps.",
    demo: "https://docs.daily.co/docs/introduction-1",
  },

  hash: {
    name: "HASH",
    url: "https://hash.ai",
    description:
      "HASH is an open-source, self-building database that grows and maintains a typed graph of entities on your behalf.",
    demo: "https://app.hash.ai/",
  },

  superconductive: {
    name: "Superconductive",
    url: "https://superconductive.ai",
    description:
      "Superconductive is a SaaS platform for verifying and enforcing data integrity at every stage of the lifecycle of data in an organization.",
    demo: "https://docs.greatexpectations.io/en/latest/guides/tutorials/quick_start.html#tutorials-quick-start",
  },

  okteto: {
    name: "Okteto",
    url: "https://okteto.com",
    description: "Okteto is the best emphemeral environment for developers.",
    demo: "https://okteto.com/docs/getting-started/index.html",
  },

  privacy_dynamics: {
    name: "Privacy Dynamics",
    url: "https://privacydynamics.io",
    description:
      "Privacy Dynamics ensures your customers' data privacy without slowing down your team.",
    demo: "https://privacydynamics.io/demo/contact",
  },

  nautilus: {
    name: "Nautilus Labs",
    url: "https://nautiluslabs.com",
    description:
      "Nautilus Labs allows maritime fleets to optimize shipping routes and energy costs in real time.",
  },

  ntopology: {
    name: "nTopology",
    url: "https://ntopology.com",
    description: "nTopology is the future of mechanical engineering software.",
  },

  tortuga: {
    name: "Tortuga AgTech",
    url: "https://tortugaagtech.com",
    description: "Tortuga automates agriculture for high value produce.",
  },

  instrumental: {
    name: "Instrumental",
    url: "https://instrumental.com",
    description:
      "Instrumental generates real time insights for mass manufacturing.",
  },

  stellar: {
    name: "Stellar Pizza",
    url: "https://eatstellarpizza.com",
    description:
      "Stellar Pizza is building the future of automated food production.",
  },

  versatile: {
    name: "Versatile",
    url: "https://versatile.ai",
    description:
      "Versatile is an onsite construction data provider for accelerating schedules.",
  },

  dusty: {
    name: "Dusty Robotics",
    url: "https://dustyrobotics.com",
    description:
      "Dusty Robotics automates layout in complex construction projects.",
  },

  thruwave: {
    name: "ThruWave",
    url: "https://thruwave.com",
    description:
      "Thruwave increases the efficiency and transparency of high volume logistics operations.",
  },

  seismic: {
    name: "Seismic",
    url: "https://myseismic.com",
    description:
      "Seismic augments strength and safety for workers through soft robotics.",
  },

  seam: {
    name: "Seam",
    url: "https://getseam.com",
    description: "Seam provides an API for managing building systems.",
  },

  chargelab: {
    name: "ChargeLab",
    url: "https://chargelab.co",
    description:
      "ChargeLab builds API- and software-defined EV charging networks.",
  },

  wildtype: {
    name: "Wildtype Foods",
    url: "https://wildtypefoods.com",
    description:
      "Wildtype creates organic, clean, high-quality, animal-free meat.",
  },

  nordsense: {
    name: "Nordsense",
    url: "https://nordsense.com",
    description:
      "Nordsense optimizes pickup routes for waste management fleets.",
  },

  trucklabs: {
    name: "TruckLabs",
    url: "https://trucklabs.com",
    description:
      "Trucklabs reduces fuel costs and increases profit margins for long haul trucking fleets.",
  },

  sensable: {
    name: "Sensable",
    url: "https://getsensable.com",
    description:
      "Sensable generates real-time industrial engineering insights.",
  },

  crux: {
    name: "Crux",
    url: "https://cruxocm.com",
    description: "Crux automates critical energy infrastructure.",
  },

  iasql: {
    name: "IaSQL",
    url: "https://iasql.com",
    description:
      "IaSQL is the next evolution of infrastructure management, allowing you to manage your infra in a database instead of stateless config files.",
  },

  mashgin: {
    name: "Mashgin",
    url: "https://mashgin.com",
    description: "Mashgin automates self-checkout.",
  },

  creator: {
    name: "Creator",
    url: "https://creator.rest",
    description: "Creator builds fully autonomous hamburger robots.",
  },

  apolloshield: {
    name: "ApolloShield",
    url: "https://apolloshield.com",
    description:
      "ApolloShield safeguards airspace from autonomous and remote piloted aircraft.",
  },

  skycatch: {
    name: "Skycatch",
    url: "https://skycatch.com",
    description:
      "Skycatch provides high resolution 3D mapping and modeling of high-value infrastructure.",
  },

  shaper: {
    name: "Shaper",
    url: "https://shapertools.com",
    description:
      "Shaper Tools makes the Origin, a handheld, auto-correcting CNC.",
  },

  cape: {
    name: "Cape",
    url: "https://capenetworks.com",
    description:
      "Cape Networks allows IT professionals to monitor, text, and repair enterprise networks remotely.",
  },

  righthook: {
    name: "Righthook",
    url: "https://righthook.io",
    description:
      "Righthook reduces the time and cost required to develop autonomous vehicles.",
  },

  sixwheel: {
    name: "SixWheel",
    url: "https://sixwheel.com",
    description:
      "SixWheel brings autonomy and electrification to long haul trucking operations.",
  },

  radical: {
    name: "Radical",
    url: "https://radicalsemiconductor.com",
    description:
      "Radical Semiconductor provides hardware security down to the individual IC.",
  },

  zed: {
    name: "Zed",
    url: "https://zed.dev",
    description:
      "Zed is a fully-native desktop code editor focused on high performance, clean design, and real-time collaboration.",
  },

  kayhan: {
    name: "Kayhan",
    url: "https://kayhan.space",
    description:
      "Kayhan’s spaceflight operations platform allows satellite operators to focus on their core mission.",
  },

  allspice: {
    name: "AllSpice",
    url: "https://allspice.io",
    description: "Collaboration and testing platform for hardware teams.",
  },

  quilter: {
    name: "Quilter",
    url: "https://quilter.ai",
    description: "Automated design tools for electrical engineers.",
  },

  adept: {
    name: "Adept",
    url: "https://adept.ai",
    description: "Useful general intelligence.",
  },

  aperture: {
    name: "Aperture Data",
    url: "https://aperturedata.io",
    description:
      "Aperture manage images and videos with a database purpose-built for data science and machine learning.",
  },

  supertokens: {
    name: "SuperTokens",
    url: "https://supertokens.io",
    description:
      "SuperTokens is the best Open Source solution for user authentication.",
  },

  fudge: {
    name: "Fudge",
    url: "https://fudge.ai",
    description:
      "Fudge is the best way to speed up your website to improve conversion rates and increase revenue.",
  },

  kodra: {
    name: "Kodra",
    url: "https://kodra.ai",
    description: "Fast dataset curation for machine learning.",
  },

  topologic: {
    name: "Topologic",
    url: "https://topologic.io",
    description: "Design and automation software for textile manufacturing.",
  },

  ruby: {
    name: "Ruby Robotics",
    url: "https://ruby-robotics.com",
    description:
      "Robotics and AI to autonomously prepare, image, and assess tissue during biopsy procedures.",
  },

  instance: {
    name: "Instance",
    url: "https://instance.bio",
    description: "Instance is the fastest way to synthesize DNA.",
  },

  cady: {
    name: "CADY Solutions",
    url: "https://cadysolutions.com",
    description: "CADY automates the electrical schematic analysis process.",
  },

  sublayer: {
    name: "Sublayer",
    url: "https://sublayer.com",
    description: "Sublayer is AI-assisted coding that works the way you do.",
  },

  nullify: {
    name: "Nullify",
    url: "https://nullify.ai",
    description:
      "Nullify performs product security tasks alongside your developers.",
  },

  trieve: {
    name: "Trieve",
    url: "https://trieve.ai",
    description:
      "Trieve provides infrastructure for building AI search into your applications.",
  },

  breakpoint: {
    name: "Breakpoint AI",
    url: "https://setbreakpoint.com",
    description:
      "Breakpoint uses AI to detect failures in computer vision models and re-trains them to prevent future issues.",
  },

  determinate: {
    name: "Determinate Systems",
    url: "https://determinate.systems",
    description:
      "Determinate provides enterprise-grade solutions for Nix package management.",
  },

  genalpha: {
    name: "Gen Alpha",
    url: "https://www.generation-alpha-transistor.com",
    description:
      "Gen Alpha builds AI copilots for analog and mixed-signal chip design to streamline workflows.",
  },

  hunch: {
    name: "Hunch",
    url: "https://hunchdata.com",
    description:
      "Hunch provides collaborative data exploration and visualization tools for non-technical users.",
  },

  illoca: {
    name: "Illoca",
    url: "https://illoca.com",
    description:
      "Illoca accelerates commercial architecture workflows with generative AI for AEC software.",
  },

  integrated: {
    name: "Integrated Biosciences",
    url: "https://integratebio.co",
    description:
      "Integrated uses optogenetics and ML to discover drugs for neurodegenerative and age-related diseases.",
  },

  latent: {
    name: "Latent Technology",
    url: "https://latent-technology.com",
    description:
      "Latent helps animators and game developers create life-like 3D assets with AI-powered tools.",
  },

  patterns: {
    name: "Patterns",
    url: "https://patterns.app",
    description:
      "Patterns provides tools and infrastructure for developing modern AI applications efficiently.",
  },

  subtrace: {
    name: "Subtrace",
    url: "https://subtrace.dev",
    description:
      "Subtrace automatically tracks all HTTP requests coming in and going out of your production backend.",
  },

  digichem: {
    name: "Digichem",
    url: "https://www.digichem.com/",
    description:
      "Digichem prototypes and manufactures custom molecules online.",
  },

  loopwork: {
    name: "Loopwork",
    url: "https://loopwork.com/",
    description:
      "Loopwork is building the next generation of agents.",
  },

  feather: {
    name: "Feather",
    url: "https://feather.solutions/",
    description:
      "Feather provides FEA that runs in the browser.",
  },

  vibe_robotics: {
    name: "Vibe Robotics",
    url: "https://vbr.sh/",
    description:
      "Vibe Robotics, founded by Kai Backman and Luke Church, builds novel programming interfaces for robotics.",
  }
};


================================================
FILE: config/team.js
================================================
const team = {
  avidan: {
    name: "Avidan Ross",
    title: "Managing Partner",
    description:
      "Avidan is the Founding Partner of Root Ventures. Previously, he designed industrial robotics for Food Network's kitchens and was CTO of CIM Group, where he focused on industrial investing, and worked as an embedded application developer at Excite@Home. Avidan has a BA in Computer Science from Columbia University.",
    linkedin: "https://www.linkedin.com/in/avidanross/",
    groups: "wheel investors engineers managingpartner handypersons tinkers agtech foodtech foodies coffeesnobs",
  },
  kane: {
    name: "Kane Hsieh",
    title: "Partner",
    description:
      "Before joining Root Ventures, Kane was founder and Head of Product at Brilliant Bicycle Co. He has also worked as an early-stage investor at RRE Ventures, a software engineer at Romotive, and a Project Manager at Microsoft. Kane has an AB in Computer Science from Harvard.",
    linkedin: "https://www.linkedin.com/in/kanehsieh/",
    groups: "wheel investors engineers partners tinkerers cad motorcyclists gearheads machinepix sportshooters gamers",
  },
  chrissy: {
    name: "Chrissy Meyer",
    title: "Partner",
    description:
      "Chrissy has spent the past decade developing and shipping hardware as an engineering manager at Apple and Square. She was a founding team member at Pearl Automation, a vehicle technology startup. Chrissy has an MS in Electrical Engineering from Stanford and a BSEE from Rose-Hulman.",
    linkedin: "https://www.linkedin.com/in/chrissymeyer/",
    groups: "wheel investors engineers partners electrical manufacturing ecad wearables healthtech gearheads automotive sportshooters",
  },
  lee: {
    name: "Lee Edwards",
    title: "Partner",
    description:
      "Lee was most recently CTO at Teespring. Previously, Lee was a mechanical engineer at iRobot, a software engineer at Pivotal Labs, Lead Engineer at SideTour (acquired by Groupon in 2013), and engineering manager for GrouponLive. He graduated from Olin College of Engineering with a degree in Systems Engineering.",
    linkedin: "https://www.linkedin.com/in/leeredwards/",
    groups: "wheel investors engineers partners software devtools data ai+ml gamers winesnobs",
  },
  zodi: {
    name: "Zodi Chalat",
    title: "Associate",
    description:
      "Zodi began his career as an engineer working on ML infrastructure at Netflix before moving into venture investing. He previously studied CS and comparative literature at Yale.",
    linkedin: "https://linkedin.com/in/zodi",
    groups: "wheel investors engineers ai+ml simulation terraforming maine",
  },
  ben: {
    name: "Ben Lovell",
    title: "Head of Operations",
    description:
      "Ben worked at a16z, Menlo Ventures, and FT Partners to build operational automation and data pipelines. He also cofounded an adtech startup for rideshare companies. Ben graduated with a BA from Stanford University.",
    linkedin: "https://www.linkedin.com/in/lovellb/",
    groups: "wheel operations photography ironman racecars canyoneering",
  },
  laelah: {
    name: "Laelah Reino",
    title: "Operations Manager",
    description:
      "Laelah has spent over 15 years in marketing for films, consumer products, and subscription-based services. Laelah Reino has a BA in Business Administration with a Marketing concentration from Drexel University.",
    linkedin: "https://www.linkedin.com/in/laelah-reino-78b6a51/",
    groups: "wheel admin operations miracleworkers gamers",
  },
};


================================================
FILE: css/bootstrap.css
================================================
/*!
 * Bootstrap v2.3.1
 *
 * Copyright 2012 Twitter, Inc
 * Licensed under the Apache License v2.0
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Designed and built with all the love in the world @twitter by @mdo and @fat.
 */

.clearfix {
  *zoom: 1;
}

.clearfix:before,
.clearfix:after {
  display: table;
  line-height: 0;
  content: "";
}

.clearfix:after {
  clear: both;
}

.hide-text {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}

.input-block-level {
  display: block;
  width: 100%;
  min-height: 30px;
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
nav,
section {
  display: block;
}

audio,
canvas,
video {
  display: inline-block;
  *display: inline;
  *zoom: 1;
}

audio:not([controls]) {
  display: none;
}

html {
  font-size: 100%;
  -webkit-text-size-adjust: 100%;
      -ms-text-size-adjust: 100%;
}

a:focus {
  outline: thin dotted #333;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}

a:hover,
a:active {
  outline: 0;
}

sub,
sup {
  position: relative;
  font-size: 75%;
  line-height: 0;
  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

img {
  width: auto\9;
  height: auto;
  max-width: 100%;
  vertical-align: middle;
  border: 0;
  -ms-interpolation-mode: bicubic;
}

#map_canvas img,
.google-maps img {
  max-width: none;
}

button,
input,
select,
textarea {
  margin: 0;
  font-size: 100%;
  vertical-align: middle;
}

button,
input {
  *overflow: visible;
  line-height: normal;
}

button::-moz-focus-inner,
input::-moz-focus-inner {
  padding: 0;
  border: 0;
}

button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  cursor: pointer;
  -webkit-appearance: button;
}

label,
select,
button,
input[type="button"],
input[type="reset"],
input[type="submit"],
input[type="radio"],
input[type="checkbox"] {
  cursor: pointer;
}

input[type="search"] {
  -webkit-box-sizing: content-box;
     -moz-box-sizing: content-box;
          box-sizing: content-box;
  -webkit-appearance: textfield;
}

input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button {
  -webkit-appearance: none;
}

textarea {
  overflow: auto;
  vertical-align: top;
}

@media print {
  * {
    color: #000 !important;
    text-shadow: none !important;
    background: transparent !important;
    box-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  .ir a:after,
  a[href^="javascript:"]:after,
  a[href^="#"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  @page  {
    margin: 0.5cm;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
}

body {
  margin: 0;
  font-family: "Comic Sans", "Comic Sans MS", "Chalkboard", "ChalkboardSE-Regular", "Marker Felt", "Purisa", "URW Chancery L", cursive, sans-serif;
  font-size: 16px;
  line-height: 20px;
  color: #ffff00;
  background-color: #0000ff;
}

a {
  color: #00eeee;
  text-decoration: none;
}

a:hover,
a:focus {
  color: #00eeee;
  text-decoration: underline;
}

.img-rounded {
  -webkit-border-radius: 6px;
     -moz-border-radius: 6px;
          border-radius: 6px;
}

.img-polaroid {
  padding: 4px;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

.img-circle {
  -webkit-border-radius: 500px;
     -moz-border-radius: 500px;
          border-radius: 500px;
}

.row {
  margin-left: -20px;
  *zoom: 1;
}

.row:before,
.row:after {
  display: table;
  line-height: 0;
  content: "";
}

.row:after {
  clear: both;
}

[class*="span"] {
  float: left;
  min-height: 1px;
  margin-left: 20px;
}

.container,
.navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
  width: 940px;
}

.span12 {
  width: 940px;
}

.span11 {
  width: 860px;
}

.span10 {
  width: 780px;
}

.span9 {
  width: 700px;
}

.span8 {
  width: 620px;
}

.span7 {
  width: 540px;
}

.span6 {
  width: 460px;
}

.span5 {
  width: 380px;
}

.span4 {
  width: 300px;
}

.span3 {
  width: 220px;
}

.span2 {
  width: 140px;
}

.span1 {
  width: 60px;
}

.offset12 {
  margin-left: 980px;
}

.offset11 {
  margin-left: 900px;
}

.offset10 {
  margin-left: 820px;
}

.offset9 {
  margin-left: 740px;
}

.offset8 {
  margin-left: 660px;
}

.offset7 {
  margin-left: 580px;
}

.offset6 {
  margin-left: 500px;
}

.offset5 {
  margin-left: 420px;
}

.offset4 {
  margin-left: 340px;
}

.offset3 {
  margin-left: 260px;
}

.offset2 {
  margin-left: 180px;
}

.offset1 {
  margin-left: 100px;
}

.row-fluid {
  width: 100%;
  *zoom: 1;
}

.row-fluid:before,
.row-fluid:after {
  display: table;
  line-height: 0;
  content: "";
}

.row-fluid:after {
  clear: both;
}

.row-fluid [class*="span"] {
  display: block;
  float: left;
  width: 100%;
  min-height: 30px;
  margin-left: 2.127659574468085%;
  *margin-left: 2.074468085106383%;
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

.row-fluid [class*="span"]:first-child {
  margin-left: 0;
}

.row-fluid .controls-row [class*="span"] + [class*="span"] {
  margin-left: 2.127659574468085%;
}

.row-fluid .span12 {
  width: 100%;
  *width: 99.94680851063829%;
}

.row-fluid .span11 {
  width: 91.48936170212765%;
  *width: 91.43617021276594%;
}

.row-fluid .span10 {
  width: 82.97872340425532%;
  *width: 82.92553191489361%;
}

.row-fluid .span9 {
  width: 74.46808510638297%;
  *width: 74.41489361702126%;
}

.row-fluid .span8 {
  width: 65.95744680851064%;
  *width: 65.90425531914893%;
}

.row-fluid .span7 {
  width: 57.44680851063829%;
  *width: 57.39361702127659%;
}

.row-fluid .span6 {
  width: 48.93617021276595%;
  *width: 48.88297872340425%;
}

.row-fluid .span5 {
  width: 40.42553191489362%;
  *width: 40.37234042553192%;
}

.row-fluid .span4 {
  width: 31.914893617021278%;
  *width: 31.861702127659576%;
}

.row-fluid .span3 {
  width: 23.404255319148934%;
  *width: 23.351063829787233%;
}

.row-fluid .span2 {
  width: 14.893617021276595%;
  *width: 14.840425531914894%;
}

.row-fluid .span1 {
  width: 6.382978723404255%;
  *width: 6.329787234042553%;
}

.row-fluid .offset12 {
  margin-left: 104.25531914893617%;
  *margin-left: 104.14893617021275%;
}

.row-fluid .offset12:first-child {
  margin-left: 102.12765957446808%;
  *margin-left: 102.02127659574467%;
}

.row-fluid .offset11 {
  margin-left: 95.74468085106382%;
  *margin-left: 95.6382978723404%;
}

.row-fluid .offset11:first-child {
  margin-left: 93.61702127659574%;
  *margin-left: 93.51063829787232%;
}

.row-fluid .offset10 {
  margin-left: 87.23404255319149%;
  *margin-left: 87.12765957446807%;
}

.row-fluid .offset10:first-child {
  margin-left: 85.1063829787234%;
  *margin-left: 84.99999999999999%;
}

.row-fluid .offset9 {
  margin-left: 78.72340425531914%;
  *margin-left: 78.61702127659572%;
}

.row-fluid .offset9:first-child {
  margin-left: 76.59574468085106%;
  *margin-left: 76.48936170212764%;
}

.row-fluid .offset8 {
  margin-left: 70.2127659574468%;
  *margin-left: 70.10638297872339%;
}

.row-fluid .offset8:first-child {
  margin-left: 68.08510638297872%;
  *margin-left: 67.9787234042553%;
}

.row-fluid .offset7 {
  margin-left: 61.70212765957446%;
  *margin-left: 61.59574468085106%;
}

.row-fluid .offset7:first-child {
  margin-left: 59.574468085106375%;
  *margin-left: 59.46808510638297%;
}

.row-fluid .offset6 {
  margin-left: 53.191489361702125%;
  *margin-left: 53.085106382978715%;
}

.row-fluid .offset6:first-child {
  margin-left: 51.063829787234035%;
  *margin-left: 50.95744680851063%;
}

.row-fluid .offset5 {
  margin-left: 44.68085106382979%;
  *margin-left: 44.57446808510638%;
}

.row-fluid .offset5:first-child {
  margin-left: 42.5531914893617%;
  *margin-left: 42.4468085106383%;
}

.row-fluid .offset4 {
  margin-left: 36.170212765957444%;
  *margin-left: 36.06382978723405%;
}

.row-fluid .offset4:first-child {
  margin-left: 34.04255319148936%;
  *margin-left: 33.93617021276596%;
}

.row-fluid .offset3 {
  margin-left: 27.659574468085104%;
  *margin-left: 27.5531914893617%;
}

.row-fluid .offset3:first-child {
  margin-left: 25.53191489361702%;
  *margin-left: 25.425531914893618%;
}

.row-fluid .offset2 {
  margin-left: 19.148936170212764%;
  *margin-left: 19.04255319148936%;
}

.row-fluid .offset2:first-child {
  margin-left: 17.02127659574468%;
  *margin-left: 16.914893617021278%;
}

.row-fluid .offset1 {
  margin-left: 10.638297872340425%;
  *margin-left: 10.53191489361702%;
}

.row-fluid .offset1:first-child {
  margin-left: 8.51063829787234%;
  *margin-left: 8.404255319148938%;
}

[class*="span"].hide,
.row-fluid [class*="span"].hide {
  display: none;
}

[class*="span"].pull-right,
.row-fluid [class*="span"].pull-right {
  float: right;
}

.container {
  margin-right: auto;
  margin-left: auto;
  *zoom: 1;
}

.container:before,
.container:after {
  display: table;
  line-height: 0;
  content: "";
}

.container:after {
  clear: both;
}

.container-fluid {
  padding-right: 20px;
  padding-left: 20px;
  *zoom: 1;
}

.container-fluid:before,
.container-fluid:after {
  display: table;
  line-height: 0;
  content: "";
}

.container-fluid:after {
  clear: both;
}

p {
  margin: 0 0 10px;
}

.lead {
  margin-bottom: 20px;
  font-size: 24px;
  font-weight: 200;
  line-height: 30px;
}

small {
  font-size: 85%;
}

strong {
  font-weight: bold;
}

em {
  font-style: italic;
}

cite {
  font-style: normal;
}

.muted {
  color: #999999;
}

a.muted:hover,
a.muted:focus {
  color: #808080;
}

.text-warning {
  color: #000000;
}

a.text-warning:hover,
a.text-warning:focus {
  color: #000000;
}

.text-error {
  color: #ffffff;
}

a.text-error:hover,
a.text-error:focus {
  color: #e6e6e6;
}

.text-info {
  color: #000000;
}

a.text-info:hover,
a.text-info:focus {
  color: #000000;
}

.text-success {
  color: #ffffff;
}

a.text-success:hover,
a.text-success:focus {
  color: #e6e6e6;
}

.text-left {
  text-align: left;
}

.text-right {
  text-align: right;
}

.text-center {
  text-align: center;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 10px 0;
  font-family: inherit;
  font-weight: bold;
  line-height: 20px;
  color: inherit;
  text-rendering: optimizelegibility;
}

h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small {
  font-weight: normal;
  line-height: 1;
  color: #999999;
}

h1,
h2,
h3 {
  line-height: 40px;
}

h1 {
  font-size: 44px;
}

h2 {
  font-size: 36px;
}

h3 {
  font-size: 28px;
}

h4 {
  font-size: 20px;
}

h5 {
  font-size: 16px;
}

h6 {
  font-size: 13.6px;
}

h1 small {
  font-size: 28px;
}

h2 small {
  font-size: 20px;
}

h3 small {
  font-size: 16px;
}

h4 small {
  font-size: 16px;
}

.page-header {
  padding-bottom: 9px;
  margin: 20px 0 30px;
  border-bottom: 1px solid #eeeeee;
}

ul,
ol {
  padding: 0;
  margin: 0 0 10px 25px;
}

ul ul,
ul ol,
ol ol,
ol ul {
  margin-bottom: 0;
}

li {
  line-height: 20px;
}

ul.unstyled,
ol.unstyled {
  margin-left: 0;
  list-style: none;
}

ul.inline,
ol.inline {
  margin-left: 0;
  list-style: none;
}

ul.inline > li,
ol.inline > li {
  display: inline-block;
  *display: inline;
  padding-right: 5px;
  padding-left: 5px;
  *zoom: 1;
}

dl {
  margin-bottom: 20px;
}

dt,
dd {
  line-height: 20px;
}

dt {
  font-weight: bold;
}

dd {
  margin-left: 10px;
}

.dl-horizontal {
  *zoom: 1;
}

.dl-horizontal:before,
.dl-horizontal:after {
  display: table;
  line-height: 0;
  content: "";
}

.dl-horizontal:after {
  clear: both;
}

.dl-horizontal dt {
  float: left;
  width: 160px;
  overflow: hidden;
  clear: left;
  text-align: right;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dl-horizontal dd {
  margin-left: 180px;
}

hr {
  margin: 20px 0;
  border: 0;
  border-top: 1px solid #eeeeee;
  border-bottom: 1px solid #ffffff;
}

abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #999999;
}

abbr.initialism {
  font-size: 90%;
  text-transform: uppercase;
}

blockquote {
  padding: 0 0 0 15px;
  margin: 0 0 20px;
  border-left: 5px solid #eeeeee;
}

blockquote p {
  margin-bottom: 0;
  font-size: 20px;
  font-weight: 300;
  line-height: 1.25;
}

blockquote small {
  display: block;
  line-height: 20px;
  color: #999999;
}

blockquote small:before {
  content: '\2014 \00A0';
}

blockquote.pull-right {
  float: right;
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
}

blockquote.pull-right p,
blockquote.pull-right small {
  text-align: right;
}

blockquote.pull-right small:before {
  content: '';
}

blockquote.pull-right small:after {
  content: '\00A0 \2014';
}

q:before,
q:after,
blockquote:before,
blockquote:after {
  content: "";
}

address {
  display: block;
  margin-bottom: 20px;
  font-style: normal;
  line-height: 20px;
}

code,
pre {
  padding: 0 3px 2px;
  font-family: "Courier New", Courier, monospace;
  font-size: 14px;
  color: #333333;
  -webkit-border-radius: 3px;
     -moz-border-radius: 3px;
          border-radius: 3px;
}

code {
  padding: 2px 4px;
  color: #d14;
  white-space: nowrap;
  background-color: #f7f7f9;
  border: 1px solid #e1e1e8;
}

pre {
  display: block;
  padding: 9.5px;
  margin: 0 0 10px;
  font-size: 15px;
  line-height: 20px;
  word-break: break-all;
  word-wrap: break-word;
  white-space: pre;
  white-space: pre-wrap;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

pre.prettyprint {
  margin-bottom: 20px;
}

pre code {
  padding: 0;
  color: inherit;
  white-space: pre;
  white-space: pre-wrap;
  background-color: transparent;
  border: 0;
}

.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}

form {
  margin: 0 0 20px;
}

fieldset {
  padding: 0;
  margin: 0;
  border: 0;
}

legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 20px;
  font-size: 24px;
  line-height: 40px;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}

legend small {
  font-size: 15px;
  color: #999999;
}

label,
input,
button,
select,
textarea {
  font-size: 16px;
  font-weight: normal;
  line-height: 20px;
}

input,
button,
select,
textarea {
  font-family: "Comic Sans", "Comic Sans MS", "Chalkboard", "ChalkboardSE-Regular", "Marker Felt", "Purisa", "URW Chancery L", cursive, sans-serif;
}

label {
  display: block;
  margin-bottom: 5px;
}

select,
textarea,
input[type="text"],
input[type="password"],
input[type="datetime"],
input[type="datetime-local"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
input[type="number"],
input[type="email"],
input[type="url"],
input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
  display: inline-block;
  height: 20px;
  padding: 4px 6px;
  margin-bottom: 10px;
  font-size: 16px;
  line-height: 20px;
  color: #555555;
  vertical-align: middle;
  -webkit-border-radius: 0;
     -moz-border-radius: 0;
          border-radius: 0;
}

input,
textarea,
.uneditable-input {
  width: 206px;
}

textarea {
  height: auto;
}

textarea,
input[type="text"],
input[type="password"],
input[type="datetime"],
input[type="datetime-local"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
input[type="number"],
input[type="email"],
input[type="url"],
input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
  background-color: #000000;
  border: 1px solid #00ff00;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
     -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
       -o-transition: border linear 0.2s, box-shadow linear 0.2s;
          transition: border linear 0.2s, box-shadow linear 0.2s;
}

textarea:focus,
input[type="text"]:focus,
input[type="password"]:focus,
input[type="datetime"]:focus,
input[type="datetime-local"]:focus,
input[type="date"]:focus,
input[type="month"]:focus,
input[type="time"]:focus,
input[type="week"]:focus,
input[type="number"]:focus,
input[type="email"]:focus,
input[type="url"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
input[type="color"]:focus,
.uneditable-input:focus {
  border-color: rgba(82, 168, 236, 0.8);
  outline: 0;
  outline: thin dotted \9;
  /* IE6-9 */

  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
}

input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  *margin-top: 0;
  line-height: normal;
}

input[type="file"],
input[type="image"],
input[type="submit"],
input[type="reset"],
input[type="button"],
input[type="radio"],
input[type="checkbox"] {
  width: auto;
}

select,
input[type="file"] {
  height: 30px;
  /* In IE7, the height of the select element cannot be changed by height, only font-size */

  *margin-top: 4px;
  /* For IE7, add top margin to align select with labels */

  line-height: 30px;
}

select {
  width: 220px;
  background-color: #000000;
  border: 1px solid #00ff00;
}

select[multiple],
select[size] {
  height: auto;
}

select:focus,
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: thin dotted #333;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}

.uneditable-input,
.uneditable-textarea {
  color: #999999;
  cursor: not-allowed;
  background-color: #000000;
  border-color: #00ff00;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
}

.uneditable-input {
  overflow: hidden;
  white-space: nowrap;
}

.uneditable-textarea {
  width: auto;
  height: auto;
}

input:-moz-placeholder,
textarea:-moz-placeholder {
  color: #999999;
}

input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
  color: #999999;
}

input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
  color: #999999;
}

.radio,
.checkbox {
  min-height: 20px;
  padding-left: 20px;
}

.radio input[type="radio"],
.checkbox input[type="checkbox"] {
  float: left;
  margin-left: -20px;
}

.controls > .radio:first-child,
.controls > .checkbox:first-child {
  padding-top: 5px;
}

.radio.inline,
.checkbox.inline {
  display: inline-block;
  padding-top: 5px;
  margin-bottom: 0;
  vertical-align: middle;
}

.radio.inline + .radio.inline,
.checkbox.inline + .checkbox.inline {
  margin-left: 10px;
}

.input-mini {
  width: 60px;
}

.input-small {
  width: 90px;
}

.input-medium {
  width: 150px;
}

.input-large {
  width: 210px;
}

.input-xlarge {
  width: 270px;
}

.input-xxlarge {
  width: 530px;
}

input[class*="span"],
select[class*="span"],
textarea[class*="span"],
.uneditable-input[class*="span"],
.row-fluid input[class*="span"],
.row-fluid select[class*="span"],
.row-fluid textarea[class*="span"],
.row-fluid .uneditable-input[class*="span"] {
  float: none;
  margin-left: 0;
}

.input-append input[class*="span"],
.input-append .uneditable-input[class*="span"],
.input-prepend input[class*="span"],
.input-prepend .uneditable-input[class*="span"],
.row-fluid input[class*="span"],
.row-fluid select[class*="span"],
.row-fluid textarea[class*="span"],
.row-fluid .uneditable-input[class*="span"],
.row-fluid .input-prepend [class*="span"],
.row-fluid .input-append [class*="span"] {
  display: inline-block;
}

input,
textarea,
.uneditable-input {
  margin-left: 0;
}

.controls-row [class*="span"] + [class*="span"] {
  margin-left: 20px;
}

input.span12,
textarea.span12,
.uneditable-input.span12 {
  width: 926px;
}

input.span11,
textarea.span11,
.uneditable-input.span11 {
  width: 846px;
}

input.span10,
textarea.span10,
.uneditable-input.span10 {
  width: 766px;
}

input.span9,
textarea.span9,
.uneditable-input.span9 {
  width: 686px;
}

input.span8,
textarea.span8,
.uneditable-input.span8 {
  width: 606px;
}

input.span7,
textarea.span7,
.uneditable-input.span7 {
  width: 526px;
}

input.span6,
textarea.span6,
.uneditable-input.span6 {
  width: 446px;
}

input.span5,
textarea.span5,
.uneditable-input.span5 {
  width: 366px;
}

input.span4,
textarea.span4,
.uneditable-input.span4 {
  width: 286px;
}

input.span3,
textarea.span3,
.uneditable-input.span3 {
  width: 206px;
}

input.span2,
textarea.span2,
.uneditable-input.span2 {
  width: 126px;
}

input.span1,
textarea.span1,
.uneditable-input.span1 {
  width: 46px;
}

.controls-row {
  *zoom: 1;
}

.controls-row:before,
.controls-row:after {
  display: table;
  line-height: 0;
  content: "";
}

.controls-row:after {
  clear: both;
}

.controls-row [class*="span"],
.row-fluid .controls-row [class*="span"] {
  float: left;
}

.controls-row .checkbox[class*="span"],
.controls-row .radio[class*="span"] {
  padding-top: 5px;
}

input[disabled],
select[disabled],
textarea[disabled],
input[readonly],
select[readonly],
textarea[readonly] {
  cursor: not-allowed;
  background-color: #cccccc;
}

input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"][readonly],
input[type="checkbox"][readonly] {
  background-color: transparent;
}

.control-group.warning .control-label,
.control-group.warning .help-block,
.control-group.warning .help-inline {
  color: #000000;
}

.control-group.warning .checkbox,
.control-group.warning .radio,
.control-group.warning input,
.control-group.warning select,
.control-group.warning textarea {
  color: #000000;
}

.control-group.warning input,
.control-group.warning select,
.control-group.warning textarea {
  border-color: #000000;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}

.control-group.warning input:focus,
.control-group.warning select:focus,
.control-group.warning textarea:focus {
  border-color: #000000;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333;
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333;
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333;
}

.control-group.warning .input-prepend .add-on,
.control-group.warning .input-append .add-on {
  color: #000000;
  background-color: #ffff00;
  border-color: #000000;
}

.control-group.error .control-label,
.control-group.error .help-block,
.control-group.error .help-inline {
  color: #ffffff;
}

.control-group.error .checkbox,
.control-group.error .radio,
.control-group.error input,
.control-group.error select,
.control-group.error textarea {
  color: #ffffff;
}

.control-group.error input,
.control-group.error select,
.control-group.error textarea {
  border-color: #ffffff;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}

.control-group.error input:focus,
.control-group.error select:focus,
.control-group.error textarea:focus {
  border-color: #e6e6e6;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
}

.control-group.error .input-prepend .add-on,
.control-group.error .input-append .add-on {
  color: #ffffff;
  background-color: #ff0000;
  border-color: #ffffff;
}

.control-group.success .control-label,
.control-group.success .help-block,
.control-group.success .help-inline {
  color: #ffffff;
}

.control-group.success .checkbox,
.control-group.success .radio,
.control-group.success input,
.control-group.success select,
.control-group.success textarea {
  color: #ffffff;
}

.control-group.success input,
.control-group.success select,
.control-group.success textarea {
  border-color: #ffffff;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}

.control-group.success input:focus,
.control-group.success select:focus,
.control-group.success textarea:focus {
  border-color: #e6e6e6;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
}

.control-group.success .input-prepend .add-on,
.control-group.success .input-append .add-on {
  color: #ffffff;
  background-color: #008000;
  border-color: #ffffff;
}

.control-group.info .control-label,
.control-group.info .help-block,
.control-group.info .help-inline {
  color: #000000;
}

.control-group.info .checkbox,
.control-group.info .radio,
.control-group.info input,
.control-group.info select,
.control-group.info textarea {
  color: #000000;
}

.control-group.info input,
.control-group.info select,
.control-group.info textarea {
  border-color: #000000;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}

.control-group.info input:focus,
.control-group.info select:focus,
.control-group.info textarea:focus {
  border-color: #000000;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333;
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333;
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333;
}

.control-group.info .input-prepend .add-on,
.control-group.info .input-append .add-on {
  color: #000000;
  background-color: #00ffff;
  border-color: #000000;
}

input:focus:invalid,
textarea:focus:invalid,
select:focus:invalid {
  color: #b94a48;
  border-color: #ee5f5b;
}

input:focus:invalid:focus,
textarea:focus:invalid:focus,
select:focus:invalid:focus {
  border-color: #e9322d;
  -webkit-box-shadow: 0 0 6px #f8b9b7;
     -moz-box-shadow: 0 0 6px #f8b9b7;
          box-shadow: 0 0 6px #f8b9b7;
}

.form-actions {
  padding: 19px 20px 20px;
  margin-top: 20px;
  margin-bottom: 20px;
  background-color: #0000ff;
  border-top: 1px solid #e5e5e5;
  *zoom: 1;
}

.form-actions:before,
.form-actions:after {
  display: table;
  line-height: 0;
  content: "";
}

.form-actions:after {
  clear: both;
}

.help-block,
.help-inline {
  color: #ffff4d;
}

.help-block {
  display: block;
  margin-bottom: 10px;
}

.help-inline {
  display: inline-block;
  *display: inline;
  padding-left: 5px;
  vertical-align: middle;
  *zoom: 1;
}

.input-append,
.input-prepend {
  display: inline-block;
  margin-bottom: 10px;
  font-size: 0;
  white-space: nowrap;
  vertical-align: middle;
}

.input-append input,
.input-prepend input,
.input-append select,
.input-prepend select,
.input-append .uneditable-input,
.input-prepend .uneditable-input,
.input-append .dropdown-menu,
.input-prepend .dropdown-menu,
.input-append .popover,
.input-prepend .popover {
  font-size: 16px;
}

.input-append input,
.input-prepend input,
.input-append select,
.input-prepend select,
.input-append .uneditable-input,
.input-prepend .uneditable-input {
  position: relative;
  margin-bottom: 0;
  *margin-left: 0;
  vertical-align: top;
  -webkit-border-radius: 0 0 0 0;
     -moz-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.input-append input:focus,
.input-prepend input:focus,
.input-append select:focus,
.input-prepend select:focus,
.input-append .uneditable-input:focus,
.input-prepend .uneditable-input:focus {
  z-index: 2;
}

.input-append .add-on,
.input-prepend .add-on {
  display: inline-block;
  width: auto;
  height: 20px;
  min-width: 16px;
  padding: 4px 5px;
  font-size: 16px;
  font-weight: normal;
  line-height: 20px;
  text-align: center;
  text-shadow: 0 1px 0 #ffffff;
  background-color: #eeeeee;
  border: 1px solid #ccc;
}

.input-append .add-on,
.input-prepend .add-on,
.input-append .btn,
.input-prepend .btn,
.input-append .btn-group > .dropdown-toggle,
.input-prepend .btn-group > .dropdown-toggle {
  vertical-align: top;
  -webkit-border-radius: 0;
     -moz-border-radius: 0;
          border-radius: 0;
}

.input-append .active,
.input-prepend .active {
  background-color: #99ff99;
  border-color: #00ff00;
}

.input-prepend .add-on,
.input-prepend .btn {
  margin-right: -1px;
}

.input-prepend .add-on:first-child,
.input-prepend .btn:first-child {
  -webkit-border-radius: 0 0 0 0;
     -moz-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.input-append input,
.input-append select,
.input-append .uneditable-input {
  -webkit-border-radius: 0 0 0 0;
     -moz-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.input-append input + .btn-group .btn:last-child,
.input-append select + .btn-group .btn:last-child,
.input-append .uneditable-input + .btn-group .btn:last-child {
  -webkit-border-radius: 0 0 0 0;
     -moz-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.input-append .add-on,
.input-append .btn,
.input-append .btn-group {
  margin-left: -1px;
}

.input-append .add-on:last-child,
.input-append .btn:last-child,
.input-append .btn-group:last-child > .dropdown-toggle {
  -webkit-border-radius: 0 0 0 0;
     -moz-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.input-prepend.input-append input,
.input-prepend.input-append select,
.input-prepend.input-append .uneditable-input {
  -webkit-border-radius: 0;
     -moz-border-radius: 0;
          border-radius: 0;
}

.input-prepend.input-append input + .btn-group .btn,
.input-prepend.input-append select + .btn-group .btn,
.input-prepend.input-append .uneditable-input + .btn-group .btn {
  -webkit-border-radius: 0 0 0 0;
     -moz-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.input-prepend.input-append .add-on:first-child,
.input-prepend.input-append .btn:first-child {
  margin-right: -1px;
  -webkit-border-radius: 0 0 0 0;
     -moz-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.input-prepend.input-append .add-on:last-child,
.input-prepend.input-append .btn:last-child {
  margin-left: -1px;
  -webkit-border-radius: 0 0 0 0;
     -moz-border-radius: 0 0 0 0;
          border-radius: 0 0 0 0;
}

.input-prepend.input-append .btn-group:first-child {
  margin-left: 0;
}

input.search-query {
  padding-right: 14px;
  padding-right: 4px \9;
  padding-left: 14px;
  padding-left: 4px \9;
  /* IE7-8 doesn't have border-radius, so don't indent the padding */

  margin-bottom: 0;
  -webkit-border-radius: 15px;
     -moz-border-radius: 15px;
          border-radius: 15px;
}

/* Allow for input prepend/append in search forms */

.form-search .input-append .search-query,
.form-search .input-prepend .search-query {
  -webkit-border-radius: 0;
     -moz-border-radius: 0;
          border-radius: 0;
}

.form-search .input-append .search-query {
  -webkit-border-radius: 14px 0 0 14px;
     -moz-border-radius: 14px 0 0 14px;
          border-radius: 14px 0 0 14px;
}

.form-search .input-append .btn {
  -webkit-border-radius: 0 14px 14px 0;
     -moz-border-radius: 0 14px 14px 0;
          border-radius: 0 14px 14px 0;
}

.form-search .input-prepend .search-query {
  -webkit-border-radius: 0 14px 14px 0;
     -moz-border-radius: 0 14px 14px 0;
          border-radius: 0 14px 14px 0;
}

.form-search .input-prepend .btn {
  -webkit-border-radius: 14px 0 0 14px;
     -moz-border-radius: 14px 0 0 14px;
          border-radius: 14px 0 0 14px;
}

.form-search input,
.form-inline input,
.form-horizontal input,
.form-search textarea,
.form-inline textarea,
.form-horizontal textarea,
.form-search select,
.form-inline select,
.form-horizontal select,
.form-search .help-inline,
.form-inline .help-inline,
.form-horizontal .help-inline,
.form-search .uneditable-input,
.form-inline .uneditable-input,
.form-horizontal .uneditable-input,
.form-search .input-prepend,
.form-inline .input-prepend,
.form-horizontal .input-prepend,
.form-search .input-append,
.form-inline .input-append,
.form-horizontal .input-append {
  display: inline-block;
  *display: inline;
  margin-bottom: 0;
  vertical-align: middle;
  *zoom: 1;
}

.form-search .hide,
.form-inline .hide,
.form-horizontal .hide {
  display: none;
}

.form-search label,
.form-inline label,
.form-search .btn-group,
.form-inline .btn-group {
  display: inline-block;
}

.form-search .input-append,
.form-inline .input-append,
.form-search .input-prepend,
.form-inline .input-prepend {
  margin-bottom: 0;
}

.form-search .radio,
.form-search .checkbox,
.form-inline .radio,
.form-inline .checkbox {
  padding-left: 0;
  margin-bottom: 0;
  vertical-align: middle;
}

.form-search .radio input[type="radio"],
.form-search .checkbox input[type="checkbox"],
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
  float: left;
  margin-right: 3px;
  margin-left: 0;
}

.control-group {
  margin-bottom: 10px;
}

legend + .control-group {
  margin-top: 20px;
  -webkit-margin-top-collapse: separate;
}

.form-horizontal .control-group {
  margin-bottom: 20px;
  *zoom: 1;
}

.form-horizontal .control-group:before,
.form-horizontal .control-group:after {
  display: table;
  line-height: 0;
  content: "";
}

.form-horizontal .control-group:after {
  clear: both;
}

.form-horizontal .control-label {
  float: left;
  width: 160px;
  padding-top: 5px;
  text-align: right;
}

.form-horizontal .controls {
  *display: inline-block;
  *padding-left: 20px;
  margin-left: 180px;
  *margin-left: 0;
}

.form-horizontal .controls:first-child {
  *padding-left: 180px;
}

.form-horizontal .help-block {
  margin-bottom: 0;
}

.form-horizontal input + .help-block,
.form-horizontal select + .help-block,
.form-horizontal textarea + .help-block,
.form-horizontal .uneditable-input + .help-block,
.form-horizontal .input-prepend + .help-block,
.form-horizontal .input-append + .help-block {
  margin-top: 10px;
}

.form-horizontal .form-actions {
  padding-left: 180px;
}

table {
  max-width: 100%;
  background-color: transparent;
  border-collapse: collapse;
  border-spacing: 0;
}

.table {
  width: 100%;
  margin-bottom: 20px;
}

.table th,
.table td {
  padding: 8px;
  line-height: 20px;
  text-align: left;
  vertical-align: top;
  border-top: 1px solid #008000;
}

.table th {
  font-weight: bold;
}

.table thead th {
  vertical-align: bottom;
}

.table caption + thead tr:first-child th,
.table caption + thead tr:first-child td,
.table colgroup + thead tr:first-child th,
.table colgroup + thead tr:first-child td,
.table thead:first-child tr:first-child th,
.table thead:first-child tr:first-child td {
  border-top: 0;
}

.table tbody + tbody {
  border-top: 2px solid #008000;
}

.table .table {
  background-color: #0000ff;
}

.table-condensed th,
.table-condensed td {
  padding: 4px 5px;
}

.table-bordered {
  border: 1px solid #008000;
  border-collapse: separate;
  *border-collapse: collapse;
  border-left: 0;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

.table-bordered th,
.table-bordered td {
  border-left: 1px solid #008000;
}

.table-bordered caption + thead tr:first-child th,
.table-bordered caption + tbody tr:first-child th,
.table-bordered caption + tbody tr:first-child td,
.table-bordered colgroup + thead tr:first-child th,
.table-bordered colgroup + tbody tr:first-child th,
.table-bordered colgroup + tbody tr:first-child td,
.table-bordered thead:first-child tr:first-child th,
.table-bordered tbody:first-child tr:first-child th,
.table-bordered tbody:first-child tr:first-child td {
  border-top: 0;
}

.table-bordered thead:first-child tr:first-child > th:first-child,
.table-bordered tbody:first-child tr:first-child > td:first-child,
.table-bordered tbody:first-child tr:first-child > th:first-child {
  -webkit-border-top-left-radius: none;
          border-top-left-radius: none;
  -moz-border-radius-topleft: none;
}

.table-bordered thead:first-child tr:first-child > th:last-child,
.table-bordered tbody:first-child tr:first-child > td:last-child,
.table-bordered tbody:first-child tr:first-child > th:last-child {
  -webkit-border-top-right-radius: none;
          border-top-right-radius: none;
  -moz-border-radius-topright: none;
}

.table-bordered thead:last-child tr:last-child > th:first-child,
.table-bordered tbody:last-child tr:last-child > td:first-child,
.table-bordered tbody:last-child tr:last-child > th:first-child,
.table-bordered tfoot:last-child tr:last-child > td:first-child,
.table-bordered tfoot:last-child tr:last-child > th:first-child {
  -webkit-border-bottom-left-radius: none;
          border-bottom-left-radius: none;
  -moz-border-radius-bottomleft: none;
}

.table-bordered thead:last-child tr:last-child > th:last-child,
.table-bordered tbody:last-child tr:last-child > td:last-child,
.table-bordered tbody:last-child tr:last-child > th:last-child,
.table-bordered tfoot:last-child tr:last-child > td:last-child,
.table-bordered tfoot:last-child tr:last-child > th:last-child {
  -webkit-border-bottom-right-radius: none;
          border-bottom-right-radius: none;
  -moz-border-radius-bottomright: none;
}

.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
  -webkit-border-bottom-left-radius: 0;
          border-bottom-left-radius: 0;
  -moz-border-radius-bottomleft: 0;
}

.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
  -webkit-border-bottom-right-radius: 0;
          border-bottom-right-radius: 0;
  -moz-border-radius-bottomright: 0;
}

.table-bordered caption + thead tr:first-child th:first-child,
.table-bordered caption + tbody tr:first-child td:first-child,
.table-bordered colgroup + thead tr:first-child th:first-child,
.table-bordered colgroup + tbody tr:first-child td:first-child {
  -webkit-border-top-left-radius: none;
          border-top-left-radius: none;
  -moz-border-radius-topleft: none;
}

.table-bordered caption + thead tr:first-child th:last-child,
.table-bordered caption + tbody tr:first-child td:last-child,
.table-bordered colgroup + thead tr:first-child th:last-child,
.table-bordered colgroup + tbody tr:first-child td:last-child {
  -webkit-border-top-right-radius: none;
          border-top-right-radius: none;
  -moz-border-radius-topright: none;
}

.table-striped tbody > tr:nth-child(odd) > td,
.table-striped tbody > tr:nth-child(odd) > th {
  background-color: #000000;
}

.table-hover tbody tr:hover > td,
.table-hover tbody tr:hover > th {
  background-color: #0000ff;
}

table td[class*="span"],
table th[class*="span"],
.row-fluid table td[class*="span"],
.row-fluid table th[class*="span"] {
  display: table-cell;
  float: none;
  margin-left: 0;
}

.table td.span1,
.table th.span1 {
  float: none;
  width: 44px;
  margin-left: 0;
}

.table td.span2,
.table th.span2 {
  float: none;
  width: 124px;
  margin-left: 0;
}

.table td.span3,
.table th.span3 {
  float: none;
  width: 204px;
  margin-left: 0;
}

.table td.span4,
.table th.span4 {
  float: none;
  width: 284px;
  margin-left: 0;
}

.table td.span5,
.table th.span5 {
  float: none;
  width: 364px;
  margin-left: 0;
}

.table td.span6,
.table th.span6 {
  float: none;
  width: 444px;
  margin-left: 0;
}

.table td.span7,
.table th.span7 {
  float: none;
  width: 524px;
  margin-left: 0;
}

.table td.span8,
.table th.span8 {
  float: none;
  width: 604px;
  margin-left: 0;
}

.table td.span9,
.table th.span9 {
  float: none;
  width: 684px;
  margin-left: 0;
}

.table td.span10,
.table th.span10 {
  float: none;
  width: 764px;
  margin-left: 0;
}

.table td.span11,
.table th.span11 {
  float: none;
  width: 844px;
  margin-left: 0;
}

.table td.span12,
.table th.span12 {
  float: none;
  width: 924px;
  margin-left: 0;
}

.table tbody tr.success > td {
  background-color: #008000;
}

.table tbody tr.error > td {
  background-color: #ff0000;
}

.table tbody tr.warning > td {
  background-color: #ffff00;
}

.table tbody tr.info > td {
  background-color: #00ffff;
}

.table-hover tbody tr.success:hover > td {
  background-color: #006700;
}

.table-hover tbody tr.error:hover > td {
  background-color: #e60000;
}

.table-hover tbody tr.warning:hover > td {
  background-color: #e5e600;
}

.table-hover tbody tr.info:hover > td {
  background-color: #00e5e6;
}

[class^="icon-"],
[class*=" icon-"] {
  display: inline-block;
  width: 14px;
  height: 14px;
  margin-top: 1px;
  *margin-right: .3em;
  line-height: 14px;
  vertical-align: text-top;
  /* background-image: url("../images/geo/glyphicons-halflings.png"); */
  background-position: 14px 14px;
  background-repeat: no-repeat;
}

/* White icons with optional class, or on hover/focus/active states of certain elements */

.icon-white,
.nav-pills > .active > a > [class^="icon-"],
.nav-pills > .active > a > [class*=" icon-"],
.nav-list > .active > a > [class^="icon-"],
.nav-list > .active > a > [class*=" icon-"],
.navbar-inverse .nav > .active > a > [class^="icon-"],
.navbar-inverse .nav > .active > a > [class*=" icon-"],
.dropdown-menu > li > a:hover > [class^="icon-"],
.dropdown-menu > li > a:focus > [class^="icon-"],
.dropdown-menu > li > a:hover > [class*=" icon-"],
.dropdown-menu > li > a:focus > [class*=" icon-"],
.dropdown-menu > .active > a > [class^="icon-"],
.dropdown-menu > .active > a > [class*=" icon-"],
.dropdown-submenu:hover > a > [class^="icon-"],
.dropdown-submenu:focus > a > [class^="icon-"],
.dropdown-submenu:hover > a > [class*=" icon-"],
/* .dropdown-submenu:focus > a > [class*=" icon-"] {
  background-image: url("../images/geo/glyphicons-halflings-white.png");
} */

.icon-glass {
  background-position: 0      0;
}

.icon-music {
  background-position: -24px 0;
}

.icon-search {
  background-position: -48px 0;
}

.icon-envelope {
  background-position: -72px 0;
}

.icon-heart {
  background-position: -96px 0;
}

.icon-star {
  background-position: -120px 0;
}

.icon-star-empty {
  background-position: -144px 0;
}

.icon-user {
  background-position: -168px 0;
}

.icon-film {
  background-position: -192px 0;
}

.icon-th-large {
  background-position: -216px 0;
}

.icon-th {
  background-position: -240px 0;
}

.icon-th-list {
  background-position: -264px 0;
}

.icon-ok {
  background-position: -288px 0;
}

.icon-remove {
  background-position: -312px 0;
}

.icon-zoom-in {
  background-position: -336px 0;
}

.icon-zoom-out {
  background-position: -360px 0;
}

.icon-off {
  background-position: -384px 0;
}

.icon-signal {
  background-position: -408px 0;
}

.icon-cog {
  background-position: -432px 0;
}

.icon-trash {
  background-position: -456px 0;
}

.icon-home {
  background-position: 0 -24px;
}

.icon-file {
  background-position: -24px -24px;
}

.icon-time {
  background-position: -48px -24px;
}

.icon-road {
  background-position: -72px -24px;
}

.icon-download-alt {
  background-position: -96px -24px;
}

.icon-download {
  background-position: -120px -24px;
}

.icon-upload {
  background-position: -144px -24px;
}

.icon-inbox {
  background-position: -168px -24px;
}

.icon-play-circle {
  background-position: -192px -24px;
}

.icon-repeat {
  background-position: -216px -24px;
}

.icon-refresh {
  background-position: -240px -24px;
}

.icon-list-alt {
  background-position: -264px -24px;
}

.icon-lock {
  background-position: -287px -24px;
}

.icon-flag {
  background-position: -312px -24px;
}

.icon-headphones {
  background-position: -336px -24px;
}

.icon-volume-off {
  background-position: -360px -24px;
}

.icon-volume-down {
  background-position: -384px -24px;
}

.icon-volume-up {
  background-position: -408px -24px;
}

.icon-qrcode {
  background-position: -432px -24px;
}

.icon-barcode {
  background-position: -456px -24px;
}

.icon-tag {
  background-position: 0 -48px;
}

.icon-tags {
  background-position: -25px -48px;
}

.icon-book {
  background-position: -48px -48px;
}

.icon-bookmark {
  background-position: -72px -48px;
}

.icon-print {
  background-position: -96px -48px;
}

.icon-camera {
  background-position: -120px -48px;
}

.icon-font {
  background-position: -144px -48px;
}

.icon-bold {
  background-position: -167px -48px;
}

.icon-italic {
  background-position: -192px -48px;
}

.icon-text-height {
  background-position: -216px -48px;
}

.icon-text-width {
  background-position: -240px -48px;
}

.icon-align-left {
  background-position: -264px -48px;
}

.icon-align-center {
  background-position: -288px -48px;
}

.icon-align-right {
  background-position: -312px -48px;
}

.icon-align-justify {
  background-position: -336px -48px;
}

.icon-list {
  background-position: -360px -48px;
}

.icon-indent-left {
  background-position: -384px -48px;
}

.icon-indent-right {
  background-position: -408px -48px;
}

.icon-facetime-video {
  background-position: -432px -48px;
}

.icon-picture {
  background-position: -456px -48px;
}

.icon-pencil {
  background-position: 0 -72px;
}

.icon-map-marker {
  background-position: -24px -72px;
}

.icon-adjust {
  background-position: -48px -72px;
}

.icon-tint {
  background-position: -72px -72px;
}

.icon-edit {
  background-position: -96px -72px;
}

.icon-share {
  background-position: -120px -72px;
}

.icon-check {
  background-position: -144px -72px;
}

.icon-move {
  background-position: -168px -72px;
}

.icon-step-backward {
  background-position: -192px -72px;
}

.icon-fast-backward {
  background-position: -216px -72px;
}

.icon-backward {
  background-position: -240px -72px;
}

.icon-play {
  background-position: -264px -72px;
}

.icon-pause {
  background-position: -288px -72px;
}

.icon-stop {
  background-position: -312px -72px;
}

.icon-forward {
  background-position: -336px -72px;
}

.icon-fast-forward {
  background-position: -360px -72px;
}

.icon-step-forward {
  background-position: -384px -72px;
}

.icon-eject {
  background-position: -408px -72px;
}

.icon-chevron-left {
  background-position: -432px -72px;
}

.icon-chevron-right {
  background-position: -456px -72px;
}

.icon-plus-sign {
  background-position: 0 -96px;
}

.icon-minus-sign {
  background-position: -24px -96px;
}

.icon-remove-sign {
  background-position: -48px -96px;
}

.icon-ok-sign {
  background-position: -72px -96px;
}

.icon-question-sign {
  background-position: -96px -96px;
}

.icon-info-sign {
  background-position: -120px -96px;
}

.icon-screenshot {
  background-position: -144px -96px;
}

.icon-remove-circle {
  background-position: -168px -96px;
}

.icon-ok-circle {
  background-position: -192px -96px;
}

.icon-ban-circle {
  background-position: -216px -96px;
}

.icon-arrow-left {
  background-position: -240px -96px;
}

.icon-arrow-right {
  background-position: -264px -96px;
}

.icon-arrow-up {
  background-position: -289px -96px;
}

.icon-arrow-down {
  background-position: -312px -96px;
}

.icon-share-alt {
  background-position: -336px -96px;
}

.icon-resize-full {
  background-position: -360px -96px;
}

.icon-resize-small {
  background-position: -384px -96px;
}

.icon-plus {
  background-position: -408px -96px;
}

.icon-minus {
  background-position: -433px -96px;
}

.icon-asterisk {
  background-position: -456px -96px;
}

.icon-exclamation-sign {
  background-position: 0 -120px;
}

.icon-gift {
  background-position: -24px -120px;
}

.icon-leaf {
  background-position: -48px -120px;
}

.icon-fire {
  background-position: -72px -120px;
}

.icon-eye-open {
  background-position: -96px -120px;
}

.icon-eye-close {
  background-position: -120px -120px;
}

.icon-warning-sign {
  background-position: -144px -120px;
}

.icon-plane {
  background-position: -168px -120px;
}

.icon-calendar {
  background-position: -192px -120px;
}

.icon-random {
  width: 16px;
  background-position: -216px -120px;
}

.icon-comment {
  background-position: -240px -120px;
}

.icon-magnet {
  background-position: -264px -120px;
}

.icon-chevron-up {
  background-position: -288px -120px;
}

.icon-chevron-down {
  background-position: -313px -119px;
}

.icon-retweet {
  background-position: -336px -120px;
}

.icon-shopping-cart {
  background-position: -360px -120px;
}

.icon-folder-close {
  width: 16px;
  background-position: -384px -120px;
}

.icon-folder-open {
  width: 16px;
  background-position: -408px -120px;
}

.icon-resize-vertical {
  background-position: -432px -119px;
}

.icon-resize-horizontal {
  background-position: -456px -118px;
}

.icon-hdd {
  background-position: 0 -144px;
}

.icon-bullhorn {
  background-position: -24px -144px;
}

.icon-bell {
  background-position: -48px -144px;
}

.icon-certificate {
  background-position: -72px -144px;
}

.icon-thumbs-up {
  background-position: -96px -144px;
}

.icon-thumbs-down {
  background-position: -120px -144px;
}

.icon-hand-right {
  background-position: -144px -144px;
}

.icon-hand-left {
  background-position: -168px -144px;
}

.icon-hand-up {
  background-position: -192px -144px;
}

.icon-hand-down {
  background-position: -216px -144px;
}

.icon-circle-arrow-right {
  background-position: -240px -144px;
}

.icon-circle-arrow-left {
  background-position: -264px -144px;
}

.icon-circle-arrow-up {
  background-position: -288px -144px;
}

.icon-circle-arrow-down {
  background-position: -312px -144px;
}

.icon-globe {
  background-position: -336px -144px;
}

.icon-wrench {
  background-position: -360px -144px;
}

.icon-tasks {
  background-position: -384px -144px;
}

.icon-filter {
  background-position: -408px -144px;
}

.icon-briefcase {
  background-position: -432px -144px;
}

.icon-fullscreen {
  background-position: -456px -144px;
}

.dropup,
.dropdown {
  position: relative;
}

.dropdown-toggle {
  *margin-bottom: -3px;
}

.dropdown-toggle:active,
.open .dropdown-toggle {
  outline: 0;
}

.caret {
  display: inline-block;
  width: 0;
  height: 0;
  vertical-align: top;
  border-top: 4px solid #000000;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
  content: "";
}

.dropdown .caret {
  margin-top: 8px;
  margin-left: 2px;
}

.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  background-color: #ffffff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  *border-right-width: 2px;
  *border-bottom-width: 2px;
  -webkit-border-radius: 6px;
     -moz-border-radius: 6px;
          border-radius: 6px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  -webkit-background-clip: padding-box;
     -moz-background-clip: padding;
          background-clip: padding-box;
}

.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}

.dropdown-menu .divider {
  *width: 100%;
  height: 1px;
  margin: 9px 1px;
  *margin: -5px 0 5px;
  overflow: hidden;
  background-color: #e5e5e5;
  border-bottom: 1px solid #ffffff;
}

.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 20px;
  color: #333333;
  white-space: nowrap;
}

.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus,
.dropdown-submenu:hover > a,
.dropdown-submenu:focus > a {
  color: #ffffff;
  text-decoration: none;
  background-color: #00e4e4;
  background-image: -moz-linear-gradient(top, #00eeee, #00d4d5);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00eeee), to(#00d4d5));
  background-image: -webkit-linear-gradient(top, #00eeee, #00d4d5);
  background-image: -o-linear-gradient(top, #00eeee, #00d4d5);
  background-image: linear-gradient(to bottom, #00eeee, #00d4d5);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00eeee', endColorstr='#ff00d4d5', GradientType=0);
}

.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #333333;
  text-decoration: none;
  background-color: #00e4e4;
  background-image: -moz-linear-gradient(top, #00eeee, #00d4d5);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00eeee), to(#00d4d5));
  background-image: -webkit-linear-gradient(top, #00eeee, #00d4d5);
  background-image: -o-linear-gradient(top, #00eeee, #00d4d5);
  background-image: linear-gradient(to bottom, #00eeee, #00d4d5);
  background-repeat: repeat-x;
  outline: 0;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00eeee', endColorstr='#ff00d4d5', GradientType=0);
}

.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #999999;
}

.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  cursor: default;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
}

.open {
  *z-index: 1000;
}

.open > .dropdown-menu {
  display: block;
}

.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}

.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px solid #000000;
  content: "";
}

.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 1px;
}

.dropdown-submenu {
  position: relative;
}

.dropdown-submenu > .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
  -webkit-border-radius: 0 6px 6px 6px;
     -moz-border-radius: 0 6px 6px 6px;
          border-radius: 0 6px 6px 6px;
}

.dropdown-submenu:hover > .dropdown-menu {
  display: block;
}

.dropup .dropdown-submenu > .dropdown-menu {
  top: auto;
  bottom: 0;
  margin-top: 0;
  margin-bottom: -2px;
  -webkit-border-radius: 5px 5px 5px 0;
     -moz-border-radius: 5px 5px 5px 0;
          border-radius: 5px 5px 5px 0;
}

.dropdown-submenu > a:after {
  display: block;
  float: right;
  width: 0;
  height: 0;
  margin-top: 5px;
  margin-right: -10px;
  border-color: transparent;
  border-left-color: #cccccc;
  border-style: solid;
  border-width: 5px 0 5px 5px;
  content: " ";
}

.dropdown-submenu:hover > a:after {
  border-left-color: #ffffff;
}

.dropdown-submenu.pull-left {
  float: none;
}

.dropdown-submenu.pull-left > .dropdown-menu {
  left: -100%;
  margin-left: 10px;
  -webkit-border-radius: 6px 0 6px 6px;
     -moz-border-radius: 6px 0 6px 6px;
          border-radius: 6px 0 6px 6px;
}

.dropdown .dropdown-menu .nav-header {
  padding-right: 20px;
  padding-left: 20px;
}

.typeahead {
  z-index: 1051;
  margin-top: 2px;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #000000;
  border: 1px solid #000000;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}

.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}

.well-large {
  padding: 24px;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

.well-small {
  padding: 9px;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
     -moz-transition: opacity 0.15s linear;
       -o-transition: opacity 0.15s linear;
          transition: opacity 0.15s linear;
}

.fade.in {
  opacity: 1;
}

.collapse {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition: height 0.35s ease;
     -moz-transition: height 0.35s ease;
       -o-transition: height 0.35s ease;
          transition: height 0.35s ease;
}

.collapse.in {
  height: auto;
}

.close {
  float: right;
  font-size: 20px;
  font-weight: bold;
  line-height: 20px;
  color: #000000;
  text-shadow: 0 1px 0 #ffffff;
  opacity: 0.2;
  filter: alpha(opacity=20);
}

.close:hover,
.close:focus {
  color: #000000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.4;
  filter: alpha(opacity=40);
}

button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}

.btn {
  display: inline-block;
  *display: inline;
  padding: 4px 12px;
  margin-bottom: 0;
  *margin-left: .3em;
  font-size: 16px;
  line-height: 20px;
  color: #333333;
  text-align: center;
  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
  vertical-align: middle;
  cursor: pointer;
  background-color: #e6e6e6;
  *background-color: #e6e6e6;
  background-image: -moz-linear-gradient(top, #e6e6e6, #e6e6e6);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#e6e6e6));
  background-image: -webkit-linear-gradient(top, #e6e6e6, #e6e6e6);
  background-image: -o-linear-gradient(top, #e6e6e6, #e6e6e6);
  background-image: linear-gradient(to bottom, #e6e6e6, #e6e6e6);
  background-repeat: repeat-x;
  border: 1px solid #bbbbbb;
  *border: 0;
  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  border-bottom-color: #a2a2a2;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffe6e6e6', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
  *zoom: 1;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
}

.btn:hover,
.btn:focus,
.btn:active,
.btn.active,
.btn.disabled,
.btn[disabled] {
  color: #333333;
  background-color: #e6e6e6;
  *background-color: #d9d9d9;
}

.btn:active,
.btn.active {
  background-color: #cccccc \9;
}

.btn:first-child {
  *margin-left: 0;
}

.btn:hover,
.btn:focus {
  color: #333333;
  text-decoration: none;
  background-position: 0 -15px;
  -webkit-transition: background-position 0.1s linear;
     -moz-transition: background-position 0.1s linear;
       -o-transition: background-position 0.1s linear;
          transition: background-position 0.1s linear;
}

.btn:focus {
  outline: thin dotted #333;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}

.btn.active,
.btn:active {
  background-image: none;
  outline: 0;
  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
}

.btn.disabled,
.btn[disabled] {
  cursor: default;
  background-image: none;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
     -moz-box-shadow: none;
          box-shadow: none;
}

.btn-large {
  padding: 11px 19px;
  font-size: 20px;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

.btn-large [class^="icon-"],
.btn-large [class*=" icon-"] {
  margin-top: 4px;
}

.btn-small {
  padding: 2px 10px;
  font-size: 13.6px;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

.btn-small [class^="icon-"],
.btn-small [class*=" icon-"] {
  margin-top: 0;
}

.btn-mini [class^="icon-"],
.btn-mini [class*=" icon-"] {
  margin-top: -1px;
}

.btn-mini {
  padding: 1px 6px;
  font-size: 12px;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

.btn-block {
  display: block;
  width: 100%;
  padding-right: 0;
  padding-left: 0;
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

.btn-block + .btn-block {
  margin-top: 5px;
}

input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}

.btn-primary.active,
.btn-warning.active,
.btn-danger.active,
.btn-success.active,
.btn-info.active,
.btn-inverse.active {
  color: rgba(255, 255, 255, 0.75);
}

.btn-primary {
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #00eeee;
  *background-color: #00eeee;
  background-image: -moz-linear-gradient(top, #00eeee, #00eeee);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00eeee), to(#00eeee));
  background-image: -webkit-linear-gradient(top, #00eeee, #00eeee);
  background-image: -o-linear-gradient(top, #00eeee, #00eeee);
  background-image: linear-gradient(to bottom, #00eeee, #00eeee);
  background-repeat: repeat-x;
  border-color: #00eeee #00eeee #00a1a2;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00eeee', endColorstr='#ff00eeee', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
}

.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary.active,
.btn-primary.disabled,
.btn-primary[disabled] {
  color: #ffffff;
  background-color: #00eeee;
  *background-color: #00d4d5;
}

.btn-primary:active,
.btn-primary.active {
  background-color: #00bbbb \9;
}

.btn-warning {
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #ffaa00;
  *background-color: #ffaa00;
  background-image: -moz-linear-gradient(top, #ffaa00, #ffaa00);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffaa00), to(#ffaa00));
  background-image: -webkit-linear-gradient(top, #ffaa00, #ffaa00);
  background-image: -o-linear-gradient(top, #ffaa00, #ffaa00);
  background-image: linear-gradient(to bottom, #ffaa00, #ffaa00);
  background-repeat: repeat-x;
  border-color: #ffaa00 #ffaa00 #b37700;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffaa00', endColorstr='#ffffaa00', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
}

.btn-warning:hover,
.btn-warning:focus,
.btn-warning:active,
.btn-warning.active,
.btn-warning.disabled,
.btn-warning[disabled] {
  color: #ffffff;
  background-color: #ffaa00;
  *background-color: #e69900;
}

.btn-warning:active,
.btn-warning.active {
  background-color: #cc8800 \9;
}

.btn-danger {
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #ff0000;
  *background-color: #ff0000;
  background-image: -moz-linear-gradient(top, #ff0000, #ff0000);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff0000), to(#ff0000));
  background-image: -webkit-linear-gradient(top, #ff0000, #ff0000);
  background-image: -o-linear-gradient(top, #ff0000, #ff0000);
  background-image: linear-gradient(to bottom, #ff0000, #ff0000);
  background-repeat: repeat-x;
  border-color: #ff0000 #ff0000 #b30000;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff0000', endColorstr='#ffff0000', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
}

.btn-danger:hover,
.btn-danger:focus,
.btn-danger:active,
.btn-danger.active,
.btn-danger.disabled,
.btn-danger[disabled] {
  color: #ffffff;
  background-color: #ff0000;
  *background-color: #e60000;
}

.btn-danger:active,
.btn-danger.active {
  background-color: #cc0000 \9;
}

.btn-success {
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #00ff00;
  *background-color: #00ff00;
  background-image: -moz-linear-gradient(top, #00ff00, #00ff00);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00ff00), to(#00ff00));
  background-image: -webkit-linear-gradient(top, #00ff00, #00ff00);
  background-image: -o-linear-gradient(top, #00ff00, #00ff00);
  background-image: linear-gradient(to bottom, #00ff00, #00ff00);
  background-repeat: repeat-x;
  border-color: #00ff00 #00ff00 #00b300;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff00', endColorstr='#ff00ff00', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
}

.btn-success:hover,
.btn-success:focus,
.btn-success:active,
.btn-success.active,
.btn-success.disabled,
.btn-success[disabled] {
  color: #ffffff;
  background-color: #00ff00;
  *background-color: #00e600;
}

.btn-success:active,
.btn-success.active {
  background-color: #00cc00 \9;
}

.btn-info {
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #00ffff;
  *background-color: #00ffff;
  background-image: -moz-linear-gradient(top, #00ffff, #00ffff);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00ffff), to(#00ffff));
  background-image: -webkit-linear-gradient(top, #00ffff, #00ffff);
  background-image: -o-linear-gradient(top, #00ffff, #00ffff);
  background-image: linear-gradient(to bottom, #00ffff, #00ffff);
  background-repeat: repeat-x;
  border-color: #00ffff #00ffff #00b2b3;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ffff', endColorstr='#ff00ffff', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
}

.btn-info:hover,
.btn-info:focus,
.btn-info:active,
.btn-info.active,
.btn-info.disabled,
.btn-info[disabled] {
  color: #ffffff;
  background-color: #00ffff;
  *background-color: #00e5e6;
}

.btn-info:active,
.btn-info.active {
  background-color: #00cccc \9;
}

.btn-inverse {
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #000000;
  *background-color: #000000;
  background-image: -moz-linear-gradient(top, #000000, #000000);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#000000), to(#000000));
  background-image: -webkit-linear-gradient(top, #000000, #000000);
  background-image: -o-linear-gradient(top, #000000, #000000);
  background-image: linear-gradient(to bottom, #000000, #000000);
  background-repeat: repeat-x;
  border-color: #000000 #000000 #000000;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff000000', endColorstr='#ff000000', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
}

.btn-inverse:hover,
.btn-inverse:focus,
.btn-inverse:active,
.btn-inverse.active,
.btn-inverse.disabled,
.btn-inverse[disabled] {
  color: #ffffff;
  background-color: #000000;
  *background-color: #000000;
}

.btn-inverse:active,
.btn-inverse.active {
  background-color: #000000 \9;
}

button.btn,
input[type="submit"].btn {
  *padding-top: 3px;
  *padding-bottom: 3px;
}

button.btn::-moz-focus-inner,
input[type="submit"].btn::-moz-focus-inner {
  padding: 0;
  border: 0;
}

button.btn.btn-large,
input[type="submit"].btn.btn-large {
  *padding-top: 7px;
  *padding-bottom: 7px;
}

button.btn.btn-small,
input[type="submit"].btn.btn-small {
  *padding-top: 3px;
  *padding-bottom: 3px;
}

button.btn.btn-mini,
input[type="submit"].btn.btn-mini {
  *padding-top: 1px;
  *padding-bottom: 1px;
}

.btn-link,
.btn-link:active,
.btn-link[disabled] {
  background-color: transparent;
  background-image: none;
  -webkit-box-shadow: none;
     -moz-box-shadow: none;
          box-shadow: none;
}

.btn-link {
  color: #00eeee;
  cursor: pointer;
  border-color: transparent;
  -webkit-border-radius: 0;
     -moz-border-radius: 0;
          border-radius: 0;
}

.btn-link:hover,
.btn-link:focus {
  color: #00eeee;
  text-decoration: underline;
  background-color: transparent;
}

.btn-link[disabled]:hover,
.btn-link[disabled]:focus {
  color: #333333;
  text-decoration: none;
}

.btn-group {
  position: relative;
  display: inline-block;
  *display: inline;
  *margin-left: .3em;
  font-size: 0;
  white-space: nowrap;
  vertical-align: middle;
  *zoom: 1;
}

.btn-group:first-child {
  *margin-left: 0;
}

.btn-group + .btn-group {
  margin-left: 5px;
}

.btn-toolbar {
  margin-top: 10px;
  margin-bottom: 10px;
  font-size: 0;
}

.btn-toolbar > .btn + .btn,
.btn-toolbar > .btn-group + .btn,
.btn-toolbar > .btn + .btn-group {
  margin-left: 5px;
}

.btn-group > .btn {
  position: relative;
  -webkit-border-radius: 0;
     -moz-border-radius: 0;
          border-radius: 0;
}

.btn-group > .btn + .btn {
  margin-left: -1px;
}

.btn-group > .btn,
.btn-group > .dropdown-menu,
.btn-group > .popover {
  font-size: 16px;
}

.btn-group > .btn-mini {
  font-size: 12px;
}

.btn-group > .btn-small {
  font-size: 13.6px;
}

.btn-group > .btn-large {
  font-size: 20px;
}

.btn-group > .btn:first-child {
  margin-left: 0;
  -webkit-border-bottom-left-radius: none;
          border-bottom-left-radius: none;
  -webkit-border-top-left-radius: none;
          border-top-left-radius: none;
  -moz-border-radius-bottomleft: none;
  -moz-border-radius-topleft: none;
}

.btn-group > .btn:last-child,
.btn-group > .dropdown-toggle {
  -webkit-border-top-right-radius: none;
          border-top-right-radius: none;
  -webkit-border-bottom-right-radius: none;
          border-bottom-right-radius: none;
  -moz-border-radius-topright: none;
  -moz-border-radius-bottomright: none;
}

.btn-group > .btn.large:first-child {
  margin-left: 0;
  -webkit-border-bottom-left-radius: none;
          border-bottom-left-radius: none;
  -webkit-border-top-left-radius: none;
          border-top-left-radius: none;
  -moz-border-radius-bottomleft: none;
  -moz-border-radius-topleft: none;
}

.btn-group > .btn.large:last-child,
.btn-group > .large.dropdown-toggle {
  -webkit-border-top-right-radius: none;
          border-top-right-radius: none;
  -webkit-border-bottom-right-radius: none;
          border-bottom-right-radius: none;
  -moz-border-radius-topright: none;
  -moz-border-radius-bottomright: none;
}

.btn-group > .btn:hover,
.btn-group > .btn:focus,
.btn-group > .btn:active,
.btn-group > .btn.active {
  z-index: 2;
}

.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}

.btn-group > .btn + .dropdown-toggle {
  *padding-top: 5px;
  padding-right: 8px;
  *padding-bottom: 5px;
  padding-left: 8px;
  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
     -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
          box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
}

.btn-group > .btn-mini + .dropdown-toggle {
  *padding-top: 2px;
  padding-right: 5px;
  *padding-bottom: 2px;
  padding-left: 5px;
}

.btn-group > .btn-small + .dropdown-toggle {
  *padding-top: 5px;
  *padding-bottom: 4px;
}

.btn-group > .btn-large + .dropdown-toggle {
  *padding-top: 7px;
  padding-right: 12px;
  *padding-bottom: 7px;
  padding-left: 12px;
}

.btn-group.open .dropdown-toggle {
  background-image: none;
  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
}

.btn-group.open .btn.dropdown-toggle {
  background-color: #e6e6e6;
}

.btn-group.open .btn-primary.dropdown-toggle {
  background-color: #00eeee;
}

.btn-group.open .btn-warning.dropdown-toggle {
  background-color: #ffaa00;
}

.btn-group.open .btn-danger.dropdown-toggle {
  background-color: #ff0000;
}

.btn-group.open .btn-success.dropdown-toggle {
  background-color: #00ff00;
}

.btn-group.open .btn-info.dropdown-toggle {
  background-color: #00ffff;
}

.btn-group.open .btn-inverse.dropdown-toggle {
  background-color: #000000;
}

.btn .caret {
  margin-top: 8px;
  margin-left: 0;
}

.btn-large .caret {
  margin-top: 6px;
}

.btn-large .caret {
  border-top-width: 5px;
  border-right-width: 5px;
  border-left-width: 5px;
}

.btn-mini .caret,
.btn-small .caret {
  margin-top: 8px;
}

.dropup .btn-large .caret {
  border-bottom-width: 5px;
}

.btn-primary .caret,
.btn-warning .caret,
.btn-danger .caret,
.btn-info .caret,
.btn-success .caret,
.btn-inverse .caret {
  border-top-color: #ffffff;
  border-bottom-color: #ffffff;
}

.btn-group-vertical {
  display: inline-block;
  *display: inline;
  /* IE7 inline-block hack */

  *zoom: 1;
}

.btn-group-vertical > .btn {
  display: block;
  float: none;
  max-width: 100%;
  -webkit-border-radius: 0;
     -moz-border-radius: 0;
          border-radius: 0;
}

.btn-group-vertical > .btn + .btn {
  margin-top: -1px;
  margin-left: 0;
}

.btn-group-vertical > .btn:first-child {
  -webkit-border-radius: none none 0 0;
     -moz-border-radius: none none 0 0;
          border-radius: none none 0 0;
}

.btn-group-vertical > .btn:last-child {
  -webkit-border-radius: 0 0 none none;
     -moz-border-radius: 0 0 none none;
          border-radius: 0 0 none none;
}

.btn-group-vertical > .btn-large:first-child {
  -webkit-border-radius: none none 0 0;
     -moz-border-radius: none none 0 0;
          border-radius: none none 0 0;
}

.btn-group-vertical > .btn-large:last-child {
  -webkit-border-radius: 0 0 none none;
     -moz-border-radius: 0 0 none none;
          border-radius: 0 0 none none;
}

.alert {
  padding: 8px 35px 8px 14px;
  margin-bottom: 20px;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
  background-color: #ffff00;
  border: 1px solid #ff0000;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

.alert,
.alert h4 {
  color: #000000;
}

.alert h4 {
  margin: 0;
}

.alert .close {
  position: relative;
  top: -2px;
  right: -21px;
  line-height: 20px;
}

.alert-success {
  color: #ffffff;
  background-color: #008000;
  border-color: #00aa00;
}

.alert-success h4 {
  color: #ffffff;
}

.alert-danger,
.alert-error {
  color: #ffffff;
  background-color: #ff0000;
  border-color: #aa0000;
}

.alert-danger h4,
.alert-error h4 {
  color: #ffffff;
}

.alert-info {
  color: #000000;
  background-color: #00ffff;
  border-color: #aaaa00;
}

.alert-info h4 {
  color: #000000;
}

.alert-block {
  padding-top: 14px;
  padding-bottom: 14px;
}

.alert-block > p,
.alert-block > ul {
  margin-bottom: 0;
}

.alert-block p + p {
  margin-top: 5px;
}

.nav {
  margin-bottom: 20px;
  margin-left: 0;
  list-style: none;
}

.nav > li > a {
  display: block;
}

.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}

.nav > li > a > img {
  max-width: none;
}

.nav > .pull-right {
  float: right;
}

.nav-header {
  display: block;
  padding: 3px 15px;
  font-size: 11px;
  font-weight: bold;
  line-height: 20px;
  color: #999999;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
  text-transform: uppercase;
}

.nav li + .nav-header {
  margin-top: 9px;
}

.nav-list {
  padding-right: 15px;
  padding-left: 15px;
  margin-bottom: 0;
}

.nav-list > li > a,
.nav-list .nav-header {
  margin-right: -15px;
  margin-left: -15px;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
}

.nav-list > li > a {
  padding: 3px 15px;
}

.nav-list > .active > a,
.nav-list > .active > a:hover,
.nav-list > .active > a:focus {
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
  background-color: #00eeee;
}

.nav-list [class^="icon-"],
.nav-list [class*=" icon-"] {
  margin-right: 2px;
}

.nav-list .divider {
  *width: 100%;
  height: 1px;
  margin: 9px 1px;
  *margin: -5px 0 5px;
  overflow: hidden;
  background-color: #e5e5e5;
  border-bottom: 1px solid #ffffff;
}

.nav-tabs,
.nav-pills {
  *zoom: 1;
}

.nav-tabs:before,
.nav-pills:before,
.nav-tabs:after,
.nav-pills:after {
  display: table;
  line-height: 0;
  content: "";
}

.nav-tabs:after,
.nav-pills:after {
  clear: both;
}

.nav-tabs > li,
.nav-pills > li {
  float: left;
}

.nav-tabs > li > a,
.nav-pills > li > a {
  padding-right: 12px;
  padding-left: 12px;
  margin-right: 2px;
  line-height: 14px;
}

.nav-tabs {
  border-bottom: 1px solid #ddd;
}

.nav-tabs > li {
  margin-bottom: -1px;
}

.nav-tabs > li > a {
  padding-top: 8px;
  padding-bottom: 8px;
  line-height: 20px;
  border: 1px solid transparent;
  -webkit-border-radius: 4px 4px 0 0;
     -moz-border-radius: 4px 4px 0 0;
          border-radius: 4px 4px 0 0;
}

.nav-tabs > li > a:hover,
.nav-tabs > li > a:focus {
  border-color: #eeeeee #eeeeee #dddddd;
}

.nav-tabs > .active > a,
.nav-tabs > .active > a:hover,
.nav-tabs > .active > a:focus {
  color: #555555;
  cursor: default;
  background-color: #0000ff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
}

.nav-pills > li > a {
  padding-top: 8px;
  padding-bottom: 8px;
  margin-top: 2px;
  margin-bottom: 2px;
  -webkit-border-radius: 5px;
     -moz-border-radius: 5px;
          border-radius: 5px;
}

.nav-pills > .active > a,
.nav-pills > .active > a:hover,
.nav-pills > .active > a:focus {
  color: #ffffff;
  background-color: #00eeee;
}

.nav-stacked > li {
  float: none;
}

.nav-stacked > li > a {
  margin-right: 0;
}

.nav-tabs.nav-stacked {
  border-bottom: 0;
}

.nav-tabs.nav-stacked > li > a {
  border: 1px solid #ddd;
  -webkit-border-radius: 0;
     -moz-border-radius: 0;
          border-radius: 0;
}

.nav-tabs.nav-stacked > li:first-child > a {
  -webkit-border-top-right-radius: 4px;
          border-top-right-radius: 4px;
  -webkit-border-top-left-radius: 4px;
          border-top-left-radius: 4px;
  -moz-border-radius-topright: 4px;
  -moz-border-radius-topleft: 4px;
}

.nav-tabs.nav-stacked > li:last-child > a {
  -webkit-border-bottom-right-radius: 4px;
          border-bottom-right-radius: 4px;
  -webkit-border-bottom-left-radius: 4px;
          border-bottom-left-radius: 4px;
  -moz-border-radius-bottomright: 4px;
  -moz-border-radius-bottomleft: 4px;
}

.nav-tabs.nav-stacked > li > a:hover,
.nav-tabs.nav-stacked > li > a:focus {
  z-index: 2;
  border-color: #ddd;
}

.nav-pills.nav-stacked > li > a {
  margin-bottom: 3px;
}

.nav-pills.nav-stacked > li:last-child > a {
  margin-bottom: 1px;
}

.nav-tabs .dropdown-menu {
  -webkit-border-radius: 0 0 6px 6px;
     -moz-border-radius: 0 0 6px 6px;
          border-radius: 0 0 6px 6px;
}

.nav-pills .dropdown-menu {
  -webkit-border-radius: 6px;
     -moz-border-radius: 6px;
          border-radius: 6px;
}

.nav .dropdown-toggle .caret {
  margin-top: 6px;
  border-top-color: #00eeee;
  border-bottom-color: #00eeee;
}

.nav .dropdown-toggle:hover .caret,
.nav .dropdown-toggle:focus .caret {
  border-top-color: #00eeee;
  border-bottom-color: #00eeee;
}

/* move down carets for tabs */

.nav-tabs .dropdown-toggle .caret {
  margin-top: 8px;
}

.nav .active .dropdown-toggle .caret {
  border-top-color: #fff;
  border-bottom-color: #fff;
}

.nav-tabs .active .dropdown-toggle .caret {
  border-top-color: #555555;
  border-bottom-color: #555555;
}

.nav > .dropdown.active > a:hover,
.nav > .dropdown.active > a:focus {
  cursor: pointer;
}

.nav-tabs .open .dropdown-toggle,
.nav-pills .open .dropdown-toggle,
.nav > li.dropdown.open.active > a:hover,
.nav > li.dropdown.open.active > a:focus {
  color: #ffffff;
  background-color: #999999;
  border-color: #999999;
}

.nav li.dropdown.open .caret,
.nav li.dropdown.open.active .caret,
.nav li.dropdown.open a:hover .caret,
.nav li.dropdown.open a:focus .caret {
  border-top-color: #ffffff;
  border-bottom-color: #ffffff;
  opacity: 1;
  filter: alpha(opacity=100);
}

.tabs-stacked .open > a:hover,
.tabs-stacked .open > a:focus {
  border-color: #999999;
}

.tabbable {
  *zoom: 1;
}

.tabbable:before,
.tabbable:after {
  display: table;
  line-height: 0;
  content: "";
}

.tabbable:after {
  clear: both;
}

.tab-content {
  overflow: auto;
}

.tabs-below > .nav-tabs,
.tabs-right > .nav-tabs,
.tabs-left > .nav-tabs {
  border-bottom: 0;
}

.tab-content > .tab-pane,
.pill-content > .pill-pane {
  display: none;
}

.tab-content > .active,
.pill-content > .active {
  display: block;
}

.tabs-below > .nav-tabs {
  border-top: 1px solid #ddd;
}

.tabs-below > .nav-tabs > li {
  margin-top: -1px;
  margin-bottom: 0;
}

.tabs-below > .nav-tabs > li > a {
  -webkit-border-radius: 0 0 4px 4px;
     -moz-border-radius: 0 0 4px 4px;
          border-radius: 0 0 4px 4px;
}

.tabs-below > .nav-tabs > li > a:hover,
.tabs-below > .nav-tabs > li > a:focus {
  border-top-color: #ddd;
  border-bottom-color: transparent;
}

.tabs-below > .nav-tabs > .active > a,
.tabs-below > .nav-tabs > .active > a:hover,
.tabs-below > .nav-tabs > .active > a:focus {
  border-color: transparent #ddd #ddd #ddd;
}

.tabs-left > .nav-tabs > li,
.tabs-right > .nav-tabs > li {
  float: none;
}

.tabs-left > .nav-tabs > li > a,
.tabs-right > .nav-tabs > li > a {
  min-width: 74px;
  margin-right: 0;
  margin-bottom: 3px;
}

.tabs-left > .nav-tabs {
  float: left;
  margin-right: 19px;
  border-right: 1px solid #ddd;
}

.tabs-left > .nav-tabs > li > a {
  margin-right: -1px;
  -webkit-border-radius: 4px 0 0 4px;
     -moz-border-radius: 4px 0 0 4px;
          border-radius: 4px 0 0 4px;
}

.tabs-left > .nav-tabs > li > a:hover,
.tabs-left > .nav-tabs > li > a:focus {
  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
}

.tabs-left > .nav-tabs .active > a,
.tabs-left > .nav-tabs .active > a:hover,
.tabs-left > .nav-tabs .active > a:focus {
  border-color: #ddd transparent #ddd #ddd;
  *border-right-color: #ffffff;
}

.tabs-right > .nav-tabs {
  float: right;
  margin-left: 19px;
  border-left: 1px solid #ddd;
}

.tabs-right > .nav-tabs > li > a {
  margin-left: -1px;
  -webkit-border-radius: 0 4px 4px 0;
     -moz-border-radius: 0 4px 4px 0;
          border-radius: 0 4px 4px 0;
}

.tabs-right > .nav-tabs > li > a:hover,
.tabs-right > .nav-tabs > li > a:focus {
  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
}

.tabs-right > .nav-tabs .active > a,
.tabs-right > .nav-tabs .active > a:hover,
.tabs-right > .nav-tabs .active > a:focus {
  border-color: #ddd #ddd #ddd transparent;
  *border-left-color: #ffffff;
}

.nav > .disabled > a {
  color: #999999;
}

.nav > .disabled > a:hover,
.nav > .disabled > a:focus {
  text-decoration: none;
  cursor: default;
  background-color: transparent;
}

.navbar {
  *position: relative;
  *z-index: 2;
  margin-bottom: 20px;
  overflow: visible;
}

.navbar-inner {
  min-height: 40px;
  padding-right: 20px;
  padding-left: 20px;
  background-color: #000000;
  background-image: -moz-linear-gradient(top, #000000, #000000);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#000000), to(#000000));
  background-image: -webkit-linear-gradient(top, #000000, #000000);
  background-image: -o-linear-gradient(top, #000000, #000000);
  background-image: linear-gradient(to bottom, #000000, #000000);
  background-repeat: repeat-x;
  border: 1px solid #000000;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff000000', endColorstr='#ff000000', GradientType=0);
  *zoom: 1;
  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
     -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
          box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
}

.navbar-inner:before,
.navbar-inner:after {
  display: table;
  line-height: 0;
  content: "";
}

.navbar-inner:after {
  clear: both;
}

.navbar .container {
  width: auto;
}

.nav-collapse.collapse {
  height: auto;
  overflow: visible;
}

.navbar .brand {
  display: block;
  float: left;
  padding: 10px 20px 10px;
  margin-left: -20px;
  font-size: 20px;
  font-weight: 200;
  color: #00ff00;
  text-shadow: 0 1px 0 #000000;
}

.navbar .brand:hover,
.navbar .brand:focus {
  text-decoration: none;
}

.navbar-text {
  margin-bottom: 0;
  line-height: 40px;
  color: #ff00ff;
}

.navbar-link {
  color: #00ff00;
}

.navbar-link:hover,
.navbar-link:focus {
  color: #333333;
}

.navbar .divider-vertical {
  height: 40px;
  margin: 0 9px;
  border-right: 1px solid #000000;
  border-left: 1px solid #000000;
}

.navbar .btn,
.navbar .btn-group {
  margin-top: 5px;
}

.navbar .btn-group .btn,
.navbar .input-prepend .btn,
.navbar .input-append .btn,
.navbar .input-prepend .btn-group,
.navbar .input-append .btn-group {
  margin-top: 0;
}

.navbar-form {
  margin-bottom: 0;
  *zoom: 1;
}

.navbar-form:before,
.navbar-form:after {
  display: table;
  line-height: 0;
  content: "";
}

.navbar-form:after {
  clear: both;
}

.navbar-form input,
.navbar-form select,
.navbar-form .radio,
.navbar-form .checkbox {
  margin-top: 5px;
}

.navbar-form input,
.navbar-form select,
.navbar-form .btn {
  display: inline-block;
  margin-bottom: 0;
}

.navbar-form input[type="image"],
.navbar-form input[type="checkbox"],
.navbar-form input[type="radio"] {
  margin-top: 3px;
}

.navbar-form .input-append,
.navbar-form .input-prepend {
  margin-top: 5px;
  white-space: nowrap;
}

.navbar-form .input-append input,
.navbar-form .input-prepend input {
  margin-top: 0;
}

.navbar-search {
  position: relative;
  float: left;
  margin-top: 5px;
  margin-bottom: 0;
}

.navbar-search .search-query {
  padding: 4px 14px;
  margin-bottom: 0;
  font-family: "Comic Sans", "Comic Sans MS", "Chalkboard", "ChalkboardSE-Regular", "Marker Felt", "Purisa", "URW Chancery L", cursive, sans-serif;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  -webkit-border-radius: 15px;
     -moz-border-radius: 15px;
          border-radius: 15px;
}

.navbar-static-top {
  position: static;
  margin-bottom: 0;
}

.navbar-static-top .navbar-inner {
  -webkit-border-radius: 0;
     -moz-border-radius: 0;
          border-radius: 0;
}

.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
  margin-bottom: 0;
}

.navbar-fixed-top .navbar-inner,
.navbar-static-top .navbar-inner {
  border-width: 0 0 1px;
}

.navbar-fixed-bottom .navbar-inner {
  border-width: 1px 0 0;
}

.navbar-fixed-top .navbar-inner,
.navbar-fixed-bottom .navbar-inner {
  padding-right: 0;
  padding-left: 0;
  -webkit-border-radius: 0;
     -moz-border-radius: 0;
          border-radius: 0;
}

.navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
  width: 940px;
}

.navbar-fixed-top {
  top: 0;
}

.navbar-fixed-top .navbar-inner,
.navbar-static-top .navbar-inner {
  -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
     -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
          box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
}

.navbar-fixed-bottom {
  bottom: 0;
}

.navbar-fixed-bottom .navbar-inner {
  -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
     -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
          box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
}

.navbar .nav {
  position: relative;
  left: 0;
  display: block;
  float: left;
  margin: 0 10px 0 0;
}

.navbar .nav.pull-right {
  float: right;
  margin-right: 0;
}

.navbar .nav > li {
  float: left;
}

.navbar .nav > li > a {
  float: none;
  padding: 10px 15px 10px;
  color: #00ff00;
  text-decoration: none;
  text-shadow: 0 1px 0 #000000;
}

.navbar .nav .dropdown-toggle .caret {
  margin-top: 8px;
}

.navbar .nav > li > a:focus,
.navbar .nav > li > a:hover {
  color: #333333;
  text-decoration: none;
  background-color: transparent;
}

.navbar .nav > .active > a,
.navbar .nav > .active > a:hover,
.navbar .nav > .active > a:focus {
  color: #555555;
  text-decoration: none;
  background-color: #000000;
  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
     -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
          box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
}

.navbar .btn-navbar {
  display: none;
  float: right;
  padding: 7px 10px;
  margin-right: 5px;
  margin-left: 5px;
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #000000;
  *background-color: #000000;
  background-image: -moz-linear-gradient(top, #000000, #000000);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#000000), to(#000000));
  background-image: -webkit-linear-gradient(top, #000000, #000000);
  background-image: -o-linear-gradient(top, #000000, #000000);
  background-image: linear-gradient(to bottom, #000000, #000000);
  background-repeat: repeat-x;
  border-color: #000000 #000000 #000000;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff000000', endColorstr='#ff000000', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
}

.navbar .btn-navbar:hover,
.navbar .btn-navbar:focus,
.navbar .btn-navbar:active,
.navbar .btn-navbar.active,
.navbar .btn-navbar.disabled,
.navbar .btn-navbar[disabled] {
  color: #ffffff;
  background-color: #000000;
  *background-color: #000000;
}

.navbar .btn-navbar:active,
.navbar .btn-navbar.active {
  background-color: #000000 \9;
}

.navbar .btn-navbar .icon-bar {
  display: block;
  width: 18px;
  height: 2px;
  background-color: #f5f5f5;
  -webkit-border-radius: 1px;
     -moz-border-radius: 1px;
          border-radius: 1px;
  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
     -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
          box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
}

.btn-navbar .icon-bar + .icon-bar {
  margin-top: 3px;
}

.navbar .nav > li > .dropdown-menu:before {
  position: absolute;
  top: -7px;
  left: 9px;
  display: inline-block;
  border-right: 7px solid transparent;
  border-bottom: 7px solid #ccc;
  border-left: 7px solid transparent;
  border-bottom-color: rgba(0, 0, 0, 0.2);
  content: '';
}

.navbar .nav > li > .dropdown-menu:after {
  position: absolute;
  top: -6px;
  left: 10px;
  display: inline-block;
  border-right: 6px solid transparent;
  border-bottom: 6px solid #ffffff;
  border-left: 6px solid transparent;
  content: '';
}

.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
  top: auto;
  bottom: -7px;
  border-top: 7px solid #ccc;
  border-bottom: 0;
  border-top-color: rgba(0, 0, 0, 0.2);
}

.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
  top: auto;
  bottom: -6px;
  border-top: 6px solid #ffffff;
  border-bottom: 0;
}

.navbar .nav li.dropdown > a:hover .caret,
.navbar .nav li.dropdown > a:focus .caret {
  border-top-color: #333333;
  border-bottom-color: #333333;
}

.navbar .nav li.dropdown.open > .dropdown-toggle,
.navbar .nav li.dropdown.active > .dropdown-toggle,
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
  color: #555555;
  background-color: #000000;
}

.navbar .nav li.dropdown > .dropdown-toggle .caret {
  border-top-color: #00ff00;
  border-bottom-color: #00ff00;
}

.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
  border-top-color: #555555;
  border-bottom-color: #555555;
}

.navbar .pull-right > li > .dropdown-menu,
.navbar .nav > li > .dropdown-menu.pull-right {
  right: 0;
  left: auto;
}

.navbar .pull-right > li > .dropdown-menu:before,
.navbar .nav > li > .dropdown-menu.pull-right:before {
  right: 12px;
  left: auto;
}

.navbar .pull-right > li > .dropdown-menu:after,
.navbar .nav > li > .dropdown-menu.pull-right:after {
  right: 13px;
  left: auto;
}

.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
  right: 100%;
  left: auto;
  margin-right: -1px;
  margin-left: 0;
  -webkit-border-radius: 6px 0 6px 6px;
     -moz-border-radius: 6px 0 6px 6px;
          border-radius: 6px 0 6px 6px;
}

.navbar-inverse .navbar-inner {
  background-color: #ff00ff;
  background-image: -moz-linear-gradient(top, #ff00ff, #ff00ff);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff00ff), to(#ff00ff));
  background-image: -webkit-linear-gradient(top, #ff00ff, #ff00ff);
  background-image: -o-linear-gradient(top, #ff00ff, #ff00ff);
  background-image: linear-gradient(to bottom, #ff00ff, #ff00ff);
  background-repeat: repeat-x;
  border-color: #008000;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00ff', endColorstr='#ffff00ff', GradientType=0);
}

.navbar-inverse .brand,
.navbar-inverse .nav > li > a {
  color: #0000ff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}

.navbar-inverse .brand:hover,
.navbar-inverse .nav > li > a:hover,
.navbar-inverse .brand:focus,
.navbar-inverse .nav > li > a:focus {
  color: #0000ff;
}

.navbar-inverse .brand {
  color: #0000ff;
}

.navbar-inverse .navbar-text {
  color: #000000;
}

.navbar-inverse .nav > li > a:focus,
.navbar-inverse .nav > li > a:hover {
  color: #0000ff;
  background-color: transparent;
}

.navbar-inverse .nav .active > a,
.navbar-inverse .nav .active > a:hover,
.navbar-inverse .nav .active > a:focus {
  color: #0000ff;
  background-color: #ff00ff;
}

.navbar-inverse .navbar-link {
  color: #0000ff;
}

.navbar-inverse .navbar-link:hover,
.navbar-inverse .navbar-link:focus {
  color: #0000ff;
}

.navbar-inverse .divider-vertical {
  border-right-color: #ff00ff;
  border-left-color: #ff00ff;
}

.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
  color: #0000ff;
  background-color: #ff00ff;
}

.navbar-inverse .nav li.dropdown > a:hover .caret,
.navbar-inverse .nav li.dropdown > a:focus .caret {
  border-top-color: #0000ff;
  border-bottom-color: #0000ff;
}

.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
  border-top-color: #0000ff;
  border-bottom-color: #0000ff;
}

.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
  border-top-color: #0000ff;
  border-bottom-color: #0000ff;
}

.navbar-inverse .navbar-search .search-query {
  color: #ffffff;
  background-color: #ff80ff;
  border-color: #ff00ff;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
  -webkit-transition: none;
     -moz-transition: none;
       -o-transition: none;
          transition: none;
}

.navbar-inverse .navbar-search .search-query:-moz-placeholder {
  color: #cccccc;
}

.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
  color: #cccccc;
}

.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
  color: #cccccc;
}

.navbar-inverse .navbar-search .search-query:focus,
.navbar-inverse .navbar-search .search-query.focused {
  padding: 5px 15px;
  color: #333333;
  text-shadow: 0 1px 0 #ffffff;
  background-color: #ffffff;
  border: 0;
  outline: 0;
  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
     -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
          box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
}

.navbar-inverse .btn-navbar {
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #e600e5;
  *background-color: #e600e5;
  background-image: -moz-linear-gradient(top, #e600e5, #e600e5);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e600e5), to(#e600e5));
  background-image: -webkit-linear-gradient(top, #e600e5, #e600e5);
  background-image: -o-linear-gradient(top, #e600e5, #e600e5);
  background-image: linear-gradient(to bottom, #e600e5, #e600e5);
  background-repeat: repeat-x;
  border-color: #e600e5 #e600e5 #990099;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe600e5', endColorstr='#ffe600e5', GradientType=0);
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
}

.navbar-inverse .btn-navbar:hover,
.navbar-inverse .btn-navbar:focus,
.navbar-inverse .btn-navbar:active,
.navbar-inverse .btn-navbar.active,
.navbar-inverse .btn-navbar.disabled,
.navbar-inverse .btn-navbar[disabled] {
  color: #ffffff;
  background-color: #e600e5;
  *background-color: #cc00cc;
}

.navbar-inverse .btn-navbar:active,
.navbar-inverse .btn-navbar.active {
  background-color: #b300b2 \9;
}

.breadcrumb {
  padding: 8px 15px;
  margin: 0 0 20px;
  list-style: none;
  background-color: #f5f5f5;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

.breadcrumb > li {
  display: inline-block;
  *display: inline;
  text-shadow: 0 1px 0 #ffffff;
  *zoom: 1;
}

.breadcrumb > li > .divider {
  padding: 0 5px;
  color: #ccc;
}

.breadcrumb > .active {
  color: #999999;
}

.pagination {
  margin: 20px 0;
}

.pagination ul {
  display: inline-block;
  *display: inline;
  margin-bottom: 0;
  margin-left: 0;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
  *zoom: 1;
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
     -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.pagination ul > li {
  display: inline;
}

.pagination ul > li > a,
.pagination ul > li > span {
  float: left;
  padding: 4px 12px;
  line-height: 20px;
  text-decoration: none;
  background-color: #ffffff;
  border: 1px solid #dddddd;
  border-left-width: 0;
}

.pagination ul > li > a:hover,
.pagination ul > li > a:focus,
.pagination ul > .active > a,
.pagination ul > .active > span {
  background-color: #f5f5f5;
}

.pagination ul > .active > a,
.pagination ul > .active > span {
  color: #999999;
  cursor: default;
}

.pagination ul > .disabled > span,
.pagination ul > .disabled > a,
.pagination ul > .disabled > a:hover,
.pagination ul > .disabled > a:focus {
  color: #999999;
  cursor: default;
  background-color: transparent;
}

.pagination ul > li:first-child > a,
.pagination ul > li:first-child > span {
  border-left-width: 1px;
  -webkit-border-bottom-left-radius: none;
          border-bottom-left-radius: none;
  -webkit-border-top-left-radius: none;
          border-top-left-radius: none;
  -moz-border-radius-bottomleft: none;
  -moz-border-radius-topleft: none;
}

.pagination ul > li:last-child > a,
.pagination ul > li:last-child > span {
  -webkit-border-top-right-radius: none;
          border-top-right-radius: none;
  -webkit-border-bottom-right-radius: none;
          border-bottom-right-radius: none;
  -moz-border-radius-topright: none;
  -moz-border-radius-bottomright: none;
}

.pagination-centered {
  text-align: center;
}

.pagination-right {
  text-align: right;
}

.pagination-large ul > li > a,
.pagination-large ul > li > span {
  padding: 11px 19px;
  font-size: 20px;
}

.pagination-large ul > li:first-child > a,
.pagination-large ul > li:first-child > span {
  -webkit-border-bottom-left-radius: none;
          border-bottom-left-radius: none;
  -webkit-border-top-left-radius: none;
          border-top-left-radius: none;
  -moz-border-radius-bottomleft: none;
  -moz-border-radius-topleft: none;
}

.pagination-large ul > li:last-child > a,
.pagination-large ul > li:last-child > span {
  -webkit-border-top-right-radius: none;
          border-top-right-radius: none;
  -webkit-border-bottom-right-radius: none;
          border-bottom-right-radius: none;
  -moz-border-radius-topright: none;
  -moz-border-radius-bottomright: none;
}

.pagination-mini ul > li:first-child > a,
.pagination-small ul > li:first-child > a,
.pagination-mini ul > li:first-child > span,
.pagination-small ul > li:first-child > span {
  -webkit-border-bottom-left-radius: none;
          border-bottom-left-radius: none;
  -webkit-border-top-left-radius: none;
          border-top-left-radius: none;
  -moz-border-radius-bottomleft: none;
  -moz-border-radius-topleft: none;
}

.pagination-mini ul > li:last-child > a,
.pagination-small ul > li:last-child > a,
.pagination-mini ul > li:last-child > span,
.pagination-small ul > li:last-child > span {
  -webkit-border-top-right-radius: none;
          border-top-right-radius: none;
  -webkit-border-bottom-right-radius: none;
          border-bottom-right-radius: none;
  -moz-border-radius-topright: none;
  -moz-border-radius-bottomright: none;
}

.pagination-small ul > li > a,
.pagination-small ul > li > span {
  padding: 2px 10px;
  font-size: 13.6px;
}

.pagination-mini ul > li > a,
.pagination-mini ul > li > span {
  padding: 1px 6px;
  font-size: 12px;
}

.pager {
  margin: 20px 0;
  text-align: center;
  list-style: none;
  *zoom: 1;
}

.pager:before,
.pager:after {
  display: table;
  line-height: 0;
  content: "";
}

.pager:after {
  clear: both;
}

.pager li {
  display: inline;
}

.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  -webkit-border-radius: 15px;
     -moz-border-radius: 15px;
          border-radius: 15px;
}

.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #f5f5f5;
}

.pager .next > a,
.pager .next > span {
  float: right;
}

.pager .previous > a,
.pager .previous > span {
  float: left;
}

.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #999999;
  cursor: default;
  background-color: #fff;
}

.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000000;
}

.modal-backdrop.fade {
  opacity: 0;
}

.modal-backdrop,
.modal-backdrop.fade.in {
  opacity: 0.8;
  filter: alpha(opacity=80);
}

.modal {
  position: fixed;
  top: 10%;
  left: 50%;
  z-index: 1050;
  width: 560px;
  margin-left: -280px;
  background-color: #ffffff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.3);
  *border: 1px solid #999;
  -webkit-border-radius: 6px;
     -moz-border-radius: 6px;
          border-radius: 6px;
  outline: none;
  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
     -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
          box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
  -webkit-background-clip: padding-box;
     -moz-background-clip: padding-box;
          background-clip: padding-box;
}

.modal.fade {
  top: -25%;
  -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;
     -moz-transition: opacity 0.3s linear, top 0.3s ease-out;
       -o-transition: opacity 0.3s linear, top 0.3s ease-out;
          transition: opacity 0.3s linear, top 0.3s ease-out;
}

.modal.fade.in {
  top: 10%;
}

.modal-header {
  padding: 9px 15px;
  border-bottom: 1px solid #eee;
}

.modal-header .close {
  margin-top: 2px;
}

.modal-header h3 {
  margin: 0;
  line-height: 30px;
}

.modal-body {
  position: relative;
  max-height: 400px;
  padding: 15px;
  overflow-y: auto;
}

.modal-form {
  margin-bottom: 0;
}

.modal-footer {
  padding: 14px 15px 15px;
  margin-bottom: 0;
  text-align: right;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  -webkit-border-radius: 0 0 6px 6px;
     -moz-border-radius: 0 0 6px 6px;
          border-radius: 0 0 6px 6px;
  *zoom: 1;
  -webkit-box-shadow: inset 0 1px 0 #ffffff;
     -moz-box-shadow: inset 0 1px 0 #ffffff;
          box-shadow: inset 0 1px 0 #ffffff;
}

.modal-footer:before,
.modal-footer:after {
  display: table;
  line-height: 0;
  content: "";
}

.modal-footer:after {
  clear: both;
}

.modal-footer .btn + .btn {
  margin-bottom: 0;
  margin-left: 5px;
}

.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}

.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}

.tooltip {
  position: absolute;
  z-index: 1030;
  display: block;
  font-size: 11px;
  line-height: 1.4;
  opacity: 0;
  filter: alpha(opacity=0);
  visibility: visible;
}

.tooltip.in {
  opacity: 0.8;
  filter: alpha(opacity=80);
}

.tooltip.top {
  padding: 5px 0;
  margin-top: -3px;
}

.tooltip.right {
  padding: 0 5px;
  margin-left: 3px;
}

.tooltip.bottom {
  padding: 5px 0;
  margin-top: 3px;
}

.tooltip.left {
  padding: 0 5px;
  margin-left: -3px;
}

.tooltip-inner {
  max-width: 200px;
  padding: 8px;
  color: #ffffff;
  text-align: center;
  text-decoration: none;
  background-color: #000000;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}

.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-top-color: #000000;
  border-width: 5px 5px 0;
}

.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-right-color: #000000;
  border-width: 5px 5px 5px 0;
}

.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-left-color: #000000;
  border-width: 5px 0 5px 5px;
}

.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-bottom-color: #000000;
  border-width: 0 5px 5px;
}

.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1010;
  display: none;
  max-width: 276px;
  padding: 1px;
  text-align: left;
  white-space: normal;
  background-color: #ffffff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  -webkit-border-radius: 6px;
     -moz-border-radius: 6px;
          border-radius: 6px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  -webkit-background-clip: padding-box;
     -moz-background-clip: padding;
          background-clip: padding-box;
}

.popover.top {
  margin-top: -10px;
}

.popover.right {
  margin-left: 10px;
}

.popover.bottom {
  margin-top: 10px;
}

.popover.left {
  margin-left: -10px;
}

.popover-title {
  padding: 8px 14px;
  margin: 0;
  font-size: 14px;
  font-weight: normal;
  line-height: 18px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  -webkit-border-radius: 5px 5px 0 0;
     -moz-border-radius: 5px 5px 0 0;
          border-radius: 5px 5px 0 0;
}

.popover-title:empty {
  display: none;
}

.popover-content {
  padding: 9px 14px;
}

.popover .arrow,
.popover .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}

.popover .arrow {
  border-width: 11px;
}

.popover .arrow:after {
  border-width: 10px;
  content: "";
}

.popover.top .arrow {
  bottom: -11px;
  left: 50%;
  margin-left: -11px;
  border-top-color: #999;
  border-top-color: rgba(0, 0, 0, 0.25);
  border-bottom-width: 0;
}

.popover.top .arrow:after {
  bottom: 1px;
  margin-left: -10px;
  border-top-color: #ffffff;
  border-bottom-width: 0;
}

.popover.right .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-right-color: #999;
  border-right-color: rgba(0, 0, 0, 0.25);
  border-left-width: 0;
}

.popover.right .arrow:after {
  bottom: -10px;
  left: 1px;
  border-right-color: #ffffff;
  border-left-width: 0;
}

.popover.bottom .arrow {
  top: -11px;
  left: 50%;
  margin-left: -11px;
  border-bottom-color: #999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  border-top-width: 0;
}

.popover.bottom .arrow:after {
  top: 1px;
  margin-left: -10px;
  border-bottom-color: #ffffff;
  border-top-width: 0;
}

.popover.left .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-left-color: #999;
  border-left-color: rgba(0, 0, 0, 0.25);
  border-right-width: 0;
}

.popover.left .arrow:after {
  right: 1px;
  bottom: -10px;
  border-left-color: #ffffff;
  border-right-width: 0;
}

.thumbnails {
  margin-left: -20px;
  list-style: none;
  *zoom: 1;
}

.thumbnails:before,
.thumbnails:after {
  display: table;
  line-height: 0;
  content: "";
}

.thumbnails:after {
  clear: both;
}

.row-fluid .thumbnails {
  margin-left: 0;
}

.thumbnails > li {
  float: left;
  margin-bottom: 20px;
  margin-left: 20px;
}

.thumbnail {
  display: block;
  padding: 4px;
  line-height: 20px;
  border: 1px solid #ddd;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
  -webkit-transition: all 0.2s ease-in-out;
     -moz-transition: all 0.2s ease-in-out;
       -o-transition: all 0.2s ease-in-out;
          transition: all 0.2s ease-in-out;
}

a.thumbnail:hover,
a.thumbnail:focus {
  border-color: #00eeee;
  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
     -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
          box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
}

.thumbnail > img {
  display: block;
  max-width: 100%;
  margin-right: auto;
  margin-left: auto;
}

.thumbnail .caption {
  padding: 9px;
  color: #555555;
}

.media,
.media-body {
  overflow: hidden;
  *overflow: visible;
  zoom: 1;
}

.media,
.media .media {
  margin-top: 15px;
}

.media:first-child {
  margin-top: 0;
}

.media-object {
  display: block;
}

.media-heading {
  margin: 0 0 5px;
}

.media > .pull-left {
  margin-right: 10px;
}

.media > .pull-right {
  margin-left: 10px;
}

.media-list {
  margin-left: 0;
  list-style: none;
}

.label,
.badge {
  display: inline-block;
  padding: 2px 4px;
  font-size: 13.536px;
  font-weight: bold;
  line-height: 14px;
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  white-space: nowrap;
  vertical-align: baseline;
  background-color: #999999;
}

.label {
  -webkit-border-radius: 3px;
     -moz-border-radius: 3px;
          border-radius: 3px;
}

.badge {
  padding-right: 9px;
  padding-left: 9px;
  -webkit-border-radius: 9px;
     -moz-border-radius: 9px;
          border-radius: 9px;
}

.label:empty,
.badge:empty {
  display: none;
}

a.label:hover,
a.label:focus,
a.badge:hover,
a.badge:focus {
  color: #ffffff;
  text-decoration: none;
  cursor: pointer;
}

.label-important,
.badge-important {
  background-color: #ffffff;
}

.label-important[href],
.badge-important[href] {
  background-color: #e6e6e6;
}

.label-warning,
.badge-warning {
  background-color: #ffaa00;
}

.label-warning[href],
.badge-warning[href] {
  background-color: #cc8800;
}

.label-success,
.badge-success {
  background-color: #ffffff;
}

.label-success[href],
.badge-success[href] {
  background-color: #e6e6e6;
}

.label-info,
.badge-info {
  background-color: #000000;
}

.label-info[href],
.badge-info[href] {
  background-color: #000000;
}

.label-inverse,
.badge-inverse {
  background-color: #333333;
}

.label-inverse[href],
.badge-inverse[href] {
  background-color: #1a1a1a;
}

.btn .label,
.btn .badge {
  position: relative;
  top: -1px;
}

.btn-mini .label,
.btn-mini .badge {
  top: 0;
}

@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}

@-moz-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}

@-ms-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}

@-o-keyframes progress-bar-stripes {
  from {
    background-position: 0 0;
  }
  to {
    background-position: 40px 0;
  }
}

@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}

.progress {
  height: 20px;
  margin-bottom: 20px;
  overflow: hidden;
  background-color: #f7f7f7;
  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
  background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
  background-repeat: repeat-x;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}

.progress .bar {
  float: left;
  width: 0;
  height: 100%;
  font-size: 12px;
  color: #ffffff;
  text-align: center;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #0e90d2;
  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
  background-image: -o-linear-gradient(top, #149bdf, #0480be);
  background-image: linear-gradient(to bottom, #149bdf, #0480be);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
  -webkit-transition: width 0.6s ease;
     -moz-transition: width 0.6s ease;
       -o-transition: width 0.6s ease;
          transition: width 0.6s ease;
}

.progress .bar + .bar {
  -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
     -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
          box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
}

.progress-striped .bar {
  background-color: #149bdf;
  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  -webkit-background-size: 40px 40px;
     -moz-background-size: 40px 40px;
       -o-background-size: 40px 40px;
          background-size: 40px 40px;
}

.progress.active .bar {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
     -moz-animation: progress-bar-stripes 2s linear infinite;
      -ms-animation: progress-bar-stripes 2s linear infinite;
       -o-animation: progress-bar-stripes 2s linear infinite;
          animation: progress-bar-stripes 2s linear infinite;
}

.progress-danger .bar,
.progress .bar-danger {
  background-color: #dd514c;
  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
  background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
}

.progress-danger.progress-striped .bar,
.progress-striped .bar-danger {
  background-color: #ee5f5b;
  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}

.progress-success .bar,
.progress .bar-success {
  background-color: #5eb95e;
  background-image: -moz-linear-gradient(top, #62c462, #57a957);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
  background-image: -o-linear-gradient(top, #62c462, #57a957);
  background-image: linear-gradient(to bottom, #62c462, #57a957);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
}

.progress-success.progress-striped .bar,
.progress-striped .bar-success {
  background-color: #62c462;
  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}

.progress-info .bar,
.progress .bar-info {
  background-color: #4bb1cf;
  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
  background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
}

.progress-info.progress-striped .bar,
.progress-striped .bar-info {
  background-color: #5bc0de;
  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}

.progress-warning .bar,
.progress .bar-warning {
  background-color: #ffb92e;
  background-image: -moz-linear-gradient(top, #ffc34d, #ffaa00);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffc34d), to(#ffaa00));
  background-image: -webkit-linear-gradient(top, #ffc34d, #ffaa00);
  background-image: -o-linear-gradient(top, #ffc34d, #ffaa00);
  background-image: linear-gradient(to bottom, #ffc34d, #ffaa00);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffc34d', endColorstr='#ffffaa00', GradientType=0);
}

.progress-warning.progress-striped .bar,
.progress-striped .bar-warning {
  background-color: #ffc34d;
  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}

.accordion {
  margin-bottom: 20px;
}

.accordion-group {
  margin-bottom: 2px;
  border: 1px solid #e5e5e5;
  -webkit-border-radius: none;
     -moz-border-radius: none;
          border-radius: none;
}

.accordion-heading {
  border-bottom: 0;
}

.accordion-heading .accordion-toggle {
  display: block;
  padding: 8px 15px;
}

.accordion-toggle {
  cursor: pointer;
}

.accordion-inner {
  padding: 9px 15px;
  border-top: 1px solid #e5e5e5;
}

.carousel {
  position: relative;
  margin-bottom: 20px;
  line-height: 1;
}

.carousel-inner {
  position: relative;
  width: 100%;
  overflow: hidden;
}

.carousel-inner > .item {
  position: relative;
  display: none;
  -webkit-transition: 0.6s ease-in-out left;
     -moz-transition: 0.6s ease-in-out left;
       -o-transition: 0.6s ease-in-out left;
          transition: 0.6s ease-in-out left;
}

.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  line-height: 1;
}

.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
  display: block;
}

.carousel-inner > .active {
  left: 0;
}

.carousel-inner > .next,
.carousel-inner > .prev {
  position: absolute;
  top: 0;
  width: 100%;
}

.carousel-inner > .next {
  left: 100%;
}

.carousel-inner > .prev {
  left: -100%;
}

.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  left: 0;
}

.carousel-inner > .active.left {
  left: -100%;
}

.carousel-inner > .active.right {
  left: 100%;
}

.carousel-control {
  position: absolute;
  top: 40%;
  left: 15px;
  width: 40px;
  height: 40px;
  margin-top: -20px;
  font-size: 60px;
  font-weight: 100;
  line-height: 30px;
  color: #ffffff;
  text-align: center;
  background: #222222;
  border: 3px solid #ffffff;
  -webkit-border-radius: 23px;
     -moz-border-radius: 23px;
          border-radius: 23px;
  opacity: 0.5;
  filter: alpha(opacity=50);
}

.carousel-control.right {
  right: 15px;
  left: auto;
}

.carousel-control:hover,
.carousel-control:focus {
  color: #ffffff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}

.carousel-indicators {
  position: absolute;
  top: 15px;
  right: 15px;
  z-index: 5;
  margin: 0;
  list-style: none;
}

.carousel-indicators li {
  display: block;
  float: left;
  width: 10px;
  height: 10px;
  margin-left: 5px;
  text-indent: -999px;
  background-color: #ccc;
  background-color: rgba(255, 255, 255, 0.25);
  border-radius: 5px;
}

.carousel-indicators .active {
  background-color: #fff;
}

.carousel-caption {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  padding: 15px;
  background: #333333;
  background: rgba(0, 0, 0, 0.75);
}

.carousel-caption h4,
.carousel-caption p {
  line-height: 20px;
  color: #ffffff;
}

.carousel-caption h4 {
  margin: 0 0 5px;
}

.carousel-caption p {
  margin-bottom: 0;
}

.hero-unit {
  padding: 60px;
  margin-bottom: 30px;
  font-size: 18px;
  font-weight: 200;
  line-height: 30px;
  color: inherit;
  background-color: #eeeeee;
  -webkit-border-radius: 6px;
     -moz-border-radius: 6px;
          border-radius: 6px;
}

.hero-unit h1 {
  margin-bottom: 0;
  font-size: 60px;
  line-height: 1;
  letter-spacing: -1px;
  color: inherit;
}

.hero-unit li {
  line-height: 30px;
}

.pull-right {
  float: right;
}

.pull-left {
  float: left;
}

.hide {
  display: none;
}

.show {
  display: block;
}

.invisible {
  visibility: hidden;
}

.affix {
  position: fixed;
}

h1 {
  color: #ff0000;
}

h2 {
  color: #ffcc00;
}

h3 {
  color: #ffff00;
}

h4 {
  color: #66ff00;
}

h5 {
  color: #0000ff;
}

h6 {
  color: #ff00ff;
}

.page-header {
  border-bottom: 1px solid #B6B2A3;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), 0 1px 0 #eae7d8;
     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), 0 1px 0 #eae7d8;
          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), 0 1px 0 #eae7d8;
}

a {
  text-decoration: underline;
}

a:hover {
  text-decoration: underline !important;
}

blink {
  -webkit-animation: blink 1s linear infinite;
     -moz-animation: blink 1s linear infinite;
      -ms-animation: blink 1s linear infinite;
       -o-animation: blink 1s linear infinite;
          animation: blink 1s linear infinite;
}

body {
  -webkit-font-smoothing: none;
  background: #0000ff url('../images/geo/microfab.gif') top left;
}

.navbar {
  border-bottom: 1px solid #fff;
  -webkit-box-shadow: 0 2px 0 #D4D0C8, 0 3px 0 #808080, 0 4px 0 #404040;
     -moz-box-shadow: 0 2px 0 #D4D0C8, 0 3px 0 #808080, 0 4px 0 #404040;
          box-shadow: 0 2px 0 #D4D0C8, 0 3px 0 #808080, 0 4px 0 #404040;
}

.navbar-inner {
  background: #000000 url('../images/geo/stars.gif') top left;
  border-bottom: 1px solid #D4D0C8;
}

.btn {
  border: 6px ridge #bbbbbb;
}

.btn-primary {
  background: #000000 url('../images/geo/rainbow.gif') top left;
}

legend {
  font-weight: bold;
  color: yellow;
}

.control-group.error input {
  background: #000000 url('../images/geo/flames.gif') 0 -30px repeat-x;
}

.dropdown-menu {
  -webkit-border-radius: 0;
     -moz-border-radius: 0;
          border-radius: 0;
}

.label-important,
.badge-important {
  background-color: red;
}

.label-important[href],
.badge-important[href] {
  background-color: red;
}

.label-warning,
.badge-warning {
  color: black;
  background-color: yellow;
}

.label-warning[href],
.badge-warning[href] {
  color: black;
  background-color: yellow;
}

.label-success,
.badge-success {
  background-color: green;
}

.label-success[href],
.badge-success[href] {
  background-color: green;
}

.label-info,
.badge-info {
  background-color: #00ffff;
}

.label-info[href],
.badge-info[href] {
  background-color: #00ffff;
}

.label-inverse,
.badge-inverse {
  background-color: black;
}

.label-inverse[href],
.badge-inverse[href] {
  background-color: black;
}

.hero-unit,
.well {
  background: #000000 url('../images/geo/stars.gif') top left;
}

.breadcrumb {
  color: white;
  background: black;
}

.nav-tabs > li > a:hover,
.nav-tabs > li > a:focus {
  background: black;
  border-color: black;
}

.progress .bar {
  background: #c0c0c0 url('../images/geo/progress.gif') top left repeat-x !important;
  border: 1px solid #fff;
  border-top: 1px solid #808080;
  border-left: 1px solid #808080;
}

@-webkit-keyframes blink {
  0% {
    opacity: 0;
  }
  40% {
    opacity: 0;
  }
  41% {
    opacity: 1;
  }
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-moz-keyframes blink {
  0% {
    opacity: 0;
  }
  40% {
    opacity: 0;
  }
  41% {
    opacity: 1;
  }
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-ms-keyframes blink {
  0% {
    opacity: 0;
  }
  40% {
    opacity: 0;
  }
  41% {
    opacity: 1;
  }
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-o-keyframes blink {
  0% {
    opacity: 0;
  }
  40% {
    opacity: 0;
  }
  41% {
    opacity: 1;
  }
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@keyframes blink {
  0% {
    opacity: 0;
  }
  40% {
    opacity: 0;
  }
  41% {
    opacity: 1;
  }
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

.pull-right {
  float: right;
}

.pull-left {
  float: left;
}

.hide {
  display: none;
}

.show {
  display: block;
}

.invisible {
  visibility: hidden;
}

.affix {
  position: fixed;
}


================================================
FILE: css/styles.css
================================================
@import url(https://fonts.googleapis.com/css?family=Abel|Source+Code+Pro&display=swap);

body, html {
  height: 100%;
  overflow: hidden;
}

body {
  background-color: #2c2c2c;
  font-family: "Abel";
  margin: 0;
}

.terminal {
  height: 100%;
  padding: 24px;
}

#terminal {
  height: 100%;
}

:root {
  --brand-bg-color: #2c2c2c;
  --brand-txt-color: #fff;
  --brand-link-color: #fff;
}

================================================
FILE: index.html
================================================
<!doctype html>
  <html>
    <head>
      <meta charset="utf-8" />
      <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1" />
      <link rel="shortcut icon" href="/favicon.png">
      <title>Root Ventures</title>
      <link rel="canonical" href="https://www.root.vc"/>
      <meta property="og:site_name" content="Root Ventures"/>
      <meta property="og:title" content="Root Ventures"/>
      <meta property="og:url" content="https://www.root.vc"/>
      <meta property="og:type" content="website"/>
      <meta property="og:description" content="Deep tech seed investors supporting founders at the earliest stages. Best coffee in San Francisco ☕️"/>
      <meta property="og:image" content="images/og-image.png"/>
      <meta property="og:image:width" content="1200"/>
      <meta property="og:image:height" content="630"/>
      <meta itemprop="name" content="Root Ventures"/>
      <meta itemprop="url" content="https://www.root.vc"/>
      <meta itemprop="description" content="Deep tech seed investors supporting founders at the earliest stages. Best coffee in San Francisco ☕️"/>
      <meta itemprop="thumbnailUrl" content="images/og-image.png"/>
      <link rel="image_src" href="images/og-image.png" />
      <meta itemprop="image" content="images/og-image.png"/>
      <meta name="twitter:card" content="summary_large_image">
      <meta name="twitter:url" content="https://www.root.vc">
      <meta name="twitter:creator" content="@rootvc">
      <meta name="twitter:site" content="@rootvc">
      <meta name="twitter:title" content="Root Ventures">
      <meta name="twitter:description" content="Join us! Investing in deep tech, automation, manufacturing, hardware, robotics, and more.">
      <meta name="twitter:image" content="https://root.vc/images/og-image.png">
      <meta name="description" content="Deep tech seed investors supporting founders at the earliest stages. Best coffee in San Francisco ☕️" />

      <!-- Google Tag Manager -->
      <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
        new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
        j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
        'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
        })(window,document,'script','dataLayer','GTM-TQ954FQ');</script>
      <!-- End Google Tag Manager -->

      <link rel="stylesheet" href="css/xterm.css" />
      <link rel="stylesheet" href="css/styles.css" />
      <script defer src="js/xterm.js"></script>
      <script defer src="js/addon-fit.js"></script>
      <script defer src="js/addon-web-links.js"></script>
      <script defer src="js/app.bundle.js"></script>
    </head>
    <body>
      <h1 style="display: none;">Root Ventures | Seeding bold engineers</h1>
      <h2 style="display: none;">Seed stage venture capital firm investing in deep tech. San Francisco, CA</h2>
      <img id="logo" src = "images/logo.png" alt="Root Ventures" style="display: none;"/>
      <!-- Google Tag Manager (noscript) -->
      <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TQ954FQ"
        height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
      <!-- End Google Tag Manager (noscript) -->
      <div id="aa-all" style="display: none;"></div>
      <div id="files-all" style="display: none;"></div>
      <div id="terminal"></div>
    </body>
  </html>


================================================
FILE: js/addon-fit.js
================================================
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FitAddon=t():e.FitAddon=t()}(self,()=>(()=>{"use strict";var e,t={};return e=t,Object.defineProperty(e,"__esModule",{value:!0}),e.FitAddon=void 0,e.FitAddon=class{activate(e){this._terminal=e}dispose(){}fit(){const e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;const t=this._terminal._core;this._terminal.rows===e.rows&&this._terminal.cols===e.cols||(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal)return;if(!this._terminal.element||!this._terminal.element.parentElement)return;const e=this._terminal._core,t=e._renderService.dimensions;if(0===t.css.cell.width||0===t.css.cell.height)return;const r=0===this._terminal.options.scrollback?0:e.viewport.scrollBarWidth,i=window.getComputedStyle(this._terminal.element.parentElement),o=parseInt(i.getPropertyValue("height")),s=Math.max(0,parseInt(i.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),l=o-(parseInt(n.getPropertyValue("padding-top"))+parseInt(n.getPropertyValue("padding-bottom"))),a=s-(parseInt(n.getPropertyValue("padding-right"))+parseInt(n.getPropertyValue("padding-left")))-r;return{cols:Math.max(2,Math.floor(a/t.css.cell.width)),rows:Math.max(1,Math.floor(l/t.css.cell.height))}}},t})());

================================================
FILE: js/addon-web-links.js
================================================
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.WebLinksAddon=t():e.WebLinksAddon=t()}(self,()=>(()=>{"use strict";var e={6:(e,t)=>{function n(e){try{const t=new URL(e),n=t.password&&t.username?`${t.protocol}//${t.username}:${t.password}@${t.host}`:t.username?`${t.protocol}//${t.username}@${t.host}`:`${t.protocol}//${t.host}`;return e.toLocaleLowerCase().startsWith(n.toLocaleLowerCase())}catch(e){return!1}}Object.defineProperty(t,"__esModule",{value:!0}),t.LinkComputer=t.WebLinkProvider=void 0,t.WebLinkProvider=class{constructor(e,t,n,o={}){this._terminal=e,this._regex=t,this._handler=n,this._options=o}provideLinks(e,t){const n=o.computeLink(e,this._regex,this._terminal,this._handler);t(this._addCallbacks(n))}_addCallbacks(e){return e.map(e=>(e.leave=this._options.leave,e.hover=(t,n)=>{if(this._options.hover){const{range:o}=e;this._options.hover(t,n,o)}},e))}};class o{static computeLink(e,t,r,i){const s=new RegExp(t.source,(t.flags||"")+"g"),[a,c]=o._getWindowedLineStrings(e-1,r),l=a.join("");let d;const p=[];for(;d=s.exec(l);){const e=d[0];if(!n(e))continue;const[t,s]=o._mapStrIdx(r,c,0,d.index),[a,l]=o._mapStrIdx(r,t,s,e.length);if(-1===t||-1===s||-1===a||-1===l)continue;const h={start:{x:s+1,y:t+1},end:{x:l,y:a+1}};p.push({range:h,text:e,activate:i})}return p}static _getWindowedLineStrings(e,t){let n,o=e,r=e,i=0,s="";const a=[];if(n=t.buffer.active.getLine(e)){const e=n.translateToString(!0);if(n.isWrapped&&" "!==e[0]){for(i=0;(n=t.buffer.active.getLine(--o))&&i<2048&&(s=n.translateToString(!0),i+=s.length,a.push(s),n.isWrapped&&-1===s.indexOf(" ")););a.reverse()}for(a.push(e),i=0;(n=t.buffer.active.getLine(++r))&&n.isWrapped&&i<2048&&(s=n.translateToString(!0),i+=s.length,a.push(s),-1===s.indexOf(" ")););}return[a,o]}static _mapStrIdx(e,t,n,o){const r=e.buffer.active,i=r.getNullCell();let s=n;for(;o;){const e=r.getLine(t);if(!e)return[-1,-1];for(let n=s;n<e.length;++n){e.getCell(n,i);const s=i.getChars();if(i.getWidth()&&(o-=s.length||1,n===e.length-1&&""===s)){const e=r.getLine(t+1);e&&e.isWrapped&&(e.getCell(0,i),2===i.getWidth()&&(o+=1))}if(o<0)return[t,n]}t++,s=0}return[t,s]}}t.LinkComputer=o}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}var o={};return(()=>{var e=o;Object.defineProperty(e,"__esModule",{value:!0}),e.WebLinksAddon=void 0;const t=n(6),r=/(https?|HTTPS?):[/]{2}[^\s"'!*(){}|\\\^<>`]*[^\s"':,.!?{}|\\\^~\[\]`()<>]/;function i(e,t){const n=window.open();if(n){try{n.opener=null}catch{}n.location.href=t}else console.warn("Opening link blocked as opener could not be cleared")}e.WebLinksAddon=class{constructor(e=i,t={}){this._handler=e,this._options=t}activate(e){this._terminal=e;const n=this._options,o=n.urlRegex||r;this._linkProvider=this._terminal.registerLinkProvider(new t.WebLinkProvider(this._terminal,o,this._handler,n))}dispose(){this._linkProvider?.dispose()}}})(),o})());

================================================
FILE: js/app.bundle.js
=================================
Download .txt
gitextract_vtgkc4un/

├── .github/
│   └── workflows/
│       ├── claude.yml
│       └── test.yml
├── .gitignore
├── .stignore
├── LICENSE
├── README.md
├── config/
│   ├── commands.js
│   ├── fs.js
│   ├── help.js
│   ├── jobs.js
│   ├── portfolio.js
│   └── team.js
├── css/
│   ├── bootstrap.css
│   └── styles.css
├── index.html
├── js/
│   ├── addon-fit.js
│   ├── addon-web-links.js
│   ├── app.bundle.js
│   ├── ascii-art.js
│   ├── bootstrap.js
│   ├── comcastify.js
│   ├── geo.js
│   ├── rickroll.js
│   ├── terminal-ext.js
│   └── terminal.js
├── netlify/
│   └── functions/
│       └── submit-application.js
├── netlify.toml
├── package.json
├── scripts/
│   └── build-assets.js
├── tests/
│   ├── ascii-art.test.js
│   ├── bootstrap.test.js
│   ├── fs.test.js
│   ├── helpers/
│   │   └── browser-env.js
│   ├── terminal-ext.test.js
│   └── terminal.test.js
└── welcome.htm
Download .txt
SYMBOL INDEX (82 symbols across 18 files)

FILE: config/commands.js
  function SpawnRickRollPointers (line 23) | function SpawnRickRollPointers() {
  function _filesHere (line 892) | function _filesHere() {

FILE: config/fs.js
  function preloadFiles (line 57) | function preloadFiles() {
  function _loadFile (line 68) | function _loadFile(name) {
  function ensureFileLoaded (line 87) | function ensureFileLoaded(name) {
  function getPreloadFileForCommand (line 107) | function getPreloadFileForCommand(cmd, args) {
  function _insertFileToDOM (line 123) | function _insertFileToDOM(name, txt) {
  function getFileContents (line 139) | function getFileContents(filename) {

FILE: js/addon-fit.js
  method activate (line 1) | activate(e){this._terminal=e}
  method dispose (line 1) | dispose(){}
  method fit (line 1) | fit(){const e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.c...
  method proposeDimensions (line 1) | proposeDimensions(){if(!this._terminal)return;if(!this._terminal.element...

FILE: js/addon-web-links.js
  function n (line 1) | function n(e){try{const t=new URL(e),n=t.password&&t.username?`${t.proto...
  method constructor (line 1) | constructor(e,t,n,o={}){this._terminal=e,this._regex=t,this._handler=n,t...
  method provideLinks (line 1) | provideLinks(e,t){const n=o.computeLink(e,this._regex,this._terminal,thi...
  method _addCallbacks (line 1) | _addCallbacks(e){return e.map(e=>(e.leave=this._options.leave,e.hover=(t...
  class o (line 1) | class o{static computeLink(e,t,r,i){const s=new RegExp(t.source,(t.flags...
    method computeLink (line 1) | static computeLink(e,t,r,i){const s=new RegExp(t.source,(t.flags||"")+...
    method _getWindowedLineStrings (line 1) | static _getWindowedLineStrings(e,t){let n,o=e,r=e,i=0,s="";const a=[];...
    method _mapStrIdx (line 1) | static _mapStrIdx(e,t,n,o){const r=e.buffer.active,i=r.getNullCell();l...
  function n (line 1) | function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={expo...
  function i (line 1) | function i(e,t){const n=window.open();if(n){try{n.opener=null}catch{}n.l...
  method constructor (line 1) | constructor(e=i,t={}){this._handler=e,this._options=t}
  method activate (line 1) | activate(e){this._terminal=e;const n=this._options,o=n.urlRegex||r;this....
  method dispose (line 1) | dispose(){this._linkProvider?.dispose()}

FILE: js/app.bundle.js
  function runRootTerminal (line 1) | function runRootTerminal(e){if(e._initialized)return;e.init(),e._initial...
  function colorText (line 1) | function colorText(e,t){return`${{command:"",hyperlink:"",...
  function _wordWrap (line 1) | function _wordWrap(e,t){const r="\r\n";let o="";for(;e.length>t;){let n=...
  function _testWhite (line 1) | function _testWhite(e){return/^\s$/.test(e.charAt(0))}
  function isASCIIArtLoaded (line 1) | function isASCIIArtLoaded(e){const t=document.getElementById(e);return!!...
  function _asciiArtScale (line 1) | function _asciiArtScale(){return term.cols>=60?.5:1}
  function _getASCIIArtSpec (line 1) | function _getASCIIArtSpec(e){return"rootvc-square"===e?[e,1,_asciiArtSca...
  function getASCIIArtIdForCommand (line 1) | function getASCIIArtIdForCommand(e,t){const r=t[0];if("whois"===e&&term....
  function _queueASCIIArtWork (line 1) | function _queueASCIIArtWork(e,t=1e3){"function"==typeof window.scheduleI...
  function preloadASCIIArt (line 1) | function preloadASCIIArt(){if(asciiArtPreloadPromise)return asciiArtPrel...
  function ensureASCIIArt (line 1) | function ensureASCIIArt(e){const t=_getASCIIArtSpec(e);return!t||isASCII...
  function _loadArt (line 1) | function _loadArt(e,t,r,o,n,i){const s=document.getElementById("aa-all")...
  function getArt (line 1) | function getArt(e){const t=document.getElementById(e);return isASCIIArtL...
  function SpawnRickRollPointers (line 1) | function SpawnRickRollPointers(){function e(e,t){let r=e.toString();for(...
  function _filesHere (line 1) | function _filesHere(){return _DIRS[term.cwd].filter(e=>"README.md"!=e||"...
  function preloadFiles (line 1) | function preloadFiles(){for(const e of Object.keys(_REMOTE_FILES))_loadF...
  function _loadFile (line 1) | function _loadFile(e){return document.getElementById(e)?Promise.resolve(...
  function ensureFileLoaded (line 1) | function ensureFileLoaded(e){return _FILES[e]?document.getElementById(e)...
  function getPreloadFileForCommand (line 1) | function getPreloadFileForCommand(e,t){const r=t[0];return r&&["cat","gr...
  function _insertFileToDOM (line 1) | function _insertFileToDOM(e,t){const r=document.getElementById("files-al...
  function getFileContents (line 1) | function getFileContents(e){const t=document.getElementById(e);return t?...
  function t (line 1) | function t(t){return e[t]||(e[t]=new Promise((e,r)=>{const o=document.cr...

FILE: js/ascii-art.js
  constant LOGO_TYPE (line 1) | const LOGO_TYPE =
  function isASCIIArtLoaded (line 19) | function isASCIIArtLoaded(id) {
  function _asciiArtScale (line 24) | function _asciiArtScale() {
  function _getASCIIArtSpec (line 28) | function _getASCIIArtSpec(id) {
  function getASCIIArtIdForCommand (line 44) | function getASCIIArtIdForCommand(cmd, args) {
  function _queueASCIIArtWork (line 64) | function _queueASCIIArtWork(task, timeout = 1000) {
  function preloadASCIIArt (line 72) | function preloadASCIIArt() {
  function ensureASCIIArt (line 121) | function ensureASCIIArt(id) {
  function _loadArt (line 142) | function _loadArt(id, ratio, scale, ext, inverse, callback) {
  function getArt (line 193) | function getArt(id) {

FILE: js/bootstrap.js
  function loadOptionalScript (line 4) | function loadOptionalScript(src) {

FILE: js/geo.js
  function buildGeoPage (line 1) | function buildGeoPage() {

FILE: js/rickroll.js
  function RickRoll (line 7) | function RickRoll() {

FILE: js/terminal-ext.js
  function _wordWrap (line 477) | function _wordWrap(str, maxWidth) {
  function _testWhite (line 500) | function _testWhite(x) {

FILE: js/terminal.js
  function runRootTerminal (line 1) | function runRootTerminal(term) {
  function colorText (line 226) | function colorText(text, color) {

FILE: scripts/build-assets.js
  function minifyJavaScript (line 43) | async function minifyJavaScript(source, options = {}) {
  function readText (line 59) | function readText(relativePath) {
  function writeText (line 63) | function writeText(relativePath, content) {
  function copyVendorScript (line 69) | async function copyVendorScript(asset) {
  function buildAppBundle (line 84) | async function buildAppBundle() {
  function buildRickRollBundle (line 99) | async function buildRickRollBundle() {
  function copyXtermCss (line 106) | function copyXtermCss() {
  function main (line 118) | async function main() {

FILE: tests/ascii-art.test.js
  function loadAsciiArt (line 6) | function loadAsciiArt(globals = {}) {

FILE: tests/bootstrap.test.js
  function loadBootstrap (line 6) | function loadBootstrap(overrides = {}) {

FILE: tests/fs.test.js
  function loadFs (line 6) | function loadFs(globals = {}) {

FILE: tests/helpers/browser-env.js
  constant REPO_ROOT (line 9) | const REPO_ROOT = path.resolve(__dirname, "..", "..");
  function inlineScript (line 11) | function inlineScript(source, label = "inline-script.js") {
  function createBrowserEnv (line 15) | function createBrowserEnv(options = {}) {

FILE: tests/terminal-ext.test.js
  function loadTerminalExt (line 6) | function loadTerminalExt(globals = {}) {
  function createTerm (line 28) | function createTerm(overrides = {}) {

FILE: tests/terminal.test.js
  function loadTerminalScript (line 14) | function loadTerminalScript(globals = {}) {
  function createTerm (line 25) | function createTerm(overrides = {}) {
Condensed preview — 36 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (620K chars).
[
  {
    "path": ".github/workflows/claude.yml",
    "chars": 1088,
    "preview": "name: Claude PR Assistant\n\non:\n  issue_comment:\n    types: [created]\n  pull_request_review_comment:\n    types: [created]"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 343,
    "preview": "name: Test\n\non:\n  push:\n    branches:\n      - main\n      - \"codex/**\"\n  pull_request:\n\njobs:\n  test:\n    runs-on: ubuntu"
  },
  {
    "path": ".gitignore",
    "chars": 2079,
    "preview": "# for build\ncss/xterm.css\njs/xterm*.js*\njs/aalib.js*\n\nimages/*Zone.Identifier\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-deb"
  },
  {
    "path": ".stignore",
    "chars": 838,
    "preview": ".git\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-"
  },
  {
    "path": "LICENSE",
    "chars": 1276,
    "preview": "MIT License With Custom Attribution Condition\n\nCopyright (c) 2025 Root Ventures\n\nPermission is hereby granted, free of c"
  },
  {
    "path": "README.md",
    "chars": 2526,
    "preview": "# cli-website\nWho needs a website when you have a terminal.\n\n[![Netlify Status](https://api.netlify.com/api/v1/badges/f3"
  },
  {
    "path": "config/commands.js",
    "chars": 28333,
    "preview": "// commands.js — Terminal command definitions for the Root Ventures interactive CLI.\n//\n// Each key in `commands` maps t"
  },
  {
    "path": "config/fs.js",
    "chars": 4285,
    "preview": "// fs.js — Virtual file system for the Root Ventures terminal.\n//\n// Since there's no real file system in the browser, f"
  },
  {
    "path": "config/help.js",
    "chars": 687,
    "preview": "const help = {\n  \"%help%\": \"list all commands (you're looking at it)\",\n  \"%whois%\": \"list all partners\",\n  \"%whois% [par"
  },
  {
    "path": "config/jobs.js",
    "chars": 1162,
    "preview": "const jobs = {\n  1: [\n    \"Venture Capital Associate\",\n    \"\",\n    \"Root Ventures is looking for a technical associate t"
  },
  {
    "path": "config/portfolio.js",
    "chars": 11813,
    "preview": "const portfolio = {\n  esper: {\n    name: \"Esper\",\n    url: \"https://esper.io\",\n    description:\n      \"Esper is devops f"
  },
  {
    "path": "config/team.js",
    "chars": 3532,
    "preview": "const team = {\n  avidan: {\n    name: \"Avidan Ross\",\n    title: \"Managing Partner\",\n    description:\n      \"Avidan is the"
  },
  {
    "path": "css/bootstrap.css",
    "chars": 131363,
    "preview": "/*!\n * Bootstrap v2.3.1\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache"
  },
  {
    "path": "css/styles.css",
    "chars": 388,
    "preview": "@import url(https://fonts.googleapis.com/css?family=Abel|Source+Code+Pro&display=swap);\n\nbody, html {\n  height: 100%;\n  "
  },
  {
    "path": "index.html",
    "chars": 3618,
    "preview": "<!doctype html>\n  <html>\n    <head>\n      <meta charset=\"utf-8\" />\n      <meta http-equiv=\"X-UA-Compatible\" content=\"IE="
  },
  {
    "path": "js/addon-fit.js",
    "chars": 1446,
    "preview": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.am"
  },
  {
    "path": "js/addon-web-links.js",
    "chars": 3042,
    "preview": "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.am"
  },
  {
    "path": "js/app.bundle.js",
    "chars": 44230,
    "preview": "function runRootTerminal(e){if(e._initialized)return;e.init(),e._initialized=!0,e.locked=!1,e.prompt(),e.runDeepLink();l"
  },
  {
    "path": "js/ascii-art.js",
    "chars": 4734,
    "preview": "const LOGO_TYPE =\n` _____                                 \n|  __ \\\\            _                   \n| |__) |___   ___ | "
  },
  {
    "path": "js/bootstrap.js",
    "chars": 1664,
    "preview": "(function bootstrapTerminal() {\n  const optionalScriptPromises = {};\n\n  function loadOptionalScript(src) {\n    if (optio"
  },
  {
    "path": "js/comcastify.js",
    "chars": 4262,
    "preview": "var comcastifyjs = (function () {\n\n  // setup slowload modifier callback, structure avoids some annoying timer/closure p"
  },
  {
    "path": "js/geo.js",
    "chars": 3096,
    "preview": "function buildGeoPage() {\n  const whois = document.getElementById(\"whois\");\n  whois.innerHTML = whoisRoot.split(\" Try\")["
  },
  {
    "path": "js/rickroll.js",
    "chars": 278904,
    "preview": "let currentFrame = 0;\nlet intervalId = null;\n\nconst baseSearchText = \"vsabnBRXofjub\";\nconst xpathExpression = `//span[st"
  },
  {
    "path": "js/terminal-ext.js",
    "chars": 15695,
    "preview": "// terminal-ext.js — Extends an xterm.js Terminal instance with all the custom\n// behavior needed to run the Root Ventur"
  },
  {
    "path": "js/terminal.js",
    "chars": 7378,
    "preview": "function runRootTerminal(term) {\n  if (term._initialized) {\n    return;\n  }\n\n  term.init();\n  term._initialized = true;\n"
  },
  {
    "path": "netlify/functions/submit-application.js",
    "chars": 1390,
    "preview": "exports.handler = async (event, context) => {\n  // Only allow POST\n  if (event.httpMethod !== 'POST') {\n    return {\n   "
  },
  {
    "path": "netlify.toml",
    "chars": 71,
    "preview": "[build]\n  publish = \".\"\n\n[functions]\n  directory = \"netlify/functions\"\n"
  },
  {
    "path": "package.json",
    "chars": 674,
    "preview": "{\n  \"name\": \"rootvc-cli-website\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Root Ventures' awesome website\",\n  \"dependenci"
  },
  {
    "path": "scripts/build-assets.js",
    "chars": 3061,
    "preview": "const fs = require(\"fs\");\nconst path = require(\"path\");\nconst { minify } = require(\"terser\");\n\nconst rootDir = path.reso"
  },
  {
    "path": "tests/ascii-art.test.js",
    "chars": 2410,
    "preview": "import { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { createBrowserEnv } from \"./helpers/browser-env\";\n"
  },
  {
    "path": "tests/bootstrap.test.js",
    "chars": 3787,
    "preview": "import { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { createBrowserEnv } from \"./helpers/browser-env\";\n"
  },
  {
    "path": "tests/fs.test.js",
    "chars": 2592,
    "preview": "import { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { createBrowserEnv } from \"./helpers/browser-env\";\n"
  },
  {
    "path": "tests/helpers/browser-env.js",
    "chars": 2187,
    "preview": "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { JSDOM } from "
  },
  {
    "path": "tests/terminal-ext.test.js",
    "chars": 3986,
    "preview": "import { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { createBrowserEnv } from \"./helpers/browser-env\";\n"
  },
  {
    "path": "tests/terminal.test.js",
    "chars": 3333,
    "preview": "import { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { createBrowserEnv } from \"./helpers/browser-env\";\n"
  },
  {
    "path": "welcome.htm",
    "chars": 8099,
    "preview": "<!doctype html>\n<html>\n    <head>\n        <meta charset=\"utf-8\" />\n        <meta http-equiv=\"X-UA-Compatible\" content=\"I"
  }
]

About this extraction

This page contains the full source code of the rootvc/cli-website GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 36 files (575.6 KB), approximately 192.2k tokens, and a symbol index with 82 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!