/**
 * Copyright 2010-2015, Google Inc.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 *     * Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above
 * copyright notice, this list of conditions and the following disclaimer
 * in the documentation and/or other materials provided with the
 * distribution.
 *     * Neither the name of Google Inc. nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/**
 * NaCl Mozc option page style sheet.
 * This file is intended to keep a consistency with Chrome setting page.
 * The original style sheet files of Chrome setting page are here.
 *  https://code.google.com/p/chromium/codesearch#chromium/src/ui/webui/resources/css/
 *
 */

body {
  color: rgb(48, 57, 66);
  font: 75% MotoyaG04Gothic, 'Noto Sans UI', sans-serif;
  max-width:640px;
  visibility:hidden;
}

#content_base_div {
  position: absolute;
}

.frozen {
  position: fixed;
}

input[type='checkbox'] {
  -webkit-appearance: none;
  background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede);
  border: 1px solid rgba(0, 0, 0, .25);
  border-radius: 2px;
  bottom: 2px;
  box-shadow: 0 1px 0 rgba(0, 0, 0, .08),
      inset 0 1px 2px rgba(255, 255, 255, .75);
  color: #444;
  font: inherit;
  height: 13px;
  margin: 4px 1px 0 0;
  position: relative;
  -webkit-user-select: none;
  text-shadow: 0 1px 0 rgb(240, 240, 240);
  vertical-align: middle;
  width: 13px;
}

input[type='checkbox']:checked::before {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAcklEQVQY02NgwA/YoJgoEA/Es4DYgJBCJSBeD8SboRinBiYg7kZS2IosyQ/Eakh8LySFq4FYHFlxGRBvBOJYqMRqJMU+yApNkSRAeC0Sux3dfSCTetE0wKyXxOWhMKhTYIr9CAUXyJMzgLgBagBBgDPGAI2LGdNt0T1AAAAAAElFTkSuQmCC) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAA60lEQVQ4y2P4//8/Ay0wA00NpgC4AXEksgA1DNYA4vVAvBnZcEoNFgLihVBDNyMbTonBLEDchWYo3HBKDM7BYSgIZ5JrsBseQxuBmIkcg5EjCx1PBmJufGHsBMQFQMxORGTB8BIglsCXKmSBeA1U8RQgliMistYBsTq+dAxy4TQ0TSBLnPFE1iYgdkAPL3SDC/BECi4cjS0i0A12RgoGYnAxEDMSYzAIyGMJDmy4B4jZcCUdXKmCnUCwzAVifnxpklA6xhY0K4BYgVBiJyaDgIJmKtTQjUBsTEwuIjbnwYLGi9jsSZ8aZEgZDACI3DQYaeTU0AAAAABJRU5ErkJggg==) 2x);
  background-size: 100% 100%;
  content: '';
  display: block;
  height: 100%;
  -webkit-user-select: none;
  width: 100%;
}

input[type='checkbox']:disabled {
  opacity: .75;
}

input[type='checkbox']:focus {
  border-color: rgb(77, 144, 254);
  outline: none;
}

input[type='button'] {
  -webkit-appearance: none;
  background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede);
  border: 1px solid rgba(0, 0, 0, 0.25);
  border-radius: 2px;
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08),
      inset 0 1px 2px rgba(255, 255, 255, 0.75);
  color: #444;
  font: inherit;
  margin: 0 1px 5px 0;
  min-height: 24px;
  min-width: 48px;
  padding-bottom: 1px;
  -webkit-padding-end: 10px;
  -webkit-padding-start: 10px;
  text-shadow: 0 1px 0 rgb(240, 240, 240);
  -webkit-user-select: none;
}

input[type='button']:enabled:hover {
  background-image: -webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0);
  border-color: rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12),
      inset 0 1px 2px rgba(255, 255, 255, 0.95);
  color: black;
}

input[type='button']:enabled:active {
  background-image: -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7);
  box-shadow: none;
  text-shadow: none;
}

input[type='button']:disabled {
  background-image: -webkit-linear-gradient(#f1f1f1, #f1f1f1 38%, #e6e6e6);
  border-color: rgba(80, 80, 80, 0.2);
  box-shadow: 0 1px 0 rgba(80, 80, 80, 0.08),
      inset 0 1px 2px rgba(255, 255, 255, 0.75);
  color: #aaa;
}

input[type='button']:focus {
  border-color: rgb(77, 144, 254);
  outline: none;
}

input[type='text'] {
  border: 1px solid #bfbfbf;
  border-radius: 2px;
  box-sizing: border-box;
  color: #444;
  font: inherit;
  margin: 0;
  min-height: 2em;
  padding: 3px;
}

input[type='text']:focus {
  border-color: rgb(77, 144, 254);
  outline: none;
}

input[type='text']:invalid {
  background-color: pink;
}

label {
  display: inline;
  padding: 0;
  cursor: default;
}

label:hover {
  color: black;
}

h1 {
  display: block;
  font-size: 1.5em;
  font-weight: normal;
  line-height: 1;
  margin: 0;
  -webkit-margin-after: .67em;
  -webkit-margin-before: .67em;
  -webkit-margin-end: 0;
  -webkit-margin-start: 0;
  padding: 1px 0 13px;
  -webkit-user-select: none;
}

h1::after {
  background-color: #eee;
  content: ' ';
  display: block;
  height: 1px;
  -webkit-margin-end: 20px;
  position: relative;
  top: 13px;
}

h2 {
  display: block;
  font-size: 120%;
  font-weight: normal;
  line-height: 1;
  margin: 0;
  -webkit-margin-after: .67em;
  -webkit-margin-before: .67em;
  -webkit-margin-end: 0;
  -webkit-margin-start: 0;
  padding: 1px 0 13px;
  text-shadow: white 0 1px 2px;
  -webkit-user-select: none;
}

h3 {
  color: black;
  font-size: 1.2em;
  font-weight: normal;
  line-height: 1;
  margin-bottom: .8em;
  -webkit-margin-start: -18px;
  -webkit-user-select: none;
}

section {
  margin: 8px 0 10px;
  max-width: 600px;
  -webkit-padding-start: 20px;
}

select {
  -webkit-appearance: none;
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAYAAAAbQcSUAAAAaUlEQVQoz2P4//8/A7UwdkEGhiggTsODo4g2LBEImJmZvwE1/UfHIHGQPNGGAbHCggULFrKxsf1ENgjEB4mD5EnxJoaByAZB5Yk3DNlAPj6+L8gGkWUYzMC3b982IRtEtmFQjaxYxDAwAGi4TwMYKNLfAAAAAElFTkSuQmCC) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAQCAYAAACV3GYgAAAAWklEQVRIx+3VOwoAIAwD0B49N686CCJ+K0aHFrIl8LaKqsqvEccxcPEQo8bgNs4KTBth4HaByCMWbhWIcsDEzYCoy2xcD4hW8QWuBqJXeoXLQIwK/iEc57iDBIg+ClNpjek/AAAAAElFTkSuQmCC) 2x),
      -webkit-linear-gradient(#ededed, #ededed 38%, #dedede);
  background-position: right center;
  background-repeat: no-repeat;
  border: 1px solid rgba(0, 0, 0, .25);
  border-radius: 2px;
  box-shadow: 0 1px 0 rgba(0, 0, 0, .08), inset 0 1px 2px rgba(255, 255, 255, .75);
  color: #444;
  font: inherit;
  margin: 0 1px 0 0;
  min-height: 2em;
  min-width: 160px;
  padding-bottom: 1px;
  -webkit-padding-end: 20px;
  -webkit-padding-start: 6px;
  text-shadow: 0 1px 0 rgb(240, 240, 240);
  -webkit-user-select: none;
}

select:disabled {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAYAAAAbQcSUAAAAWklEQVQoz2P4//8/A7UwdkEGhiggTsODo4g2LBEIGhoa/uPCIHmiDQNihQULFizEZhBIHCRPijexGggzCCpPvGHoBiIbRJZhMAPfvn3bhGwQ2YZBNbJiEcPAAIgGZrTRc1ZLAAAAAElFTkSuQmCC) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAQCAYAAAB6Hg0eAAAAX0lEQVRIx+3UOwoAIAxEwRz93TwWIoj4lwRBA9vtwlQRVZUbcyVqCUY8PQwWsFMcgFjBdnGkvSVsFUe+tYbN4ih3HrARjtrGC9bC0ep7wkocva43LOEY9d75/B/2YZsJM1B42fe2uWoAAAAASUVORK5CYII=) 2x),
      -webkit-linear-gradient(#f1f1f1, #f1f1f1 38%, #e6e6e6);
  border-color: rgba(80, 80, 80, .2);
  box-shadow: 0 1px 0 rgba(80, 80, 80, .08), inset 0 1px 2px rgba(255, 255, 255, .75);
  color: #aaa;
}

select:focus {
  border-color: rgb(77, 144, 254);
  outline: none;
}

#suggestions_size {
  min-width: 40px;
}

option {
  font: inherit;
  font-weight: normal;
}

footer {
  border-top: 1px solid #eee;
  -webkit-margin-end: 20px;
  margin-top: 16px;
  padding: 8px 0;
  text-align: right;
}

a {
  color: rgb(17, 85, 204);
  cursor: pointer;
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

.controlled-setting-with-label {
  -webkit-box-align: center;
  display: -webkit-box;
  padding-bottom: 3px;
  padding-top: 3px;
}

.controlled-setting-with-label > input + span {
  -webkit-box-align: center;
  -webkit-box-flex: 1;
  display: -webkit-box;
  -webkit-margin-start: .6em;
}

.controlled-setting-with-label > input:disabled + span > label {
  color: #999;
}

.controlled-setting-with-label > span > label {
  display: inline;
  padding: 0;
}

.selection-label {
  display: -webkit-box;
  width: 150px;
}

.overlay {
  background-color: rgba(255, 255, 255, 0.75);
  bottom: 0;
  -webkit-box-align: center;
  -webkit-box-orient: vertical;
  -webkit-box-pack: center;
  display: -webkit-box;
  left: 0;
  overflow: auto;
  padding: 20px;
  position: fixed;
  right: 0;
  top: 0;
  -webkit-transition: 200ms opacity;
  visibility:hidden;
  z-index: 11;
}

.overlay_page {
  background: white;
  background-color: white;
  -webkit-border-radius: 3px;
  -webkit-box-orient: vertical;
  box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(0,0,0,0.15);
  color: #333;
  display: -webkit-box;
  margin-bottom: 6px;
  margin-top: 6px;
  padding-top: 10px;
  position: relative;
  -webkit-transition: 200ms -webkit-transform;
  -webkit-user-select: none;
  z-index: 0;
}

.overlay > .overlay_page > .close_button {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAAUklEQVR4XqXPYQrAIAhAYW/gXd8NJxTopVqsGEhtf+L9/ERU2k/HSMFQpKcYJeNFI9Be0LCMij8cYyjj5EHIivGBkwLfrbX3IF8PqumVmnDpEG+eDsKibPG2JwAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAQAAADYBBcfAAAAcUlEQVR4Xu3UQQrAQAgDQN+cD+jPbU+BuChS6G3JLTAgIlp+zBZcCIO/sRL2PXQk8qDsexhI0soS0UOhlU2jCq1shEqVzVAp2RKSku2hE/oakpEuIVnIhkeoTDc8Q2VKB6jspD2Mwkg3t3oy9n9/gAsfSKXnp9ZyP20AAAAASUVORK5CYII=) 2x);
  background-position: center;
  background-repeat: no-repeat;
  height: 14px;
  position: absolute;
  right: 7px;
  top: 7px;
  width: 14px;
  z-index: 1;
}

.overlay > .overlay_page > .close_button:hover {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAAnUlEQVR4XoWQQQ6CQAxFewjkJkMCyXgJPMk7AiYczyBeZEAX6AKctGIaN+bt+trk9wtGQc/IkhnoKGxqqiWxOSZalapWFZ6VrIUDExsN0a5JRBq9LoVOR0eEQMoEhKizXhhsn0p1sCWVo7CwOf1RytPL8CPvwuBUoHL6ugeK30CVD1TqK7V/hdpe+VNChhOzV8xWny/+xosHF8578W/Hmc1OOC3wmwAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAQAAADYBBcfAAABSElEQVR4XpXVTY6CQBAF4A4hHMu14S6QiQmJTpSNrjpyhY5LNsICF80N0NMMBjYkLYMGLOYNRWZ4u0p/4ae6C7GCaCv1VBGVoQnaoA1NVKpr6mkL1/1EdqwOzar9nUMTK20z8LKQ1RhgZHVZTMDkY2sQYLYm9QCeNwGBmQTt+XMEs+XmAYDN+pEte6gdejfdBQHWZaWdF4wVsedFlKvHpw5qixqQvyBS3VfzUXO0JRKfliBFRkl8oQpiSJFRVCGikhBSZJToS4SGCFJimNAIbDzSnNkIDNRvqDkYGoYhxUeNSo7l0Bz4OOrKMGwOtiPxecbTxKcth2yK0pazn5v8REuAMfVO4LHKgU3VZa2d4SC76/8cZHc8OnZ/Hh07Gh09pbvydxsYwdcDy3qOyTpzZwbyvplCe34gE049dTveh1/A8a5uqTcgyjd2tBg2T+9digAAAABJRU5ErkJggg==) 2x);
}

.overlay > .overlay_page > .close_button:active {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAAnElEQVR4Xn2QQQqDQAxFcwjrQR6MoDC9hD2RBY9XrL3IaLuwXWg1BgldlLfLS0LyBYWMlp5ppaMh26uqqEksjoFapapZhWfetHBiYKEi2nQiUul0LjRaOiME0kpAiFprhc76C9Vhb1LZCxOL06aUt5fhRz6PtbawcPpuBxGPgwp/UK6vlP4VSnvlfwgbF0avGC0+F/yDDy9uXLHgv9HQnE67Dt6aAAAAAElFTkSuQmCC) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAQAAADYBBcfAAABTUlEQVR4XpXVsYrCQBAG4CVIHsgmhYcIaSTaLpiHSDi2uwMhnbJVsNo0wceJPo2RpBHWnCt64/2XCXf5uyEfSZzZUYwhxtOJquI6tEEXdKGNa3XQifHwvp9olJXLy7j7neUlK82IgbupbBzgIpvdtAfq95lFgJlZnQDcfgQEBhJ0288XmM/frgDYTK75/AGNT99mbkGAddkY/w6zkpi7iHL1bH+DxqMGFM4RJXZP8dIc4wmdOsJQYBSdClURQ4qMoioR14SQIqPEJxFaIkiJYUIrsPFIC2YQGGi+oeFgaBmGFF81rjlWQHPgx1EHhmFzsB065RlPdUojh4ynbuRGbsj3dAswpn4TeKwKYH112Rr/eZCjyX8OcvSyOjbrv66OzZpWx4PSU/mnOQbQvbBsh5hs82hgIS8ufWjBL2TCOlHH1fn5F7A6q6NOnojyBfK6dXRV1N6jAAAAAElFTkSuQmCC) 2x);
}

.alert_overlay {
  visibility:visible;
  z-index: 12;
}
.alert_page {
  width: 400px;
}

.alert_title {
  color: black;
  font-size: 14px;
  font-weight: normal;
  line-height: 1;
  margin-bottom: 10px;
  text-shadow: rgb(255, 255, 255) 0px 1px 2px;
}

.alert_message_div {
  margin-right: 20px;
}

.alert_ok_div {
  margin-right: 20px;
  margin-top: 10px;
  text-align: right;
}

.prompt_overlay {
  visibility:visible;
  z-index: 12;
}

.prompt_page {
  width: 400px;
}

.prompt_title {
  color: black;
  font-size: 14px;
  font-weight: normal;
  line-height: 1;
  margin-bottom: 10px;
  text-shadow: rgb(255, 255, 255) 0px 1px 2px;
}

.prompt_message_div {
  margin-bottom: 10px;
}

.prompt_input {
  width: 350px
}

.prompt_ok_cancel_div {
  margin-right: 20px;
  margin-top: 10px;
  text-align: right;
}

.confirm_overlay {
  visibility:visible;
  z-index: 12;
}

.confirm_page {
  width: 400px;
}

.confirm_title {
  color: black;
  font-size: 14px;
  font-weight: normal;
  line-height: 1;
  margin-bottom: 10px;
  text-shadow: rgb(255, 255, 255) 0px 1px 2px;
}

.confirm_message_div {
  margin-bottom: 10px;
}

.confirm_ok_cancel_div {
  margin-right: 20px;
  margin-top: 10px;
  text-align: right;
}

#clear_history_page {
  width: 400px;
}

.clear_history_check_span {
  margin: 10px 0 5px 10px;
}

#clear_history_ok_cancel_div {
  margin-right: 20px;
  margin-top: 20px;
  text-align: right;
}

#dictionary_tool_page {
  -webkit-box-flex: 1;
  overflow: auto;
  width: 733px;
}

#user_dictionary_done_div {
  margin-bottom: 10px;
  margin-right: 20px;
  text-align:right;
}

#dictionary_tool_dictionary_and_content {
  -webkit-box-flex: 1;
  display: -webkit-box;
  margin: 0 20px 10px 20px;
}

#dictionary_tool_dictionary_list_area {
  background-color: rgb(235, 239, 249);
  border: solid 1px rgb(217, 217, 217);
  -webkit-box-orient: vertical;
  display: -webkit-box;
}

#dictionary_tool_dictionary_list_title {
  font-size: 12px;
  font-weight: bold;
  padding: 6px 3px 7px 7px;
  width: 120px;
}

#dictionary_tool_dictionary_list_box {
  -webkit-box-flex: 1;
  -webkit-box-orient: vertical;
  display: -webkit-box;
  overflow: auto;
  width: 128px;
}

#dictionary_tool_dictionary_list {
  -webkit-box-flex: 1;
  overflow: auto;
}

#dictionary_tool_dictionary_list:focus {
  outline: none;
}

#dictionary_tool_dictionary_menu {
  padding: 6px 3px 3px 7px;
}

.dictionary_tool_dictionary {
  display: -webkit-box;
  min-height: 31px;
}

.dictionary_tool_dictionary_name_area {
  -webkit-box-align: center;
  -webkit-box-flex: 1;
  display: -webkit-box;
  padding: 5px 4px 5px 6px;
}

.dictionary_tool_dictionary_name_area > .dictionary_tool_dictionary_name {
  display: block;
}

.dictionary_tool_dictionary_name_area_selected > .dictionary_tool_dictionary_name {
  display: none;
}

.dictionary_tool_dictionary_name {
  -webkit-box-flex: 1;
  word-wrap: break-word;
}

.dictionary_tool_dictionary_name_area > input[type='text'] {
  box-sizing: border-box;
  font-size: 12px;
  margin: 0;
  min-height: 21px;
  padding: 0;
  width: 100%;
}

.dictionary_tool_dictionary_selected {
  background-color: #d0d0d0;
}

.dictionary_tool_dictionary:hover {
  background-color: rgb(228, 236, 247);
}

.dictionary_tool_dictionary_selected:hover {
  background-color: rgb(187, 206, 233);
}

.dictionary_tool_dictionary_delete_button_div {
  -webkit-box-align: center;
  -webkit-box-orient: vertical;
  -webkit-box-pack: center;
  display: -webkit-box;
  padding: 3px 5px;
  width: 16px;
}

.dictionary_tool_dictionary > .dictionary_tool_dictionary_delete_button_div > .dictionary_tool_dictionary_delete_button {
  opacity: 0;
}

.dictionary_tool_dictionary:hover > .dictionary_tool_dictionary_delete_button_div > .dictionary_tool_dictionary_delete_button {
  opacity: 1;
}

.dictionary_tool_dictionary_selected > .dictionary_tool_dictionary_delete_button_div > .dictionary_tool_dictionary_delete_button {
  opacity: 1;
}

.dictionary_tool_dictionary > .dictionary_tool_dictionary_delete_button_div > .dictionary_tool_dictionary_delete_button:focus {
  opacity: 1;
}

.dictionary_tool_dictionary_delete_button {
  background-color: transparent;
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAiElEQVR42r2RsQrDMAxEBRdl8SDcX8lQPGg1GBI6lvz/h7QyRRXV0qUULwfvwZ1tenw5PxToRPWMC52eA9+WDnlh3HFQ/xBQl86NFYJqeGflkiogrOvVlIFhqURFVho3x1moGAa3deMs+LS30CAhBN5nNxeT5hbJ1zwmji2k+aF6NENIPf/hs54f0sZFUVAMigAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA9UlEQVR4Xu3UsWrCUByH0fMEouiuhrg4xohToJVGH0CHLBncEwfx/VvIFHLJBWmHDvKbv7PcP9f3L/fXwBsApZSRpUpEgbOnxwiReng6x4AvjdrNXRLkibubWqMcB9Yujk7qjhjmtZOji/U4wELuoBwQXa50kFsQA5jK+kQ/l5kSA4ZEK5Fo+3kcCIlGM8ijQEhUqkEeBUKiUPTyl4C5vZ1cbmdv/iqwclXY6aZwtXoFSLQqhVwmkytUWglxAMG7T0yCu4gD0v7ZBKeVxoEwFxIxYBPmIWEzDnyEeUj4HAfYdvmMcGYdsSUGsOzlIbHEv/uV38APrreiBRBIs3QAAAAASUVORK5CYII=) 2x);
  border: none;
  display: block;
  height: 16px;
  opacity: 1;
  -webkit-transition: 150ms opacity;
  width: 16px;
}

.dictionary_tool_dictionary_delete_button:hover {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAqklEQVR4XqWRMQ6DMAxF/1Fyilyj2SmIBUG5QcTCyJA5Z8jGhlBPgRi4TmoDraVmKFJlWYrlp/g5QfwRlwEVNWVa4WzfH9jK6kCkEkBjwxOhLghheMWMELUAqqwQ4OCbnE4LJnhr5IYdqQt4DJQjhe9u4vBBmnxHHNzRFkDGjHDo0VuTAqy2vAG4NkvXXDHxbGsIGlj3e835VFNtdugma/Jk0eXq0lP//5svi4PtO01oFfYAAAAASUVORK5CYII=) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAB4UlEQVR42u2VsWoCQRBAh+MUFP0C1V9QD4NEOxs9xBQHQVCwSJFWVBAtBNXCxk6wTkBJYUTwEwQLC61E8QP0NzZzt5g5726DkC7EYWHZ8T3WndkV2C/jLwn4hwVYBIdLn9vkLp79QcBCTDMiy3w2gQ9XeTYkEHA8vqj2rworXu3HF1YFfSWgp5QFnKVLvYvzDEKEZ5hW70oXOCtcEbQLIkx7+IQtfMBSOjU6XEF4oyOdYInZbXyOuajjDlpNeQgleIUJKUz4BDMledhqOu/AzVSmzZ49CUjCC0yvim98iqtJT2L2jKsqczsdok9XrHNexaww415lnTNwn6CM/KxJIR8bnUZHPhLO6yMoIyk2pNjLewFuE5AiY1KMMQx8Q7hQYFek4AkjxXFe1rsF84I/BTFQMGL+1Lxwl4DwdtM1gjwKohgxyLtG7SYpxALqugOMcfOKN+bFXeBsLB1uulNcRqq7/tt36k41zoL6QlxGjtd6lrahiqCi1iOFYyvXuxY8yzK33VnvUivbLlOlj/jktm0s3YnXrNIXXufHNxuOGasi8S68zkwrlnV8ZcJJsTIUxbLgQcFZWE8N0gau2p40VVcM0gYeFpSRK6445UhBuKiRgiyKw+34rLt59nb1/7+RwReVkaFtqvNBuwAAAABJRU5ErkJggg==) 2x);
}

.dictionary_tool_dictionary_delete_button:active  {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAARElEQVQoz2P4z4AfMlBLAYMdwxkghgEwD1XBGTC0g0sDIaYJECVwFqoChBK4WegKkJWArSJZAQErCDqSKG/iCyhaRhYA9LDIbULDzlIAAAAASUVORK5CYII=) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA/ElEQVR4Xu3UsWrCUBiG4efGlIBoIMFbcnYolYJ3pg4iKGrGYFTRwaUFhYAekiDt0EG++X2W83N8/3J/DbwBMJJSsdQItcDY1VlCOImzq3Ed8OmicHASB3ns5KBw8VUNpDJrW7uAiJ3sbK1l0mqArpmFTUlQ5jYWZrrUAUSmT0SZm4qoA56JvVhs/5g3A7RLolA85A1ASOTye65NMxASK6syfxGITMzvMxG9CvRkliWwlOm9AsSOcitzU1NzK7mjuBkQvHtLK7iLBiB5PhttJSGpB8I8vM6kDuiHeUjoVwMfYR4SRtUAw1veIZzOjRhSBzCoyKFjgH/3K7+BHzg+Cgw0eSW3AAAAAElFTkSuQmCC) 2x);
}

#dictionary_tool_content_area {
  border: solid 1px rgb(217, 217, 217);
  -webkit-box-orient: vertical;
  display: -webkit-box;
  font-size: 12px;
  min-height: 100px;
  overflow: auto;
  width: 560px;
}

#dictionary_tool_entry_title {
  display: -webkit-box;
  font-size: 12px;
  font-weight: bold;
}

#dictionary_tool_list_area {
  -webkit-box-flex: 1;
  overflow: auto;
}

#dictionary_tool_reading_title {
  padding: 6px 3px 7px 7px;
  width: 120px;
}

#dictionary_tool_word_title {
  padding: 6px 3px 7px 7px;
  width: 120px;
}

#dictionary_tool_category_title {
  padding: 5px 0px 7px 10px;
  width: 120px;
}

#dictionary_tool_comment_title {
  -webkit-box-flex: 1;
  padding: 6px 3px 7px 7px;
}

.dictionary_tool_entry {
  display: -webkit-box;
  min-height: 31px;
}

.dictionary_tool_entry > div {
  margin: 0;
}

.dictionary_tool_reading {
  padding: 10px 4px 0px 6px;
  width: 120px;
  word-wrap: break-word;
}
.dictionary_tool_word {
  padding: 10px 4px 0px 6px;
  width: 120px;
  word-wrap: break-word;
}
.dictionary_tool_category {
  padding: 9px 0px 1px 10px;
  width: 120px;
  word-wrap: break-word;
}
.dictionary_tool_comment {
  -webkit-box-flex: 1;
  padding: 10px 4px 0px 6px;
  word-wrap: break-word;
}

.dictionary_tool_entry_selected {
  background-color: #d0d0d0;
}

.dictionary_tool_entry_selected > div {
  padding: 5px 5px 4px 5px;
  margin: 0;
}

.dictionary_tool_entry > div > .static_text {
  display: block;
}

.dictionary_tool_entry_selected > div > .static_text {
  display: none;
}

#dictionary_tool_entry_new {
  display: -webkit-box;
  min-height: 31px;
}

#dictionary_tool_reading_new {
  margin: 0;
  padding: 3px 5px;
  width: 120px;
}
#dictionary_tool_word_new {
  margin: 0;
  padding: 3px 5px;
  width: 120px;
}
#dictionary_tool_category_new {
  margin: 0;
  padding: 3px 5px;
  width: 120px;
}
#dictionary_tool_comment_new {
  -webkit-box-flex: 1;
  margin: 0;
  padding: 3px 5px;
}

.dictionary_tool_entry > div > input[type='text'] {
  box-sizing: border-box;
  font-size: 12px;
  margin: 0;
  min-height: 22px;
  padding: 0;
  width: 100%;
}

.dictionary_tool_entry > div > select {
  margin: 0;
  min-height: 22px;
  min-width: 100px;
  -webkit-padding-start: 0px;
  -webkit-padding-end: 0px;
  width: 100%;
}

#dictionary_tool_entry_new > div > input[type='text'] {
  box-sizing: border-box;
  font-size: 12px;
  margin: 0;
  min-height: 22px;
  padding: 0;
  width: 100%;
}

#dictionary_tool_entry_new > div > select {
  margin: 0;
  min-height: 22px;
  min-width: 100px;
  -webkit-padding-end: 0px;
  -webkit-padding-start: 0px;
  width: 100%;
}

.dictionary_tool_entry_delete_button_div {
  -webkit-box-align: center;
  -webkit-box-orient: vertical;
  -webkit-box-pack: center;
  display: -webkit-box;
  padding: 3px 5px;
}

.dictionary_tool_entry > .dictionary_tool_entry_delete_button_div > .dictionary_tool_entry_delete_button {
  opacity: 0;
}

.dictionary_tool_entry:hover {
  background-color: rgb(228, 236, 247);
}

.dictionary_tool_entry_selected:hover {
  background-color: rgb(187, 206, 233);
}

.dictionary_tool_entry:hover > .dictionary_tool_entry_delete_button_div > .dictionary_tool_entry_delete_button {
  opacity: 1;
}

.dictionary_tool_entry_selected > .dictionary_tool_entry_delete_button_div > .dictionary_tool_entry_delete_button {
  opacity: 1;
}

.dictionary_tool_entry > .dictionary_tool_entry_delete_button_div > .dictionary_tool_entry_delete_button:focus {
  opacity: 1;
}

.dictionary_tool_entry_delete_button {
  background-color: transparent;
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAiElEQVR42r2RsQrDMAxEBRdl8SDcX8lQPGg1GBI6lvz/h7QyRRXV0qUULwfvwZ1tenw5PxToRPWMC52eA9+WDnlh3HFQ/xBQl86NFYJqeGflkiogrOvVlIFhqURFVho3x1moGAa3deMs+LS30CAhBN5nNxeT5hbJ1zwmji2k+aF6NENIPf/hs54f0sZFUVAMigAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA9UlEQVR4Xu3UsWrCUByH0fMEouiuhrg4xohToJVGH0CHLBncEwfx/VvIFHLJBWmHDvKbv7PcP9f3L/fXwBsApZSRpUpEgbOnxwiReng6x4AvjdrNXRLkibubWqMcB9Yujk7qjhjmtZOji/U4wELuoBwQXa50kFsQA5jK+kQ/l5kSA4ZEK5Fo+3kcCIlGM8ijQEhUqkEeBUKiUPTyl4C5vZ1cbmdv/iqwclXY6aZwtXoFSLQqhVwmkytUWglxAMG7T0yCu4gD0v7ZBKeVxoEwFxIxYBPmIWEzDnyEeUj4HAfYdvmMcGYdsSUGsOzlIbHEv/uV38APrreiBRBIs3QAAAAASUVORK5CYII=) 2x);
  border: none;
  display: block;
  height: 16px;
  opacity: 1;
  -webkit-transition: 150ms opacity;
  width: 16px;
}

.dictionary_tool_entry_delete_button:hover {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAqklEQVR4XqWRMQ6DMAxF/1Fyilyj2SmIBUG5QcTCyJA5Z8jGhlBPgRi4TmoDraVmKFJlWYrlp/g5QfwRlwEVNWVa4WzfH9jK6kCkEkBjwxOhLghheMWMELUAqqwQ4OCbnE4LJnhr5IYdqQt4DJQjhe9u4vBBmnxHHNzRFkDGjHDo0VuTAqy2vAG4NkvXXDHxbGsIGlj3e835VFNtdugma/Jk0eXq0lP//5svi4PtO01oFfYAAAAASUVORK5CYII=) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAB4UlEQVR42u2VsWoCQRBAh+MUFP0C1V9QD4NEOxs9xBQHQVCwSJFWVBAtBNXCxk6wTkBJYUTwEwQLC61E8QP0NzZzt5g5726DkC7EYWHZ8T3WndkV2C/jLwn4hwVYBIdLn9vkLp79QcBCTDMiy3w2gQ9XeTYkEHA8vqj2rworXu3HF1YFfSWgp5QFnKVLvYvzDEKEZ5hW70oXOCtcEbQLIkx7+IQtfMBSOjU6XEF4oyOdYInZbXyOuajjDlpNeQgleIUJKUz4BDMledhqOu/AzVSmzZ49CUjCC0yvim98iqtJT2L2jKsqczsdok9XrHNexaww415lnTNwn6CM/KxJIR8bnUZHPhLO6yMoIyk2pNjLewFuE5AiY1KMMQx8Q7hQYFek4AkjxXFe1rsF84I/BTFQMGL+1Lxwl4DwdtM1gjwKohgxyLtG7SYpxALqugOMcfOKN+bFXeBsLB1uulNcRqq7/tt36k41zoL6QlxGjtd6lrahiqCi1iOFYyvXuxY8yzK33VnvUivbLlOlj/jktm0s3YnXrNIXXufHNxuOGasi8S68zkwrlnV8ZcJJsTIUxbLgQcFZWE8N0gau2p40VVcM0gYeFpSRK6445UhBuKiRgiyKw+34rLt59nb1/7+RwReVkaFtqvNBuwAAAABJRU5ErkJggg==) 2x);
}

.dictionary_tool_entry_delete_button:active  {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAARElEQVQoz2P4z4AfMlBLAYMdwxkghgEwD1XBGTC0g0sDIaYJECVwFqoChBK4WegKkJWArSJZAQErCDqSKG/iCyhaRhYA9LDIbULDzlIAAAAASUVORK5CYII=) 1x,
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAA/ElEQVR4Xu3UsWrCUBiG4efGlIBoIMFbcnYolYJ3pg4iKGrGYFTRwaUFhYAekiDt0EG++X2W83N8/3J/DbwBMJJSsdQItcDY1VlCOImzq3Ed8OmicHASB3ns5KBw8VUNpDJrW7uAiJ3sbK1l0mqArpmFTUlQ5jYWZrrUAUSmT0SZm4qoA56JvVhs/5g3A7RLolA85A1ASOTye65NMxASK6syfxGITMzvMxG9CvRkliWwlOm9AsSOcitzU1NzK7mjuBkQvHtLK7iLBiB5PhttJSGpB8I8vM6kDuiHeUjoVwMfYR4SRtUAw1veIZzOjRhSBzCoyKFjgH/3K7+BHzg+Cgw0eSW3AAAAAElFTkSuQmCC) 2x);
}

#dictionary_tool_dictionary_menu {
  border-top: solid 1px rgb(217, 217, 217);
}

#dictionary_tool_dictionary_menu_title {
  font-size: 12px;
  font-weight: bold;
  padding-bottom: 10px;
}

#dictionary_tool_dictionary_menu_buttons {
  padding: 5px;
}
