@charset "UTF-8";
/* ==========================================================================
	Variables
	========================================================================== */
/*  Colors
	-----------------------------*/
/* ==========================================================================
	Fonts
	========================================================================== */
/* ==========================================================================
	Project Specific Mixins
	========================================================================== */
/* ==========================================================================
   HTML5 display definitions
   ========================================================================== */
/*
 * Corrects `block` display not defined in IE 6/7/8/9 and Firefox 3.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
  display: block;
}

/*
 * Corrects `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
 */
audio,
canvas,
video {
  display: inline-block;
  *display: inline;
  *zoom: 1;
}

/*
 * Prevents modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */
audio:not([controls]) {
  display: none;
  height: 0;
}

/*
 * Addresses styling for `hidden` attribute not present in IE 7/8/9, Firefox 3,
 * and Safari 4.
 * Known issue: no IE 6 support.
 */
[hidden] {
  display: none !important;
}

/* ==========================================================================
   Base
   ========================================================================== */
/*
 * 1. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using
 *    `em` units.
 * 2. Prevents iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */
html {
  font-size: 100%;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
  -ms-text-size-adjust: 100%;
  /* 2 */
}

/*
 * Addresses `font-family` inconsistency between `textarea` and other form
 * elements.
 */
html,
button,
input,
select,
textarea {
  font-family: sans-serif;
}

/*
 * Addresses margins handled incorrectly in IE 6/7.
 */
body {
  margin: 0;
}

/* ==========================================================================
   Links
   ========================================================================== */
/*
 * Addresses `outline` inconsistency between Chrome and other browsers.
 */
a:focus {
  outline: thin dotted;
}

/*
 * Improves readability when focused and also mouse hovered in all browsers.
 */
a:active,
a:hover {
  outline: 0;
}

/* ==========================================================================
   Typography
   ========================================================================== */
/*
 * Addresses font sizes and margins set differently in IE 6/7.
 * Addresses font sizes within `section` and `article` in Firefox 4+, Safari 5,
 * and Chrome.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

h2 {
  font-size: 1.5em;
  margin: 0.83em 0;
}

h3 {
  font-size: 1.17em;
  margin: 1em 0;
}

h4 {
  font-size: 1em;
  margin: 1.33em 0;
}

h5, h6 {
  font-size: 0.83em;
  margin: 1.67em 0;
}

h6 {
  font-size: 0.75em;
  margin: 2.33em 0;
}

/*
 * Addresses styling not present in IE 7/8/9, Safari 5, and Chrome.
 */
abbr[title] {
  border-bottom: 1px dotted;
}

/*
 * Addresses style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
 */
b,
strong {
  font-weight: bold;
}

blockquote {
  margin: 1em 40px;
}

/*
 * Addresses styling not present in Safari 5 and Chrome.
 */
dfn {
  font-style: italic;
}

/*
 * Addresses styling not present in IE 6/7/8/9.
 */
mark {
  background: #ff0;
  color: #000;
}

/*
 * Addresses margins set differently in IE 6/7.
 */
p,
pre {
  margin: 1em 0;
}

/*
 * Corrects font family set oddly in IE 6, Safari 4/5, and Chrome.
 */
code,
kbd,
pre,
samp {
  font-family: monospace, serif;
  _font-family: "courier new", monospace;
  font-size: 1em;
}

/*
 * Improves readability of pre-formatted text in all browsers.
 */
pre {
  white-space: pre;
  white-space: pre-wrap;
  word-wrap: break-word;
}

/*
 * Addresses CSS quotes not supported in IE 6/7.
 */
q {
  quotes: none;
}

/*
 * Addresses `quotes` property not supported in Safari 4.
 */
q:before,
q:after {
  content: "";
  content: none;
}

/*
 * Addresses inconsistent and variable font size in all browsers.
 */
small {
  font-size: 80%;
}

/*
 * Prevents `sub` and `sup` affecting `line-height` in all browsers.
 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

/* ==========================================================================
   Lists
   ========================================================================== */
/*
 * Addresses margins set differently in IE 6/7.
 */
dl,
menu,
ol,
ul {
  margin: 1em 0;
}

dd {
  margin: 0 0 0 40px;
}

/*
 * Addresses paddings set differently in IE 6/7.
 */
menu,
ol,
ul {
  padding: 0 0 0 40px;
}

/*
 * Corrects list images handled incorrectly in IE 7.
 */
nav ul,
nav ol {
  list-style: none;
  list-style-image: none;
}

/* ==========================================================================
   Embedded content
   ========================================================================== */
/*
 * 1. Removes border when inside `a` element in IE 6/7/8/9 and Firefox 3.
 * 2. Improves image quality when scaled in IE 7.
 */
img {
  border: 0;
  /* 1 */
  -ms-interpolation-mode: bicubic;
  /* 2 */
}

/*
 * Corrects overflow displayed oddly in IE 9.
 */
svg:not(:root) {
  overflow: hidden;
}

/* ==========================================================================
   Figures
   ========================================================================== */
/*
 * Addresses margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
 */
figure {
  margin: 0;
}

/* ==========================================================================
   Forms
   ========================================================================== */
/*
 * Corrects margin displayed oddly in IE 6/7.
 */
form {
  margin: 0;
}

/*
 * Define consistent border, margin, and padding.
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

/*
 * 1. Corrects color not being inherited in IE 6/7/8/9.
 * 2. Corrects text not wrapping in Firefox 3.
 * 3. Corrects alignment displayed oddly in IE 6/7.
 */
legend {
  border: 0;
  /* 1 */
  padding: 0;
  white-space: normal;
  /* 2 */
  *margin-left: -7px;
  /* 3 */
}

/*
 * 1. Corrects font size not being inherited in all browsers.
 * 2. Addresses margins set differently in IE 6/7, Firefox 3+, Safari 5,
 *    and Chrome.
 * 3. Improves appearance and consistency in all browsers.
 */
button,
input,
select,
textarea {
  font-size: 100%;
  /* 1 */
  margin: 0;
  /* 2 */
  vertical-align: baseline;
  /* 3 */
  *vertical-align: middle;
  /* 3 */
}

/*
 * Addresses Firefox 3+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */
button,
input {
  line-height: normal;
}

/*
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Corrects inability to style clickable `input` types in iOS.
 * 3. Improves usability and consistency of cursor style between image-type
 *    `input` and others.
 * 4. Removes inner spacing in IE 7 without affecting normal text inputs.
 *    Known issue: inner spacing remains in IE 6.
 */
button,
html input[type=button],
input[type=reset],
input[type=submit] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */
  *overflow: visible;
  /* 4 */
}

/*
 * Re-set default cursor for disabled elements.
 */
button[disabled],
input[disabled] {
  cursor: default;
}

/*
 * 1. Addresses box sizing set to content-box in IE 8/9.
 * 2. Removes excess padding in IE 8/9.
 * 3. Removes excess padding in IE 7.
 *    Known issue: excess padding remains in IE 6.
 */
input[type=checkbox],
input[type=radio] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */
  *height: 13px;
  /* 3 */
  *width: 13px;
  /* 3 */
}

/*
 * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome.
 * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome
 *    (include `-moz` to future-proof).
 */
input[type=search] {
  -webkit-appearance: textfield;
  /* 1 */
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box;
  /* 2 */
  box-sizing: content-box;
}

/*
 * Removes inner padding and search cancel button in Safari 5 and Chrome
 * on OS X.
 */
input[type=search]::-webkit-search-cancel-button,
input[type=search]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
 * Removes inner padding and border in Firefox 3+.
 */
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/*
 * 1. Removes default vertical scrollbar in IE 6/7/8/9.
 * 2. Improves readability and alignment in all browsers.
 */
textarea {
  overflow: auto;
  /* 1 */
  vertical-align: top;
  /* 2 */
}

/* ==========================================================================
   Tables
   ========================================================================== */
/*
 * Remove most spacing between table cells.
 */
table {
  border-collapse: collapse;
  border-spacing: 0;
}

/* ==========================================================================
   Helper classes
   ========================================================================== */
/*
 * Hide only visually, but have it available for screenreaders: h5bp.com/v
 */
.visuallyhidden, .social-link span,
.sr-only {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
}

/*
 * Extends the .visuallyhidden class to allow the element to be focusable
 * when navigated to via the keyboard: h5bp.com/p
 */
.visuallyhidden.focusable:active, .social-link span.focusable:active,
.visuallyhidden.focusable:focus,
.social-link span.focusable:focus {
  clip: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  position: static;
  width: auto;
}

/* ==========================================================================
	Base page styles
	========================================================================== */
* {
  box-sizing: border-box;
  font-kerning: normal;
}

::selection {
  background: #f4f4f4;
  color: #9B2020;
}

html,
body {
  padding: 0;
  margin: 0;
  height: 100%;
}

body {
  opacity: 1 !important;
  font-size: 1em;
  font-family: "montserrat-alternates", sans-serif;
  font-weight: 400;
  color: #737373;
  background-color: #f4f4f4;
  min-width: 300px;
}
.ltie9 body {
  min-width: 1000px;
}
@media screen and (max-width: 62em) {
  body {
    font-size: 0.9em;
  }
}
@media screen and (min-width: 69em) {
  body {
    font-size: 1.1em;
  }
}

button, button:focus, button:active {
  outline: none;
}

/* ==========================================================================
	Typography
	========================================================================== */
h1 {
  font-size: 2em;
  line-height: 1em;
  font-family: "montserrat-alternates", sans-serif;
  font-weight: 900;
  color: #404066;
}

h2,
legend {
  display: block;
  font-size: 1.8em;
  color: #414066;
}

h3 {
  font-size: 1.6em;
  color: #414066;
  margin: 0;
}

h4,
.title {
  font-size: 1.3em;
  color: #808080;
  font-weight: 700;
  margin-bottom: 0;
}

h5, h6 {
  font-size: 1.1em;
}

p {
  margin: 0 0 0.5em 0;
  line-height: 1.3;
}

strong {
  font-weight: 700;
}

a {
  color: #069;
  font-family: "montserrat-alternates", sans-serif;
}
a:hover {
  color: #004466;
}

ul {
  padding: 0;
  margin: 0;
  list-style: none;
}

.site-header {
  background: #9B2020;
  color: #fff;
}

/*---------------------------
Modals
----------------------------*/
@keyframes modal-blur {
  0%, 20% {
    filter: blur(0);
  }
  100% {
    filter: blur(3px);
  }
}
@keyframes rotate {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(359deg);
  }
}
@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes fade-from-zero {
  from {
    opacity: 0;
  }
}
@keyframes fade-to-1 {
  to {
    opacity: 1;
  }
}
@keyframes fade-right {
  from {
    transform: translateX(-1em);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}
@keyframes fade-left {
  from {
    transform: translateX(1em);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}
@keyframes fade-up {
  from {
    transform: translateY(1em);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}
@keyframes fade-down {
  from {
    transform: translateY(-1em);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}
.fade-out-down {
  animation: fade-up 400ms;
  animation-direction: reverse;
  opacity: 0;
}

@keyframes bodyLoadingBg {
  0%, 100% {
    background-color: #fcfcfc;
  }
  70% {
    background-color: #e7e7e7;
  }
}
body {
  transition: background-color 500ms;
}
body.loading {
  animation: bodyLoadingBg 2.5s infinite ease-in;
}

@keyframes loadingDot {
  0%, 10%, 100% {
    transform: scale3d(0.5, 0.5, 0.5);
    background: #414066;
  }
  45% {
    transform: scale3d(0.9, 0.9, 0.9);
    background: #0088cc;
  }
}
.loadingMessage::after, .loadingMessage::before, .loadingMessage .loadingDot {
  background: #414066;
  width: 15px;
  height: 15px;
  display: block;
  border-radius: 50%;
  animation: loadingDot 1200ms infinite ease-in;
  transform-origin: 50% 50%;
  top: 0;
  transform: scale3d(0.5, 0.5, 0.5);
}

.loadingMessage {
  position: relative;
  transform: scale3d(0.9, 0.9, 0.9);
  margin: auto;
  width: fit-content;
  display: flex;
  margin: 0 0 -15px;
}
.loading-enlarged .loadingMessage {
  margin: auto;
}
.loadingMessage .loadingDot {
  animation-delay: 200ms;
}
.loadingMessage::before {
  content: "";
  right: 16px;
}
.loadingMessage::after {
  content: "";
  left: 16px;
  animation-delay: 400ms;
}

svg .st0 {
  fill: #9b1e1e;
}
svg .st1 {
  fill: #404066;
}
svg .st2 {
  fill: #753875;
}

.loading-logo {
  padding: 1em;
  display: flex;
  align-items: center;
  flex-grow: 1;
  flex-direction: column;
  min-height: 100%;
}
.loading-logo .animate-logo {
  margin-top: auto;
  max-width: 80%;
  margin: auto;
  width: auto;
}
.loading-logo svg {
  height: 20vh;
  margin: auto;
  max-width: 100%;
  width: 100%;
  filter: drop-shadow(0 0 1em #fff) drop-shadow(0 0 1em #fff) drop-shadow(0 0 1em #fff);
}
.loading-logo svg:has(#FullLogo:not(.anim-to-corner)) {
  margin-left: 2%;
}
.loading-logo svg .st0 {
  fill: #9b1e1e;
}
.loading-logo svg .st1 {
  fill: #404066;
}
.loading-logo svg .st2 {
  fill: #753875;
}
.loading-logo #iconiain,
.loading-logo #dot2-icon,
.loading-logo #dot1-icon {
  visibility: hidden;
}
.loading-logo #IconLogo.anim-to-corner path {
  visibility: visible;
}
.loading-logo #slider {
  width: 420px;
  margin: 20px auto;
}
.loading-logo #icon-svg:not(.anim-to-corner) {
  display: none;
}
.loading-logo .anim-complete {
  margin: 0;
}

#move {
  display: none;
}

#iain {
  transform-origin: 50% 50%;
}

.btn-secondary,
.btn-icon, .btn {
  display: flex;
  align-items: center;
  gap: 2em;
  outline: none;
  background: rgba(255, 255, 255, 0);
  border-radius: 0.5em;
  text-transform: lowercase;
  position: relative;
  width: fit-content;
  font-size: 0.9rem;
  color: var(--color);
  border: 1px solid var(--color);
  padding: 0.8em 1.3em;
}
.btn-secondary:hover,
.btn-icon:hover, .btn:hover, .btn-secondary:focus,
.btn-icon:focus, .btn:focus {
  outline: 2px solid var(--color);
}
.btn-secondary:hover canvas,
.btn-icon:hover canvas, .btn:hover canvas, .btn-secondary:focus canvas,
.btn-icon:focus canvas, .btn:focus canvas {
  opacity: 1;
}
.btn-secondary:active,
.btn-icon:active, .btn:active {
  background: rgba(255, 255, 255, 0.1);
  outline: 2px solid var(--color);
}
@media (min-width: 40rem) {
  .btn-secondary,
  .btn-icon, .btn {
    font-size: 1rem;
  }
}

.btn-well {
  display: flex;
  align-items: center;
  padding-top: 1em;
  gap: 1em;
  justify-content: space-between;
}

.btn {
  --color: #414066;
}

.btn-secondary,
.btn-icon {
  --color: #9B2020;
}

fieldset {
  display: block;
  background: rgba(255, 255, 255, 0.6235294118);
  border: none;
  box-shadow: 0 0 1em 0.5em rgba(255, 255, 255, 0.6235294118);
  margin: 2em 0;
}

.form-error:not([hidden]) {
  -moz-animation: fade-in 1500ms;
  -webkit-animation: fade-in 1500ms;
  animation: fade-in 1500ms;
}

.form-complete {
  opacity: 0;
}

.form-complete h3 {
  font-size: 4em;
  margin-top: auto;
}

.form-complete p {
  margin-bottom: 0;
}

.form-complete:not([hidden]) {
  -moz-animation: show 600ms;
  -webkit-animation: show 600ms;
  animation: show 600ms;
  opacity: 1;
}

.form-complete:not([hidden]) > div {
  margin: auto;
}

.contact-form-wrapper:not([hidden]) {
  -moz-animation: fade-in 500ms;
  -webkit-animation: fade-in 500ms;
  animation: fade-in 500ms;
}

.contact-form-wrapper .content,
.form-wrapper .content {
  margin-top: 1em;
}

.error {
  background: #fff8f4;
  border: 1px solid color-mix(in srgb, #972200, transparent 60%);
  padding: 0.5em 0.6em 0.5em 0.6em;
}

.error {
  color: #972200;
  margin: 2em 0;
  border-radius: 3px;
}
.error p:last-of-type {
  margin-bottom: 0;
}

.contact-form-wrapper .content label,
.contact-form-wrapper .content input,
.contact-form-wrapper .content textarea,
.form-wrapper .content label,
.form-wrapper .content input,
.form-wrapper .content textarea {
  display: block;
  color: #414066;
}

.contact-form-wrapper .content input,
.contact-form-wrapper .content textarea,
.form-wrapper .content input,
.form-wrapper .content textarea {
  width: 100%;
  padding: 0.5em;
  border-radius: 0;
  color: gray;
  border: 1px solid gray;
  background: #f4f4f4;
}

.contact-form-wrapper .content input:focus,
.contact-form-wrapper .content input:active,
.contact-form-wrapper .content textarea:focus,
.contact-form-wrapper .content textarea:active,
.form-wrapper .content input:focus,
.form-wrapper .content input:active,
.form-wrapper .content textarea:focus,
.form-wrapper .content textarea:active {
  outline: none;
  border: 1px solid #414066;
  background: #f8f8f8;
}

.contact-form-wrapper .content .form-group,
.form-wrapper .content .form-group {
  padding: 0.5em 0;
}

.contact-form-wrapper .content .form-group.are_you_what,
.form-wrapper .content .form-group.are_you_what {
  display: none;
}

.contact-form-wrapper .content .form-group.error *:not(input):not(textarea),
.form-wrapper .content .form-group.error *:not(input):not(textarea) {
  color: #e0845e;
}

.contact-form-wrapper .content .form-group.form-error ul,
.form-wrapper .content .form-group.form-error ul {
  list-style: normal;
}

.contact-form-wrapper .content .form-group.form-error h4,
.form-wrapper .content .form-group.form-error h4 {
  margin: 0;
  font-size: 1.2em;
}

.main-header {
  border: solid #fff;
  border-width: 0 0 1px;
  position: sticky;
  bottom: 0;
  background: linear-gradient(2deg, rgba(244, 244, 244, 0.8) 85%, #0FF);
  z-index: 10;
  box-shadow: 0px 0 0px 0px transparent;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  transition: margin-top 400ms;
}
.main-header:not(.hidden) {
  transition: box-shadow 400ms 500ms;
}
.main-header:not(.hidden)::before, .main-header:not(.hidden)::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
}
.main-header::before {
  background: #76929e;
  animation: fade-in 400ms 300ms ease-out reverse both;
}
.main-header::after {
  background-image: linear-gradient(180deg, #f4f4f4, #76929e 30%);
  animation: fade-in 300ms linear, fade-in 300ms 301ms ease-out reverse;
  opacity: 0;
}
.main-header.hidden {
  opacity: 0;
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
  top: auto;
  bottom: 0;
}
.main-header.collapsed {
  animation: fade-up 200ms reverse;
}

.header-logo {
  font-size: 1em;
  flex-grow: 0;
  margin: 0;
}
.header-logo button {
  display: block;
  border: none;
  padding: 1em;
  background: none;
}
.header-logo svg {
  height: min(1em + 5vw, 3em);
  width: auto;
  filter: drop-shadow(0 0 1em #fff) drop-shadow(0 0 1em #fff) drop-shadow(0 0 1em #fff) drop-shadow(0 0 1em #fff);
}

body:not(.loaded) .menu:not([hidden]) {
  animation: fade-up 600ms 500ms;
  animation-fill-mode: backwards;
}
.menu ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0.5em;
}
@media screen and (min-width: 60em) {
  .menu ul {
    flex-direction: column;
  }
}
.menu li {
  flex-grow: 1;
}

.nav-wrapper {
  display: flex;
  flex-direction: row-reverse;
}

.nav-link {
  padding: 1em;
  border: none;
  color: #069;
  display: block;
  text-decoration: none;
  font-size: 1em;
  font-weight: normal;
  text-align: center;
  background: none;
  font-family: "montserrat-alternates", sans-serif;
  font-weight: 700;
}
.nav-link:hover, .nav-link:focus {
  color: #414066;
  border-color: #414066;
  background: #f4f4f4;
}

.header-content {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

html,
body {
  height: 100%;
  background-color: #dbe1e2;
}

#app {
  min-height: 100%;
  display: flex;
  flex-direction: column-reverse;
}

.wrap {
  padding: 1em;
}

.closeable {
  padding-top: 2em;
  position: relative;
}

.main-wrap {
  display: flex;
  flex-grow: 1;
  flex-direction: column;
  position: relative;
}
.main-wrap::before {
  content: "";
}

.view-wrap {
  width: 100%;
}

.view-wrap-about,
.view-wrap-contact {
  max-width: 45em;
  background: rgba(255, 245, 254, 0.6705882353);
  padding: 1em;
  border-radius: 2em;
}

.view-wrap-expanded .loadingMessage {
  position: absolute;
  top: 50%;
  left: calc(50% - 7px);
}

.main-container {
  flex-grow: 1;
  flex-shrink: 1;
  display: flex;
  z-index: 1;
  position: relative;
  background-color: #76929e;
  padding: 5vh 2vw calc(5vh + 5em);
}
.main-container::after {
  position: absolute;
  content: "";
  background-color: #439b81;
  bottom: 0;
  top: 100%;
  width: 100%;
  left: 0;
  transition: top 500ms ease-in-out;
  transition-delay: 300ms;
  z-index: -1;
}
.loading .main-container::after {
  border: 0;
}
.main-container canvas#background-color {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  opacity: 0.4;
  mix-blend-mode: color;
}

.nav-view > * {
  opacity: 0;
  animation: fade-up 300ms 500ms forwards;
}
.nav-view::after {
  transition-delay: 100ms;
  top: 0;
  border-top: 2px solid #069;
}

.social-icon-list {
  display: flex;
  width: 100%;
}
@media (max-width: 60em) {
  .social-icon-list {
    width: auto;
  }
}

.social-link {
  height: calc(0.2em + 2.5vw);
  width: calc(0.2em + 2.5vw);
  min-width: 2em;
  min-height: 2em;
  background-size: 99% 99%;
  background-repeat: no-repeat;
  background-position: center center;
  opacity: 0.6;
  transition: opacity 0.5s;
  margin: 0.4em;
  display: block;
}
.social-link:hover {
  opacity: 1;
}
.social-link.instagram {
  background-image: url("/images/InstagramLogo.svg");
}
.social-link.etsy {
  background-image: url("/images/EtsyLogo.svg");
}
.social-link.facebook {
  background-image: url("/images/FacebookLogo.svg");
}
.social-link.tumblr {
  background-image: url("/images/TumblrLogo.svg");
}
.social-link.twitter {
  background-image: url("/images/twitter.svg");
}
.social-link.linkedin {
  background-image: url("/images/linkedin.svg");
}

.view-wrap-checkout {
  background: rgba(255, 255, 255, 0.7490196078);
  padding: 1em;
}

@keyframes gallery-tiles-init {
  0% {
    border-radius: 70% 5%/8% 39%;
  }
  50% {
    border-radius: 1% 5%/5% 1%;
  }
  100% {
    border-radius: 8% 39%/70% 5%;
  }
}
@keyframes gallery-tiles-hover {
  0% {
    border-radius: 70% 5%/8% 39%;
  }
  50% {
    border-radius: 1% 5%/5% 1%;
  }
  100% {
    border-radius: 8% 39%/70% 5%;
  }
}
.gallery-tiles {
  position: relative;
  display: grid;
  align-items: flex-start;
  justify-content: space-between;
  grid-row-gap: 1em;
  grid-column-gap: 3vw;
  opacity: 1;
  width: 100%;
  transition: opacity 300ms;
  --columns: 2;
  grid-template-columns: repeat(auto-fill, calc(100% / var(--columns) - 3vw));
}
@media (min-width: 40em) {
  .gallery-tiles {
    --columns: 3;
    grid-template-columns: repeat(auto-fill, calc(80% / var(--columns)));
    gap: 6vw;
  }
}
@media (min-width: 60em) {
  .gallery-tiles {
    grid-template-columns: repeat(auto-fill, calc(100% / var(--columns)));
    padding: 6vw;
    justify-content: space-around;
  }
}
@media (min-width: 100em) {
  .gallery-tiles {
    --columns: 5;
  }
}
body:not(.loaded) .main-container:not([hidden]) .gallery-tiles .gallery-item-container {
  animation: fade-left 800ms 500ms backwards;
}
@media (max-width: 60em) {
  body:not(.loaded) .main-container:not([hidden]) .gallery-tiles .gallery-item-container {
    animation: fade-up 800ms 500ms backwards;
  }
}
.gallery-tiles.hidden {
  animation: fade-right 800ms;
  animation-direction: reverse;
}
@media (max-width: 60em) {
  .gallery-tiles.hidden {
    animation: fade-down 800ms;
  }
}

.main-container:has(~ dialog[open]) .gallery-tiles {
  opacity: 0;
}

.gallery-item-container {
  display: inline-flex;
  align-items: center;
  transition: transform 200ms, opacity 500ms;
  max-width: fit-content;
  margin: auto;
}
.gallery-item-container:has(img) {
  width: 100%;
  max-width: none;
}
.gallery-tiles:has(button:focus) .gallery-item-container:not(:has(button:focus)) {
  transform: scale(0.9);
}
.gallery-tiles:has(.gallery-item-container.expanding) .gallery-item-container:not(:is(.expanding)) {
  opacity: 0.5;
}
.gallery-item-container.grid-span-2 {
  grid-column: span 2;
}
.gallery-item-container.grid-span-2 button {
  display: flex;
  align-items: center;
}
.gallery-item-container.loading-true .image {
  cursor: loading;
  background: #bababa;
  opacity: 0.6;
}

.gallery-inner {
  height: 100%;
  min-height: 100%;
}

.image-container {
  padding: 0;
  border-radius: 3px;
  opacity: 1;
  flex-grow: 1;
  width: 100%;
  height: 100%;
  transition: border-radius 300ms, box-shadow 300ms, filter 300ms, transform 300ms, padding 300ms ease-out;
  box-shadow: 0 0 2vw 0px rgba(132, 249, 255, 0.6549019608);
  border: 2px solid #ffffff;
  opacity: 0.3;
  border-radius: 70% 5%/8% 39%;
  overflow: hidden;
  position: relative;
  animation: gallery-tiles-init 500ms ease-out reverse backwards, fade-to-1 500ms ease-out both;
}
body.loading .image-container {
  animation: none;
}
.image-container:hover, .image-container:focus {
  opacity: 1;
  animation: gallery-tiles-hover 300ms ease-in-out forwards, fade-to-1 500ms both;
}
.image-container:focus {
  border-color: rgba(132, 249, 255, 0.6549019608);
}
.image-container:active {
  transform: scale(0.95);
  box-shadow: 1vw 1vw 1vw 0px rgba(132, 249, 255, 0.6549019608);
}
.image-container:not(:has(canvas)) {
  position: relative;
  overflow: hidden;
  padding: 50% 0;
  width: 100%;
  opacity: 0.3;
  animation: expandingLoading 2s infinite, fade-from-zero 500ms ease-out both, gallery-tiles-hover 500ms ease-out both;
}
.image-container:not(:has(canvas))::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(186, 186, 186, 0.5);
  animation: fade-in infinite 1s alternate ease-in-out;
}
@keyframes expandingLoading {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(0.97);
    box-shadow: 1vw 1vw 2vw 0px rgba(132, 249, 255, 0.6549019608);
  }
  100% {
    transform: scale(1);
  }
}
.expanding .image-container {
  border-width: 3px;
  transform: scale(0.99);
  border-radius: 8% 39%/70% 5%;
  box-shadow: 2.5vw 2.5vw 4vw 0px rgba(132, 249, 255, 0.6549019608);
  animation: expandingLoading 1s infinite;
}

@keyframes image-in {
  from {
    margin: -50% 0;
  }
}
.gallery-item-image {
  max-width: 100%;
  transition: border-radius 300ms, box-shadow 300ms, filter 300ms, transform 300ms, width 300ms, height 300ms, opacity 300ms;
  display: block;
  object-fit: cover;
  margin: 0;
  animation: image-in 300ms ease-out;
}
.gallery-item-image:not(canvas) {
  opacity: 0;
  width: 0;
  height: 0;
}

.enlarged-image-container {
  width: 100%;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.enlarged-image-container[hidden] {
  opacity: 0;
}
.enlarged-image-container .enlarged-image {
  overflow: hidden;
  border-radius: 3% 20%/20% 3%;
  border: 3px solid #fff;
  box-shadow: 0 5vw 5vw 0.5vw rgba(132, 249, 255, 0.6549019608);
  max-width: 100%;
  max-height: calc(100vh - 12em);
  transform-origin: 0 0;
  transform: translate(0, 0) scale(1);
  z-index: -1;
  position: relative;
}
.enlarged-image-container .enlarged-image::selection {
  background: transparent;
}
.enlarged-image-container .enlarged-image:not(.loaded) {
  opacity: 0;
}
.enlarged-image-container .enlarged-image.loaded {
  opacity: 1;
}
.enlarged-image-container .enlarged-image-loading {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  transition: transform 300ms;
}

.enlarged-image-container[open] {
  animation: fade-in 300ms;
  padding: 0;
  border: none;
  background: transparent;
  max-width: 100%;
  max-height: 100%;
  height: 100%;
  width: 100%;
  overflow: auto;
  top: 0vh;
  display: flex;
  align-items: center;
  flex-direction: column-reverse;
  justify-content: space-between;
  touch-action: none;
}
.enlarged-image-container[open].loading *:not(.loadingDot):not(.loadingMessage) {
  opacity: 0;
}

.enlarged-header {
  background-color: #ffffff;
  padding: 2em 1em;
  position: sticky;
  bottom: 0;
  width: 100%;
  animation: fade-up 300ms 500ms ease-out backwards;
  margin-top: auto;
  display: flex;
  flex-direction: row-reverse;
  gap: 1em;
  align-items: baseline;
  justify-content: space-between;
}
.enlarged-header * {
  line-height: 1.2;
  margin: 0;
}

.enlarged-image-wrap {
  height: fit-content;
  width: fit-content;
  padding: 2vh 2vw;
  margin: auto;
}

.cart-button, .select-variant button {
  background-image: linear-gradient(-90deg, #414066 50%, transparent 50%);
  background-position: 198%;
  background-size: 203%;
}

.cart-button.new-item, .select-variant select:has(option:not([value=""]):checked) ~ button {
  transition: background-position 300ms, color 200ms 100ms;
  background-position-x: 100%;
  color: #f8f8f8;
}

.merch {
  display: grid;
  width: 100%;
  flex-wrap: wrap;
  gap: 3vh 3%;
}
@media (min-width: 30em) {
  .merch {
    grid-template-columns: repeat(auto-fill, 48%);
  }
}
@media (min-width: 80em) {
  .merch {
    grid-template-columns: repeat(auto-fill, clamp(15em, 31%, 1200px));
  }
}
@media (min-width: 100em) {
  .merch {
    grid-template-columns: repeat(auto-fill, clamp(15em, 22.7%, 1200px));
  }
}
.merch li {
  display: flex;
  flex-direction: column;
  width: 100%;
  flex: 1;
}
.merch h2 {
  font-size: 1em;
}

.product-image {
  position: relative;
  border-radius: 10px 10px 0 0;
  overflow: hidden;
  width: 100%;
  background-color: #fbfbfb;
}
.product-image:hover img:has(+ img) {
  opacity: 0;
}
.product-image:hover img:has(+ img) + img {
  z-index: 1;
  opacity: 1;
}
.product-image:not(:has(img.img-0.loaded)) {
  padding-bottom: 100%;
  background-color: rgba(255, 255, 255, 0.4);
  position: relative;
  border: solid #ffffff;
  border-width: 1px 1px 0 1px;
}
.product-image:not(:has(img.img-0.loaded))::after {
  content: "";
  background-color: rgba(255, 255, 255, 0.4);
  animation: fade-in 2000ms alternate infinite ease-out;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
.product-image:not(:has(img.img-0.loaded)), .product-image:not(:has(img.img-0.loaded)) + * {
  cursor: wait;
}
.product-image img {
  display: block;
  max-width: 100%;
  height: auto;
  object-fit: contain;
  opacity: 1;
  transition: opacity 300ms;
  mix-blend-mode: darken;
}
.product-image img + img {
  position: absolute;
  width: 100%;
  top: 0;
  left: 0;
  opacity: 0;
  transition: opacity 300ms;
}
.product-image img:not(.loaded) {
  height: 0;
  opacity: 0;
}

.select-variant {
  display: flex;
  border-radius: 0 0 10px 10px;
  overflow: hidden;
}
.select-variant select,
.select-variant button {
  padding: 1em;
  border-radius: 0;
  margin: 0;
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
}
.select-variant select {
  flex-grow: 1;
  width: 100%;
  flex-shrink: 1;
  padding: 2em;
  appearance: none;
  background: no-repeat right 1em center/0.65em url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%23fff" width="18px" height="18px"><path d="M7 10l5 5 5-5z"/></svg>'), repeat linear-gradient(-90deg, #414066 50%, #f8f8f8 50%);
  background-color: #414066;
  color: #f8f8f8;
  font-weight: 700;
  border: solid white;
  border-width: 0 0 1px 1px;
  border-radius: 0 0 0 10px;
  outline: none;
  background-size: 2em, 200%;
  background-position: right 1em center, 100%;
  transition: background-position 300ms, color 200ms 200ms;
}
.select-variant select:has(option:not([value=""]):checked) {
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%23414066" width="18px" height="18px"><path d="M7 10l5 5 5-5z"/></svg>'), linear-gradient(-90deg, #414066 50%, #f8f8f8 50%);
  background-color: #f8f8f8;
  background-position: right 0em center, 0;
  color: #414066;
  font-weight: 400;
}
.select-variant select:has(option:not([value=""]):checked) ~ button {
  pointer-events: auto;
}
.select-variant select:has(option:not([value=""]):checked) ~ button.adding {
  background-position: 0;
  color: transparent;
}
.select-variant select:has(option:not([value=""]):checked) ~ button.added {
  color: #414066;
  background-position: 0;
  font-weight: 700;
  padding-left: 1.8em;
  padding-right: 1.8em;
}
.select-variant select:has(~ button.added) {
  transition: none;
  background-position: right 1em center, 200%;
}
.select-variant button {
  color: rgba(65, 64, 102, 0.7);
  pointer-events: none;
  font-size: 1em;
  white-space: nowrap;
  cursor: pointer;
  border: solid white;
  border-width: 0 1px 1px 0;
  border-radius: 0 0 10px 0;
  display: flex;
  align-items: center;
}

.cart.static {
  height: auto;
  background: rgba(66, 255, 255, 0.1);
}

dialog.cart[open] {
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  background: rgba(66, 255, 255, 0.5);
}

dialog.cart[open],
.cart.static {
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  align-items: flex-end;
  margin: 0;
  width: 100%;
  display: flex;
  flex-direction: column;
  border: 0;
  animation: fade-in 300ms;
  padding: 0;
}
dialog.cart[open] .cart,
.cart.static .cart {
  margin-left: auto;
  margin-top: auto;
  width: 100%;
  background: rgba(255, 255, 255, 0.6235294118);
  animation: fade-up 300ms;
}
@media (min-width: 85rem) {
  dialog.cart[open] .cart,
  .cart.static .cart {
    max-width: calc(70rem + 10vw);
  }
}
dialog.cart[open] header,
.cart.static header {
  position: sticky;
  top: 0;
  background: rgba(255, 255, 255, 0.6235294118);
  padding: 1em;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  z-index: 1;
}
dialog.cart[open] header h1,
.cart.static header h1 {
  margin: 0;
  font-size: 1.5em;
  font-weight: 900;
  line-height: 1;
}
dialog.cart[open] ul,
.cart.static ul {
  flex-direction: row;
  flex-wrap: wrap;
  gap: 2vw;
  display: flex;
  justify-content: flex-end;
  width: 100%;
  padding: 2vw;
  flex-grow: 1;
}
dialog.cart[open] li,
.cart.static li {
  flex-grow: 1;
}
dialog.cart[open] .nav-link,
.cart.static .nav-link {
  display: inline;
  font-size: 10vw;
  font-size: clamp(2rem, 14vw, 16vh);
  padding: 0;
  background: transparent;
  border: none;
  text-align: right;
  outline: none;
  font-family: "montserrat-alternates", sans-serif;
  font-weight: 400;
  line-height: 1.2;
  margin-top: 2vh;
  text-shadow: 2px 2px 0.1em #fff, -2px -2px 0.1em #fff, 2px -2px 0.1em #fff, -2px 2px 0.1em #fff;
  transition: color 300ms, text-shadow 300ms;
}
dialog.cart[open] .nav-link:hover,
.cart.static .nav-link:hover {
  color: #fff;
  text-shadow: 2px 2px 0.1em #0FF, -2px -2px 0.1em #0FF, 2px -2px 0.1em #0FF, -2px 2px 0.1em #0FF;
}
dialog.cart[open] .nav-link::selection,
.cart.static .nav-link::selection {
  background-color: transparent;
  color: inherit;
}
dialog.cart[open] .cart-item,
.cart.static .cart-item {
  container: item/inline-size;
  width: clamp(17em, 100%, 20em);
  flex-grow: 1;
  max-width: 60em;
}
dialog.cart[open] .cart-wrapper,
.cart.static .cart-wrapper {
  background-color: rgba(255, 255, 255, 0.6235294118);
  padding: 2vw;
  border-radius: 2vw;
  display: flex;
  flex-direction: column;
  min-width: min-content;
  border-bottom: 2px solid transparent;
  border-right: 2px solid;
  border-color: rgba(130, 213, 241, 0.3607843137);
}
dialog.cart[open] .cart-wrapper:has(.price > .each),
.cart.static .cart-wrapper:has(.price > .each) {
  box-shadow: min(0.7vw, 0.4em) min(0.7vw, 0.4em) 2px 0 rgba(255, 255, 255, 0.7529411765);
}
dialog.cart[open] .cart-wrapper:has(.price > .each.more),
.cart.static .cart-wrapper:has(.price > .each.more) {
  box-shadow: min(0.5vw, 0.2em) min(0.5vw, 0.2em) 1px 0 rgba(255, 255, 255, 0.7529411765), min(1vw, 0.6em) min(1vw, 0.6em) 5px 0 rgba(255, 255, 255, 0.4470588235);
}
@container item (min-width: 18em) {
  dialog.cart[open] .cart-wrapper,
  .cart.static .cart-wrapper {
    display: grid;
    grid-template-columns: 1fr 3fr;
    gap: 1em;
  }
}
@container item (min-width: 40em) {
  dialog.cart[open] .cart-wrapper,
  .cart.static .cart-wrapper {
    display: flex;
    flex-direction: row;
    align-items: center;
  }
  dialog.cart[open] .cart-wrapper .deets,
  .cart.static .cart-wrapper .deets {
    text-align: left;
    margin-right: auto;
  }
}
dialog.cart[open] .cart-wrapper > *,
.cart.static .cart-wrapper > * {
  animation: fade-up 300ms 200ms backwards;
}
dialog.cart[open] .cart-wrapper h2, dialog.cart[open] .cart-wrapper > p,
dialog.cart[open] .cart-wrapper button,
.cart.static .cart-wrapper h2,
.cart.static .cart-wrapper > p,
.cart.static .cart-wrapper button {
  grid-column: 2;
  margin: 0;
}
dialog.cart[open] .cart-wrapper h2,
.cart.static .cart-wrapper h2 {
  font-size: 1em;
  font-weight: 700;
}
dialog.cart[open] .cart-image,
.cart.static .cart-image {
  grid-column: 1;
  grid-row: 1/span 3;
  height: 7em;
}
dialog.cart[open] .cart-image img,
.cart.static .cart-image img {
  object-fit: contain;
  display: block;
  max-height: 100%;
  max-width: 100%;
  border-radius: 0.5em;
}
dialog.cart[open] .btn-well,
.cart.static .btn-well {
  position: sticky;
  bottom: 0;
  background-color: rgba(255, 255, 255, 0.6235294118);
  padding: 1em;
  z-index: 1;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}

fieldset {
  background: rgba(255, 255, 255, 0.6235294118);
  border: none;
  box-shadow: 0 0 1em 0.5em rgba(255, 255, 255, 0.6235294118);
}

.quantity {
  display: flex;
  gap: 1em;
  grid-column: 1/-1;
  align-items: center;
}
.quantity .price {
  margin-right: auto;
  order: -1;
}

.close-button {
  background: none;
  border: none;
  display: flex;
  align-items: center;
  z-index: 1;
  line-height: 1;
}
.close-button::after {
  font-family: "montserrat-alternates", sans-serif;
  content: "×";
  font-weight: 900;
  color: #9B2020;
  font-size: 1.9em;
  margin-top: -0.1em;
}

/*# sourceMappingURL=style.css.map */
