/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

/* Styles for the cookies list page. */
.cookies-view-page {
  height: 90%;
  margin-left: -15px;
  width: 720px;
}

/* Styles for the cookies list elements in cookies_view.html. */
.cookies-list {
  -webkit-box-flex: 1;
  /* This property overrides the |min-height: 192px;| property above due to
   * special behavior of the cookies list. */
  border: 1px solid #D9D9D9;
  margin: 0;
  margin-top: 5px;
  min-height: 0;
}

.cookies-list-content-area {
  -webkit-box-orient: vertical;
  display: -webkit-box;
  overflow-y: hidden;
}

.cookies-column-headers {
  -webkit-box-align: baseline;
  -webkit-box-orient: horizontal;
  display: -webkit-box;
  position: relative;
  width: 100%;
}

.cookies-column-headers > * {
  display: block;
}

.cookies-column-headers h3 {
  font-size: 105%;
  font-weight: bold;
  margin: 10px 0;
}

/* Notice the width and padding for these columns match up with those below. */
.cookies-site-column {
  -webkit-padding-start: 7px;
  width: 14em;
}

.cookies-data-column {
  -webkit-box-flex: 1;
  -webkit-padding-start: 7px;
}

/* Enable animating the height of items. */
list.cookie-list .deletable-item {
  -webkit-transition: height 150ms ease-in-out;
}

/* Disable webkit-box display. */
list.cookie-list .deletable-item > :first-child {
  display: block;
}

/* Force the X for deleting an origin to stay at the top. */
list.cookie-list > .deletable-item > .close-button {
  position: absolute;
  right: 2px;
  top: 8px;
}

html[dir=rtl] list.cookie-list > .deletable-item > .close-button {
  left: 2px;
  right: auto;
}

/* Styles for the site (aka origin) and its summary. */
.cookie-site {
  /* Notice that the width, margin, and padding match up with those above. */
  -webkit-margin-end: 2px;
  -webkit-padding-start: 5px;
  display: inline-block;
  overflow: hidden;
  text-overflow: ellipsis;
  width: 14em;
}

list.cookie-list > .deletable-item[selected] .cookie-site {
  -webkit-user-select: text;
}

.cookie-data {
  display: inline-block;
  max-width: 410px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.cookie-size {
  display: inline-block;
  float: right;
  margin-right: 0;
}

list.cookie-list > .deletable-item[selected] .cookie-data {
  -webkit-user-select: text;
}


/* Styles for the individual items (cookies, etc.). */
.cookie-items {
  /* Notice that the margin and padding match up with those above. */
  -webkit-margin-start: 14em;
  -webkit-padding-start: 7px;
  -webkit-transition: 150ms ease-in-out;
  display: none;
  height: 0;
  opacity: 0;
  /* Make the cookie items wrap correctly. */
  white-space: normal;
}

.measure-items .cookie-items {
  -webkit-transition: none;
  height: auto;
  visibility: hidden;
}

.show-items .cookie-items {
  display: block;
  opacity: 1;
}

.cookie-items .cookie-item {
  background: rgb(224, 233, 245);
  border: 1px solid rgb(131, 146, 174);
  border-radius: 5px;
  display: inline-block;
  font-size: 85%;
  height: auto;
  margin: 2px 4px 2px 0;
  max-width: 120px;
  min-width: 40px;
  overflow: hidden;
  padding: 0 3px;
  text-align: center;
  text-overflow: ellipsis;
}

.cookie-items .cookie-item:hover {
  background: rgb(238, 243, 249);
  border-color: rgb(100, 113, 135);
}

.cookie-items .cookie-item[selected] {
  background: rgb(245, 248, 248);
  border-color: #B2B2B2;
}

.cookie-items .cookie-item[selected]:hover {
  background: rgb(245, 248, 248);
  border-color: rgb(100, 113, 135);
}

.cookie-items .cookie-item .protecting-app,
.cookie-data .protecting-app {
  margin-bottom: -3px;
  margin-left: 4px;
}

/* Styles for the cookie details box. */
.cookie-details {
  background: rgb(245, 248, 248);
  border: 1px solid #B2B2B2;
  border-radius: 5px;
  margin-top: 2px;
  padding: 5px;
}

list.cookie-list > .deletable-item[selected] .cookie-details {
  -webkit-user-select: text;
}

.cookie-details-table {
  table-layout: fixed;
  width: 100%;
}

.cookie-details-label {
  vertical-align: top;
  white-space: pre;
  width: 10em;
}

.cookie-details-value {
  word-wrap: break-word;
}
