body {
  background: #f2f2f2;
  font-family: "Questrial", sans-serif;
}

aside.context {
  text-align: center;
  color: #333;
  line-height: 1.7;
}
aside.context a {
  text-decoration: none;
  color: #333;
  padding: 3px 0;
  border-bottom: 1px dashed;
}
aside.context a:hover {
  border-bottom: 1px solid;
}
aside.context .explanation {
  max-width: 700px;
  margin: 4em auto 0;
}

footer {
  text-align: center;
  margin: 4em auto;
  width: 100%;
}
footer a {
  text-decoration: none;
  display: inline-block;
  width: 45px;
  height: 45px;
  border-radius: 50%;
  background: transparent;
  border: 1px dashed #333;
  color: #333;
  margin: 5px;
}
footer a:hover {
  background: rgba(255, 255, 255, 0.1);
}
footer a .icons {
  margin-top: 12px;
  display: inline-block;
  font-size: 20px;
}

.main-content {
  margin: 4em auto 0;
  width: 740px;
  text-transform: uppercase;
}

.ticket {
  display: grid;
  grid-template-columns: auto 143px;
  background: #f3f1c9;
  border-radius: 10px;
  border: 2px solid #222;
  cursor: default;
}
.ticket__main {
  display: grid;
  grid-template-columns: repeat(6, 1fr) 120px;
  grid-template-rows: repeat(4, min-content) auto;
  padding: 10px;
}

.header {
  grid-area: title;
  grid-column: span 7;
  grid-row: 1;
  font: 900 38px "Montserrat", sans-serif;
  padding: 5px 0 5px 20px;
  letter-spacing: 6px;
  background: #111;
  color: #f3f1c9;
}

.info {
  border: 3px solid;
  border-width: 0 3px 3px 0;
  padding: 8px;
}
.info__item {
  font: 400 13px "Questrial", sans-serif;
  letter-spacing: 0.5px;
}
.info__detail {
  font: 700 20px/1 "Jura";
  letter-spacing: 1px;
  margin: 4px 0;
}

.passenger {
  grid-column: 1/span 6;
}

.platform {
  grid-column: 7/span 1;
  grid-row: 2/span 3;
  background: #c02a28;
  color: #fff;
  border-color: #000;
  text-align: center;
  padding: 10px 0;
}
.platform span {
  display: block;
}
.platform span:nth-child(1) {
  font: 900 22px/1 "Montserrat";
  letter-spacing: 1.5px;
}
.platform span:nth-child(2) {
  font: 900 29px/1 "Montserrat";
  letter-spacing: 3px;
}
.platform span:nth-child(3) {
  font: 900 16px/1.2 "Montserrat";
  letter-spacing: 0.5px;
}
.platform .number {
  display: flex;
  margin-top: 12px;
  position: relative;
}
.platform .number div:nth-child(1) {
  position: absolute;
  left: 16px;
  font: 900 90px/1 "Old Standard TT";
}
.platform .number span {
  font: 900 36px/1 "Old Standard TT";
  position: absolute;
  right: 18px;
}
.platform .number span:nth-child(1) {
  top: -2px;
  border-bottom: 2px solid;
  padding: 0 2px;
}
.platform .number span:nth-child(2) {
  top: 44px;
}

.departure, .arrival {
  grid-column-start: span 3;
}

.passenger, .departure, .date {
  border-left: 3px solid;
}

.date, .time {
  grid-column-start: span 2;
}

.fineprint {
  grid-column-start: span 5;
  font-size: 14px;
  font-family: "Inconsolata";
  line-height: 1;
  margin-top: 10px;
  padding-right: 5px;
}
.fineprint p:nth-child(2) {
  margin: 4px 4px 0 0;
  padding-top: 4px;
  border-top: 1.5px dotted;
  font: 11px/1 "Inconsolata";
}

.snack {
  grid-column: 6/span 1;
  width: 65px;
  margin: 10px 10px 0 0;
  position: relative;
  background: #000;
  padding: 6px 0 2px;
  text-align: center;
  border-radius: 5px;
}
.snack svg {
  fill: #f3f1c9;
  width: 36px;
}
.snack__name {
  color: #f3f1c9;
  font-size: 12px;
}

.barcode {
  grid-column-start: span 1;
  display: grid;
  margin: 10px 0 0;
  grid-template-rows: 1fr min-content;
}
.barcode__scan {
  background: linear-gradient(to right, #333 2%, #333 4%, transparent 4%, transparent 5%, #333 5%, #333 6%, transparent 6%, #333 6%, #333 8%, transparent 8%, transparent 9%, #333 9%, #333 10.5%, transparent 10.5%, transparent 11%, #333 11%, #333 12%, transparent 12%, transparent 13.5%, #333 13.5%, #333 15%, #333 17%, transparent 17%, transparent 19%, #333 19%, #333 20%, transparent 20%, transparent 21%, #333 21%, #333 22%, transparent 22%, transparent 23.5%, #333 23.5%, #333 25%, transparent 25%, transparent 26.5%, #333 26.5%, #333 27.5%, transparent 27.5%, transparent 28.5%, #333 28.5%, #333 30%, transparent 30%, transparent 32%, #333 32%, #333 34%, #333 36%, transparent 36%, transparent 37.5%, #333 37.5%, #333 40%, transparent 40%, transparent 41.5%, #333 41.5%, #333 43%, transparent 43%, transparent 46%, #333 46%, #333 48%, transparent 48%, transparent 49%, #333 49%, transparent 49%, transparent 50%, #333 50%, #333 51%, transparent 51%, transparent 53%, #333 53%, #333 54.5%, transparent 54.5%, transparent 56%, #333 56%, #333 58%, transparent 58%, transparent 59%, #333 59%, #333 60%, #333 62.5%, transparent 62.5%, transparent 64%, #333 64%, #333 64%, #333 67%, transparent 67%, transparent 69%, #333 69%, #333 70%, transparent 70%, transparent 71%, #333 71%, #333 72%, transparent 72%, transparent 73.5%, #333 73.5%, #333 76%, transparent 76%, transparent 79%, #333 79%, #333 80%, transparent 80%, transparent 82%, #333 82%, #333 82.5%, transparent 82.5%, transparent 84%, #333 84%, #333 87%, transparent 87%, transparent 89%, #333 89%, #333 91%, transparent 91%, transparent 92%, #333 92%, #333 95%, transparent 95%);
}
.barcode__id {
  letter-spacing: 4px;
  padding: 2px 0 0;
  color: #c02a28;
  font: 700 16px/1 "Jura";
}

.ticket__side {
  background: rgba(192, 42, 40, 0.2);
  box-sizing: border-box;
  border-left: 1.5px dashed #111;
  display: grid;
  grid-template-rows: repeat(2, 124px) 60px;
  grid-template-columns: 40px repeat(2, 45px);
  border-radius: 0 10px 10px 0;
}
.ticket__side .logo {
  text-align: center;
  background: #c02a28;
  padding: 10px 5px 10px 0px;
  margin: 10px 0 0 10px;
  font: 900 16px/1 "Montserrat";
  letter-spacing: 1.5px;
  grid-column: 1/span 1;
  grid-row: 1/span 2;
  position: relative;
  color: #fff;
  writing-mode: vertical-rl;
}
.ticket__side .logo p {
  transform: rotate(180deg);
}
.ticket__side .info {
  border: 3px solid #c02a28;
  border-width: 3px 3px 0;
  grid-column-start: 2;
  writing-mode: vertical-rl;
  transform: rotate(180deg);
}
.ticket__side .info.side-arrive {
  margin-top: 10px;
  border-width: 3px;
}
.ticket__side .info.side-date {
  grid-column-start: 3;
  border-right: none;
}
.ticket__side .info.side-time {
  grid-column: 3/span 1;
  grid-row: 1;
  margin-top: 10px;
  border-width: 3px 0 3px 3px;
}
.ticket__side .info__item {
  font-size: 11px;
  color: #c02a28;
}
.ticket__side .info__detail {
  font-size: 12px;
  margin: 0 2px 0 0;
  letter-spacing: 0px;
}
.ticket__side .barcode {
  grid-template-rows: 30px min-content;
  grid-row-start: 3;
  grid-column: 1/span 3;
  margin: 9px 0 0 10px;
  text-align: center;
}