/* custom tachyons */

[v-cloak] { display: none; }
hr.print {border: none;}
.cap { text-transform: capitalize; }
.low { text-transform: lowercase; }
.col2 { column-count: 2; }
.col3 { column-count: 3; }
.center {text-align: center;}
.left {text-align: left;}
.ninja { display: none; opacity: 0; transform: scale(0);}
.notice {padding: 8px; border-radius: 8px; }
.warning {background: #ff9999;}
.mildWarning {background: #ffff99;}
.ready {background: #99ff99;}
.callout {clear: both; margin: 16px; padding: 8px; border-radius: 8px; background: #ffd; box-shadow: 1px 1px 3px black;}
.highlighted {background: #bef; transition: background-color .1s;}
.right {text-align: right;}
.ib {display: inline-block;}
/* .callout.ib {margin: 0 16px;} */
.callout .material-symbols-outlined {    font-size: 20px; vertical-align: -4px;} 
.noul {text-decoration: none !important;}
.fr {float:right;}
summary, input[type='checkbox'], label {cursor: pointer; outline: none !important;}
.tagline { font-style: italic; }
p + ul {margin-top: -16px;}
article h3:not(.callout h3), article h4:not(.callout h4) {text-indent: 32px;}
.toc h3 {text-indent: 0 !important;}
ul + h3, pre + h3 {margin-top: 16px;}
article h3 + p, article h4 + p, article h4 + .ability, article h3 + .ability { margin-top: -4px; }
article h4 {color: #4e4e4e;}
.toc.aside {font-size: 14px;}
.toc.aside h3 + p {margin-top: 4px;}
.toc.aside p:last-child {margin-bottom: 0;}
li.minimize {opacity: 0.3;}
.w250 {max-width: 250px;}
.w300 {max-width: 300px;}
.w400 {max-width: 400px;}
.w600 {max-width: 600px;}
.w750 {max-width: 750px;}
.locked {transform: scale(0);}
.strong {font-weight: bold;}
.indent {text-indent: 32px;}
.noIndent {text-indent: 0 !important;}
.fs14 {font-size: 14px;}
.clear {clear:both;}
.nowrap {white-space: nowrap;}

/* generic */

body {background: #fefefe;}

h3 small {font-weight: normal;}

a.anchor {
  display: block;
  position: relative;
  top: -100px;
  visibility: hidden;
}

.debug {
  padding: 8px;
  border: 1px solid black;
  background: #555;
  color: lightgreen;
  border-radius: 8px;
  margin-right: 32px;
}

.common + .uncommon, .common + .rare, .uncommon + .rare {
  border-top: 1px solid red;
}


/* table of contents */
.toc {
  background: #eefbff;
  padding: 16px;
  border-radius: 4px;
  border: 1px solid #777;
  margin-bottom: 16px;
  min-width: 200px;
}

.toc.fr {margin-left: 16px;}

.toc h3 {text-align: center; font-size: 18px; line-height: 18px; margin-top: 0;}
.toc ul {padding-left: 16px;}

/* wrapper */
#app {
  position: relative;
  min-height: 100vh;
}

/* left nav */
#nav {
  position: fixed;
  overflow: auto;
  top: 0; left: 0; bottom: 0;
  width: 220px;
  background: #fff0cc;
  transition: width .2s;
  padding-bottom: 48px;
  z-index: 3;
}

#nav.squished {
  width: 36px;
}

#nav h1 {
  padding: 30px 16px 0 16px;
  margin: 0;
}

#nav ul {
  list-style-type: none;
  margin-left: 0;
  padding-left: 12px;
  margin-left: 12px;
}
#nav ul li ul li { font-size: 95%; }

#nav details {
    margin-left: -14px;

    @media (prefers-reduced-motion: no-preference) {
        interpolate-size: allow-keywords;
      }

    /* transition: content-visibility 1s allow-discrete; */
    &::details-content {
        opacity: 0;
        block-size: 0;
        overflow-y: clip; 
        transition: content-visibility .2s allow-discrete,
                    opacity .2s,
                    block-size .2s;
      }
      
      &[open]::details-content {
        opacity: 1;
        block-size: auto;
      }
}

#nav.squished ul, #nav.squished h1 {display: none;}

#nav a {
  display: inline-block;
  margin: 0px; 
  padding: 0px 0 2px 4px;
  font-weight: bold;
  text-decoration: none;
  color: #4e4e4e;
  border-bottom: 0px solid black;
  /* transition: color .2s; */
  width: calc(100% - 16px);
  /* padding-left: 8px;
  margin-left: -4px; */
  cursor: pointer;
}

#nav details > summary { list-style-position: inside; }

#nav a:hover {
  color: black; font-weight: bold;
  background: rgba(255,255,255,.5);
}
#nav a:active {
  color: #885500; font-weight: bold;
}

#nav summary a {
  width: calc(100% - 24px);
}

::marker {
  position: relative;
  z-index: 99;
}

#nav .router-link-active {
  border-bottom: 2px solid black;
  padding-bottom: 1px;
  margin-bottom: -1px;
  color: #5c67ff;
  text-shadow: 1px 1px 2px white;
  background: linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,1));
  pointer-events: none;
}
 
#navToggle, #settingsToggle {
  position: fixed;
  left: 188px;
  width: 28px;
  font-size: 28px;
  height: 28px;
  line-height: 0px;
  padding: 0;
  display: block;
  cursor: pointer;
  background: transparent; border: none;
  transition: transform .2s, left .2s;
  outline: none !important;
}

#navToggle {top: 4px;}
#settingsToggle {bottom: 4px;}

#nav.squished #navToggle, #nav.squished #settingsToggle {left: 4px;}

#navToggle:hover, #settingsToggle:hover, #bookmarkToggle:hover, #notes a:hover {
  transform: scale(1.1);
}
#navToggle:active, #settingsToggle:active, #bookmarkToggle:active, #notes a:active {
  transform: scale(0.95);
}

/* right bookmarks */

#bookmarks {
  background: #fff0cc;
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  /* left: 1160px; */
  width: 36px;
  transition: width 0.1s;
  z-index: 4;
}

#bookmarkToggle {
  width: 32px;
  text-align: center;
  font-size: 28px;
  height: 28px;
  line-height: 0px;
  padding: 0;
  transition: transform .2s;
  background: transparent; border: none;
  outline: none !important;
  cursor: pointer;
  position: absolute; right: 0; top: 4px;
}

#bookmarkToggle.isBookmark:hover span {display: none;}
#bookmarkToggle.isBookmark:hover::before {content: "bookmark_remove"; color: red;}

#bookmarkList {
  width: 0%; 
  transition: width 0.1s;
  display: none;
  /* background: white; */
  margin: 40px 8px 0 8px;
}

#bookmarkList h3 {margin-bottom: 8px;}

#bookmarks:hover {width: 200px;}
#bookmarks:hover #bookmarkList {width: 184px; display: block;}

.bookmark .material-symbols-outlined {vertical-align: -6px;}

.bookmarkTrick {
  cursor: pointer;
  transition: transform 0.1s;
}

.bookmarkTrick:hover {
  transform: scale(1.1);
}
.bookmarkTrick:active {
  transform: scale(0.95);
}

.bookmarkTrick:hover span {display: none;}
.bookmarkTrick:hover::before {content: "bookmark_remove"; color: red;}

/* bottom notes */

#notes {
  position: fixed;
  right: 32px;
  bottom: 0;
  left: 220px;
  height: 32px;
  background: #fff9e6;
  padding: 4px 20px;
  box-shadow: 0 0 10px rgba(0,0,0,.5);
  transition: height 0.2s;
  /* max-width: calc(100vw - 64px); */
  /* max-width: calc(100% - 12px); */
}
#notes.expanded { left: 36px; }
#notes textarea { height: 68px; width: 100%; }
#notes a {
  float: right;
  cursor: pointer;
  transition: transform .2s, left .2s;
}

#notes.visible {height: 100px;}
#notes .material-symbols-outlined { vertical-align: -6px;}

/* main area, main article, main view */

main {
  position: absolute;
  top: 0; left: 220px; right: 0; bottom: 32px;
  transition: left .2s, bottom .2s;
  padding-bottom: 32px;
  padding-left: 20px;
  padding-right: 20px;
  overflow: scroll;
  /* max-width: 940px; */
}
main.short {bottom: 100px;}
main.expanded { left: 36px; }

/* breadcrumb navigation top nav */

main .breadcrumbs {
  height: 30px;
  line-height: 30px;
  background-color: #fff0cc;
  display: inline-block;
  padding: 0 32px 0 16px;
  margin-left: -20px;
  border-radius: 0 0 30px 0 / 0 0 100% 0;
  position: fixed;
  z-index: 3;
}

.breadcrumbs .material-symbols-outlined {
  vertical-align: -6px;
}

#landingBox {
  /* background: red; */
  position: absolute;
  top: 36px;
  /* bottom: 15vh; */
  right: 60px;
  left: 20px;
  text-align: center;
  font-size: 110%;
}

#landingBox h2 + p {margin-top: -18px;}

#landingBox a {
  font-size: 18px;
  display: inline-block; white-space: nowrap;
  margin: 12px 12px;
  padding: 12px 24px;
  background: rgba(190, 230, 255, 0.9);
  text-decoration: none;
  width: 220px;
  border-radius: 4px;
  color: black;
  border-bottom: 4px solid transparent;
  transition: transform .1s, color .1s, border-color .1s;
  font-weight: bold;
}

#landingBox a:hover {
  /* transform: scale(1.02); */
  background: rgba(196, 238, 255, 1);
  border-bottom: 4px solid rgba(0,0,0,.5);
}
#landingBox a:active {
  /* transform: scale(1); */
  background: rgba(100,130,150,1);
  color: white;
}

#landingBox a span {font-size: 13px; font-weight: normal;}

#mainArticle {
  padding-top: 82px;
  /* max-width: 900px; */
  /* background: green; */
  max-width: calc(100% - 12px);
  min-width: 900px;
  padding-right: 20px;
}

#timelineSlider {
  width: 80%;
  position: relative;
}

.dateDifference {
  text-align: right;
  white-space: nowrap;
  overflow-x: visible;
}

#timelineSlider {
  width: 100%;
}

article p, article h2 {
  margin: 16px 0;
  transition: background-color 1s;
}

article .col2 .perk:first-of-type {margin-top: 0;}

/* perks */

.perk {
  margin: 14px 0;     
  break-inside: avoid;
}
.perkRank {float: right; opacity: 0.2; font-style: italic; padding-right: 4px;}

#perkToggle {
  text-align: center;
  border: 2px solid black;
  width: 200px;
  margin: 0 auto;
  border-radius: 8px;
  padding: 4px 4px;
  background: #c3e9FF;
  position: relative;
}
#perkToggle::before {
  content: "Display";
  position: absolute;
  right: 0; left: 0; bottom: 100%;
  margin-bottom: -3px;
  z-index: -1;
}
#perkToggle * {vertical-align: top; display: inline-block;}
#perkToggle button {
  outline: none !important;
  cursor: pointer;
  padding: 2px 12px; 
  /* height: 38px; */
  border: 1px solid #999;
  width: 50%;
  background: none;
  border: none;
  border-radius: 8px;
  transition: background-color .2s, color .2s;
  /* font-size: 20px; */
}
#perkToggle button.active {
  background: #6389aa;
  color: white;
  font-weight: bold;
  text-shadow: 0 0 2px black;
}

#perkTable, #perkList {
  display: inline-block; vertical-align: top;
  overflow: hidden;
}

#perkTable {
  position: relative;
  left: 0;
  width: 0%;
  transition: width .2s;
}
#perkTable.expanded {width: 100%;}
#perkTable table {width: 100%;}
#perkList {
  position: relative;
  right: 0;
  width: 0%;
  transition: width .2s;
}
#perkList.expanded {width: 100%;}

article .perk p {
  text-indent: 32px;
  margin: 2px 0;
}

article th {background: #4d4d4d; color: white; padding: 2px 4px; text-align: center;}

article td {
  padding: 0 4px;
}

article tbody tr:nth-child(odd) {
  background: #efeff0;
}

.perkSidebar {position: relative;}
.boostToggle {position: absolute; right: 4px; top: 4px;}

article footer {
  border-top: 1px solid #999;
  margin-top: 16px;
  padding-top: 4px;
}


#nav h1, article h1 {
  font-size: 32px;
  /* font-family: "Macondo", serif;
  font-weight: 400;
  font-style: normal; */
}

article h1 {
  height: 82px;
  padding: 30px 82px 6px 16px;
  margin: -30px 0 0 -20px;
  background: #fff9e6;
  border-radius: 0 0 82px 0 / 0 0 100% 0;
  /* display: inline-block; */
  display: inline-block;
  transition: width .2s;
  transition: min-width .2s;
  position: fixed;
  top: 30px;
  z-index: 2;
}


/* setting places map */

#map {
  width: 1000px;
  height: 850px;
  position: relative;

  border-radius: 12% / 6%;
  overflow: hidden;
  user-select: none;
  transform-origin: top left;
  transform: scale(0.92);
}

#map image, #poiLayer {
  width: 1000px;
  height: 850px;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

#poiLayer {
  /* mix-blend-mode: darken; */
  background: transparent;
  transition: background-color .2s;
  pointer-events: none;
}

#map .poi {
  position: absolute;
  display: block;
  background: transparent;
  transition: background-color .2s, border-color .2s, box-shadow .2s, transform .2s;
  border-radius: 100%/50%;
  z-index: 2;
  pointer-events: all;
  border: 2px solid transparent;
}

#map .poi:hover {
  /* background: rgba(255,255,220,1); */
  cursor: pointer;
  border-color: white;
  /* mix-blend-mode: screen; */
  /* border: 2px solid black; */
  box-shadow: 0 0 20px black, 0 0 40px black;
  transform: scale(1.1);
}

#map .poi:active:hover {
  border-color: yellow;
  transform: scale(3);
}

.poi.theNacklewood {
  transform-origin: center;
  transform: rotate(30deg);
}
#map .poi.the-nacklewood:hover { transform: rotate(30deg) scale(1.1); }
#map .poi.the-nacklewood:active:hover { transform: rotate(30deg) scale(3); }

#map img {
  pointer-events: none;
}

/* setting places directory */

#directory {
  min-height: 200px;
  width: 900px;
  position: relative;
}

#directory details {
  display: inline-block;
  vertical-align: top;
  border-radius: 4px;
  transition: background-color .2s, color .2s;
}

#directory details summary {
  padding: 2px 8px;
  text-transform: capitalize;
  position: relative;
  z-index: 2;
  outline: none !important;
  cursor: pointer;
  user-select: none;
  border-radius: 4px 4px 0 0;
}

#directory details:not([open]) summary:hover {
  /* color: red; */
  background: #e9f0FF;
}
#directory details summary:active {
  filter: invert(1);
}

#directory details ul {
  position: absolute;
  top: 28px; left: 0;
  column-count: 3;
	padding: 0.5em;
  background: #c3e9FF;
  width: 100%;
  border-radius: 4px;
}

#directory details ul li {
  margin: 0px 4px 0px 16px;

}

#directory details[open], #directory details ul {
  box-shadow: 1px 1px 2px rgba(0,0,0,.5);
  /* filter: drop-shadow(0 0 4px red); */
}

#directory details[open] summary {
  background: #c3e9FF;
  font-weight: bold;
  /* color: white; */
}

/* settings */

#settings {
  position: fixed;
  bottom: 4px; left: 224px; 
  width: 400px;
  height: auto;
  transition: left .2s;
  padding-bottom: 4px;
  background: #fff0cc;
  padding: 8px;
  border-radius: 4px 4px 4px 0;
  box-shadow: 1px 1px 2px black;

}

#settings.expanded {
  left: 40px;
}

#settings p {
  margin: 4px 0;
}

#secrets {
  padding: 0 16px;
  background: #eee;
  border: 2px solid black;
  border-radius: 8px;
  max-width: calc(100% - 12px);
  min-width: 900px;
  margin: 16px 32px 16px 0;
}

/* mermaid */

.mermaid .clickable polygon {
  stroke-dasharray: 2px, 5px;
}
.mermaid .clickable:hover polygon {
  stroke-dasharray: 0, 0;
  stroke-width: 2px !important;
}

.mermaidTooltip {
  position: absolute;
}

.mermaid .hidden {
  display: none;
  opacity: 0;
  height: 0px; width: 0px;
}

/* dudes roster */

.rosterSort, .rosterFilters {
  display: inline-block;
  vertical-align: top;
  /* padding: 8px; */
}
.rosterSort {
  /* border-right: 2px solid; */
  border-radius: 8px;
  margin-right: 16px;
}
.rosterFilters {
  /* border-left: 2px solid; */
  border-radius: 8px;
}

.rosterSort button {
  margin: 0 0 0 6px;
  font-size: 20px;
  line-height: 18px;
  vertical-align: text-bottom;
  padding: 0;
  cursor: pointer;
  background: transparent; border: none;
  transition: transform .2s;
  outline: none !important;
}

.rosterSort button:hover {
  transform: scale(1.1);
}
.rosterSort button:active {
  transform: scale(0.95);
}

.rosterFilters label {
  border-bottom: 1px solid rgb(118, 118, 118);
  padding-right: 6px;
  margin-right: -2px;
  height: 22px;
  line-height: 23px;
  vertical-align: top;
}
.rosterSort select, .rosterFilters select, .rosterFilters input {
  height: 22px;
  line-height: 22px;
  vertical-align: top;
  /* margin-left: 4px; */
}
.rosterFilters .filterCol {
  display: inline-block;
  margin-right: 12px;
  position: relative;
  /* border-right: 1px solid black; */
}
.filterCol:last-of-type {margin-right: 0;}
.rosterFilters input {
  font-size: 14px;
  line-height: 22px;
  padding: 0 4px;
}

.roster-name, .roster-info {white-space: nowrap;}
.roster-info .material-symbols-outlined {vertical-align: -6px;}

legend button {
  margin: 0 0 0 6px;
  font-size: 20px;
  line-height: 18px;
  vertical-align: text-bottom;
  padding: 0;
  cursor: pointer;
  background: transparent; border: none;
  transition: transform .2s;
  outline: none !important;
}
legend button:hover {
  transform: scale(1.1);
}
legend button:active {
  transform: scale(0.95);
}

.showDead:hover {cursor: pointer;}
.showDead span {display: inline-block;}
.showDead:hover span {transform: scale(1.2);}
.showDead:active span {transform: scale(0.95);}
.showDead .material-symbols-outlined {vertical-align: -4px; font-size: 20px;}

.killSearch {
  position: absolute;
  width: 24px;
  height: 24px;
  font-size: 19px !important;
  background: none;
  outline: none;
  border: none;
  right: 3px;
  top: -1px;
  bottom: 0;
  cursor: pointer;
  color: rgb(118, 118, 118);
}

.killSearch:hover {
  color: black;
}
.killSearch:active {
  color: rgb(200,200,200);
}


br + .filterCol {padding-top: 6px;}

#timelineLabel {
  white-space: nowrap;
  display: inline-block;
  text-align: center;
  border: 1px solid rgb(118, 118, 118);
  width: 260px;
  font-size: 80%;
  height: 22px;
  line-height: 20px;
  vertical-align: 2px;
  border-radius: 2px 2px 2px 0;
}

#timelineLabel span {display: inline-block; width: 100px;}
#timelineLabel #timelineSlider {width: 140px;}

/* ability display in system content */

.ability {margin: 16px 0;}
ul.ability {margin: 0;}
.ability i {color: #777;}
.speciesType {margin-top: -16px;}
.ability.downtime h3 + p {margin-top: -4px;}

.ability .material-symbols-outlined {vertical-align: -6px;}

article .center table { margin: 16px auto; }

/* article .center table th, article .center table td {max-width: 500px} */

/* subclass selection on classes */

.subclassSelection {
  position: fixed;
  background: #fff9e6;
  top: 0;
  right: 36px;
  padding: 4px 4px 8px 8px;
  border-radius: 0 0 0 8px;
  z-index: 3;
  max-width: 540px;
  font-size: 12px;
}

.subclassSelection span {
  text-transform: capitalize;
  white-space: nowrap;
  margin-right: 20px;
}
.subclassSelection input {margin-right: 4px;}

a.clear {
  /* text-decoration: underline;  */
  color: #777;
  cursor: not-allowed;
}
a.clear.clickable {
  cursor: pointer;
  color: blue;
}
a.clear.clickable:hover {
  text-decoration: underline;
  color: #30a0a0;
}
a.clear.clickable:active {
  filter: invert(1);
}

/* glossary */

.glossary-entry {
  text-indent: -48px; margin-left: 16px;
  list-style-position: inside;
}

/* generators */

fieldset.nameGen {
  max-width: 640px;
  border-radius: 4px;
  margin-bottom: 8px;
}
.nameGen p {margin: -4px 0 0 0; font-style: italic; color: #4d4d4d;}
.nameGen input[type="text"] {width: 200px;}

/* FONTS */

.rc {
  font-family: "Roboto Condensed", sans-serif;
  font-optical-sizing: auto;
  font-weight: 400;
  font-style: normal;
}
.lxgw-wenkai-tc-regular {
  font-family: "LXGW WenKai TC", cursive;
  font-weight: 400;
  font-style: normal;
}

.prociono-regular {
  font-family: "Prociono", serif;
  font-weight: 400;
  font-style: normal;
}
/* headers / stats */
.macondo-regular {
  font-family: "Macondo", serif;
  font-weight: 400;
  font-style: normal;
}
.kalam-light {
  font-family: "Kalam", serif;
  font-weight: 300;
  font-style: normal;
}

.kalam-regular {
  font-family: "Kalam", serif;
  font-weight: 400;
  font-style: normal;
}

.kalam-bold {
  font-family: "Kalam", serif;
  font-weight: 700;
  font-style: normal;
}
/* numbers */
.acme-regular {
  font-family: "Acme", serif;
  font-weight: 400;
  font-style: normal;
}