mirror of
				https://github.com/bra1n/townsquare.git
				synced 2025-10-21 16:55:12 +00:00 
			
		
		
		
	added vue
This commit is contained in:
		
							parent
							
								
									b99fc6a3e5
								
							
						
					
					
						commit
						74a8280333
					
				
					 17 changed files with 775 additions and 3243 deletions
				
			
		
							
								
								
									
										66
									
								
								App.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								App.vue
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,66 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <div class="square" id="townsquare" v-bind:class="{ public: isPublic }">
 | 
			
		||||
    <TownSquare :is-public="isPublic"></TownSquare>
 | 
			
		||||
    <div class="controls">
 | 
			
		||||
      <button v-on:click="togglePublic">Toggle</button>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  import TownSquare from './components/TownSquare.vue'
 | 
			
		||||
 | 
			
		||||
  export default {
 | 
			
		||||
    components: {
 | 
			
		||||
      TownSquare
 | 
			
		||||
    },
 | 
			
		||||
    data: () => ({
 | 
			
		||||
      isPublic: false
 | 
			
		||||
    }),
 | 
			
		||||
    methods: {
 | 
			
		||||
      togglePublic () {
 | 
			
		||||
        this.isPublic = !this.isPublic;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
  @font-face { font-family: "Papyrus";
 | 
			
		||||
    src: url("fonts/papyrus.eot"); /* IE9*/
 | 
			
		||||
    src: url("fonts/papyrus.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */
 | 
			
		||||
    url("fonts/papyrus.woff2") format("woff2"), /* chrome firefox */
 | 
			
		||||
    url("fonts/papyrus.woff") format("woff"), /* chrome firefox */
 | 
			
		||||
    url("fonts/papyrus.ttf") format("truetype"), /* chrome firefox opera Safari, Android, iOS 4.2+*/
 | 
			
		||||
    url("fonts/papyrus.svg#PapyrusW01") format("svg"); /* iOS 4.1- */
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  html, body {
 | 
			
		||||
    font-size: 1.2em;
 | 
			
		||||
    line-height: 1.4;
 | 
			
		||||
    background: url('img/background.jpg') center center;
 | 
			
		||||
    background-size: cover;
 | 
			
		||||
    color: white;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
    font-family: 'Roboto Condensed', sans-serif;
 | 
			
		||||
    -webkit-font-smoothing: subpixel-antialiased;
 | 
			
		||||
    padding: 0;
 | 
			
		||||
    margin: 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  #townsquare {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    border-radius: 50%;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 20px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Controls
 | 
			
		||||
  .controls {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    right: 0;
 | 
			
		||||
    top: 0;
 | 
			
		||||
  }
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										241
									
								
								components/Player.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										241
									
								
								components/Player.vue
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,241 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <li>
 | 
			
		||||
    <div class="player"
 | 
			
		||||
         :class="{ dead: player.hasDied, 'no-vote': player.hasVoted }">
 | 
			
		||||
      <div class="shroud" @click="toggleStatus()"></div>
 | 
			
		||||
      <div class="token" @click="changeRole()" :class="[player.role]">
 | 
			
		||||
        <span class="leaf-left" v-if="role.firstNight"></span>
 | 
			
		||||
        <span class="leaf-right" v-if="role.otherNight"></span>
 | 
			
		||||
        <span v-if="role.reminders.length" v-bind:class="['leaf-top' + role.reminders.length]"></span>
 | 
			
		||||
        <span class="leaf-orange" v-if="role.setup"></span>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="name">{{ player.name }}</div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="reminder add"></div>
 | 
			
		||||
  </li>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  export default {
 | 
			
		||||
    props: {
 | 
			
		||||
      player: {
 | 
			
		||||
        type: Object,
 | 
			
		||||
        required: true
 | 
			
		||||
      },
 | 
			
		||||
      roles: {
 | 
			
		||||
        type: Map,
 | 
			
		||||
        required: true
 | 
			
		||||
      },
 | 
			
		||||
      isPublic: {
 | 
			
		||||
        type: Boolean,
 | 
			
		||||
        required: true
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    data () {
 | 
			
		||||
      return {
 | 
			
		||||
        role: this.roles.get(this.player.role)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    methods: {
 | 
			
		||||
      toggleStatus () {
 | 
			
		||||
        if (!this.isPublic || !this.player.hasDied) {
 | 
			
		||||
          this.$set(this.player, 'hasDied', !this.player.hasDied);
 | 
			
		||||
          if (!this.player.hasDied) {
 | 
			
		||||
            this.$set(this.player, 'hasVoted', false);
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          this.$set(this.player, 'hasVoted', !this.player.hasVoted);
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      changeRole () {
 | 
			
		||||
        if (!this.isPublic) {
 | 
			
		||||
          console.log('role change');
 | 
			
		||||
        } else {
 | 
			
		||||
          this.toggleStatus();
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
  @import '../roles.scss';
 | 
			
		||||
 | 
			
		||||
  // token size
 | 
			
		||||
  $token: 150px;
 | 
			
		||||
 | 
			
		||||
  /***** Player token *****/
 | 
			
		||||
  .circle .player {
 | 
			
		||||
    margin-bottom: 10px;
 | 
			
		||||
 | 
			
		||||
    .shroud {
 | 
			
		||||
      content: " ";
 | 
			
		||||
      background: url('../img/shroud.png') center -10px no-repeat;
 | 
			
		||||
      background-size: auto 100%;
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      margin-left: -2/6 * $token;
 | 
			
		||||
      width: 2/3 * $token;
 | 
			
		||||
      height: 2/3 * $token;
 | 
			
		||||
      left: 50%;
 | 
			
		||||
      top: 0;
 | 
			
		||||
      cursor: pointer;
 | 
			
		||||
      opacity: 0;
 | 
			
		||||
      transition: opacity 200ms;
 | 
			
		||||
      z-index: 2;
 | 
			
		||||
      &:hover { opacity: 0.5; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.dead .shroud { opacity: 1; }
 | 
			
		||||
    &.dead .name { color: #999; }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  #townsquare.public .player.dead {
 | 
			
		||||
    &:after {
 | 
			
		||||
      content: " ";
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      left: 0;
 | 
			
		||||
      top: 0;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      background: url('../img/vote.png') center center no-repeat;
 | 
			
		||||
      background-size: 40%;
 | 
			
		||||
      height: $token + 3px;
 | 
			
		||||
      pointer-events: none;
 | 
			
		||||
    }
 | 
			
		||||
    &.traveller:after { filter: grayscale(100%); }
 | 
			
		||||
    &.no-vote:after { display: none; }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  #townsquare.public .player .shroud { display: none; }
 | 
			
		||||
 | 
			
		||||
  /***** Role token ******/
 | 
			
		||||
  .circle .token {
 | 
			
		||||
    border-radius: 50%;
 | 
			
		||||
    height: $token + 3px;
 | 
			
		||||
    width: $token + 3px;
 | 
			
		||||
    background: url('../img/token.png') center center;
 | 
			
		||||
    background-size: 100%;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    color: black;
 | 
			
		||||
    margin: auto;
 | 
			
		||||
    font-weight: 600;
 | 
			
		||||
    text-shadow:
 | 
			
		||||
        -1px -1px 0 #fff,
 | 
			
		||||
        1px -1px 0 #fff,
 | 
			
		||||
        -1px 1px 0 #fff,
 | 
			
		||||
        1px 1px 0 #fff,
 | 
			
		||||
        0 0 5px rgba(0,0,0,0.75);
 | 
			
		||||
    padding-top: $token * 0.7;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    font-family: 'Papyrus', serif;
 | 
			
		||||
    border: 3px solid black;
 | 
			
		||||
    box-shadow: 0 0 10px rgba(0,0,0,0.5);
 | 
			
		||||
    cursor: pointer;
 | 
			
		||||
 | 
			
		||||
    &:before {
 | 
			
		||||
      content: " ";
 | 
			
		||||
      background-size: 100%;
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      height: 100%;
 | 
			
		||||
      left: 0;
 | 
			
		||||
      top: 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    span {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      height: 100%;
 | 
			
		||||
      background-size: 100%;
 | 
			
		||||
      left: 0;
 | 
			
		||||
      top: 0;
 | 
			
		||||
      pointer-events: none;
 | 
			
		||||
      &.leaf-left { background-image: url('../img/leaf-left.png'); }
 | 
			
		||||
      &.leaf-orange { background-image: url('../img/leaf-orange.png'); }
 | 
			
		||||
      &.leaf-right { background-image: url('../img/leaf-right.png'); }
 | 
			
		||||
      &.leaf-top1 { background-image: url('../img/leaf-top1.png'); }
 | 
			
		||||
      &.leaf-top2 { background-image: url('../img/leaf-top2.png'); }
 | 
			
		||||
      &.leaf-top3 { background-image: url('../img/leaf-top3.png'); }
 | 
			
		||||
      &.leaf-top4 { background-image: url('../img/leaf-top4.png'); }
 | 
			
		||||
      &.leaf-top5 { background-image: url('../img/leaf-top5.png'); }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  #townsquare.public .token {
 | 
			
		||||
    background-image: url('../img/life.png');
 | 
			
		||||
    &:before, &:after, span { display: none; }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  #townsquare.public .player.dead .token {
 | 
			
		||||
    background-image: url('../img/death.png');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  #townsquare.public .player.traveller .token {
 | 
			
		||||
    filter: grayscale(100%);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /***** Player name *****/
 | 
			
		||||
  .name {
 | 
			
		||||
    font-size: 120%;
 | 
			
		||||
    line-height: 120%;
 | 
			
		||||
    text-shadow:
 | 
			
		||||
        -2px -2px 0 #000,
 | 
			
		||||
        2px -2px 0 #000,
 | 
			
		||||
        -2px 2px 0 #000,
 | 
			
		||||
        2px 2px 0 #000,
 | 
			
		||||
        0 0 10px rgba(0,0,0,0.75);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /***** Reminder token *****/
 | 
			
		||||
  .circle .reminder {
 | 
			
		||||
    background: url('../img/reminder.png') center center;
 | 
			
		||||
    background-size: 100%;
 | 
			
		||||
    width: $token / 2;
 | 
			
		||||
    height: $token / 2;
 | 
			
		||||
    color: black;
 | 
			
		||||
    font-size: 50%;
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
    display: block;
 | 
			
		||||
    margin: 5px ($token / -4) 0;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding-top: $token * 0.3;
 | 
			
		||||
    border-radius: 50%;
 | 
			
		||||
    border: 3px solid black;
 | 
			
		||||
    box-shadow: 0 0 10px rgba(0,0,0,0.5);
 | 
			
		||||
    transition: opacity 200ms;
 | 
			
		||||
    cursor: pointer;
 | 
			
		||||
 | 
			
		||||
    &:before, &:after {
 | 
			
		||||
      content: " ";
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      left: 0;
 | 
			
		||||
      top: 0;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      height: 100%;
 | 
			
		||||
      background-size: 100%;
 | 
			
		||||
      background-position: center 0;
 | 
			
		||||
      background-repeat: no-repeat;
 | 
			
		||||
      background-image: url('../img/icon-plus.png');
 | 
			
		||||
      transition: opacity 200ms;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &:after {
 | 
			
		||||
      background-image: url('../img/icon-x.png');
 | 
			
		||||
      opacity: 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.add {
 | 
			
		||||
      opacity: 0;
 | 
			
		||||
      &:after { display: none; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &:hover:before { opacity: 0; }
 | 
			
		||||
    &:hover:after { opacity: 1; }
 | 
			
		||||
  }
 | 
			
		||||
  .circle li:hover .reminder.add, { opacity: 1; }
 | 
			
		||||
  .circle li:hover .reminder.add:before { opacity: 1; }
 | 
			
		||||
 | 
			
		||||
  #townsquare.public .reminder { display: none; }
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										115
									
								
								components/TownSquare.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								components/TownSquare.vue
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,115 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <ul class="circle" v-bind:class="['size-' + players.length]">
 | 
			
		||||
    <Player
 | 
			
		||||
        v-for="player in players"
 | 
			
		||||
        :key="player.name"
 | 
			
		||||
        :player="player"
 | 
			
		||||
        :roles="roles"
 | 
			
		||||
        :is-public="isPublic"
 | 
			
		||||
    ></Player>
 | 
			
		||||
  </ul>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  import Player from './Player.vue'
 | 
			
		||||
  import roles from '../roles.json'
 | 
			
		||||
 | 
			
		||||
  export default {
 | 
			
		||||
    components: {
 | 
			
		||||
      Player
 | 
			
		||||
    },
 | 
			
		||||
    props: ['isPublic'],
 | 
			
		||||
    data () {
 | 
			
		||||
      return {
 | 
			
		||||
        players: [
 | 
			
		||||
          { name: "Steffen", role: "baron" },
 | 
			
		||||
          { name: "Tino", role: "imp" },
 | 
			
		||||
          { name: "Basti", role: "chef" },
 | 
			
		||||
          { name: "Bernd", role: "ravenkeeper" },
 | 
			
		||||
          { name: "Tim", role: "drunk" },
 | 
			
		||||
          { name: "Yann", role: "librarian" },
 | 
			
		||||
          { name: "Marie", role: "empath" },
 | 
			
		||||
          { name: "Bogdan", role: "scarletwoman" },
 | 
			
		||||
          { name: "Sean", role: "recluse" },
 | 
			
		||||
          { name: "Petra", role: "undertaker" },
 | 
			
		||||
        ],
 | 
			
		||||
        roles: new Map(roles.map(role => [role.name, role])),
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
  @mixin on-circle($item-count) {
 | 
			
		||||
    $angle: (360 / $item-count);
 | 
			
		||||
    $rot: 0;
 | 
			
		||||
 | 
			
		||||
    @for $i from 1 through $item-count {
 | 
			
		||||
      &:nth-child(#{$i}) {
 | 
			
		||||
        transform: rotate($rot * 1deg);
 | 
			
		||||
        @if $i - 1 <= $item-count / 2 {
 | 
			
		||||
          z-index: $item-count - $i + 1;
 | 
			
		||||
        } @else {
 | 
			
		||||
          z-index: $i - 1;
 | 
			
		||||
        }
 | 
			
		||||
        > * {
 | 
			
		||||
          transform: rotate($rot * -1deg);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      $rot: $rot + $angle;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .circle {
 | 
			
		||||
    padding: 0;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
    list-style: none;
 | 
			
		||||
    overflow: hidden;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    margin: 0;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
 | 
			
		||||
    li {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 0;
 | 
			
		||||
      left: 50%;
 | 
			
		||||
      height: 50%;
 | 
			
		||||
      transform-origin: 0 100%;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
 | 
			
		||||
      > * {
 | 
			
		||||
        margin-left: -100px;
 | 
			
		||||
        width: 200px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .circle.size-5 li { @include on-circle($item-count: 5); }
 | 
			
		||||
  .circle.size-6 li { @include on-circle($item-count: 6); }
 | 
			
		||||
  .circle.size-7 li { @include on-circle($item-count: 7); }
 | 
			
		||||
  .circle.size-8 li { @include on-circle($item-count: 8); }
 | 
			
		||||
  .circle.size-9 li { @include on-circle($item-count: 9); }
 | 
			
		||||
  .circle.size-10 li { @include on-circle($item-count: 10); }
 | 
			
		||||
  .circle.size-11 li { @include on-circle($item-count: 11); }
 | 
			
		||||
  .circle.size-12 li { @include on-circle($item-count: 12); }
 | 
			
		||||
  .circle.size-13 li { @include on-circle($item-count: 13); }
 | 
			
		||||
  .circle.size-14 li { @include on-circle($item-count: 14); }
 | 
			
		||||
  .circle.size-15 li { @include on-circle($item-count: 15); }
 | 
			
		||||
  .circle.size-16 li { @include on-circle($item-count: 16); }
 | 
			
		||||
  .circle.size-17 li { @include on-circle($item-count: 17); }
 | 
			
		||||
  .circle.size-18 li { @include on-circle($item-count: 18); }
 | 
			
		||||
  .circle.size-19 li { @include on-circle($item-count: 19); }
 | 
			
		||||
  .circle.size-20 li { @include on-circle($item-count: 20); }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  // player circle
 | 
			
		||||
  .circle {
 | 
			
		||||
    background: url('../img/demon-head2.png') center center no-repeat;
 | 
			
		||||
    background-size: 10%;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  #townsquare.public .circle {
 | 
			
		||||
    background-image: url('../img/demon-head.png');
 | 
			
		||||
  }
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										1440
									
								
								css/circle.css
									
										
									
									
									
								
							
							
						
						
									
										1440
									
								
								css/circle.css
									
										
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
				
			
			@ -1,62 +0,0 @@
 | 
			
		|||
@mixin on-circle($item-count) {
 | 
			
		||||
  $angle: (360 / $item-count);
 | 
			
		||||
  $rot: 0;
 | 
			
		||||
 | 
			
		||||
  @for $i from 1 through $item-count {
 | 
			
		||||
    &:nth-child(#{$i}) {
 | 
			
		||||
      transform: rotate($rot * 1deg);
 | 
			
		||||
      @if $i - 1 <= $item-count / 2 {
 | 
			
		||||
        z-index: $item-count - $i + 1;
 | 
			
		||||
      } @else {
 | 
			
		||||
        z-index: $i - 1;
 | 
			
		||||
      }
 | 
			
		||||
      > * {
 | 
			
		||||
        transform: rotate($rot * -1deg);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    $rot: $rot + $angle;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.circle {
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  list-style: none;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
 | 
			
		||||
  li {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    top: 0;
 | 
			
		||||
    left: 50%;
 | 
			
		||||
    height: 50%;
 | 
			
		||||
    transform-origin: 0 100%;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
 | 
			
		||||
    > * {
 | 
			
		||||
      margin-left: -100px;
 | 
			
		||||
      width: 200px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.circle.size-5 li { @include on-circle($item-count: 5); }
 | 
			
		||||
.circle.size-6 li { @include on-circle($item-count: 6); }
 | 
			
		||||
.circle.size-7 li { @include on-circle($item-count: 7); }
 | 
			
		||||
.circle.size-8 li { @include on-circle($item-count: 8); }
 | 
			
		||||
.circle.size-9 li { @include on-circle($item-count: 9); }
 | 
			
		||||
.circle.size-10 li { @include on-circle($item-count: 10); }
 | 
			
		||||
.circle.size-11 li { @include on-circle($item-count: 11); }
 | 
			
		||||
.circle.size-12 li { @include on-circle($item-count: 12); }
 | 
			
		||||
.circle.size-13 li { @include on-circle($item-count: 13); }
 | 
			
		||||
.circle.size-14 li { @include on-circle($item-count: 14); }
 | 
			
		||||
.circle.size-15 li { @include on-circle($item-count: 15); }
 | 
			
		||||
.circle.size-16 li { @include on-circle($item-count: 16); }
 | 
			
		||||
.circle.size-17 li { @include on-circle($item-count: 17); }
 | 
			
		||||
.circle.size-18 li { @include on-circle($item-count: 18); }
 | 
			
		||||
.circle.size-19 li { @include on-circle($item-count: 19); }
 | 
			
		||||
.circle.size-20 li { @include on-circle($item-count: 20); }
 | 
			
		||||
							
								
								
									
										463
									
								
								css/main.css
									
										
									
									
									
								
							
							
						
						
									
										463
									
								
								css/main.css
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,463 +0,0 @@
 | 
			
		|||
/*! HTML5 Boilerplate v7.3.0 | MIT License | https://html5boilerplate.com/ */
 | 
			
		||||
/* main.css 2.0.0 | MIT License | https://github.com/h5bp/main.css#readme */
 | 
			
		||||
/*
 | 
			
		||||
 * What follows is the result of much research on cross-browser styling.
 | 
			
		||||
 * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
 | 
			
		||||
 * Kroc Camen, and the H5BP dev community and team.
 | 
			
		||||
 */
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Base styles: opinionated defaults
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: "Papyrus";
 | 
			
		||||
  src: url("../fonts/papyrus.eot");
 | 
			
		||||
  /* IE9*/
 | 
			
		||||
  src: url("../fonts/papyrus.eot?#iefix") format("embedded-opentype"), url("../fonts/papyrus.woff2") format("woff2"), url("../fonts/papyrus.woff") format("woff"), url("../fonts/papyrus.ttf") format("truetype"), url("../fonts/papyrus.svg#PapyrusW01") format("svg");
 | 
			
		||||
  /* iOS 4.1- */
 | 
			
		||||
}
 | 
			
		||||
html, body {
 | 
			
		||||
  font-size: 1.2em;
 | 
			
		||||
  line-height: 1.4;
 | 
			
		||||
  background: url("../img/background.jpg") center center;
 | 
			
		||||
  background-size: cover;
 | 
			
		||||
  color: white;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  font-family: "Roboto Condensed", sans-serif;
 | 
			
		||||
  -webkit-font-smoothing: subpixel-antialiased;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Remove text-shadow in selection highlight:
 | 
			
		||||
 * https://twitter.com/miketaylr/status/12228805301
 | 
			
		||||
 *
 | 
			
		||||
 * Vendor-prefixed and regular ::selection selectors cannot be combined:
 | 
			
		||||
 * https://stackoverflow.com/a/16982510/7133471
 | 
			
		||||
 *
 | 
			
		||||
 * Customize the background color to match your design.
 | 
			
		||||
 */
 | 
			
		||||
::-moz-selection {
 | 
			
		||||
  background: #b3d4fc;
 | 
			
		||||
  text-shadow: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
::selection {
 | 
			
		||||
  background: #b3d4fc;
 | 
			
		||||
  text-shadow: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * A better looking default horizontal rule
 | 
			
		||||
 */
 | 
			
		||||
hr {
 | 
			
		||||
  display: block;
 | 
			
		||||
  height: 1px;
 | 
			
		||||
  border: 0;
 | 
			
		||||
  border-top: 1px solid #ccc;
 | 
			
		||||
  margin: 1em 0;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Remove the gap between audio, canvas, iframes,
 | 
			
		||||
 * images, videos and the bottom of their containers:
 | 
			
		||||
 * https://github.com/h5bp/html5-boilerplate/issues/440
 | 
			
		||||
 */
 | 
			
		||||
audio,
 | 
			
		||||
canvas,
 | 
			
		||||
iframe,
 | 
			
		||||
img,
 | 
			
		||||
svg,
 | 
			
		||||
video {
 | 
			
		||||
  vertical-align: middle;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Remove default fieldset styles.
 | 
			
		||||
 */
 | 
			
		||||
fieldset {
 | 
			
		||||
  border: 0;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Allow only vertical resizing of textareas.
 | 
			
		||||
 */
 | 
			
		||||
textarea {
 | 
			
		||||
  resize: vertical;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Browser Upgrade Prompt
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
.browserupgrade {
 | 
			
		||||
  margin: 0.2em 0;
 | 
			
		||||
  background: #ccc;
 | 
			
		||||
  color: #000;
 | 
			
		||||
  padding: 0.2em 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Author's custom styles
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
.square {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  border-radius: 50%;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  padding: 20px;
 | 
			
		||||
}
 | 
			
		||||
.square .circle {
 | 
			
		||||
  background: url("../img/demon-head2.png") center center no-repeat;
 | 
			
		||||
  background-size: 10%;
 | 
			
		||||
}
 | 
			
		||||
.square.public .circle {
 | 
			
		||||
  background-image: url("../img/demon-head.png");
 | 
			
		||||
}
 | 
			
		||||
.square .player {
 | 
			
		||||
  margin-bottom: 10px;
 | 
			
		||||
}
 | 
			
		||||
.square .player .shroud {
 | 
			
		||||
  content: " ";
 | 
			
		||||
  background: url("../img/shroud.png") center -10px no-repeat;
 | 
			
		||||
  background-size: auto 100%;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  margin-left: -50px;
 | 
			
		||||
  width: 100px;
 | 
			
		||||
  height: 100px;
 | 
			
		||||
  left: 50%;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
  opacity: 0;
 | 
			
		||||
  transition: opacity 200ms;
 | 
			
		||||
  z-index: 2;
 | 
			
		||||
}
 | 
			
		||||
.square .player .shroud:hover {
 | 
			
		||||
  opacity: 1;
 | 
			
		||||
}
 | 
			
		||||
.square .player.dead .shroud {
 | 
			
		||||
  opacity: 1;
 | 
			
		||||
}
 | 
			
		||||
.square .player.dead .name {
 | 
			
		||||
  color: #999;
 | 
			
		||||
}
 | 
			
		||||
.square.public .player.dead .shroud {
 | 
			
		||||
  display: none;
 | 
			
		||||
}
 | 
			
		||||
.square.public .player.dead:after {
 | 
			
		||||
  background: url("../img/vote.png") center center no-repeat;
 | 
			
		||||
  background-size: 40%;
 | 
			
		||||
  height: 153px;
 | 
			
		||||
}
 | 
			
		||||
.square.public .player.dead.traveller:after {
 | 
			
		||||
  filter: grayscale(100%);
 | 
			
		||||
}
 | 
			
		||||
.square.public .player.dead.no-vote:after {
 | 
			
		||||
  display: none;
 | 
			
		||||
}
 | 
			
		||||
.square .token {
 | 
			
		||||
  border-radius: 50%;
 | 
			
		||||
  height: 153px;
 | 
			
		||||
  width: 153px;
 | 
			
		||||
  background: url("../img/token.png") center center;
 | 
			
		||||
  background-size: 100%;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  color: black;
 | 
			
		||||
  margin: auto;
 | 
			
		||||
  font-weight: 600;
 | 
			
		||||
  text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, 1px 1px 0 #fff, 0 0 5px rgba(0, 0, 0, 0.75);
 | 
			
		||||
  padding-top: 105px;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  font-family: "Papyrus", serif;
 | 
			
		||||
  border: 3px solid black;
 | 
			
		||||
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
}
 | 
			
		||||
.square .token:before {
 | 
			
		||||
  content: " ";
 | 
			
		||||
  background-size: 100%;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  top: 0;
 | 
			
		||||
}
 | 
			
		||||
.square .token span {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  background-size: 100%;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  pointer-events: none;
 | 
			
		||||
}
 | 
			
		||||
.square .token span.leaf-left {
 | 
			
		||||
  background-image: url("../img/leaf-left.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token span.leaf-orange {
 | 
			
		||||
  background-image: url("../img/leaf-orange.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token span.leaf-right {
 | 
			
		||||
  background-image: url("../img/leaf-right.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token span.leaf-top1 {
 | 
			
		||||
  background-image: url("../img/leaf-top1.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token span.leaf-top2 {
 | 
			
		||||
  background-image: url("../img/leaf-top2.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token span.leaf-top3 {
 | 
			
		||||
  background-image: url("../img/leaf-top3.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token span.leaf-top4 {
 | 
			
		||||
  background-image: url("../img/leaf-top4.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token span.leaf-top5 {
 | 
			
		||||
  background-image: url("../img/leaf-top5.png");
 | 
			
		||||
}
 | 
			
		||||
.square.public .token {
 | 
			
		||||
  background-image: url("../img/life.png");
 | 
			
		||||
}
 | 
			
		||||
.square.public .token:before, .square.public .token:after, .square.public .token span {
 | 
			
		||||
  display: none;
 | 
			
		||||
}
 | 
			
		||||
.square.public .player.dead .token {
 | 
			
		||||
  background-image: url("../img/death.png");
 | 
			
		||||
}
 | 
			
		||||
.square.public .player.traveller .token {
 | 
			
		||||
  filter: grayscale(100%);
 | 
			
		||||
}
 | 
			
		||||
.square .name {
 | 
			
		||||
  font-size: 120%;
 | 
			
		||||
  line-height: 120%;
 | 
			
		||||
  text-shadow: -2px -2px 0 #000, 2px -2px 0 #000, -2px 2px 0 #000, 2px 2px 0 #000, 0 0 10px rgba(0, 0, 0, 0.75);
 | 
			
		||||
}
 | 
			
		||||
.square .reminder {
 | 
			
		||||
  background: url("../img/reminder.png") center center;
 | 
			
		||||
  background-size: 100%;
 | 
			
		||||
  width: 75px;
 | 
			
		||||
  height: 75px;
 | 
			
		||||
  color: black;
 | 
			
		||||
  font-size: 50%;
 | 
			
		||||
  font-weight: bold;
 | 
			
		||||
  display: block;
 | 
			
		||||
  margin: 5px -37.5px 0;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  padding-top: 45px;
 | 
			
		||||
  border-radius: 50%;
 | 
			
		||||
  border: 3px solid black;
 | 
			
		||||
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
 | 
			
		||||
  transition: opacity 200ms;
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
}
 | 
			
		||||
.square .reminder:before, .square .reminder:after {
 | 
			
		||||
  content: " ";
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  background-size: 100%;
 | 
			
		||||
  background-position: center 0;
 | 
			
		||||
  background-repeat: no-repeat;
 | 
			
		||||
  background-image: url("../img/icon-plus.png");
 | 
			
		||||
  transition: opacity 200ms;
 | 
			
		||||
}
 | 
			
		||||
.square .reminder:after {
 | 
			
		||||
  background-image: url("../img/icon-x.png");
 | 
			
		||||
  opacity: 0;
 | 
			
		||||
}
 | 
			
		||||
.square .reminder.add {
 | 
			
		||||
  opacity: 0;
 | 
			
		||||
}
 | 
			
		||||
.square .reminder.add:after {
 | 
			
		||||
  display: none;
 | 
			
		||||
}
 | 
			
		||||
.square .reminder:hover:before {
 | 
			
		||||
  opacity: 0;
 | 
			
		||||
}
 | 
			
		||||
.square .reminder:hover:after {
 | 
			
		||||
  opacity: 1;
 | 
			
		||||
}
 | 
			
		||||
.square .circle li:hover .reminder.add {
 | 
			
		||||
  opacity: 1;
 | 
			
		||||
}
 | 
			
		||||
.square .circle li:hover .reminder.add:before {
 | 
			
		||||
  opacity: 1;
 | 
			
		||||
}
 | 
			
		||||
.square.public .reminder {
 | 
			
		||||
  display: none;
 | 
			
		||||
}
 | 
			
		||||
.square .controls {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  right: 0;
 | 
			
		||||
  top: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Helper classes
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
/*
 | 
			
		||||
 * Hide visually and from screen readers
 | 
			
		||||
 */
 | 
			
		||||
.hidden {
 | 
			
		||||
  display: none !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
* Hide only visually, but have it available for screen readers:
 | 
			
		||||
* https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 | 
			
		||||
*
 | 
			
		||||
* 1. For long content, line feeds are not interpreted as spaces and small width
 | 
			
		||||
*    causes content to wrap 1 word per line:
 | 
			
		||||
*    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 | 
			
		||||
*/
 | 
			
		||||
.sr-only {
 | 
			
		||||
  border: 0;
 | 
			
		||||
  clip: rect(0, 0, 0, 0);
 | 
			
		||||
  height: 1px;
 | 
			
		||||
  margin: -1px;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  white-space: nowrap;
 | 
			
		||||
  width: 1px;
 | 
			
		||||
  /* 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
* Extends the .sr-only class to allow the element
 | 
			
		||||
* to be focusable when navigated to via the keyboard:
 | 
			
		||||
* https://www.drupal.org/node/897638
 | 
			
		||||
*/
 | 
			
		||||
.sr-only.focusable:active,
 | 
			
		||||
.sr-only.focusable:focus {
 | 
			
		||||
  clip: auto;
 | 
			
		||||
  height: auto;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  overflow: visible;
 | 
			
		||||
  position: static;
 | 
			
		||||
  white-space: inherit;
 | 
			
		||||
  width: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
* Hide visually and from screen readers, but maintain layout
 | 
			
		||||
*/
 | 
			
		||||
.invisible {
 | 
			
		||||
  visibility: hidden;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
* Clearfix: contain floats
 | 
			
		||||
*
 | 
			
		||||
* For modern browsers
 | 
			
		||||
* 1. The space content is one way to avoid an Opera bug when the
 | 
			
		||||
*    `contenteditable` attribute is included anywhere else in the document.
 | 
			
		||||
*    Otherwise it causes space to appear at the top and bottom of elements
 | 
			
		||||
*    that receive the `clearfix` class.
 | 
			
		||||
* 2. The use of `table` rather than `block` is only necessary if using
 | 
			
		||||
*    `:before` to contain the top-margins of child elements.
 | 
			
		||||
*/
 | 
			
		||||
.clearfix:before,
 | 
			
		||||
.clearfix:after {
 | 
			
		||||
  content: " ";
 | 
			
		||||
  /* 1 */
 | 
			
		||||
  display: table;
 | 
			
		||||
  /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.clearfix:after {
 | 
			
		||||
  clear: both;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   EXAMPLE Media Queries for Responsive Design.
 | 
			
		||||
   These examples override the primary ('mobile first') styles.
 | 
			
		||||
   Modify as content requires.
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
@media only screen and (min-width: 35em) {
 | 
			
		||||
  /* Style adjustments for viewports that meet the condition */
 | 
			
		||||
}
 | 
			
		||||
@media print, (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 1.25dppx), (min-resolution: 120dpi) {
 | 
			
		||||
  /* Style adjustments for high resolution devices */
 | 
			
		||||
}
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Print styles.
 | 
			
		||||
   Inlined to avoid the additional HTTP request:
 | 
			
		||||
   https://www.phpied.com/delay-loading-your-print-css/
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
@media print {
 | 
			
		||||
  *,
 | 
			
		||||
*:before,
 | 
			
		||||
*:after {
 | 
			
		||||
    background: transparent !important;
 | 
			
		||||
    color: #000 !important;
 | 
			
		||||
    /* Black prints faster */
 | 
			
		||||
    box-shadow: none !important;
 | 
			
		||||
    text-shadow: none !important;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  a,
 | 
			
		||||
a:visited {
 | 
			
		||||
    text-decoration: underline;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  a[href]:after {
 | 
			
		||||
    content: " (" attr(href) ")";
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  abbr[title]:after {
 | 
			
		||||
    content: " (" attr(title) ")";
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
     * Don't show links that are fragment identifiers,
 | 
			
		||||
     * or use the `javascript:` pseudo protocol
 | 
			
		||||
     */
 | 
			
		||||
  a[href^="#"]:after,
 | 
			
		||||
a[href^="javascript:"]:after {
 | 
			
		||||
    content: "";
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  pre {
 | 
			
		||||
    white-space: pre-wrap !important;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  pre,
 | 
			
		||||
blockquote {
 | 
			
		||||
    border: 1px solid #999;
 | 
			
		||||
    page-break-inside: avoid;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
     * Printing Tables:
 | 
			
		||||
     * https://web.archive.org/web/20180815150934/http://css-discuss.incutio.com/wiki/Printing_Tables
 | 
			
		||||
     */
 | 
			
		||||
  thead {
 | 
			
		||||
    display: table-header-group;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  tr,
 | 
			
		||||
img {
 | 
			
		||||
    page-break-inside: avoid;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  p,
 | 
			
		||||
h2,
 | 
			
		||||
h3 {
 | 
			
		||||
    orphans: 3;
 | 
			
		||||
    widows: 3;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  h2,
 | 
			
		||||
h3 {
 | 
			
		||||
    page-break-after: avoid;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*# sourceMappingURL=main.css.map */
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
{"version":3,"sourceRoot":"","sources":["main.scss"],"names":[],"mappings":"AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAIA;EAAY;EACR;AAAkC;EAClC;AAIsD;;AAG1D;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;AAAA;AAAA;AAIA;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;;;AAGJ;AAAA;AAAA;AAIA;EACI;EACA;EACA;;;AAGJ;AAAA;AAAA;AAIA;EACI;;;AAGJ;AAAA;AAAA;AAIA;EACI;EACA;EACA;EACA;;;AAGJ;AAAA;AAAA;AAMA;EACI;EACA;EACA;EACA;EACA;EACA;;AAGA;EACI;EACA;;AAGJ;EACI;;AAIJ;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EAAU;;AAGd;EAAiB;;AACjB;EAAe;;AAIf;EAAU;;AACV;EACI;EACA;EACA;;AAEJ;EAAoB;;AACpB;EAAkB;;AAItB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aACQ;EAKR;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EAAc;;AACd;EAAgB;;AAChB;EAAe;;AACf;EAAc;;AACd;EAAc;;AACd;EAAc;;AACd;EAAc;;AACd;EAAc;;AAItB;EACI;;AACA;EAA0B;;AAG9B;EACI;;AAGJ;EACI;;AAIJ;EACI;EACA;EACA,aACI;;AAQR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;AACA;EAAU;;AAGd;EAAiB;;AACjB;EAAgB;;AAEpB;EAAkC;;AAClC;EAAwC;;AAExC;EAAqB;;AAGrB;EACI;EACA;EACA;;;AAIR;AAAA;AAAA;AAIA;AAAA;AAAA;AAIA;EACI;;;AAGJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;;;AAGJ;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;AAAA;AAAA;AAIA;EACI;;;AAGJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AAAA;EAEI;AACA;EACA;AACA;;;AAGJ;EACI;;;AAGJ;AAAA;AAAA;AAAA;AAAA;AAMA;AACI;;AAGJ;AAII;;AAGJ;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;AAAA;AAAA;IAGI;IACA;AACA;IACA;IACA;;;EAEJ;AAAA;IAEI;;;EAEJ;IACI;;;EAEJ;IACI;;;AAEJ;AAAA;AAAA;AAAA;EAIA;AAAA;IAEI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;IACA;;;AAEJ;AAAA;AAAA;AAAA;EAIA;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;AAAA;IAGI;IACA;;;EAEJ;AAAA;IAEI","file":"main.css"}
 | 
			
		||||
							
								
								
									
										474
									
								
								css/main.scss
									
										
									
									
									
								
							
							
						
						
									
										474
									
								
								css/main.scss
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,474 +0,0 @@
 | 
			
		|||
/*! HTML5 Boilerplate v7.3.0 | MIT License | https://html5boilerplate.com/ */
 | 
			
		||||
 | 
			
		||||
/* main.css 2.0.0 | MIT License | https://github.com/h5bp/main.css#readme */
 | 
			
		||||
/*
 | 
			
		||||
 * What follows is the result of much research on cross-browser styling.
 | 
			
		||||
 * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
 | 
			
		||||
 * Kroc Camen, and the H5BP dev community and team.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Base styles: opinionated defaults
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
@font-face {font-family: "Papyrus";
 | 
			
		||||
    src: url("../fonts/papyrus.eot"); /* IE9*/
 | 
			
		||||
    src: url("../fonts/papyrus.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */
 | 
			
		||||
    url("../fonts/papyrus.woff2") format("woff2"), /* chrome firefox */
 | 
			
		||||
    url("../fonts/papyrus.woff") format("woff"), /* chrome firefox */
 | 
			
		||||
    url("../fonts/papyrus.ttf") format("truetype"), /* chrome firefox opera Safari, Android, iOS 4.2+*/
 | 
			
		||||
    url("../fonts/papyrus.svg#PapyrusW01") format("svg"); /* iOS 4.1- */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
html, body {
 | 
			
		||||
    font-size: 1.2em;
 | 
			
		||||
    line-height: 1.4;
 | 
			
		||||
    background: url('../img/background.jpg') center center;
 | 
			
		||||
    background-size: cover;
 | 
			
		||||
    color: white;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
    font-family: 'Roboto Condensed', sans-serif;
 | 
			
		||||
    -webkit-font-smoothing: subpixel-antialiased;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Remove text-shadow in selection highlight:
 | 
			
		||||
 * https://twitter.com/miketaylr/status/12228805301
 | 
			
		||||
 *
 | 
			
		||||
 * Vendor-prefixed and regular ::selection selectors cannot be combined:
 | 
			
		||||
 * https://stackoverflow.com/a/16982510/7133471
 | 
			
		||||
 *
 | 
			
		||||
 * Customize the background color to match your design.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
::-moz-selection {
 | 
			
		||||
    background: #b3d4fc;
 | 
			
		||||
    text-shadow: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
::selection {
 | 
			
		||||
    background: #b3d4fc;
 | 
			
		||||
    text-shadow: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * A better looking default horizontal rule
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
hr {
 | 
			
		||||
    display: block;
 | 
			
		||||
    height: 1px;
 | 
			
		||||
    border: 0;
 | 
			
		||||
    border-top: 1px solid #ccc;
 | 
			
		||||
    margin: 1em 0;
 | 
			
		||||
    padding: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Remove the gap between audio, canvas, iframes,
 | 
			
		||||
 * images, videos and the bottom of their containers:
 | 
			
		||||
 * https://github.com/h5bp/html5-boilerplate/issues/440
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
audio,
 | 
			
		||||
canvas,
 | 
			
		||||
iframe,
 | 
			
		||||
img,
 | 
			
		||||
svg,
 | 
			
		||||
video {
 | 
			
		||||
    vertical-align: middle;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Remove default fieldset styles.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
fieldset {
 | 
			
		||||
    border: 0;
 | 
			
		||||
    margin: 0;
 | 
			
		||||
    padding: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Allow only vertical resizing of textareas.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
textarea {
 | 
			
		||||
    resize: vertical;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Browser Upgrade Prompt
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
.browserupgrade {
 | 
			
		||||
    margin: 0.2em 0;
 | 
			
		||||
    background: #ccc;
 | 
			
		||||
    color: #000;
 | 
			
		||||
    padding: 0.2em 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Author's custom styles
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
$token: 150px;
 | 
			
		||||
 | 
			
		||||
.square {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    border-radius: 50%;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 20px;
 | 
			
		||||
 | 
			
		||||
    // player circle
 | 
			
		||||
    .circle {
 | 
			
		||||
        background: url('../img/demon-head2.png') center center no-repeat;
 | 
			
		||||
        background-size: 10%;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.public .circle {
 | 
			
		||||
        background-image: url('../img/demon-head.png');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Player token
 | 
			
		||||
    .player {
 | 
			
		||||
        margin-bottom: 10px;
 | 
			
		||||
 | 
			
		||||
        .shroud {
 | 
			
		||||
            content: " ";
 | 
			
		||||
            background: url('../img/shroud.png') center -10px no-repeat;
 | 
			
		||||
            background-size: auto 100%;
 | 
			
		||||
            position: absolute;
 | 
			
		||||
            margin-left: -2/6 * $token;
 | 
			
		||||
            width: 2/3 * $token;
 | 
			
		||||
            height: 2/3 * $token;
 | 
			
		||||
            left: 50%;
 | 
			
		||||
            top: 0;
 | 
			
		||||
            cursor: pointer;
 | 
			
		||||
            opacity: 0;
 | 
			
		||||
            transition: opacity 200ms;
 | 
			
		||||
            z-index: 2;
 | 
			
		||||
            &:hover { opacity: 1; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &.dead .shroud { opacity: 1; }
 | 
			
		||||
        &.dead .name { color: #999; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.public .player.dead {
 | 
			
		||||
        .shroud { display: none; }
 | 
			
		||||
        &:after {
 | 
			
		||||
            background: url('../img/vote.png') center center no-repeat;
 | 
			
		||||
            background-size: 40%;
 | 
			
		||||
            height: $token + 3px;
 | 
			
		||||
        }
 | 
			
		||||
        &.traveller:after { filter: grayscale(100%); }
 | 
			
		||||
        &.no-vote:after { display: none; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Role token
 | 
			
		||||
    .token {
 | 
			
		||||
        border-radius: 50%;
 | 
			
		||||
        height: $token + 3px;
 | 
			
		||||
        width: $token + 3px;
 | 
			
		||||
        background: url('../img/token.png') center center;
 | 
			
		||||
        background-size: 100%;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        position: relative;
 | 
			
		||||
        color: black;
 | 
			
		||||
        margin: auto;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        text-shadow:
 | 
			
		||||
                -1px -1px 0 #fff,
 | 
			
		||||
                1px -1px 0 #fff,
 | 
			
		||||
                -1px 1px 0 #fff,
 | 
			
		||||
                1px 1px 0 #fff,
 | 
			
		||||
                0 0 5px rgba(0,0,0,0.75);
 | 
			
		||||
        padding-top: $token * 0.7;
 | 
			
		||||
        box-sizing: border-box;
 | 
			
		||||
        font-family: 'Papyrus', serif;
 | 
			
		||||
        border: 3px solid black;
 | 
			
		||||
        box-shadow: 0 0 10px rgba(0,0,0,0.5);
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
 | 
			
		||||
        &:before {
 | 
			
		||||
            content: " ";
 | 
			
		||||
            background-size: 100%;
 | 
			
		||||
            position: absolute;
 | 
			
		||||
            width: 100%;
 | 
			
		||||
            height: 100%;
 | 
			
		||||
            left: 0;
 | 
			
		||||
            top: 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        span {
 | 
			
		||||
            position: absolute;
 | 
			
		||||
            width: 100%;
 | 
			
		||||
            height: 100%;
 | 
			
		||||
            background-size: 100%;
 | 
			
		||||
            left: 0;
 | 
			
		||||
            top: 0;
 | 
			
		||||
            pointer-events: none;
 | 
			
		||||
            &.leaf-left { background-image: url('../img/leaf-left.png'); }
 | 
			
		||||
            &.leaf-orange { background-image: url('../img/leaf-orange.png'); }
 | 
			
		||||
            &.leaf-right { background-image: url('../img/leaf-right.png'); }
 | 
			
		||||
            &.leaf-top1 { background-image: url('../img/leaf-top1.png'); }
 | 
			
		||||
            &.leaf-top2 { background-image: url('../img/leaf-top2.png'); }
 | 
			
		||||
            &.leaf-top3 { background-image: url('../img/leaf-top3.png'); }
 | 
			
		||||
            &.leaf-top4 { background-image: url('../img/leaf-top4.png'); }
 | 
			
		||||
            &.leaf-top5 { background-image: url('../img/leaf-top5.png'); }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.public .token {
 | 
			
		||||
        background-image: url('../img/life.png');
 | 
			
		||||
        &:before, &:after, span { display: none; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.public .player.dead .token {
 | 
			
		||||
        background-image: url('../img/death.png');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.public .player.traveller .token {
 | 
			
		||||
        filter: grayscale(100%);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Player name
 | 
			
		||||
    .name {
 | 
			
		||||
        font-size: 120%;
 | 
			
		||||
        line-height: 120%;
 | 
			
		||||
        text-shadow:
 | 
			
		||||
            -2px -2px 0 #000,
 | 
			
		||||
            2px -2px 0 #000,
 | 
			
		||||
            -2px 2px 0 #000,
 | 
			
		||||
            2px 2px 0 #000,
 | 
			
		||||
            0 0 10px rgba(0,0,0,0.75);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Reminder token
 | 
			
		||||
    .reminder {
 | 
			
		||||
        background: url('../img/reminder.png') center center;
 | 
			
		||||
        background-size: 100%;
 | 
			
		||||
        width: $token / 2;
 | 
			
		||||
        height: $token / 2;
 | 
			
		||||
        color: black;
 | 
			
		||||
        font-size: 50%;
 | 
			
		||||
        font-weight: bold;
 | 
			
		||||
        display: block;
 | 
			
		||||
        margin: 5px ($token / -4) 0;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        position: relative;
 | 
			
		||||
        box-sizing: border-box;
 | 
			
		||||
        padding-top: $token * 0.3;
 | 
			
		||||
        border-radius: 50%;
 | 
			
		||||
        border: 3px solid black;
 | 
			
		||||
        box-shadow: 0 0 10px rgba(0,0,0,0.5);
 | 
			
		||||
        transition: opacity 200ms;
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
 | 
			
		||||
        &:before, &:after {
 | 
			
		||||
            content: " ";
 | 
			
		||||
            position: absolute;
 | 
			
		||||
            left: 0;
 | 
			
		||||
            top: 0;
 | 
			
		||||
            width: 100%;
 | 
			
		||||
            height: 100%;
 | 
			
		||||
            background-size: 100%;
 | 
			
		||||
            background-position: center 0;
 | 
			
		||||
            background-repeat: no-repeat;
 | 
			
		||||
            background-image: url('../img/icon-plus.png');
 | 
			
		||||
            transition: opacity 200ms;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &:after {
 | 
			
		||||
            background-image: url('../img/icon-x.png');
 | 
			
		||||
            opacity: 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &.add {
 | 
			
		||||
            opacity: 0;
 | 
			
		||||
            &:after { display: none; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &:hover:before { opacity: 0; }
 | 
			
		||||
        &:hover:after { opacity: 1; }
 | 
			
		||||
    }
 | 
			
		||||
    .circle li:hover .reminder.add, { opacity: 1; }
 | 
			
		||||
    .circle li:hover .reminder.add:before { opacity: 1; }
 | 
			
		||||
 | 
			
		||||
    &.public .reminder { display: none; }
 | 
			
		||||
 | 
			
		||||
    // Controls
 | 
			
		||||
    .controls {
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        right: 0;
 | 
			
		||||
        top: 0;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Helper classes
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Hide visually and from screen readers
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
.hidden {
 | 
			
		||||
    display: none !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
* Hide only visually, but have it available for screen readers:
 | 
			
		||||
* https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 | 
			
		||||
*
 | 
			
		||||
* 1. For long content, line feeds are not interpreted as spaces and small width
 | 
			
		||||
*    causes content to wrap 1 word per line:
 | 
			
		||||
*    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
.sr-only {
 | 
			
		||||
    border: 0;
 | 
			
		||||
    clip: rect(0, 0, 0, 0);
 | 
			
		||||
    height: 1px;
 | 
			
		||||
    margin: -1px;
 | 
			
		||||
    overflow: hidden;
 | 
			
		||||
    padding: 0;
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    white-space: nowrap;
 | 
			
		||||
    width: 1px;
 | 
			
		||||
    /* 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
* Extends the .sr-only class to allow the element
 | 
			
		||||
* to be focusable when navigated to via the keyboard:
 | 
			
		||||
* https://www.drupal.org/node/897638
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
.sr-only.focusable:active,
 | 
			
		||||
.sr-only.focusable:focus {
 | 
			
		||||
    clip: auto;
 | 
			
		||||
    height: auto;
 | 
			
		||||
    margin: 0;
 | 
			
		||||
    overflow: visible;
 | 
			
		||||
    position: static;
 | 
			
		||||
    white-space: inherit;
 | 
			
		||||
    width: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
* Hide visually and from screen readers, but maintain layout
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
.invisible {
 | 
			
		||||
    visibility: hidden;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
* Clearfix: contain floats
 | 
			
		||||
*
 | 
			
		||||
* For modern browsers
 | 
			
		||||
* 1. The space content is one way to avoid an Opera bug when the
 | 
			
		||||
*    `contenteditable` attribute is included anywhere else in the document.
 | 
			
		||||
*    Otherwise it causes space to appear at the top and bottom of elements
 | 
			
		||||
*    that receive the `clearfix` class.
 | 
			
		||||
* 2. The use of `table` rather than `block` is only necessary if using
 | 
			
		||||
*    `:before` to contain the top-margins of child elements.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
.clearfix:before,
 | 
			
		||||
.clearfix:after {
 | 
			
		||||
    content: " ";
 | 
			
		||||
    /* 1 */
 | 
			
		||||
    display: table;
 | 
			
		||||
    /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.clearfix:after {
 | 
			
		||||
    clear: both;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   EXAMPLE Media Queries for Responsive Design.
 | 
			
		||||
   These examples override the primary ('mobile first') styles.
 | 
			
		||||
   Modify as content requires.
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
@media only screen and (min-width: 35em) {
 | 
			
		||||
    /* Style adjustments for viewports that meet the condition */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media print,
 | 
			
		||||
(-webkit-min-device-pixel-ratio: 1.25),
 | 
			
		||||
(min-resolution: 1.25dppx),
 | 
			
		||||
(min-resolution: 120dpi) {
 | 
			
		||||
    /* Style adjustments for high resolution devices */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ==========================================================================
 | 
			
		||||
   Print styles.
 | 
			
		||||
   Inlined to avoid the additional HTTP request:
 | 
			
		||||
   https://www.phpied.com/delay-loading-your-print-css/
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
@media print {
 | 
			
		||||
    *,
 | 
			
		||||
    *:before,
 | 
			
		||||
    *:after {
 | 
			
		||||
        background: transparent !important;
 | 
			
		||||
        color: #000 !important;
 | 
			
		||||
        /* Black prints faster */
 | 
			
		||||
        box-shadow: none !important;
 | 
			
		||||
        text-shadow: none !important;
 | 
			
		||||
    }
 | 
			
		||||
    a,
 | 
			
		||||
    a:visited {
 | 
			
		||||
        text-decoration: underline;
 | 
			
		||||
    }
 | 
			
		||||
    a[href]:after {
 | 
			
		||||
        content: " (" attr(href) ")";
 | 
			
		||||
    }
 | 
			
		||||
    abbr[title]:after {
 | 
			
		||||
        content: " (" attr(title) ")";
 | 
			
		||||
    }
 | 
			
		||||
    /*
 | 
			
		||||
       * Don't show links that are fragment identifiers,
 | 
			
		||||
       * or use the `javascript:` pseudo protocol
 | 
			
		||||
       */
 | 
			
		||||
    a[href^="#"]:after,
 | 
			
		||||
    a[href^="javascript:"]:after {
 | 
			
		||||
        content: "";
 | 
			
		||||
    }
 | 
			
		||||
    pre {
 | 
			
		||||
        white-space: pre-wrap !important;
 | 
			
		||||
    }
 | 
			
		||||
    pre,
 | 
			
		||||
    blockquote {
 | 
			
		||||
        border: 1px solid #999;
 | 
			
		||||
        page-break-inside: avoid;
 | 
			
		||||
    }
 | 
			
		||||
    /*
 | 
			
		||||
       * Printing Tables:
 | 
			
		||||
       * https://web.archive.org/web/20180815150934/http://css-discuss.incutio.com/wiki/Printing_Tables
 | 
			
		||||
       */
 | 
			
		||||
    thead {
 | 
			
		||||
        display: table-header-group;
 | 
			
		||||
    }
 | 
			
		||||
    tr,
 | 
			
		||||
    img {
 | 
			
		||||
        page-break-inside: avoid;
 | 
			
		||||
    }
 | 
			
		||||
    p,
 | 
			
		||||
    h2,
 | 
			
		||||
    h3 {
 | 
			
		||||
        orphans: 3;
 | 
			
		||||
        widows: 3;
 | 
			
		||||
    }
 | 
			
		||||
    h2,
 | 
			
		||||
    h3 {
 | 
			
		||||
        page-break-after: avoid;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										349
									
								
								css/normalize.css
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										349
									
								
								css/normalize.css
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,349 +0,0 @@
 | 
			
		|||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
 | 
			
		||||
 | 
			
		||||
/* Document
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Correct the line height in all browsers.
 | 
			
		||||
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
html {
 | 
			
		||||
    line-height: 1.15; /* 1 */
 | 
			
		||||
    -webkit-text-size-adjust: 100%; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Sections
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove the margin in all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
    margin: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Render the `main` element consistently in IE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
main {
 | 
			
		||||
    display: block;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Correct the font size and margin on `h1` elements within `section` and
 | 
			
		||||
 * `article` contexts in Chrome, Firefox, and Safari.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
h1 {
 | 
			
		||||
    font-size: 2em;
 | 
			
		||||
    margin: 0.67em 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Grouping content
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Add the correct box sizing in Firefox.
 | 
			
		||||
 * 2. Show the overflow in Edge and IE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
hr {
 | 
			
		||||
    box-sizing: content-box; /* 1 */
 | 
			
		||||
    height: 0; /* 1 */
 | 
			
		||||
    overflow: visible; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Correct the inheritance and scaling of font size in all browsers.
 | 
			
		||||
 * 2. Correct the odd `em` font sizing in all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
pre {
 | 
			
		||||
    font-family: monospace, monospace; /* 1 */
 | 
			
		||||
    font-size: 1em; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Text-level semantics
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove the gray background on active links in IE 10.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
a {
 | 
			
		||||
    background-color: transparent;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Remove the bottom border in Chrome 57-
 | 
			
		||||
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
abbr[title] {
 | 
			
		||||
    border-bottom: none; /* 1 */
 | 
			
		||||
    text-decoration: underline; /* 2 */
 | 
			
		||||
    text-decoration: underline dotted; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add the correct font weight in Chrome, Edge, and Safari.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
b,
 | 
			
		||||
strong {
 | 
			
		||||
    font-weight: bolder;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Correct the inheritance and scaling of font size in all browsers.
 | 
			
		||||
 * 2. Correct the odd `em` font sizing in all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
code,
 | 
			
		||||
kbd,
 | 
			
		||||
samp {
 | 
			
		||||
    font-family: monospace, monospace; /* 1 */
 | 
			
		||||
    font-size: 1em; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add the correct font size in all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
small {
 | 
			
		||||
    font-size: 80%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Prevent `sub` and `sup` elements from affecting the line height in
 | 
			
		||||
 * all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
sub,
 | 
			
		||||
sup {
 | 
			
		||||
    font-size: 75%;
 | 
			
		||||
    line-height: 0;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    vertical-align: baseline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub {
 | 
			
		||||
    bottom: -0.25em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sup {
 | 
			
		||||
    top: -0.5em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Embedded content
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove the border on images inside links in IE 10.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
img {
 | 
			
		||||
    border-style: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Forms
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Change the font styles in all browsers.
 | 
			
		||||
 * 2. Remove the margin in Firefox and Safari.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button,
 | 
			
		||||
input,
 | 
			
		||||
optgroup,
 | 
			
		||||
select,
 | 
			
		||||
textarea {
 | 
			
		||||
    font-family: inherit; /* 1 */
 | 
			
		||||
    font-size: 100%; /* 1 */
 | 
			
		||||
    line-height: 1.15; /* 1 */
 | 
			
		||||
    margin: 0; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Show the overflow in IE.
 | 
			
		||||
 * 1. Show the overflow in Edge.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button,
 | 
			
		||||
input { /* 1 */
 | 
			
		||||
    overflow: visible;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 | 
			
		||||
 * 1. Remove the inheritance of text transform in Firefox.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button,
 | 
			
		||||
select { /* 1 */
 | 
			
		||||
    text-transform: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Correct the inability to style clickable types in iOS and Safari.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button,
 | 
			
		||||
[type="button"],
 | 
			
		||||
[type="reset"],
 | 
			
		||||
[type="submit"] {
 | 
			
		||||
    -webkit-appearance: button;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove the inner border and padding in Firefox.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button::-moz-focus-inner,
 | 
			
		||||
[type="button"]::-moz-focus-inner,
 | 
			
		||||
[type="reset"]::-moz-focus-inner,
 | 
			
		||||
[type="submit"]::-moz-focus-inner {
 | 
			
		||||
    border-style: none;
 | 
			
		||||
    padding: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Restore the focus styles unset by the previous rule.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
button:-moz-focusring,
 | 
			
		||||
[type="button"]:-moz-focusring,
 | 
			
		||||
[type="reset"]:-moz-focusring,
 | 
			
		||||
[type="submit"]:-moz-focusring {
 | 
			
		||||
    outline: 1px dotted ButtonText;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Correct the padding in Firefox.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
fieldset {
 | 
			
		||||
    padding: 0.35em 0.75em 0.625em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Correct the text wrapping in Edge and IE.
 | 
			
		||||
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 | 
			
		||||
 * 3. Remove the padding so developers are not caught out when they zero out
 | 
			
		||||
 *    `fieldset` elements in all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
legend {
 | 
			
		||||
    box-sizing: border-box; /* 1 */
 | 
			
		||||
    color: inherit; /* 2 */
 | 
			
		||||
    display: table; /* 1 */
 | 
			
		||||
    max-width: 100%; /* 1 */
 | 
			
		||||
    padding: 0; /* 3 */
 | 
			
		||||
    white-space: normal; /* 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
progress {
 | 
			
		||||
    vertical-align: baseline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove the default vertical scrollbar in IE 10+.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
textarea {
 | 
			
		||||
    overflow: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Add the correct box sizing in IE 10.
 | 
			
		||||
 * 2. Remove the padding in IE 10.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
[type="checkbox"],
 | 
			
		||||
[type="radio"] {
 | 
			
		||||
    box-sizing: border-box; /* 1 */
 | 
			
		||||
    padding: 0; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Correct the cursor style of increment and decrement buttons in Chrome.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
[type="number"]::-webkit-inner-spin-button,
 | 
			
		||||
[type="number"]::-webkit-outer-spin-button {
 | 
			
		||||
    height: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Correct the odd appearance in Chrome and Safari.
 | 
			
		||||
 * 2. Correct the outline style in Safari.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
[type="search"] {
 | 
			
		||||
    -webkit-appearance: textfield; /* 1 */
 | 
			
		||||
    outline-offset: -2px; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Remove the inner padding in Chrome and Safari on macOS.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
[type="search"]::-webkit-search-decoration {
 | 
			
		||||
    -webkit-appearance: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 1. Correct the inability to style clickable types in iOS and Safari.
 | 
			
		||||
 * 2. Change font properties to `inherit` in Safari.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
::-webkit-file-upload-button {
 | 
			
		||||
    -webkit-appearance: button; /* 1 */
 | 
			
		||||
    font: inherit; /* 2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Interactive
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Add the correct display in Edge, IE 10+, and Firefox.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
details {
 | 
			
		||||
    display: block;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Add the correct display in all browsers.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
summary {
 | 
			
		||||
    display: list-item;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Misc
 | 
			
		||||
   ========================================================================== */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add the correct display in IE 10+.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
template {
 | 
			
		||||
    display: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add the correct display in IE 10.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
[hidden] {
 | 
			
		||||
    display: none;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										252
									
								
								css/roles.css
									
										
									
									
									
								
							
							
						
						
									
										252
									
								
								css/roles.css
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,252 +0,0 @@
 | 
			
		|||
.square .token.baron:before {
 | 
			
		||||
  background-image: url("../img/icon-baron.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.baron:after {
 | 
			
		||||
  content: "Baron";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.baron:before {
 | 
			
		||||
  background-image: url("../img/icon-baron.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.butler:before {
 | 
			
		||||
  background-image: url("../img/icon-butler.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.butler:after {
 | 
			
		||||
  content: "Butler";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.butler:before {
 | 
			
		||||
  background-image: url("../img/icon-butler.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.chef:before {
 | 
			
		||||
  background-image: url("../img/icon-chef.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.chef:after {
 | 
			
		||||
  content: "Chef";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.chef:before {
 | 
			
		||||
  background-image: url("../img/icon-chef.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.drunk:before {
 | 
			
		||||
  background-image: url("../img/icon-drunk.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.drunk:after {
 | 
			
		||||
  content: "Drunk";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.drunk:before {
 | 
			
		||||
  background-image: url("../img/icon-drunk.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.empath:before {
 | 
			
		||||
  background-image: url("../img/icon-empath.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.empath:after {
 | 
			
		||||
  content: "Empath";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.empath:before {
 | 
			
		||||
  background-image: url("../img/icon-empath.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.fortuneteller:before {
 | 
			
		||||
  background-image: url("../img/icon-fortuneteller.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.fortuneteller:after {
 | 
			
		||||
  content: "Fortune Teller";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.fortuneteller:before {
 | 
			
		||||
  background-image: url("../img/icon-fortuneteller.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.imp:before {
 | 
			
		||||
  background-image: url("../img/icon-imp.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.imp:after {
 | 
			
		||||
  content: "Imp";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.imp:before {
 | 
			
		||||
  background-image: url("../img/icon-imp.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.investigator:before {
 | 
			
		||||
  background-image: url("../img/icon-investigator.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.investigator:after {
 | 
			
		||||
  content: "Investigator";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.investigator:before {
 | 
			
		||||
  background-image: url("../img/icon-investigator.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.librarian:before {
 | 
			
		||||
  background-image: url("../img/icon-librarian.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.librarian:after {
 | 
			
		||||
  content: "Librarian";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.librarian:before {
 | 
			
		||||
  background-image: url("../img/icon-librarian.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.mayor:before {
 | 
			
		||||
  background-image: url("../img/icon-mayor.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.mayor:after {
 | 
			
		||||
  content: "Mayor";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.mayor:before {
 | 
			
		||||
  background-image: url("../img/icon-mayor.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.monk:before {
 | 
			
		||||
  background-image: url("../img/icon-monk.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.monk:after {
 | 
			
		||||
  content: "Monk";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.monk:before {
 | 
			
		||||
  background-image: url("../img/icon-monk.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.poisoner:before {
 | 
			
		||||
  background-image: url("../img/icon-poisoner.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.poisoner:after {
 | 
			
		||||
  content: "Poisoner";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.poisoner:before {
 | 
			
		||||
  background-image: url("../img/icon-poisoner.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.recluse:before {
 | 
			
		||||
  background-image: url("../img/icon-recluse.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.recluse:after {
 | 
			
		||||
  content: "Recluse";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.recluse:before {
 | 
			
		||||
  background-image: url("../img/icon-recluse.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.ravenkeeper {
 | 
			
		||||
  font-size: 80%;
 | 
			
		||||
}
 | 
			
		||||
.square .token.ravenkeeper:before {
 | 
			
		||||
  background-image: url("../img/icon-ravenkeeper.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.ravenkeeper:after {
 | 
			
		||||
  content: "Ravenkeeper";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.ravenkeeper:before {
 | 
			
		||||
  background-image: url("../img/icon-ravenkeeper.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.saint:before {
 | 
			
		||||
  background-image: url("../img/icon-saint.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.saint:after {
 | 
			
		||||
  content: "Saint";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.saint:before {
 | 
			
		||||
  background-image: url("../img/icon-saint.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.slayer:before {
 | 
			
		||||
  background-image: url("../img/icon-slayer.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.slayer:after {
 | 
			
		||||
  content: "Slayer";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.slayer:before {
 | 
			
		||||
  background-image: url("../img/icon-slayer.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.soldier:before {
 | 
			
		||||
  background-image: url("../img/icon-soldier.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.soldier:after {
 | 
			
		||||
  content: "Soldier";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.soldier:before {
 | 
			
		||||
  background-image: url("../img/icon-soldier.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.spy:before {
 | 
			
		||||
  background-image: url("../img/icon-spy.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.spy:after {
 | 
			
		||||
  content: "Spy";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.spy:before {
 | 
			
		||||
  background-image: url("../img/icon-spy.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.scarletwoman:before {
 | 
			
		||||
  background-image: url("../img/icon-scarletwoman.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.scarletwoman:after {
 | 
			
		||||
  content: "Scarlet Woman";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.scarletwoman:before {
 | 
			
		||||
  background-image: url("../img/icon-scarletwoman.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.undertaker {
 | 
			
		||||
  font-size: 85%;
 | 
			
		||||
}
 | 
			
		||||
.square .token.undertaker:before {
 | 
			
		||||
  background-image: url("../img/icon-undertaker.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.undertaker:after {
 | 
			
		||||
  content: "Undertaker";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.undertaker:before {
 | 
			
		||||
  background-image: url("../img/icon-undertaker.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.virgin:before {
 | 
			
		||||
  background-image: url("../img/icon-virgin.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.virgin:after {
 | 
			
		||||
  content: "Virgin";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.virgin:before {
 | 
			
		||||
  background-image: url("../img/icon-virgin.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .token.washerwoman {
 | 
			
		||||
  font-size: 75%;
 | 
			
		||||
}
 | 
			
		||||
.square .token.washerwoman:before {
 | 
			
		||||
  background-image: url("../img/icon-washerwoman.png");
 | 
			
		||||
}
 | 
			
		||||
.square .token.washerwoman:after {
 | 
			
		||||
  content: "Washerwoman";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.square .reminder.washerwoman:before {
 | 
			
		||||
  background-image: url("../img/icon-washerwoman.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*# sourceMappingURL=roles.css.map */
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
{"version":3,"sourceRoot":"","sources":["roles.scss"],"names":[],"mappings":"AA0BI;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAXF;EAOE,WA/BF;;AAyBE;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAXF;EAOE,WA/BF;;AAyBE;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAVA;EACE;;AAEF;EACE;;;AAKJ;EACE;;;AAXF;EAOE,WA/BF;;AAyBE;EACE;;AAEF;EACE;;;AAKJ;EACE","file":"roles.css"}
 | 
			
		||||
							
								
								
									
										141
									
								
								index.html
									
										
									
									
									
								
							
							
						
						
									
										141
									
								
								index.html
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,141 +0,0 @@
 | 
			
		|||
<!doctype html>
 | 
			
		||||
<html class="no-js" lang="en">
 | 
			
		||||
 | 
			
		||||
<head>
 | 
			
		||||
  <meta charset="utf-8">
 | 
			
		||||
  <title>Blood on the Clocktower Town Square</title>
 | 
			
		||||
  <meta name="description" content="Virtual Blood on the Clocktower Town Square">
 | 
			
		||||
  <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
			
		||||
 | 
			
		||||
<!--  <link rel="manifest" href="site.webmanifest">-->
 | 
			
		||||
<!--  <link rel="apple-touch-icon" href="icon.png">-->
 | 
			
		||||
  <!-- Place favicon.ico in the root directory -->
 | 
			
		||||
 | 
			
		||||
  <link href="https://fonts.googleapis.com/css?family=Roboto+Condensed&display=swap" rel="stylesheet">
 | 
			
		||||
  <link rel="stylesheet" href="css/normalize.css">
 | 
			
		||||
  <link rel="stylesheet" href="css/main.css">
 | 
			
		||||
  <link rel="stylesheet" href="css/circle.css">
 | 
			
		||||
  <link rel="stylesheet" href="css/roles.css">
 | 
			
		||||
 | 
			
		||||
  <meta name="theme-color" content="#000000">
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
<!--[if IE]>
 | 
			
		||||
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience and security.</p>
 | 
			
		||||
<![endif]-->
 | 
			
		||||
 | 
			
		||||
<div class="square" id="townsquare" v-bind:class="{ public: isPublic }">
 | 
			
		||||
  <ul class="circle size-12">
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token spy">
 | 
			
		||||
          <span class="leaf-left"></span>
 | 
			
		||||
          <span class="leaf-right"></span>
 | 
			
		||||
          <span class="leaf-top1"></span>
 | 
			
		||||
          <span class="leaf-orange"></span>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="name">Steffen</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder drunk">Drunk</div>
 | 
			
		||||
      <div class="reminder add"></div>
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token baron"></div>
 | 
			
		||||
        <div class="name">Steffen</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder add"></div>
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token chef"></div>
 | 
			
		||||
        <div class="name">Steffen</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder drunk">Drunk</div>
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player dead">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token empath"></div>
 | 
			
		||||
        <div class="name">Tot</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder drunk">Drunk</div>
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token imp"></div>
 | 
			
		||||
        <div class="name">Steffen</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder drunk">Drunk</div>
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player traveller">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token mayor"></div>
 | 
			
		||||
        <div class="name">Traveller</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder drunk">Drunk</div>
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player traveller dead">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token recluse"></div>
 | 
			
		||||
        <div class="name">Toter Traveller</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder drunk">Drunk</div>
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token butler"></div>
 | 
			
		||||
        <div class="name">Steffen</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder drunk">Drunk</div>
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player dead no-vote">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token virgin"></div>
 | 
			
		||||
        <div class="name">Keine Stimme</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder drunk">Drunk</div>
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token ravenkeeper"></div>
 | 
			
		||||
        <div class="name">Steffen</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder fortuneteller">Red Herring</div>
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token washerwoman"></div>
 | 
			
		||||
        <div class="name">Steffen</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder drunk">Drunk</div>
 | 
			
		||||
    </li>
 | 
			
		||||
    <li>
 | 
			
		||||
      <div class="player">
 | 
			
		||||
        <div class="shroud"></div>
 | 
			
		||||
        <div class="token undertaker"></div>
 | 
			
		||||
        <div class="name">Steffen</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="reminder imp">Dies</div>
 | 
			
		||||
    </li>
 | 
			
		||||
  </ul>
 | 
			
		||||
  <div class="controls">
 | 
			
		||||
    <button v-on:click="togglePublic">Toggle</button>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<script src="//cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 | 
			
		||||
<script src="js/main.js"></script>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										12
									
								
								js/main.js
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								js/main.js
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,12 +0,0 @@
 | 
			
		|||
const app = new Vue({
 | 
			
		||||
  el: '#townsquare',
 | 
			
		||||
  data: {
 | 
			
		||||
    isPublic: false
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    togglePublic: function () {
 | 
			
		||||
      console.log('click', this.isPublic);
 | 
			
		||||
      this.isPublic = !this.isPublic;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										306
									
								
								package-lock.json
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										306
									
								
								package-lock.json
									
										
									
										generated
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,306 @@
 | 
			
		|||
{
 | 
			
		||||
  "requires": true,
 | 
			
		||||
  "lockfileVersion": 1,
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "ajv": {
 | 
			
		||||
      "version": "6.12.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz",
 | 
			
		||||
      "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "fast-deep-equal": "^3.1.1",
 | 
			
		||||
        "fast-json-stable-stringify": "^2.0.0",
 | 
			
		||||
        "json-schema-traverse": "^0.4.1",
 | 
			
		||||
        "uri-js": "^4.2.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "ajv-keywords": {
 | 
			
		||||
      "version": "3.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "anymatch": {
 | 
			
		||||
      "version": "3.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "normalize-path": "^3.0.0",
 | 
			
		||||
        "picomatch": "^2.0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "big.js": {
 | 
			
		||||
      "version": "5.2.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
 | 
			
		||||
      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "binary-extensions": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "braces": {
 | 
			
		||||
      "version": "3.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "fill-range": "^7.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "chokidar": {
 | 
			
		||||
      "version": "3.3.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz",
 | 
			
		||||
      "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "anymatch": "~3.1.1",
 | 
			
		||||
        "braces": "~3.0.2",
 | 
			
		||||
        "fsevents": "~2.1.2",
 | 
			
		||||
        "glob-parent": "~5.1.0",
 | 
			
		||||
        "is-binary-path": "~2.1.0",
 | 
			
		||||
        "is-glob": "~4.0.1",
 | 
			
		||||
        "normalize-path": "~3.0.0",
 | 
			
		||||
        "readdirp": "~3.3.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "clone-deep": {
 | 
			
		||||
      "version": "4.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "is-plain-object": "^2.0.4",
 | 
			
		||||
        "kind-of": "^6.0.2",
 | 
			
		||||
        "shallow-clone": "^3.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "emojis-list": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "fast-deep-equal": {
 | 
			
		||||
      "version": "3.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "fast-json-stable-stringify": {
 | 
			
		||||
      "version": "2.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "fill-range": {
 | 
			
		||||
      "version": "7.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "to-regex-range": "^5.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "fsevents": {
 | 
			
		||||
      "version": "2.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "glob-parent": {
 | 
			
		||||
      "version": "5.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "is-glob": "^4.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "is-binary-path": {
 | 
			
		||||
      "version": "2.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "binary-extensions": "^2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "is-extglob": {
 | 
			
		||||
      "version": "2.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
 | 
			
		||||
      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "is-glob": {
 | 
			
		||||
      "version": "4.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "is-extglob": "^2.1.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "is-number": {
 | 
			
		||||
      "version": "7.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "is-plain-object": {
 | 
			
		||||
      "version": "2.0.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
 | 
			
		||||
      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "isobject": "^3.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "isobject": {
 | 
			
		||||
      "version": "3.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
 | 
			
		||||
      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "json-schema-traverse": {
 | 
			
		||||
      "version": "0.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "json5": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "minimist": "^1.2.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "kind-of": {
 | 
			
		||||
      "version": "6.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "loader-utils": {
 | 
			
		||||
      "version": "1.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
 | 
			
		||||
      "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "big.js": "^5.2.2",
 | 
			
		||||
        "emojis-list": "^3.0.0",
 | 
			
		||||
        "json5": "^1.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "minimist": {
 | 
			
		||||
      "version": "1.2.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
 | 
			
		||||
      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "neo-async": {
 | 
			
		||||
      "version": "2.6.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
 | 
			
		||||
      "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "normalize-path": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "picomatch": {
 | 
			
		||||
      "version": "2.2.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
 | 
			
		||||
      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "punycode": {
 | 
			
		||||
      "version": "2.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "readdirp": {
 | 
			
		||||
      "version": "3.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "picomatch": "^2.0.7"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "sass": {
 | 
			
		||||
      "version": "1.26.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.3.tgz",
 | 
			
		||||
      "integrity": "sha512-5NMHI1+YFYw4sN3yfKjpLuV9B5l7MqQ6FlkTcC4FT+oHbBRUZoSjHrrt/mE0nFXJyY2kQtU9ou9HxvFVjLFuuw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "chokidar": ">=2.0.0 <4.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "sass-loader": {
 | 
			
		||||
      "version": "8.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "clone-deep": "^4.0.1",
 | 
			
		||||
        "loader-utils": "^1.2.3",
 | 
			
		||||
        "neo-async": "^2.6.1",
 | 
			
		||||
        "schema-utils": "^2.6.1",
 | 
			
		||||
        "semver": "^6.3.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "schema-utils": {
 | 
			
		||||
      "version": "2.6.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
 | 
			
		||||
      "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "ajv": "^6.12.0",
 | 
			
		||||
        "ajv-keywords": "^3.4.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "semver": {
 | 
			
		||||
      "version": "6.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "shallow-clone": {
 | 
			
		||||
      "version": "3.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "kind-of": "^6.0.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "to-regex-range": {
 | 
			
		||||
      "version": "5.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "is-number": "^7.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "uri-js": {
 | 
			
		||||
      "version": "4.2.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
 | 
			
		||||
      "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "punycode": "^2.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										88
									
								
								roles.json
									
										
									
									
									
								
							
							
						
						
									
										88
									
								
								roles.json
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -3,8 +3,8 @@
 | 
			
		|||
    "name": "washerwoman",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": true,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": true,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": ["Townsfolk", "Decoy"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "You start knowing 1 of 2 players is a particular Townsfolk."
 | 
			
		||||
| 
						 | 
				
			
			@ -13,8 +13,8 @@
 | 
			
		|||
    "name": "librarian",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": true,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": true,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": ["Outsider", "Decoy"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "You start knowing that 1 of 2 players is a particular Outsider. (Or that zero are in play)"
 | 
			
		||||
| 
						 | 
				
			
			@ -23,8 +23,8 @@
 | 
			
		|||
    "name": "investigator",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": true,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": true,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": ["Minion", "Decoy"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "You start knowing 1 of 2 players is a particular Minion."
 | 
			
		||||
| 
						 | 
				
			
			@ -33,8 +33,8 @@
 | 
			
		|||
    "name": "chef",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": true,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": true,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": [],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "You start knowing how many pairs of evil players there are."
 | 
			
		||||
| 
						 | 
				
			
			@ -43,8 +43,8 @@
 | 
			
		|||
    "name": "empath",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": true,
 | 
			
		||||
    "other-night": true,
 | 
			
		||||
    "firstNight": true,
 | 
			
		||||
    "otherNight": true,
 | 
			
		||||
    "reminders": [],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "Each night, you learn how many of your 2 alive neighbours are evil."
 | 
			
		||||
| 
						 | 
				
			
			@ -53,8 +53,8 @@
 | 
			
		|||
    "name": "fortuneteller",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": true,
 | 
			
		||||
    "other-night": true,
 | 
			
		||||
    "firstNight": true,
 | 
			
		||||
    "otherNight": true,
 | 
			
		||||
    "reminders": ["Decoy"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "Each night, choose 2 players: you learn if either is a Demon. There is 1 good player that registers falsely to you."
 | 
			
		||||
| 
						 | 
				
			
			@ -63,8 +63,8 @@
 | 
			
		|||
    "name": "undertaker",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": true,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": true,
 | 
			
		||||
    "reminders": ["Executed"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "Each night*, you learn which character died by execution today."
 | 
			
		||||
| 
						 | 
				
			
			@ -73,8 +73,8 @@
 | 
			
		|||
    "name": "monk",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": true,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": true,
 | 
			
		||||
    "reminders": ["Protected"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "Each night*, choose a player (not yourself): they are safe from the Demon tonight."
 | 
			
		||||
| 
						 | 
				
			
			@ -83,8 +83,8 @@
 | 
			
		|||
    "name": "ravenkeeper",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": true,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": true,
 | 
			
		||||
    "reminders": [],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "If you die at night, you are woken to choose a player: you learn their character."
 | 
			
		||||
| 
						 | 
				
			
			@ -93,8 +93,8 @@
 | 
			
		|||
    "name": "mayor",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": [],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "If only 3 players live & no execution occurs, your team wins. If you die at night, another player might die instead."
 | 
			
		||||
| 
						 | 
				
			
			@ -103,8 +103,8 @@
 | 
			
		|||
    "name": "slayer",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": ["Used"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "Once per game, during the day, publicly choose a player: if they are the Demon, they die."
 | 
			
		||||
| 
						 | 
				
			
			@ -113,8 +113,8 @@
 | 
			
		|||
    "name": "soldier",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": [],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "You are safe from the Demon."
 | 
			
		||||
| 
						 | 
				
			
			@ -123,8 +123,8 @@
 | 
			
		|||
    "name": "virgin",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "townsfolk",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": ["Used"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "The first time you are nominated, if the nominator is a Townsfolk, they are executed immediately."
 | 
			
		||||
| 
						 | 
				
			
			@ -133,8 +133,8 @@
 | 
			
		|||
    "name": "butler",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "outsider",
 | 
			
		||||
    "first-night": true,
 | 
			
		||||
    "other-night": true,
 | 
			
		||||
    "firstNight": true,
 | 
			
		||||
    "otherNight": true,
 | 
			
		||||
    "reminders": ["Master"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "Each night, choose a player (not yourself): tomorrow, you may only vote if they are voting too."
 | 
			
		||||
| 
						 | 
				
			
			@ -143,8 +143,8 @@
 | 
			
		|||
    "name": "drunk",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "outsider",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": ["Drunk"],
 | 
			
		||||
    "setup": true,
 | 
			
		||||
    "ability": "You do not know you are the Drunk. You think you are a Townsfolk, but your ability malfunctions."
 | 
			
		||||
| 
						 | 
				
			
			@ -153,8 +153,8 @@
 | 
			
		|||
    "name": "recluse",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "outsider",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": [],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "You might register as evil and as a Minion or Demon, even if dead."
 | 
			
		||||
| 
						 | 
				
			
			@ -163,8 +163,8 @@
 | 
			
		|||
    "name": "saint",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "outsider",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": [],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "If you die by execution, your team loses."
 | 
			
		||||
| 
						 | 
				
			
			@ -173,8 +173,8 @@
 | 
			
		|||
    "name": "baron",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "minion",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": false,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": false,
 | 
			
		||||
    "reminders": [],
 | 
			
		||||
    "setup": true,
 | 
			
		||||
    "ability": "There are extra Outsiders in play. [+2 Outsiders]"
 | 
			
		||||
| 
						 | 
				
			
			@ -183,8 +183,8 @@
 | 
			
		|||
    "name": "poisoner",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "minion",
 | 
			
		||||
    "first-night": true,
 | 
			
		||||
    "other-night": true,
 | 
			
		||||
    "firstNight": true,
 | 
			
		||||
    "otherNight": true,
 | 
			
		||||
    "reminders": ["Poisoned"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "Each night, choose a player: their ability malfunctions tonight and tomorrow day."
 | 
			
		||||
| 
						 | 
				
			
			@ -193,8 +193,8 @@
 | 
			
		|||
    "name": "spy",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "minion",
 | 
			
		||||
    "first-night": true,
 | 
			
		||||
    "other-night": true,
 | 
			
		||||
    "firstNight": true,
 | 
			
		||||
    "otherNight": true,
 | 
			
		||||
    "reminders": [],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "Each night, you see the Grimoire. You might register as good and as a Townsfolk or Outsider, even if dead."
 | 
			
		||||
| 
						 | 
				
			
			@ -203,8 +203,8 @@
 | 
			
		|||
    "name": "scarletwoman",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "minion",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": true,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": true,
 | 
			
		||||
    "reminders": ["Demon"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "If there are 5 or more players alive (Travellers don't count) and the Demon dies, you become the Demon."
 | 
			
		||||
| 
						 | 
				
			
			@ -213,8 +213,8 @@
 | 
			
		|||
    "name": "imp",
 | 
			
		||||
    "set": "TB",
 | 
			
		||||
    "team": "demon",
 | 
			
		||||
    "first-night": false,
 | 
			
		||||
    "other-night": true,
 | 
			
		||||
    "firstNight": false,
 | 
			
		||||
    "otherNight": true,
 | 
			
		||||
    "reminders": ["Die"],
 | 
			
		||||
    "setup": false,
 | 
			
		||||
    "ability": "Each night*, choose a player: they die. If you kill yourself this way, a Minion becomes the Imp."
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,13 +17,13 @@ $roles:
 | 
			
		|||
  'slayer' 'Slayer',
 | 
			
		||||
  'soldier' 'Soldier',
 | 
			
		||||
  'spy' 'Spy',
 | 
			
		||||
  'scarletwoman' 'Scarlet Woman',
 | 
			
		||||
  'scarletwoman' 'Scarlet Woman' 80%,
 | 
			
		||||
  'undertaker' 'Undertaker' 85%,
 | 
			
		||||
  'virgin' 'Virgin',
 | 
			
		||||
  'washerwoman' 'Washerwoman' 75%;
 | 
			
		||||
 | 
			
		||||
@each $img, $name, $fontsize in $roles {
 | 
			
		||||
  .square .token.#{$img} {
 | 
			
		||||
  .token.#{$img} {
 | 
			
		||||
    &:before {
 | 
			
		||||
      background-image: url('../img/icon-#{$img}.png');
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ $roles:
 | 
			
		|||
    font-size: $fontsize;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .square .reminder.#{$img}:before {
 | 
			
		||||
  .reminder.#{$img}:before {
 | 
			
		||||
    background-image: url('../img/icon-#{$img}.png');
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue