/* Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file */
/* for details. All rights reserved. Use of this source code is governed by a */
/* BSD-style license that can be found in the LICENSE file. */

@include "../../view/resources/view.css"

@include "../../touch/resources/touch.css"

html {
  height: 100%;
  width: 100%;
}

body {
  background: white;
  font-weight: normal;
  font-family: arial,sans-serif;
  font-size: 13px;
  margin: 0 0 0 0;
  height: 100%;
  width: 100%;
  color: #222;
  overflow: hidden;
  -webkit-tap-highlight-color: rgba(0,0,0,0);
}

h1 {
  font-family: arial,sans-serif;
  font-size: 36px;
  color: #72c3f2;
  text-align: center;
  margin-bottom: 0;
}

h2 {
  font-size: 16px;
  font-weight: normal;
  text-overflow: ellipsis;
  text-wrap: none;
  white-space: nowrap;
}

button {
  vertical-align: top;
}

/* Remove the blue outer glow from focused divs. */
div {
  outline: none;
}

input {
  resize: none;
  border: inset #aaa 1px;
  margin: 2px;
  padding: 1px 2px 2px 2px;
  overflow: hidden;
  white-space: nowrap;
}

.sm-root.hidden {
  -webkit-transform: translate3d(0, 40px, 0);
}

input:focus {
  border: solid #88f 2px;
  outline: none;
  margin: 1px;
}

.front-view {
  background: white;
  overflow: hidden;
}

.bottom-view {
  position: absolute;
  left: 0;
  top: 51px;
  bottom: 0;
}

.top-view {
  position: absolute;
  left: 0;
  right: 0;
  z-index: 30;
  overflow: hidden;
  -webkit-transition-duration: 0.45s;
}

.query {
  position: absolute;
  -webkit-transition-duration: 0.45s;
  top: 0;
  width: 257px;
  bottom: 0;
  background: white;
  border-left: 1px solid #F5F5F5;
  border-right: 1px solid #F5F5F5;
}

.query.sel {
  z-index: 29 !important;
  border-left: 1px solid #D2D2D2;
  border-right: 1px solid #D2D2D2;
  visibility: visible !important;
  opacity: 1 !important;
}

.query h2 {
  color: #1155CC;
  padding: 20px 16px 16px 16px;
  left: 0;
  right: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  margin: 0;
  box-sizing: border-box;
  ms-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  z-index: 10;
  position: absolute;
  font: bold 14px Arial, sans-serif;
}

.query-name-shadow {
  position: absolute;
  left: 0;
  right: 0;
  height: 15px;
  top: 39px;
  background: -webkit-gradient(linear, left bottom, left top, from(rgba(255,255,255,0)), to(rgba(255,255,255, 1)));
  overflow: hidden;
  z-index: 3;
}

.section-view {
  -webkit-transition-property: -webkit-transform, opacity;
  -webkit-transition-duration: 0.45s;
  opacity: 0.6;
  position: absolute;
  left: 0;
  right: 0;
  top: 51px;
  bottom: 0;
  overflow: hidden;
}

.loading-section {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
}

.touch-scrollbar {
  position: absolute;
  background: #888;
  opacity: 0.4;
  -webkit-transition-property: opacity;
  -webkit-transition-duration: 0.3s;
  z-index: 1000;
}

.touch-scrollbar.drag,
.touch-scrollbar:hover {
  opacity: 0.8;
}

.story-section {
  margin-left: 0;
  margin-right: 0;
  left: 0;
  right: 0;
  top: 39px;
  bottom: 0;
  overflow: hidden;
  position: absolute;
}

.story {
  position: absolute;
  left: 0;
  right: 0;
  box-sizing: border-box;
  ms-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  margin: 0;
  border: 1px solid #F5F5F5;
  line-height: 18px;
  /* This is needed when there is no caption. Since the other elements are
     absolutely positioned, the story will collapse to nothing without this. */
  min-height: 92px;
}

.story:active,
.story.sel {
  box-shadow:inset 4px 0 4px -2px #4d90f0;
  -webkit-box-shadow:inset 4px 0 4px -2px #4d90f0;
}

.story img {
  position: absolute;
  width: 57px;
  height: 57px;
  z-index: 20;
  -webkit-transition-property: opacity;
  -webkit-transition-duration: 0.45s;

  opacity: 0.6;
}

.snippet,
.story .title {
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

.snippet {
  margin-top: -5px;
  font: normal 13px arial,sans-serif;
  line-height: 18px;
  opacity: 0.6;
}

.story .title {
  font-weight: bold;
  margin-left: 75px;
  line-height: 18px;
  /* TODO(rnystrom): The following prevents it from running over the byline, but
     it cuts off part of the title if it's longer than two lines. */
  height: 38px;
  opacity: 0.6;
}

.story.no-thumb .title,
.story.no-thumb .byline {
  left: 16px;
}

.story-shadow {
  position: absolute;
  left: 2px;
  right: 2px;
  height: 31px;
  top: -32px;
  overflow: hidden;
  z-index: 2;
}

.story .byline,
.story .dateline {
  color: #999;
  font-size: 12px;
  line-height: 18px;
}

.story .dateline {
  position: relative;
  top: -18px;
}

/* TODO(jacobr): handle intersection with byline better... */
.story .dateline {
  text-align: right;
  opacity: 0.6;
  line-height: 18px;
}

.story .byline {
  margin-left: 75px;
  text-overflow: ellipsis;
  white-space: nowrap;
  opacity: 0.6;
  display: inline-box;
}

/* TODO(jacobr): this is backwards. we should have a read classname instead */
.story.story-unread .dateline,
.story.story-unread .text,
.story.story-unread .title,
.story.story-unread .byline,
.story.story-unread img,
.story.story-unread .caption {
  opacity: 1;
}

.story .text {
  top: 3px;
  height: 90px;
  opacity: 0.6;
}

.story {
  position: absolute;
  left: 0;
  right: 0;
  padding: 16px;
  overflow: hidden;
}

.story-view {
  position: absolute;
  left: 260px;
  right: 0;
  top: 51px;
  bottom: 0;
  line-height: 18px;
  overflow: hidden;

  -webkit-animation-timing-function: ease-in;
  -webkit-transition-duration: 0.45s;
  -webkit-text-size-adjust: none;
}

.paged-column {
  position: absolute;
  top: 100px;
  left: 20px;
  bottom: 45px; /* so it doesn't overlap with the page-number */
  right: 20px;
}

.page-number {
  position: absolute;
  z-index: 1;
  right: -40px;
  bottom: -40px;
  padding-left: 0px;
  padding-top: 0px;
  padding-right: 50px;
  padding-bottom: 50px;
  background: white;
  box-shadow: -16px -16px 24px white;
  -webkit-box-shadow: -16px -16px 24px white;
  font-size: 16px;
  color: rgba(0, 0, 0, 0.5);
  text-align: center;
  /* prevent accidental text selection if user clicks fast */
  -webkit-user-select: none;
}

.page-number-left, .page-number-right {
  min-width: 25px;  /* for bigger click area */
  font-size: 22px;
  font-weight: bold;
}

.page-number-label {
  min-width: 60px;
}

.story-content {
  -webkit-column-width: 300px;
  -webkit-column-gap: 26px; /* 2em */
}

/*
 * Styles to get the right look for images in the column layout.
 *
 * These are set to "!important" to replace any styles in the HTML.
 * TODO(jmesserly): ideally the server would strip style="" from img tags, then
 * we wouldn't need the !important.
 */
.story-content img {
  /* Set maximum width so the image shrinks to fit the column. */
  max-width: 100% !important;
  /*
   * Set maximum height so the image wont't wrap between columns.
   * TODO(jmesserly): figure out why we can't use 100% here; it seems like
   * 100% is being interpreted as bigger than the column height.
   */
  max-height: 70% !important;

  /* Set width and height to auto to preserve aspect ratio. */
  width: auto !important;
  height: auto !important;
}

.story-content a {
  color: #15C;
}

.story-content a:visited {
  color: #61c;
}

.story-image {
  margin: 10px;
  width: 200px;
}

.story-text-view {
  padding: 20px;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  position: absolute;
  overflow: hidden;
}

.story-text-view {
  box-sizing: border-box;
  ms-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
 }

.story-text-view .story-header {
  margin-bottom: 10px;
  padding-bottom: 2px;
  border-bottom: 1px solid #d2d2d2;
  font-weight: bold;
}

.story-text-view .story-header .story-title {
  font-weight: bold;
  color: #15C;
  font-size: 18px;
  margin-bottom: 5px;
  text-overflow: ellipsis;
  text-wrap: none;
  white-space: nowrap;
  width: 100%;
  display: block;
  overflow: hidden;
}

.story-title:link, .story-title:visited {
  text-decoration: none;
}

.story-title:hover {
  text-decoration: underline;
}

.story-text-view .story-header .story-byline {
  font-weight: bold;
  color: #333;
  font-size: 15px;
  padding-top: 3px;
  padding-bottom: 3px;
  text-overflow: ellipsis;
  text-wrap: none;
  white-space: nowrap;
}

.story-text-view .story-header .story-dateline {
  font-weight: normal;
  color: #999;
  font-size: 12px;
  padding-top: 3px;
  padding-bottom: 3px;
  text-overflow: ellipsis;
  text-wrap: none;
  white-space: nowrap;
}

.header-view {
  height: 54px;
  z-index: 2;
  overflow: hidden;
  position: relative;
  background-color: #F5F5F5;
  border-bottom: 1px solid #d2d2d2;
}

.app-title {
  font-size: 20px;
  color: #484848;
  padding-left: 22px;
  padding-top: 0;
  padding-bottom: 10px;
  position: absolute;
  left: 0;
  top: 17px;
  cursor: pointer;

  -webkit-transition-property: left;
  -webkit-transition-duration: 0.45s;
}

.app-title.in-story {
  left: 50px;
}

/* The arrow that is used as a back button on the story page. */
.back-arrow {
  background-image: url('back-21.png');
  width: 10px;
  height: 15px;
  margin: 10px 15px;
  position: absolute;
  left: -100px;

  -webkit-transition-property: left;
  -webkit-transition-duration: 0.45s;
}

.back-arrow.in-story {
  left: 0;
}

.config {
  background-image: url('settings-21.png');
  position: absolute;
  right: 120px;

  -webkit-transition-property: right;
  -webkit-transition-duration: 0.45s;
}

.config.in-story {
  right: -60px;
}

.refresh {
  background-image: url('refresh-21.png');
  right: 60px;
  position: absolute;

  -webkit-transition-property: right;
  -webkit-transition-duration: 0.45s;
}

.refresh.in-story {
  right: -160px;
}

#dart-logo {
  height: 21px;
  padding-left: 25px;
  background: url('Dart_Logo_21.png') no-repeat;
}

.info-button {
  background: url('info.svg');
  background-size: 55%;
  margin: 13px;
  position: absolute;
  right: 0;

  -webkit-transition-property: right;
  -webkit-transition-duration: 0.45s;
}

.info-button.in-story {
  right: -260px;
}

.new-window-button {
  background-image: url('externallink.svg');
  background-size: 100% 100%;
  width: 24px;
  height: 24px;
  top: 43px;
  right: 220px;
  position: absolute;
}

.web-back-button,
.web-forward-button {
  width: 24px;
  height: 24px;
  top: 43px;
  position: absolute;
}

.web-back-button {
  background-image: url('lefttriangle.svg');
  right: 302px;
}

.web-forward-button {
  background-image: url('righttriangle.svg');
  right: 260px;
}

.web-view-button, .text-view-button {
  width: 80px;
  height: 24px;
  top: 45px;
  border: solid 1px #D9D9D9;
  background: -webkit-gradient(linear,left top,left bottom,from(whiteSmoke),to(#F1F1F1));
  font-size: 13px;
  position: absolute;
  text-align: center;
}

.web-view-button {
  right: 40px;
}

.text-view-button {
  right: 120px;
}

.web-view-button.active, .text-view-button.active {
  background: -webkit-gradient(linear,left top,left bottom,from(#EEE),to(#E0E0E0));
  border-color: #BBB;
  box-shadow: inset 0 1px 5px #ccc;
  -moz-box-shadow: inset 0 1px 5px #ccc;
  -webkit-box-shadow: inset 0 1px 5px #ccc;
}

/* TODO(eub): refactor this to apply to all standard buttons? */
.config,
.refresh,
.info-button,
.back-arrow {
  opacity: 0.5;
  border: 1px solid #C8C8C8;
  color: #444;
  border-radius: 2px;
  width: 47px;
  height: 29px;
  margin: 12px;
  background-position: center;
  background-repeat: no-repeat;
}

.config:hover,
.refresh:hover,
.info-button:hover,
.back-arrow:hover {
  opacity: 1;
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
}

button,
.button,
.sm-item {
  cursor: pointer;
}

.sm-root {
  border-bottom: none;
  background-color: transparent;
  -webkit-box-shadow: none;
  height: 44px;
  overflow: hidden;
  position: absolute;
  top: 16px;
  left: 120px;
  z-index: 3;
}

.data-source-view {
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  position: absolute;
}

.data-source-view > div {
  height: 100%;
  position: relative;
}

.sm-item-box {
  -webkit-box-pack: start;
}

.sm-triangle {
  width: 22px;
  border: none;
  top: 14px;
  height: 15px;
  background-image: url('sliderarrow.svg');
}

.sm-item.sel {
  color: #d14836;
}

.sm-item {
  font: 16px arial,sans-serif;
  text-transform: none;
  color: #484848;
}

/* TODO(eub): Kennedy GMail button:active is actually a blue outline,
   of all things. */
.button:active,
.sm-item:active {
  opacity: 0.5;
}

/* dialog view */

.dialog-modal {
  width: 100%;
  height: 100%;
  display: -webkit-box;
  -webkit-box-align: center;
  -webkit-box-pack: center;
  background-color: rgba(200, 200, 200, 0.6);
  z-index: 40;
  position: absolute;
}

.dialog {
  border: 1px solid #CCC;
  width: 250px;
  padding: 20px;
  background-color: white;
  box-shadow: -1px 3px 3px rgba(0, 0, 0, 0.1);
  -webkit-box-shadow: -1px 3px 3px rgba(0, 0, 0, 0.1);
}

.dialog-title-area {
  font-size: 19px;
  padding: 0 0 10px 0;
}

.dialog-title {
  vertical-align: middle;
}

.dialog-body {
  color: black;
  padding: 10px 0 0 0;
}

/* TODO(terry): Better than floats for this simple dialog? */
.done-button {
  float: right;
}

.hidden-story {
  -webkit-animation-timing-function: ease-in;
  opacity: 0;
}

.header-background {
  background: black;
  width: 100%;
}

#appSplash .header {
  height: 54px;
  z-index: 2;
  overflow: hidden;
  position: relative;
  background-color: #F5F5F5;
  border-bottom: 1px solid #d2d2d2;
}

#appSplash .title {
  font-size: 20px;
  color: #484848;
  padding-left: 22px;
  padding-top: 0;
  padding-bottom: 10px;
  position: absolute;
  left: 0;
  top: 15px;
}

#appSplash .splash {
  font-size: 24px;
  position: absolute;
  top: 173px;
  bottom: 0;
  left: 0;
  right: 0;
  text-align: center;
}

#appSplash .footer {
  font-size: 10px;
  color: rgba(0, 0, 0, 0.6);
  position: absolute;
  left: 5px;
  bottom: 5px;
}

#appSplash .footer A:link,A:visited {
  text-decoration: none;
  color: rgba(0, 0, 0, 0.6);
}

#appSplash .footer A:hover {
  text-decoration: underline;
  color: rgba(0, 0, 0, 0.6);
}

#appSplash {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  /* Put in front of UI. UI will load behind it then remove this to avoid
     a visible flicker. */
  z-index: 50;
  background: #fff;
}

@-webkit-keyframes pulsate {
0% {
    -webkit-transform: translate3d(0, 0, 0) scale(1.0);
}
50% {
    -webkit-transform: scale(1.5) translate3d(0, 20px, 0);
    }
100% {
    -webkit-transform: translate3d(0, 0, 0) translate3d(0, 0, 0);
    }
}

#appSplash .splashImg {
  position: absolute;
  left: 140px;
  /* We put the image on a div instead of just using an img so that the image
     URL can live in the CSS, where update.py knows to find it. */
  width: 640px;
  height: 480px;
  background-image: url('pigeons-jumpinjimmyjava-white90pct-q70.jpg');

  -webkit-animation-name: pulsate;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: ease-in-out;
  -webkit-animation-duration: 5s;
}

.section-view.hide-all-queries .data-source-view .query,
.section-view.hide-all-queries .page-number {
  opacity: 0; 
}

.transparent {
  opacity: 0;
}

.query {
  width: 297px;
}

.story-view {
  left: 300px;
}

.story-shadow {
  background: -webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,0)), to(rgba(255,255,255, 1)), color-stop(0.7, rgba(255,255,255, 1)));
}
