@charset "utf-8";
@import "util";

$border-size: 2px;

#search {
  position: relative;
  margin-bottom: 44px;
  overflow: visible;

  &.match {
    margin-top: 14pt;
  }

  ol {
    width: auto;
    overflow-x: hidden;
    overflow-y: visible;
    list-style-type: none;
    margin: 0;
    padding: 0;
    text-indent: 0;
    border: 1px solid $kwic-border;
    font-size: 10pt;
    > li {
      border: {
	style: solid;
	color: $dark-orange;
	width: 0;
      }
      &:not(.active):not(:target) {
	width: 99999%;
	margin-left: -49999.5%;
	background-color: $kwic-line-noneven;
	overflow-x: hidden;
	overflow-y: visible;
	white-space: no-wrap;
	cursor: pointer;
	padding: 5pt 0 6pt 0;
	&:nth-of-type(even) {
          background-color: $kwic-line-even;
	}
	.matchinfo {
	  display: none;
	}
	> div > div.snippet {
	  text-overflow: ellipsis;
	  text-indent: 0;
	  text-shadow: $light-shadow;
	}
      }
      > div {
	> div.snippet {
          > span,
          > mark {
            white-space: no-wrap !important;
            > span {
              white-space: no-wrap !important;
            }
            color: #666;
          }
          > mark,
	  > span.match {
            font-weight: bold;
            /* text-shadow: $kwic-match-shadow; */
            color: $kwic-match-color;
            padding-left: 4pt;
            padding-right: 2pt;
          }
	}
      }
    }

    /* active view */
    > li.active,
    > li:target {
      text-align: left;
      width: auto;
      cursor: normal;
      white-space: wrap;
      height: auto;
      border-width: 2px;
      background-color: $dark-orange;
//      @include light-noise;
      position: relative;
      > div {
	min-height: 42pt;
	> div.snippet {
	  background-color: $light-orange;
	  > * {
	    background-color: transparent;
	  }
	  padding: {
	    top: 0;
	    right: 0;
	    bottom: 5pt;
	    left: 5pt;
	  };
	  margin: {
	    top: 0;
	    right: $right-match-distance; // 3em;
	    bottom: 0;
	    left: 0; // 5pt margin-top
	  }
	  > span {
            line-height: 1.4em;
            width: auto;
            &.context-left {
              margin-left: 0;
              display: inline;
              overflow: visible;
              text-align: left;
              width: auto;
            }
	  }
	}
      }
    }

    /* Actions */
    > li {
      ul.action {
	display: none;
      }

      /* active actions */
      &.active, &:target {
	ul.action {
	  display: block;
	}
      }
      &:not(.active):not(:target) p.ref {
	display: none;
      }
      &.active p.ref,
      &:target p.ref {
//	background-color: $dark-orange;
	color: white;
	padding: 3pt 10pt;
	padding-right: $right-match-distance;
	margin: 0pt;
	width: 100%;
	bottom: 0;
	z-index: 30;
      }
    }
  }
}

ul.action {
//  background-color: $dark-orange;
  font-size: 12pt;
  color: white;
  text: {
    shadow: none;
    indent: 0;
  }
  margin: 0;
  padding: 0;
  z-index: 5;
  
  list-style: {
    type: none;
    position: inline;
  }
  &.right {
    position: absolute;
    width: $right-match-distance;
    float: right;
    text-align: center;
    padding: 0pt 3pt;
    height: 100%;
    right: 0;
    top: 0;
    li {
      cursor: pointer;
      color: white;
      text-decoration: none;

      > span {
	@include blind;
      }
      &.close::after {
	font-family: "FontAwesome";
	content: $fa-close;
      }
      &.info::after {
	font-family: "FontAwesome";
	content: $fa-info;
      }
    }
  }
}

/*
ol.align-free > li:not(.active):not(:target) > div > div.snippet > span.left {
  display: inline-block;
  text-align: right;
  width: 50.046%;
}

ol.align-free > li:not(.active):not(:target) > div > div.snippet > span.separator {
  width: 0px;
  height: 1em;
  margin-bottom: -2px;
  display: inline-block;
  line-height: 100%;
  border: 1px solid #009EE0;
  margin-left: 2px;
  margin-right: 2px;
}

ol.align-free > li > div > div.snippet > span.right {
  text-align: left;
}
*/

ol.align-left > li > div > div.snippet > span.context-left {
  display: inline-block;
  text-align: right;
  width: 50.01%;
}

ol.align-right {
  text-align: right;
  > li:not(.active):not(:target) > div > div.snippet > span.context-right {
    display: inline-block;
    text-align: left;
    width: 49.915%;
  }
}

/**
 * Highlights
 */
mark {
  background-color: inherit;
  color: inherit;
}

mark > mark,
em,
.level-0 {
  border-bottom-width: 2px;
  border-bottom-style: solid;
  padding-bottom: 0px;
  font-style: normal;
}

mark > mark > mark,
em > em,
.level-1 {
  padding-bottom: 3px;
}

mark > mark > mark > mark,
em > em > em,
.level-2 {
  padding-bottom: 6px;
}

li {
  &:not(.active) mark > mark > mark > mark,
  &:not(.active) em > em > em {
    line-height: 180%;
  }
  &.active mark > mark > mark > mark,
  &.active em > em > em {
    line-height: 250%;
  }
}

.class-1 { border-color: $kwic-highlight-1; }
.class-2 { border-color: $kwic-highlight-2; }
.class-3 { border-color: $kwic-highlight-3; }
.class-4 { border-color: $kwic-highlight-4; }

/*
span.more:before {
  content: "…";
  padding-left: 2pt;
  padding-right: 2pt;
}
*/

div.snippet.startMore:before,
div.snippet.endMore:after {
  content: "…";
  padding-left: 2pt;
  padding-right: 2pt;
}


