/* 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 won'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)));
}
