<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="BlissRoms - new site">
  <meta name="theme-color" content="#0080ff">
  <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
  <link rel="icon" sizes="192x192" href="images/bliss_icon_small.png">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
  <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
  <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
  <link href="https://fonts.googleapis.com/css?family=Comfortaa:400,700,300" rel="stylesheet">
  <link rel="stylesheet" type="text/css" href="css/style.css">
  <link rel="stylesheet" href="css/styles_filter.css">
  <link rel="stylesheet" href="css/animations.css">
  <script src="js/modernizr.js"></script>
  <script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
  <script> (adsbygoogle = window.adsbygoogle || []).push({
				google_ad_client: "ca-pub-7639560510014441",
				enable_page_level_ads: true
			  });
			</script>
  <title>Bliss</title>
</head>

<body>
  <!-- Fixed navbar -->
  <nav class="navbar navbar-default navbar-fixed-top">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="#" style="	background-image: url(images/BlissIcon_w.png);	background-position: top left;	background-size: 100%;	background-repeat: no-repeat;">   </a>
      </div>
      <div id="navbar" class="collapse navbar-collapse">
        <ul class="nav navbar-nav navbar-right">
          <li id="nav-about">
            <a href="index.html">Back Home</a>
          </li>
		      <li id="nav-about">
            <a href="#about2">About</a>
          </li>
          <li id="nav-expenses">
            <a href="#expenses">Expenses</a>
          </li>
          <li id="nav-family">
            <a href="#family2">Family</a>
          </li>
          <li id="donate">
            <a href="https://www.paypal.me/TeamBliss" target="_blank">Donate</a>
          </li>
        </ul>
      </div>
      <!--/.nav-collapse -->
    </div>
  </nav>
  <div class="py-5">
    <div class="container">
      <div class="row">
        <div class="col-md-12">
          <p></p>
        </div>
      </div>
    </div>
  </div>
  <!-- Begin page content -->
  <div class="container-fluid">
    <div class="row cover top" style="	background-image: linear-gradient(to bottom, rgba(22, 22, 22, 0.0), rgba(22, 22, 22, 1.0));	background-position: top left;	background-size: 100%;	background-repeat: repeat;">
      <div class="col-xs-12" >
        <div class="row" style="overflow-x:hidden;height: auto;overflow-y: visible; color: #fff;">
          <div class="col-md-12" align="center">
            <div class="cover row">
              <h1>Bliss Family of ROMs</h1><br/><br/>
              <blockquote class="lead" cite="https://twitter.com/DalaiLama/status/1051767186820198402">The creation of a more peaceful and happier society has to begin from the level of the individual, and from there it can expand to one's family, to one's neighborhood, to one's community and so on.
			  <footer><a href="https://twitter.com/DalaiLama/status/1051767186820198402">Dalai Lama</a></footer>
			  </blockquote>
            </div>
			
		  </div>
          
        </div>
        <div class="row">
          <div class="col-xs-12 center-block text-center" style="overflow-y: visible; color: rgb(255, 255, 255); transform: translateY(60px);">
            <a href="#about2"><span id="scrollIcon" class="front-glyph glyphicon glyphicon-menu-down" style="	color: #fff;	transform:  translateY(-100%) ;" aria-hidden="true"></span></a>
          </div>
        </div>
      </div>
    </div>
  </div>
  
  
  <div id="about2" class="row cover">
      <div class="container">
        <h1 class="text-center about2-header" style="color: #fff;">About</h1>
		<p class="lead text-center">We are a U.S.A. Federal 501c3 Non-Profit Organization that aims to build and maintain various operating systems and software projects for the purposes of community growth and development.  Our team of talented individuals comprise to provide training, development opportunities, build servers, download servers, design and development software, and design opportunities. Team Bliss memborship includes professionals and mentors in all fields related to Android development.  Our services and source code is open to the public and provided at no cost. </p>
            
		<div class="row">
			<h2 class="text-center " style=" color: #000; margin: 5%;">What are we aiming to accomplish?</h2>
			<p class="text-center lead " style="margin: 5%" >Our goal is to mentor and teach those interested in Android development. We have a large global community that is available to coach or answer questions about development, design, animation, etc. almost any time. We offer a stress free working environment, as well as the tools when resources allow us to do so, to help guide someone on the Android development path. We also provide them the tools to learn how to monetize their skills along the way.</p>
		</div>
		<div class="row">
			<h3 class="text-center " style="color: #000;">Can you tell me more about these mentorships and opportunities?</h2>
			<p class="text-center lead " style="margin: 5%">We take on applicants and work with them to learn more about Android Development. We have many mentors available to help in all areas, from ROM development, App development, Design & Layout, as well as kernel development.</p>
			<p class="text-center lead " style="margin: 5%">Each potential applicant is selected based on their want to learn and their ability to work with others, so we do require a bit of a background, or at least a very convincing argument.</p>
		</div>
		<h1 class="text-center family-header" style="color: #fff;">Transparency</h1>
		<p class="text-center lead" style="margin: 5%">We believe in full transparency, but we do not believe this transparency should come at a cost to our supporters. This is why we submit a yearly 990 form to the IRS. If you are interested in looking into that or any other information we submit, feel free to visit our <a href="https://www.guidestar.org/profile/82-3580195" style="color: #222;">Guidestar.org</a> page. If you are interested in looking into any other nonprofit open-source projects or ROMs, they can also be found on Guidestar as long as things are all on the up and up. </p>
		<p class="text-center lead" style="margin: 5%">Guidestar does allow users to view the financial info for each nonprofit, but for those who don't want to give yet another site their personal info, we have posted our statements below</p>
		
        <!--end Two project row-->
      </div>
    </div>
  
  
  
  <div id="expenses" class="row cover bottom" style="	background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0));	background-position: top left;	background-size: 100%;	background-repeat: repeat;">
    <h1 class="text-center expenses-header" style="color: #0080ff;">Expenses </h1>
	<section class="counting">
		<div class="layout">
			<h2 class="text-center" style="color: #fff;">2017 Revenue (year one)</h2>
		  <div class="grid-3">
			<span class="count1 counter" style="color: #0080ff;">899.00</span>
			<p>Contributions, Grants, Gifts</p>
		  </div> <!-- /.col-sm-3 -->
		  <div class="grid-3">
			<span class="count2 counter" style="color: #0080ff;">0</span>
			<p>Program Services</p>
		  </div><!-- /.col-sm-3 -->
		  <div class="grid-3">
			<span class="counter " style="color: #0080ff;">0</span>
			<p>Special Events</p>
		  </div><!-- /.col-sm-3 -->
		  <div class="grid-3">
			<span class="counter count4" style="color: #0080ff;">0</span>
			<p>Other Revenue</p>
		  </div><!-- /.col-sm-3 -->

		</div>	
	
	</section>
	<section class="counting">	
		
		<div class="layout">
			<h2 class="text-center" style="color: #fff;">2017 Expenses (year one)</h2>
		  <div class="grid-3">
			<span class="count1 counter" style="color: #0080ff;">0</span>
			<p>Program Services & Affiliates</p>
		  </div> <!-- /.col-sm-3 -->
		  <div class="grid-3">
			<span class="count2 counter" style="color: #0080ff;">360.00</span>
			<p>Administration</p>
		  </div><!-- /.col-sm-3 -->
		  <div class="grid-3">
			<span class="counter " style="color: #0080ff;">0</span>
			<p>Fundraising</p>
		  </div><!-- /.col-sm-3 -->
		  <div class="grid-3">
			<span class="counter count4" style="color: #0080ff;">295.00</span>
			<p>Other Expenses</p>
		  </div><!-- /.col-sm-3 -->

		</div>
	</section>	
    <!-- End #Contact-->
    
  </div>
  
  
  <!-- break -->
  
  
  
  <!-- Close Team -->
  <div class="row" id="family2">
    <div class="col-xs-12 text-center " style="	background-image: linear-gradient(to bottom, rgba(22,22,22,0.3), rgba(22,22,22,0.8));	background-position: top left;	background-size: 100%;	background-repeat: repeat;">
      <div class="row">
	    <div class="col-xs-12 text-center about-tools">
		  <div class="container family-header text-center">
			<img class="team-image" style="max-width: 36rem;width:100%" src="images/bliss_for.png">
		  </div>
		  
          <p class="text-center">We are open to the public, and accepting applications now for volunteer only positions (internships coming soon).
		  We are accepting people in small managable groups while we grow, and we tend to lean towards the type of people that want to learn and grow with Bliss Family of ROMs. 
		  Bliss provides the tools, knowledge and the mentorship needed to help bring your development dreams to reality, and all we ask in return is a minimum contribution towards Bliss ROM while you learn and grow in your strengths.
		  <br/>
		  If you're an individual and would like to apply to join our team, please use the button below
		  </p>
		  <a class="btn btn-rounded family-projects--btn" href="https://goo.gl/forms/PdiaAj1PojosmehK2" style="color:#fff;" >Join Our Team</a>
		  <br/>
		  <p class="text-center">Got a great project but having trouble getting things off the ground? Or maybe you are looking to gain a few more people to help you out on it. Whatever your situation is, you can submit your project below for a chance to include it as a Bliss Family project. 
		  </p>
		  <p class="text-center">If you are interested in applying for this unique opportunity, please fill out the form below, and we will be in touch with you soon (usually within a few days!)</p>
		  <a class="btn btn-rounded family-projects--btn" href="https://goo.gl/kAb7ti" role="button" style="color:#fff;">Submit your project now</a>
		  <a class="btn btn-rounded family-projects--btn" href="https://www.paypal.me/TeamBliss" target="_blank" role="button" style="color:#fff;">Donate to Bliss Family</a>
		  
		</div>
			
		<div class="center col-lg-4">
		  <h2 class="text-center">&nbsp;<br></h2>
		  <h2 class="text-center">&nbsp;<br></h2>
		</div>
      </div>
    </div>
  </div>
  <div id="family" class="row">
    <div class="container">
      <div class="family-header text-center">
        <h2 class="text-center">&nbsp;<br></h2>
        <h2 class="text-center">Bliss Family Projects</h2>
      </div>
      <div class="center">
        <h4 class="text-center highlight_secondary">The Bliss Family projects we currently support can be found below:<br><br></h4>
        <div class="col-lg-4">
          <div class="family">
            <div class="family-image text-center">
              <img class="img-circle img-responsive" src="images/invictrix.jpg">
              <div class="family-links ">
                <div class="family-links-list">
                  <a href="https://t.me/InvictusROM" target="_blank"><i class="fab fa-telegram"></i></a>
                  <a href="https://plus.google.com/communities/109716291977795337501" target="_blank"><i class="fab fa-google-plus"></i></a>
                </div>
                <!-- /.family-links-list -->
              </div>
              <!-- /.family-links -->
            </div>
            <!-- /.family-image -->
            <div class="family-content text-center">
              <div class="family-name">Invictrīx ROM</div>
              <div class="family-role">
                <h4>AOSP/CAF</h4>
              </div>
              <h4 class="family-description"> Invictrīx ROM emphasizes performance, offering heavy optimizations along with a unique dark themed style.</h4>
            </div>
            <!-- /.family-content -->
          </div>
          <!-- /.family -->
        </div>
        <div class="col-lg-4">
          <div class="family">
            <div class="family-image text-center">
              <img class="img-circle img-responsive" src="images/xtremis.jpg">
              <div class="family-links ">
                <div class="family-links-list">
                  <a href="#" target="_blank"><i class="fab fa-telegram"></i></a>
                  <a href="#" target="_blank"><i class="fab fa-google-plus"></i></a>
                </div>
                <!-- /.family-links-list -->
              </div>
              <!-- /.family-links -->
            </div>
            <!-- /.family-image -->
            <div class="family-content text-center">
              <div class="family-name">Xtremis Project</div>
              <div class="family-role">
                <h4>Chrome OS ROM</h4>
              </div>
              <h4 class="family-description"> Currently pre-release, this project is progressing steadily and will soon have more details to share. Please check in later.</h4>
            </div>
            <!-- /.family-content -->
          </div>
          <!-- /.family -->
        </div>
        <div class="col-lg-4">
          <div class="family">
            <div class="family-image text-center">
              <img class="img-circle img-responsive" src="images/soap.jpg">
              <div class="family-links ">
                <div class="family-links-list">
                  <a href="https://plus.google.com/u/0/107610198397215674589" target="_blank"><i class="fab fa-google-plus"></i></a>
                  <!--<a href="#" target="_blank"><i class="fa fa-google-plus"></i></a> -->
                </div>
                <!-- /.family-links-list -->
              </div>
              <!-- /.family-links -->
            </div>
            <!-- /.family-image -->
            <div class="family-content text-center">
              <div class="family-name">SOAP ROM</div>
              <div class="family-role">
                <h4>SixOpenAndroidProject ROM, AOSP</h4>
              </div>
              <h4 class="family-description"> SOAP is an AOSP ROM that focuses on being a slim and clean ROM.</h4>
            </div>
            <!-- /.family-content -->
          </div>
          <!-- /.family -->
        </div>
		<div class="center col-lg-4">
			<h2 class="text-center">&nbsp;<br></h2>
			<h2 class="text-center">&nbsp;<br></h2>
		</div>
      </div>
    </div>
  </div>
  <!-- End #About -->
  <footer class="footer">
    <div class="footer container-fluid ">
      <div class="container-fluid">
        <div class="row ">
          <div class="col-xs-6 col-sm-3 column footer-header">
            <h4 class="footer-header">Information</h4>
            <ul class="list-unstyled">
              <li class="portfolio-projects--desc">
                <a href="index.html">Back Home</a>
              </li>
              <li class="portfolio-projects--desc">
                <a href="#about2">About</a>
              </li>
              <li class="portfolio-projects--desc">
                <a href="#expenses">Expenses</a>
              </li>
            </ul>
          </div>
          <div class="col-xs-6 col-sm-3 column footer-header">
            <h4 class="footer-header">About</h4>
            <ul class="list-unstyled">
              <li class="portfolio-projects--desc">
                <a href="#family2">Family</a>
              </li>
              <li class="portfolio-projects--desc">
                <a href="https://www.paypal.me/TeamBliss">Donate</a>
              </li>
            </ul>
          </div>
          <div class="col-xs-12 col-sm-3 column footer-header">
            <h4 class="footer-header">Get In Touch</h4>
            <form action="mailto:blissfamilyroms@gmail.com" method="GET" data-form-title="CONTACT US">
              <input type="hidden" data-form-email="true">
              <div class="form-group">
                <input type="text" class="form-control" name="name" required="" placeholder="Name*" data-form-field="Name">
              </div>
              <div class="form-group">
                <input type="email" class="form-control" name="email" required="" placeholder="Email*" data-form-field="Email">
              </div>
              <div class="form-group">
                <textarea class="form-control" name="message" placeholder="Message" rows="3" data-form-field="Message"></textarea>
              </div>
              <div>
                <button type="submit" class="btn btn-lg btn-danger">SEND</button>
              </div>
            </form>
          </div>
          <div class="col-xs-12 col-sm-3 text-right footer-header">
            <h4 class="footer-header">Follow</h4>
            <ul class="list-inline">
              <li class="">
                <a rel="nofollow" href="https://t.me/OfficialBlissROMs" title="Telegram"><i class="fab fa-telegram fa-4x"></i></a>&nbsp; </li>
              <li class="">
                <a rel="nofollow" href="https://www.facebook.com/BlissFamilyOfROMs/" title="Facebook"><i class="fab fa-facebook fa-4x"></i></a>&nbsp; </li>
              <li class="">
                <a rel="nofollow" href="https://plus.google.com/communities/118265887490106132524" title="Google+"><i class="fab fa-google-plus fa-4x"></i></a>
              </li>
              <li class="">
                <a rel="nofollow" href="https://twitter.com/Bliss_Roms" title="Twitter"><i class="fab fa-twitter fa-4x"></i></a>
              </li>
            </ul>
          </div>
        </div>
        <br>
        <span class="pull-right text-muted small"><a href="https://blissroms.com">Bliss Site by Team Bliss</a> ©2017-2018 Team Bliss</span>
      </div>
    </div>
  </footer>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.3.1/js/tether.min.js" type="text/javascript"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js" type="text/javascript"></script>
  <script src='https://cdnjs.cloudflare.com/ajax/libs/waypoints/2.0.3/waypoints.min.js'></script>
  <script src='https://bfintal.github.io/Counter-Up/jquery.counterup.min.js'></script>
  <script  src="js/counter.js"></script>
  
  <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" type="text/javascript"></script>
  <script src="https://cdn.jsdelivr.net/jquery.scrollto/2.1.0/jquery.scrollTo.min.js" type="text/javascript"></script>
  <!--<script src="js/jquery-2.1.1.js" type="text/javascript"></script> -->
  <script src="js/jquery.mixitup.min.js" type="text/javascript"></script>
  <script src="js/main.js" type="text/javascript"></script>
  <script src="js/mainani.js" type="text/javascript"></script>
  <script src="js/script.js" type="text/javascript"></script>
  <script type="text/javascript">
    // Select all links with hashes
    $('a[href*="#"]')
      // Remove links that don't actually link to anything
      .not('[href="#"]').not('[href="#0"]').click(function(event) {
        // On-page links
        if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
          // Figure out element to scroll to
          var target = $(this.hash);
          target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
          // Does a scroll target exist?
          if (target.length) {
            // Only prevent default if animation is actually gonna happen
            event.preventDefault();
            $('html, body').animate({
              scrollTop: target.offset().top
            }, 1000, function() {
              // Callback after animation
              // Must change focus!
              var $target = $(target);
              $target.focus();
              if ($target.is(":focus")) { // Checking if the target was focused
                return false;
              } else {
                $target.attr('tabindex', '-1'); // Adding tabindex for elements not focusable
                $target.focus(); // Set focus again
              };
            });
          }
        }
      });
  </script>
</body>

</html>
