/* Copyright (C) 2009 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

@external .wse;
@external .lecr;
@external .vt;
@external .wdd;
@external .wdi;

@external .str;
@external .kwd;
@external .com;
@external .typ;
@external .lit;
@external .pun;
@external .pln;
@external .tag;
@external .atn;
@external .atv;
@external .dec;

.wse {
  background: red;
  cursor: pointer;
}

.lecr {
  border-bottom: #aaaaaa 1px dashed;
  border-left: #aaaaaa 1px dashed;
  padding-bottom: 0px;
  margin: 0px 2px;
  padding-left: 2px;
  padding-right: 2px;
  border-top: #aaaaaa 1px dashed;
  border-right: #aaaaaa 1px dashed;
  padding-top: 0px;
  cursor: pointer;
}

.vt,
.vt .str,
.vt .kwd,
.vt .com,
.vt .typ,
.vt .lit,
.vt .pun,
.vt .pln,
.vt .tag,
.vt .atn,
.vt .atv,
.vt .dec {
  color: red;
}

.wdd {
  background: #FAA;
}
.wdi {
  background: #9F9;
}

/* Use special rules for special styles contained within a whitespace
 * error.  For these we want the whitespace error to take precedence
 * so we have to override the contained style.
 */
.wse .vt, .wdd .vt,
.wse .vt .pun, .wdd .vt .pun,
.wse .vt .str, .wdd .vt .str,
.wse .vt .kwd, .wdd .vt .kwd,
.wse .vt .com, .wdd .vt .com,
.wse .vt .typ, .wdd .vt .typ,
.wse .vt .lit, .wdd .vt .lit,
.wse .vt .pun, .wdd .vt .pun,
.wse .vt .pln, .wdd .vt .pln,
.wse .vt .tag, .wdd .vt .tag,
.wse .vt .atn, .wdd .vt .atn,
.wse .vt .atv, .wdd .vt .atv,
.wse .vt .dec, .wdd .vt .dec {
  color: black;
}
.wse .wdd {
  background: red;
}
.wse .wdi {
  background: red;
}
