/* ============== FONTS ============== */
@import url('https://fonts.googleapis.com/css2?family=Over+the+Rainbow&display=swap');


@font-face {
  font-family: "RomanceA";
  src: url("https://harnessed.netlify.app/assets/RomanceA.woff2")
    format("woff2");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Spirit";
  src: url("https://harnessed.netlify.app/assets/Spirit.woff2")
    format("woff2");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

/* ============== VARIABLES ============== */
:root {
  --head: #77b7ad;
  --text: #7f9b97;
  --link: #c6034b;
  --nav: #a1c6c1;
  --navhov: #7da09b;
  --acctext: #a84d6e;

  --headtxt: "RomanceA";
  --txt: "Over the Rainbow";
  --decor: "Spirit";
}

/* ============== BODY ============== */
body {
  background-image: url("https://i.postimg.cc/vTgPSzh9/v27-bg-polkadot.gif");
  background-repeat: repeat;
  background-size: 30px auto;
  animation: bg-scroll 40s linear infinite;
}

@keyframes bg-scroll {
  from {
    background-position: 0 0;
  }

  to {
    background-position: 20px 600px;
  }
}

html,
body {
  cursor:
    url("https://harnessed.netlify.app/assets/cursor.png") 4 4,
    auto;
}

/* ============== NAV HOVER ============== */
.navlove {
  position: relative;
  display: inline-block;

  color: var(--nav);
  text-decoration: none;
  font-family: var(--decor);

  transition-duration: 0.6s;
}

.navlove:hover {
  color: var(--navhov);
  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff;

  transform: translateY(-4px);
}

.navlove.active {
  color: var(--navhov);

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff;

  transform: translateY(-4px);
}

/* ============== ALERT MARQUEE ============== */
.love-alert {
  height: 50px;
  width: 900px;
  max-width: calc(100% - 24px);

  display: flex;
  align-items: center;

  margin: 0 auto;
  padding: 4px;

  background: #dbefec;
  background-clip: padding-box;

  border: 10px solid transparent;

  border-image:
    url("https://harnessed.netlify.app/assets/lacebord.png")
    11% round;

  border-image-outset: 0;

  box-shadow:
    inset 0 0 0 1px rgba(166, 137, 119, 0.45);

  overflow: hidden;
}

.love-alert-window {
  width: 100%;
  min-width: 0;

  color: var(--text);
  overflow: hidden;

  mask-image: linear-gradient(
    to right,
    transparent,
    #000 3%,
    #000 97%,
    transparent
  );

  -webkit-mask-image: linear-gradient(
    to right,
    transparent,
    #000 3%,
    #000 97%,
    transparent
  );
}

.love-alert-group {
  display: inline-flex;
  align-items: center;

  gap: 10px;
  padding-right: 10px;

  color: var(--nav);
  font-family: var(--decor);
  font-size: 15px;
  white-space: nowrap;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff;
}

.love-alert-divider {
  color: var(--navhov);
  font-size: 15px;
  opacity: 0.75;
}

/* ============== PRIMARY CONTENT ============== */
.primary-content {
  position: relative;

  width: 900px;
  max-width: 100%;

  margin: 0 auto;
}

.site-page {
  display: none;
}

.site-page.active {
  display: block;
  animation: page-appear 0.35s ease;
}

@keyframes page-appear {
  from {
    opacity: 0;
    transform: translateY(4px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ============== EYE BANNER ============== */
.toasteye {
  position: relative;

  height: 150px;

  overflow: hidden;
  isolation: isolate;

  background-image: url("https://i.postimg.cc/HxSDCrdR/banner.jpg");
  background-size: cover;
  background-position: center;

  border-bottom: 2px solid #fff;

  box-shadow:
    inset 0 10px 18px -12px rgba(255, 255, 255, 0.85),
    inset 0 -10px 18px -12px rgba(222, 238, 236, 0.8);
}

.toasteye::before {
  content: "";

  position: absolute;
  inset: 0;

  background: rgba(219, 239, 236, 0.78);
  opacity: 0;

  transition: opacity 0.7s ease;

  pointer-events: none;
  z-index: 1;
}

.toasteye::after {
  content: "welcome to Harnessed";

  position: absolute;
  left: 50%;
  top: 50%;

  transform: translate(-50%, -40%);

  color: var(--head);
  font-family: var(--decor);
  font-size: 30px;
  letter-spacing: 2px;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff,
    0 0 8px #fff;

  opacity: 0;

  transition:
    opacity 0.7s ease,
    transform 0.7s ease;

  pointer-events: none;
  z-index: 2;
}

.toasteye:hover::before {
  opacity: 1;
}

.toasteye:hover::after {
  opacity: 1;
  transform: translate(-50%, -50%);
}

.toasteye-stars,
.toasteye-stars::before,
.toasteye-stars::after {
  position: absolute;
  inset: 0;

  pointer-events: none;
}

.toasteye-stars {
  z-index: 0;
  opacity: 1;

  transition: opacity 0.7s ease;
}

.toasteye-stars::before {
  content: "";

  width: 140%;
  left: -20%;

  background-image:
    radial-gradient(circle at 8% 28%, #fff 0 1px, transparent 2px),
    radial-gradient(circle at 18% 75%, #fff 0 1px, transparent 2px),
    radial-gradient(circle at 31% 46%, #fff 0 1px, transparent 2px),
    radial-gradient(circle at 45% 18%, #fff 0 1px, transparent 2px),
    radial-gradient(circle at 58% 69%, #fff 0 1px, transparent 2px),
    radial-gradient(circle at 72% 36%, #fff 0 1px, transparent 2px),
    radial-gradient(circle at 86% 81%, #fff 0 1px, transparent 2px),
    radial-gradient(circle at 96% 22%, #fff 0 1px, transparent 2px);

  filter:
    drop-shadow(0 0 2px #fff)
    drop-shadow(0 0 4px rgba(219, 239, 236, 0.9));

  animation: stars-drift-slow 14s linear infinite;
}

.toasteye-stars::after {
  content: "";

  width: 130%;
  left: -15%;

  background-image:
    radial-gradient(circle at 12% 64%, #fff 0 1.5px, transparent 2.5px),
    radial-gradient(circle at 29% 24%, #fff 0 1.5px, transparent 2.5px),
    radial-gradient(circle at 49% 80%, #fff 0 1.5px, transparent 2.5px),
    radial-gradient(circle at 67% 39%, #fff 0 1.5px, transparent 2.5px),
    radial-gradient(circle at 88% 61%, #fff 0 1.5px, transparent 2.5px);

  filter:
    drop-shadow(0 0 3px #fff)
    drop-shadow(0 0 6px rgba(219, 239, 236, 0.95));

  animation:
    stars-drift-fast 9s linear infinite,
    stars-glimmer 2.5s ease-in-out infinite alternate;
}

@keyframes stars-drift-slow {
  from {
    transform: translateX(12%);
  }

  to {
    transform: translateX(-12%);
  }
}

@keyframes stars-drift-fast {
  from {
    transform: translateX(15%);
  }

  to {
    transform: translateX(-15%);
  }
}

@keyframes stars-glimmer {
  from {
    opacity: 0.4;
  }

  to {
    opacity: 0.95;
  }
}

.toasteye:hover .toasteye-stars {
  opacity: 0;
}

/* ============== HOME CONTENT ============== */
.home-under {
  position: relative;

  display: grid;
  grid-template-columns: minmax(0, 1.7fr) minmax(210px, 0.8fr);

  margin: 0 auto;

  color: var(--text);
  background: rgba(250, 255, 254, 0.88);

  overflow: visible;
}

.home-under::after {
  content: "";

  position: absolute;
  left: 0;
  bottom: -14px;

  width: 100%;
  height: 20px;

  background-image: url("https://harnessed.netlify.app/assets/bloodiv.gif");
  background-repeat: repeat-x;
  background-position: center top;
  background-size: auto 100%;

  pointer-events: none;
  z-index: 5;
}

.home-welcome {
  min-height: 190px;
  padding: 27px 32px;

  display: flex;
  flex-direction: column;
  justify-content: center;
}

.home-kicker {
  color: var(--acctext);
  font-family: var(--decor);
  font-size: 13px;
  opacity: 0.8;
}

.home-welcome h1 {
  margin: 3px 0 9px;

  color: var(--head);
  font-family: var(--headtxt);
  font-size: 32px;
  font-weight: normal;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff;
}

.home-welcome p {
  max-width: 520px;
  margin: 0;

  font-family: var(--txt);
  font-size: 14px;
  line-height: 1.8;
}

.welcome-jump {
  width: fit-content;

  margin-top: 15px;
  padding: 5px 13px;

  color: var(--link);
  background: rgba(219, 239, 236, 0.65);

  border: 1px solid #fff;
  border-radius: 999px;

  font-family: var(--decor);
  font-size: 13px;

  box-shadow:
    inset 0 2px 4px rgba(255, 255, 255, 0.9),
    0 1px 3px rgba(38, 62, 66, 0.12);

  cursor: pointer;

  transition:
    color 0.3s ease,
    background-color 0.3s ease,
    transform 0.3s ease;
}

.welcome-jump:hover {
  color: var(--navhov);
  background: rgba(255, 255, 255, 0.85);

  transform: translateY(-2px);
}

.home-status {
  padding: 24px;

  background: rgba(219, 239, 236, 0.38);
  border-left: 1px dashed rgba(69, 173, 193, 0.35);
}

.home-status h2 {
  margin: 0 0 13px;

  color: var(--head);
  font-family: var(--headtxt);
  font-size: 21px;
  font-weight: normal;
  text-align: center;
}

.status-line {
  display: flex;
  justify-content: space-between;
  align-items: center;

  padding: 6px 2px;

  border-bottom: 1px dotted rgba(69, 173, 193, 0.35);

  font-family: var(--decor);
  font-size: 13px;
}

.status-line strong {
  color: var(--acctext);
  font-weight: normal;
}

.status-update {
  margin-top: 15px;
  text-align: center;
}

.status-update > span {
  color: var(--acctext);
  font-family: var(--decor);
  font-size: 12px;
}

.status-update p {
  margin: 4px 0 0;

  font-family: var(--txt);
  font-size: 11px;
}

/* ============== SOCIAL STRIP ============== */
.social-strip {
  width: 900px;
  max-width: 100%;
  min-height: 48px;

  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;

  gap: 10px;

  margin: 5px auto;
  padding: 0;

  color: var(--text);
  background: rgba(219, 239, 236, 0.82);
}

.social-strip-title {
  color: var(--head);
  font-family: var(--headtxt);
  font-size: 19px;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff,
    0 0 5px #fff;
}

.social-divider {
  color: var(--acctext);
  font-size: 16px;
  opacity: 0.7;
}

.social-links {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;

  gap: 9px;

  font-family: var(--decor);
  font-size: 13px;
}

.social-links > span {
  color: var(--acctext);
  opacity: 0.55;
}

.social-links a {
  position: relative;
  display: inline-block;

  color: var(--link);
  text-decoration: none;

  transition:
    color 0.3s ease,
    text-shadow 0.3s ease,
    transform 0.3s ease;
}

.social-links a:hover,
.social-links a:focus-visible {
  color: var(--navhov);

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff,
    0 0 6px #fff;

  transform: translateY(-2px);
}

.social-links a:focus-visible {
  outline: 1px dotted var(--head);
  outline-offset: 3px;
}

/* ============== ADOPT CATALOGUE ============== */
.adopt-catalogue {
  width: 900px;
  max-width: 100%;

  margin: 0 auto;
  padding: 24px;

  color: var(--text);
  background: rgba(250, 255, 254, 0.9);

  box-shadow:
    inset 0 12px 20px -15px rgba(255, 255, 255, 0.95),
    inset 0 -12px 20px -15px rgba(222, 238, 236, 0.95),
    0 2px 5px rgba(38, 62, 66, 0.14);
}

.adopt-heading {
  max-width: 620px;
  margin: 0 auto 22px;

  text-align: center;
}

.adopt-kicker {
  color: var(--acctext);
  font-family: var(--decor);
  font-size: 13px;
}

.adopt-heading h1 {
  margin: 4px 0 8px;

  color: var(--head);
  font-family: var(--headtxt);
  font-size: 34px;
  font-weight: normal;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff,
    0 0 7px #fff;
}

.adopt-heading p {
  margin: 0;

  font-family: var(--txt);
  font-size: 13px;
  line-height: 1.8;
}

/* ============== FILTER TOOLBAR ============== */
.adopt-tools {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;

  gap: 12px;

  margin-bottom: 12px;
  padding: 10px 12px;

  background-color: rgba(219, 239, 236, 0.68);
  background-image:url(https://i.postimg.cc/wvzzc6SB/b01-bg-simple.gif);
  background-repeat: repeat;
  background-size: auto;
  border: 2px solid #fff;
  border-radius: 4px;

  box-shadow:
    inset 0 8px 14px -10px rgba(255, 255, 255, 0.95),
    inset 0 -8px 14px -10px rgba(222, 238, 236, 0.95);
}

.status-filters {
  display: flex;
  align-items: center;
  flex-wrap: wrap;

  gap: 5px;
}

.adopt-filter {
  appearance: none;
  -webkit-appearance: none;

  padding: 5px 10px;

  color: var(--link);
  background: rgba(255, 255, 255, 0.5);

  border: 1px solid rgba(69, 173, 193, 0.25);
  border-radius: 999px;

  font-family: var(--decor);
  font-size: 12px;

  cursor: pointer;

  transition:
    color 0.3s ease,
    background-color 0.3s ease,
    box-shadow 0.3s ease,
    transform 0.3s ease;
}

.adopt-filter:hover,
.adopt-filter:focus-visible,
.adopt-filter.active {
  color: var(--navhov, var(--acctext));
  background: rgba(255, 255, 255, 0.9);

  box-shadow:
    0 2px 5px rgba(38, 62, 66, 0.12);

  transform: translateY(-1px);
}

.adopt-filter:focus-visible {
  outline: 1px dotted var(--head);
  outline-offset: 2px;
}

.adopt-selects {
  display: flex;
  align-items: center;
  flex-wrap: wrap;

  gap: 6px;
}

.adopt-selects select {
  padding: 5px 25px 5px 8px;

  color: var(--text);
  background: rgba(255, 255, 255, 0.82);

  border: 1px solid rgba(69, 173, 193, 0.3);
  border-radius: 4px;

  font-family: var(--decor);
  font-size: 11px;

  cursor: pointer;
}

.adopt-results {
  min-height: 18px;

  margin: 0 0 8px;

  color: var(--acctext);
  font-family: var(--decor);
  font-size: 11px;
  text-align: right;
}

/* ============== ADOPT GRID ============== */
.adopt-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));

  gap: 15px;
}

/* ============== ADOPT CARD ============== */
.adopt-card {
  position: relative;

  min-width: 0;

  background: rgba(255, 255, 255, 0.82);

  border: 2px solid #fff;
  border-radius: 4px;

  box-shadow:
    inset 0 9px 16px -12px rgba(255, 255, 255, 0.95),
    inset 0 -9px 16px -12px rgba(222, 238, 236, 0.9),
    0 2px 5px rgba(38, 62, 66, 0.13);

  overflow: hidden;

  transition:
    box-shadow 0.35s ease,
    transform 0.35s ease;
}

.adopt-card:hover {
  transform: translateY(-4px);

  box-shadow:
    inset 0 9px 16px -12px rgba(255, 255, 255, 0.95),
    inset 0 -9px 16px -12px rgba(222, 238, 236, 0.9),
    0 6px 12px rgba(38, 62, 66, 0.16);
}

.adopt-card-open {
  appearance: none;
  -webkit-appearance: none;

  display: block;
  width: 100%;

  padding: 0;

  color: inherit;
  background: transparent;

  border: 0;

  text-align: left;
  cursor: pointer;
}

.adopt-card-image {
  position: relative;

  aspect-ratio: 1 / 1;

  background: #dbefec;
  overflow: hidden;
}

.adopt-card-image img {
  width: 100%;
  height: 100%;

  display: block;
  object-fit: cover;

  transition:
    filter 0.4s ease,
    transform 0.5s ease;
}

.adopt-card:hover .adopt-card-image img {
  transform: scale(1.025);
}

.adopt-card[data-status="sold"] .adopt-card-image img {
  filter: grayscale(35%) opacity(0.72);
}

.adopt-status {
  display: inline-block;

  padding: 3px 8px;

  border: 1px solid rgba(255, 255, 255, 0.8);
  border-radius: 999px;

  font-family: var(--decor);
  font-size: 10px;
  letter-spacing: 0.4px;
  text-transform: lowercase;

  box-shadow:
    0 1px 3px rgba(38, 62, 66, 0.12);
}

.adopt-card-image .adopt-status {
  position: absolute;
  right: 8px;
  bottom: 8px;
}

.adopt-status.available {
  color: #265d54;
  background: rgba(219, 239, 236, 0.95);
}

.adopt-status.pending {
  color: #8a5867;
  background: rgba(250, 226, 231, 0.95);
}

.adopt-status.sold {
  color: #666;
  background: rgba(240, 240, 240, 0.95);
}

.adopt-card-body {
  padding: 12px 13px 14px;
}

.adopt-card-top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;

  gap: 8px;
}

.adopt-card-name {
  margin: 0;

  color: var(--head);
  font-family: var(--headtxt);
  font-size: 21px;
  font-weight: normal;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff;
}

.adopt-card-price {
  flex: none;

  margin: 0;

  color: var(--link);
  font-family: var(--decor);
  font-size: 12px;
}

.adopt-card-tags {
  margin: 7px 0 0;

  color: var(--acctext);
  font-family: var(--decor);
  font-size: 10px;
}

.adopt-empty {
  padding: 35px 15px;

  color: var(--acctext);
  font-family: var(--decor);
  font-size: 14px;
  text-align: center;
}

/* ============== ADOPT MODAL ============== */
.adopt-modal {
  width: min(820px, calc(100% - 30px));
  max-height: calc(100vh - 30px);

  padding: 0;

  color: var(--text);
  background: rgba(250, 255, 254, 0.98);

  border: 8px solid rgba(255, 255, 255, 0.95);
  border-radius: 5px;

  box-shadow:
    inset 0 12px 20px -15px rgba(255, 255, 255, 0.95),
    inset 0 -12px 20px -15px rgba(222, 238, 236, 0.95),
    0 12px 35px rgba(38, 62, 66, 0.3);

  overflow: auto;
}

.adopt-modal::backdrop {
  background: rgba(38, 62, 66, 0.48);
  backdrop-filter: blur(3px);
}

.adopt-modal-close {
  position: absolute;
  top: 8px;
  right: 11px;

  z-index: 4;

  appearance: none;
  -webkit-appearance: none;

  padding: 0;

  color: var(--link);
  background: transparent;

  border: 0;

  font-family: serif;
  font-size: 27px;
  line-height: 1;

  cursor: pointer;

  transition:
    color 0.25s ease,
    transform 0.25s ease;
}

.adopt-modal-close:hover {
  color: var(--acctext);
  transform: rotate(8deg) scale(1.1);
}

.adopt-modal-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(260px, 0.95fr);
}

.adopt-modal-image-wrap {
  min-height: 430px;
  background: #dbefec;
}

.adopt-modal-image-wrap img {
  width: 100%;
  height: 100%;

  display: block;
  object-fit: contain;
}

.adopt-modal-info {
  padding: 38px 30px 30px;
}

.adopt-modal-info h2 {
  margin: 8px 0 2px;

  color: var(--head);
  font-family: var(--headtxt);
  font-size: 32px;
  font-weight: normal;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff;
}

.adopt-modal-price {
  margin: 0 0 5px;

  color: var(--link);
  font-family: var(--decor);
  font-size: 15px;
}

.adopt-modal-tags {
  margin: 0 0 18px;

  color: var(--acctext);
  font-family: var(--decor);
  font-size: 11px;
}

.adopt-modal-description {
  font-family: var(--txt);
  font-size: 12px;
  line-height: 1.8;
}

.adopt-modal-offers,
.adopt-modal-includes {
  margin-top: 18px;
  padding-top: 13px;

  border-top: 1px dotted rgba(69, 173, 193, 0.4);
}

.adopt-modal-offers h3,
.adopt-modal-includes h3 {
  margin: 0 0 8px;

  color: var(--head);
  font-family: var(--headtxt);
  font-size: 19px;
  font-weight: normal;
}

.adopt-modal-offers-note {
  margin: -5px 0 8px;

  color: var(--acctext);
  font-family: var(--decor);
  font-size: 10px;
}

.adopt-modal-offers ol,
.adopt-modal-includes ul {
  margin: 0;
  padding-left: 21px;

  font-family: var(--txt);
  font-size: 11px;
  line-height: 1.8;
}

.adopt-modal-offers li::marker {
  color: var(--acctext);
  font-family: var(--decor);
}

.adopt-claim {
  display: inline-block;

  margin-top: 20px;
  padding: 7px 15px;

  color: var(--link);
  background: rgba(219, 239, 236, 0.8);

  border: 2px solid #fff;
  border-radius: 999px;

  font-family: var(--decor);
  font-size: 12px;
  text-decoration: none;

  box-shadow:
    0 2px 5px rgba(38, 62, 66, 0.12);

  transition:
    color 0.3s ease,
    background-color 0.3s ease,
    transform 0.3s ease;
}

.adopt-claim:hover {
  color: var(--navhov, var(--acctext));
  background: #fff;

  transform: translateY(-2px);
}

.adopt-unavailable {
  margin-top: 18px;

  color: var(--acctext);
  font-family: var(--decor);
  font-size: 11px;
}

/* ============== ACCESSIBILITY ============== */
.sr-only {
  position: absolute;

  width: 1px;
  height: 1px;

  padding: 0;
  margin: -1px;

  overflow: hidden;
  clip: rect(0, 0, 0, 0);

  white-space: nowrap;
  border: 0;
}

/* ============== RESPONSIVE ============== */
@media (max-width: 760px) {
  .adopt-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .adopt-tools {
    justify-content: center;
  }

  .status-filters,
  .adopt-selects {
    justify-content: center;
  }

  .adopt-modal-layout {
    grid-template-columns: 1fr;
  }

  .adopt-modal-image-wrap {
    min-height: 0;
    aspect-ratio: 1 / 1;
  }
}

@media (max-width: 700px) {
  .home-under {
    grid-template-columns: 1fr;
  }

  .home-status {
    border-top: 1px dashed rgba(69, 173, 193, 0.35);
    border-left: 0;
  }

  .home-welcome {
    padding: 24px;
  }
}

@media (max-width: 600px) {
  .social-strip {
    flex-direction: column;
    gap: 5px;

    padding: 12px 16px;
  }

  .social-divider {
    display: none;
  }
}

@media (max-width: 480px) {
  .adopt-catalogue {
    padding: 17px 12px;
  }

  .adopt-grid {
    grid-template-columns: 1fr;
  }

  .adopt-selects {
    width: 100%;
  }

  .adopt-selects label,
  .adopt-selects select {
    width: 100%;
  }

  .adopt-modal-info {
    padding: 34px 20px 24px;
  }
}

/* ============== TERMS PAGE ============== */

.terms-page {
  width: 900px;
  max-width: 100%;

  margin: 0 auto;
  padding: 28px;

  color: var(--text);
  background: rgba(250, 255, 254, 0.92);

  box-shadow:
    inset 0 12px 20px -15px rgba(255, 255, 255, 0.95),
    inset 0 -12px 20px -15px rgba(222, 238, 236, 0.95),
    0 2px 5px rgba(38, 62, 66, 0.14);
}


/* ============== HEADING ============== */

.terms-heading {
  max-width: 660px;
  margin: 0 auto 20px;

  text-align: center;
}

.terms-kicker {
  color: var(--acctext);

  font-family: var(--decor);
  font-size: 13px;
}

.terms-heading h1 {
  margin: 4px 0 9px;

  color: var(--head);

  font-family: var(--headtxt);
  font-size: 35px;
  font-weight: normal;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff,
    0 0 7px #fff;
}

.terms-heading p {
  margin: 0;

  font-family: Georgia, "Times New Roman", serif;
  font-size: 13px;
  line-height: 1.75;
}


/* ============== IMPORTANT NOTICE ============== */

.terms-notice {
  display: flex;
  align-items: center;

  gap: 12px;

  margin: 0 auto 13px;
  padding: 11px 15px;

  background: rgba(219, 239, 236, 0.65);

  border: 2px solid #fff;
  border-radius: 4px;

  box-shadow:
    inset 0 8px 14px -10px rgba(255, 255, 255, 0.95),
    inset 0 -8px 14px -10px rgba(222, 238, 236, 0.95);
}

.terms-notice-symbol {
  flex: 0 0 27px;

  width: 27px;
  height: 27px;

  display: grid;
  place-items: center;

  color: #fff;
  background: var(--acctext);

  border: 2px solid rgba(255, 255, 255, 0.9);
  border-radius: 50%;

  font-family: var(--decor);
  font-size: 14px;

  box-shadow:
    0 2px 4px rgba(38, 62, 66, 0.12);
}

.terms-notice p {
  margin: 0;

  font-family: Georgia, "Times New Roman", serif;
  font-size: 12px;
  line-height: 1.6;
}


/* ============== QUICK SUMMARY STRIP ============== */

.terms-quick {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;

  gap: 8px;

  margin-bottom: 17px;
  padding: 7px 12px;

  color: var(--navhov);

  border-top: 1px dotted rgba(69, 173, 193, 0.38);
  border-bottom: 1px dotted rgba(69, 173, 193, 0.38);

  font-family: var(--decor);
  font-size: 11px;
}

.terms-quick span:nth-child(even) {
  color: var(--acctext);
  opacity: 0.55;
}


/* ============== ACCORDION SECTIONS ============== */

.terms-list {
  display: grid;
  gap: 9px;
}

.terms-section {
  background: rgba(255, 255, 255, 0.7);

  border: 2px solid #fff;
  border-radius: 4px;

  box-shadow:
    inset 0 8px 14px -11px rgba(255, 255, 255, 0.95),
    inset 0 -8px 14px -11px rgba(222, 238, 236, 0.85),
    0 1px 4px rgba(38, 62, 66, 0.1);

  overflow: hidden;
}

.terms-section summary {
  position: relative;

  display: flex;
  align-items: center;

  gap: 11px;

  padding: 11px 42px 11px 13px;

  color: var(--head);
  background: rgba(219, 239, 236, 0.42);

  font-family: var(--headtxt);
  font-size: 21px;

  cursor: pointer;
  list-style: none;

  transition:
    color 0.3s ease,
    background-color 0.3s ease;
}

.terms-section summary::-webkit-details-marker {
  display: none;
}

.terms-section summary::after {
  content: "＋";

  position: absolute;
  right: 15px;
  top: 50%;

  color: var(--acctext);

  font-family: serif;
  font-size: 18px;

  transform: translateY(-50%);
  transition: transform 0.35s ease;
}

.terms-section[open] summary::after {
  content: "−";
  transform: translateY(-50%) rotate(180deg);
}

.terms-section summary:hover {
  color: var(--acctext);
  background: rgba(219, 239, 236, 0.7);
}

.terms-number {
  flex: 0 0 auto;

  color: var(--acctext);

  font-family: var(--decor);
  font-size: 10px;
  opacity: 0.7;
}


/* ============== TERMS TEXT ============== */

.terms-content {
  padding: 16px 20px 18px;

  border-top: 1px dotted rgba(69, 173, 193, 0.3);

  animation: terms-open 0.3s ease;
}

@keyframes terms-open {
  from {
    opacity: 0;
    transform: translateY(-3px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.terms-content p,
.terms-content li {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 12px;
  line-height: 1.75;
}

.terms-content p {
  margin: 0 0 10px;
}

.terms-content p:last-child {
  margin-bottom: 0;
}

.terms-content ul,
.terms-content ol {
  margin: 7px 0 0;
  padding-left: 21px;
}

.terms-content li + li {
  margin-top: 5px;
}

.terms-content li::marker {
  color: var(--acctext);
}


/* ============== TERMS FOOTER ============== */

.terms-footer {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;

  gap: 10px;

  margin-top: 18px;
  padding-top: 15px;

  border-top: 1px dotted rgba(69, 173, 193, 0.4);

  font-family: var(--decor);
  font-size: 12px;
}

.terms-contact {
  appearance: none;
  -webkit-appearance: none;

  padding: 6px 13px;

  color: var(--link);
  background: rgba(219, 239, 236, 0.75);

  border: 2px solid #fff;
  border-radius: 999px;

  font-family: var(--decor);
  font-size: 12px;

  box-shadow:
    0 2px 5px rgba(38, 62, 66, 0.12);

  cursor: pointer;

  transition:
    color 0.3s ease,
    background-color 0.3s ease,
    transform 0.3s ease;
}

.terms-contact:hover {
  color: var(--navhov);
  background: #fff;

  transform: translateY(-2px);
}


/* ============== MOBILE ============== */

@media (max-width: 600px) {
  .terms-page {
    padding: 20px 13px;
  }

  .terms-heading h1 {
    font-size: 30px;
  }

  .terms-notice {
    align-items: flex-start;
  }

  .terms-section summary {
    font-size: 18px;
  }

  .terms-content {
    padding: 14px 15px 17px;
  }
}
/* ============== CUSTOM TOOLTIPS ============== */

.love-tooltip {
  position: fixed;
  left: 0;
  top: 0;
  z-index: 99999;
  width: max-content;
  max-width: min(280px, calc(100vw - 24px)); 
  padding: 6px 13px;

  color: var(--text);
  background: rgba(255, 255, 255, 0.96);

  border-radius: 3px;
  background-clip: padding-box;

  border: 9px solid transparent;

  border-image:
    url("https://harnessed.netlify.app/assets/lacebord.png")
    10% round;

  border-image-outset: 0;

  font-family: var(--decor);
  font-size: 12px;
  line-height: 1.4;
  text-align: center;
  white-space: normal;
  overflow-wrap: break-word;
  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff;

  opacity: 0;
  visibility: hidden;

  transform:
    translate(14px, -50%)
    translateY(4px);

  transition:
    opacity 0.25s ease,
    visibility 0.25s ease,
    transform 0.25s ease;

  pointer-events: none;
}


/* visible state */

.love-tooltip.is-visible {
  opacity: 1;
  visibility: visible;

  transform:
    translate(14px, -50%)
    translateY(0);
}


/* do not show tooltip text wrapping offscreen */
@media (max-width: 500px) {
  .love-tooltip {
    max-width: 210px;
    white-space: normal;
  }
}

/* ============== TOAST PAGE ============== */

.toast-page {
  width: 900px;
  max-width: 100%;

  margin: 0 auto;

  color: var(--text);
  background: rgba(250, 255, 254, 0.92);

  box-shadow:
    inset 0 12px 20px -15px rgba(255, 255, 255, 0.95),
    inset 0 -12px 20px -15px rgba(222, 238, 236, 0.95),
    0 2px 5px rgba(38, 62, 66, 0.14);

  overflow: hidden;
}


/* ============== WEBMASTER PROFILE ============== */

.webmaster-profile {
  display: grid;
  grid-template-columns: minmax(190px, 0.65fr) minmax(0, 1.65fr);

  gap: 25px;

  padding: 28px;

  background:
    linear-gradient(
      135deg,
      rgba(255, 255, 255, 0.72),
      rgba(219, 239, 236, 0.38)
    );

  border-bottom: 1px dotted rgba(69, 173, 193, 0.38);
}


/* webmaster photograph */

.webmaster-photo {
  position: relative;

  margin: 0;
  padding: 7px 7px 25px;

  background: rgba(255, 255, 255, 0.9);

  border: 2px solid #fff;
  border-radius: 4px;

  box-shadow:
    inset 0 8px 14px -10px rgba(255, 255, 255, 0.95),
    inset 0 -8px 14px -10px rgba(222, 238, 236, 0.9),
    0 3px 7px rgba(38, 62, 66, 0.14);
}

.webmaster-photo img {
  width: 100%;
  aspect-ratio: 1 / 1;

  display: block;
  object-fit: cover;

  border: 1px solid rgba(69, 173, 193, 0.2);
}

.webmaster-photo figcaption {
  position: absolute;
  left: 50%;
  bottom: 4px;

  width: 100%;

  color: var(--acctext);

  font-family: var(--decor);
  font-size: 10px;
  text-align: center;

  transform: translateX(-50%);
}


/* webmaster information */

.webmaster-info {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.webmaster-kicker {
  color: var(--acctext);

  font-family: var(--decor);
  font-size: 12px;
}

.webmaster-info h1 {
  margin: 2px 0 3px;

  color: var(--head);

  font-family: var(--headtxt);
  font-size: 36px;
  font-weight: normal;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff,
    0 0 7px #fff;
}

.webmaster-meta {
  margin: 0 0 13px;

  color: var(--navhov);

  font-family: var(--decor);
  font-size: 11px;
}

.webmaster-meta span {
  margin: 0 5px;

  color: var(--acctext);
  opacity: 0.6;
}

.webmaster-info > p:not(.webmaster-meta) {
  margin: 0;

  font-family: Georgia, "Times New Roman", serif;
  font-size: 12px;
  line-height: 1.75;
}


/* webmaster links */

.webmaster-links {
  display: flex;
  align-items: center;
  flex-wrap: wrap;

  gap: 8px;

  margin-top: 14px;

  font-family: var(--decor);
  font-size: 12px;
}

.webmaster-links a {
  display: inline-block;

  color: var(--link);
  text-decoration: none;

  transition:
    color 0.3s ease,
    text-shadow 0.3s ease,
    transform 0.3s ease;
}

.webmaster-links a:hover {
  color: var(--navhov);

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff;

  transform: translateY(-2px);
}

.webmaster-links > span {
  color: var(--acctext);
  opacity: 0.55;
}


/* ============== TOAST PROFILE ROW ============== */

.toast-profile {
  display: grid;

  grid-template-columns:
    minmax(0, 1.25fr)
    minmax(180px, 0.8fr)
    minmax(170px, 0.72fr);

  gap: 18px;

  padding: 27px 28px 30px;

  align-items: stretch;
}


/* Toast biography */

.toast-bio {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.toast-bio-kicker {
  color: var(--acctext);

  font-family: var(--decor);
  font-size: 11px;
}

.toast-bio h2 {
  margin: 0;

  color: var(--head);

  font-family: var(--headtxt);
  font-size: 47px;
  font-weight: normal;
  line-height: 1;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff,
    0 0 8px #fff;
}

.toast-meta {
  margin: 5px 0 14px;

  color: var(--navhov);

  font-family: var(--decor);
  font-size: 10px;
}

.toast-meta span {
  margin: 0 4px;

  color: var(--acctext);
  opacity: 0.6;
}

.toast-description {
  margin: 0;

  font-family: Georgia, "Times New Roman", serif;
  font-size: 12px;
  line-height: 1.75;
}


/* Toast photograph */

.toast-picture {
  position: relative;

  margin: 0;
  padding: 7px 7px 25px;

  background: rgba(255, 255, 255, 0.86);

  border: 2px solid #fff;
  border-radius: 4px;

  box-shadow:
    inset 0 8px 14px -10px rgba(255, 255, 255, 0.95),
    inset 0 -8px 14px -10px rgba(222, 238, 236, 0.9),
    0 3px 7px rgba(38, 62, 66, 0.13);

  transform: rotate(0.8deg);

  transition:
    box-shadow 0.35s ease,
    transform 0.35s ease;
}

.toast-picture:hover {
  transform: translateY(-3px) rotate(0);

  box-shadow:
    0 7px 13px rgba(38, 62, 66, 0.16);
}

.toast-picture img {
  width: 100%;
  height: 100%;
  min-height: 240px;

  display: block;
  object-fit: cover;

  border: 1px solid rgba(69, 173, 193, 0.2);
}

.toast-picture figcaption {
  position: absolute;
  left: 50%;
  bottom: 4px;

  width: 100%;

  color: var(--acctext);

  font-family: var(--decor);
  font-size: 9px;
  text-align: center;

  transform: translateX(-50%);
}


/* ============== UP-SCROLLING CREDITS ============== */

.toast-credits {
  min-width: 0;

  padding: 14px 12px 10px;

  background: rgba(219, 239, 236, 0.42);

  border: 2px solid #fff;
  border-radius: 4px;

  box-shadow:
    inset 0 9px 15px -11px rgba(255, 255, 255, 0.95),
    inset 0 -9px 15px -11px rgba(222, 238, 236, 0.9);
}

.toast-credits header {
  text-align: center;
}

.toast-credits header span {
  color: var(--acctext);

  font-family: var(--decor);
  font-size: 9px;
}

.toast-credits h3 {
  margin: 0 0 7px;

  color: var(--head);

  font-family: var(--headtxt);
  font-size: 22px;
  font-weight: normal;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff;
}

.credits-window {
  position: relative;

  height: 215px;

  overflow: hidden;

  border-top: 1px dotted rgba(69, 173, 193, 0.35);
  border-bottom: 1px dotted rgba(69, 173, 193, 0.35);

  mask-image: linear-gradient(
    to bottom,
    transparent,
    #000 9%,
    #000 91%,
    transparent
  );

  -webkit-mask-image: linear-gradient(
    to bottom,
    transparent,
    #000 9%,
    #000 91%,
    transparent
  );
}

.credits-marquee {
  width: 100%;
  height: 100%;
}

.credits-list {
  padding: 28px 5px;
}

.credit-entry {
  margin-bottom: 22px;

  text-align: center;
}

.credit-entry span {
  display: block;

  margin-bottom: 3px;

  color: var(--navhov);

  font-family: Georgia, "Times New Roman", serif;
  font-size: 10px;
}

.credit-entry a,
.credit-entry strong {
  color: var(--link);

  font-family: var(--decor);
  font-size: 10px;
  font-weight: normal;
  text-decoration: none;
}

.credit-entry a:hover {
  color: var(--navhov);
}

.credits-note {
  margin: 6px 0 0;

  color: var(--acctext);

  font-family: var(--decor);
  font-size: 8px;
  text-align: center;
  opacity: 0.65;
}


/* ============== OFF QUOTE ============== */

.off-quote {
  position: relative;

  margin: 0;
  padding: 27px 35px 28px;

  background:
    linear-gradient(
      90deg,
      rgba(219, 239, 236, 0.82),
      rgba(255, 255, 255, 0.92),
      rgba(219, 239, 236, 0.82)
    );

  border-top: 2px solid #fff;

  text-align: center;

  overflow: hidden;
}

.off-quote::before,
.off-quote::after {
  content: "✦";

  position: absolute;
  top: 50%;

  color: var(--acctext);
  font-size: 16px;

  transform: translateY(-50%);
  opacity: 0.55;
}

.off-quote::before {
  left: 28px;
}

.off-quote::after {
  right: 28px;
}

.off-game-title {
  display: block;

  margin-bottom: 5px;

  font-family: var(--decor);
  font-size: 9px;
  letter-spacing: 4px;
  text-transform: uppercase;

  animation:
    off-colors 7s linear infinite;
}

.off-quote p {
  margin: 0 auto;

  color: var(--head);

  font-family: var(--headtxt);
  font-size: 23px;
  line-height: 1.4;

  text-shadow:
    1px 0 #fff,
    -1px 0 #fff,
    0 1px #fff,
    0 -1px #fff,
    0 0 6px #fff;

  animation:
    off-colors 7s linear infinite;
}

.off-quote cite {
  display: block;

  margin-top: 6px;

  color: var(--acctext);

  font-family: var(--decor);
  font-size: 9px;
  font-style: normal;
}


/* color-changing quote */

@keyframes off-colors {
  0% {
    color: var(--head);
  }

  25% {
    color: var(--acctext);
  }

  50% {
    color: var(--link);
  }

  75% {
    color: var(--navhov);
  }

  100% {
    color: var(--head);
  }
}


/* ============== RESPONSIVE ============== */

@media (max-width: 760px) {
  .webmaster-profile {
    grid-template-columns: 190px minmax(0, 1fr);
  }

  .toast-profile {
    grid-template-columns: 1fr 1fr;
  }

  .toast-bio {
    grid-column: 1 / -1;
  }

  .toast-credits {
    min-height: 280px;
  }
}

@media (max-width: 570px) {
  .webmaster-profile,
  .toast-profile {
    grid-template-columns: 1fr;
  }

  .webmaster-photo,
  .toast-picture {
    width: min(340px, 100%);
    margin: 0 auto;
  }

  .webmaster-info,
  .toast-bio {
    text-align: center;
  }

  .webmaster-links {
    justify-content: center;
  }

  .toast-profile {
    padding-left: 15px;
    padding-right: 15px;
  }

  .webmaster-profile {
    padding-left: 15px;
    padding-right: 15px;
  }

  .toast-picture img {
    min-height: 300px;
  }

  .off-quote {
    padding-left: 45px;
    padding-right: 45px;
  }
}

.off-gradient {
  display: inline-block;

background-image: linear-gradient(
  90deg,
  #ffffff,
  #d1d1d1,
  #e6ff3f,
  #9730d9,
  #ff0000,
  #000000,
  #ffffff
);

  background-size: 400% 100%;

  -webkit-background-clip: text;
  background-clip: text;

  color: transparent;
  -webkit-text-fill-color: transparent;

  animation: off-gradient-shift 20s linear infinite;

  text-shadow:
    0 0 7px rgba(255, 255, 255, 0.55);
}

@keyframes off-gradient-shift {
  from {
    background-position: 0% center;
  }

  to {
    background-position: 400% center;
  }
}

@media (prefers-reduced-motion: reduce) {
  .off-gradient {
    animation: none;
    background-position: center;
  }
}

/* ============== JAVAHELL ============== */

.javahell {
  display: inline-block;

  color: #ffe600;
  font-family: var(--decor);
  font-size: 18px;
  letter-spacing: 1px;

  text-shadow:
    2px 0 #000,
    -2px 0 #000,
    0 2px #000,
    0 -2px #000,
    2px 2px #000,
    -2px 2px #000,
    2px -2px #000,
    -2px -2px #000;

  transform-origin: center;

  animation: javahell-foolery 3.8s ease-in-out infinite;
}

@keyframes javahell-foolery {
  0%,
  68%,
  100% {
    transform:
      rotate(0deg)
      scale(1)
      skew(0deg);
  }

  72% {
    transform:
      rotate(-8deg)
      scale(1.08, 0.92)
      skew(-4deg);
  }

  78% {
    transform:
      rotate(370deg)
      scale(0.9, 1.12)
      skew(5deg);
  }

  84% {
    transform:
      rotate(354deg)
      scale(1.12, 0.9)
      skew(-3deg);
  }

  90% {
    transform:
      rotate(363deg)
      scale(0.97, 1.04);
  }

  95% {
    transform:
      rotate(358deg)
      scale(1.02, 0.98);
  }
}

@media (prefers-reduced-motion: reduce) {
  .javahell {
    animation: none;
  }
}
/* ============== MAC TERMINAL LOADER ============== */

.mac-loader {
  position: fixed;
  inset: 0;

  z-index: 999999;

  display: grid;
  place-items: center;

  padding: 20px;

  background:
    radial-gradient(
      circle at center,
      rgba(219, 239, 236, 0.98),
      rgba(188, 218, 213, 0.99)
    );

  cursor: pointer;

  animation:
    mac-loader-exit 0.55s ease 11.45s forwards;
}


/* ============== TERMINAL WINDOW ============== */

.mac-terminal {
  width: min(680px, 100%);

  background: #0b0d0c;

  border: 1px solid rgba(0, 0, 0, 0.7);
  border-radius: 10px;

  box-shadow:
    0 24px 60px rgba(22, 43, 41, 0.32),
    0 6px 18px rgba(22, 43, 41, 0.24);

  overflow: hidden;

  animation:
    terminal-window-arrive 0.5s ease both;
}


/* ============== MACOS TITLE BAR ============== */

.terminal-titlebar {
  position: relative;

  min-height: 34px;

  display: grid;
  grid-template-columns: 90px 1fr 90px;
  align-items: center;

  padding: 0 12px;

  color: #4a4a4a;
  background:
    linear-gradient(
      to bottom,
      #ededed,
      #d4d4d4
    );

  border-bottom: 1px solid #a8a8a8;

  font-family:
    -apple-system,
    BlinkMacSystemFont,
    "Helvetica Neue",
    Arial,
    sans-serif;

  font-size: 11px;
  text-align: center;
}

.terminal-title {
  overflow: hidden;

  white-space: nowrap;
  text-overflow: ellipsis;
}

.terminal-title-spacer {
  display: block;
}


/* ============== TRAFFIC LIGHT BUTTONS ============== */

.terminal-buttons {
  display: flex;
  align-items: center;

  gap: 8px;
}

.terminal-buttons span {
  width: 12px;
  height: 12px;

  display: block;

  border: 1px solid rgba(0, 0, 0, 0.17);
  border-radius: 50%;

  box-shadow:
    inset 0 1px 1px rgba(255, 255, 255, 0.35);
}

.terminal-close {
  background: #ff5f57;
}

.terminal-minimize {
  background: #febc2e;
}

.terminal-expand {
  background: #28c840;
}


/* ============== TERMINAL SCREEN ============== */

.terminal-screen {
  position: relative;

  min-height: 380px;

  padding: 24px 26px 28px;

  color: #e7e7e7;
  background:
    linear-gradient(
      rgba(255, 255, 255, 0.012),
      rgba(255, 255, 255, 0.012)
    ),
    #0b0d0c;

  font-family:
    ui-monospace,
    SFMono-Regular,
    Menlo,
    Monaco,
    Consolas,
    "Liberation Mono",
    monospace;

  font-size: 13px;
  line-height: 1.65;

  overflow: hidden;
}


/* very subtle terminal scan lines */

.terminal-screen::after {
  content: "";

  position: absolute;
  inset: 0;

  background:
    repeating-linear-gradient(
      to bottom,
      transparent 0,
      transparent 3px,
      rgba(255, 255, 255, 0.015) 4px
    );

  pointer-events: none;
}


/* ============== TERMINAL LINES ============== */

.terminal-line {
  position: relative;
  z-index: 1;

  min-height: 21px;

  margin: 0;

  opacity: 0;

  transform: translateY(2px);

  animation:
    terminal-line-appear 0.18s steps(2, end) forwards;

  animation-delay: var(--delay);
}

.terminal-output {
  color: #c7c7c7;
}


/* ============== PROMPT COLORS ============== */

.terminal-user {
  color: #8be9fd;
}

.terminal-at {
  color: #f8f8f2;
}

.terminal-host {
  color: #bd93f9;
}

.terminal-path {
  color: #50fa7b;
}

.terminal-symbol {
  color: #ff79c6;
}

.terminal-command {
  color: #f8f8f2;
}


/* ============== OUTPUT COLORS ============== */

.terminal-ok {
  color: #50fa7b;
}

.terminal-error {
  color: #ff5555;
  font-weight: bold;

  animation:
    terminal-line-appear 0.18s steps(2, end) forwards,
    terminal-error-shake 0.14s linear 6.15s 3;

  animation-delay:
    var(--delay),
    0s;
}

.terminal-error-detail {
  color: #ffb86c;
}

.terminal-success {
  color: #50fa7b;
}

.terminal-final {
  color: #f1fa8c;
}


/* ============== FALLING BRACKET ============== */

.terminal-bracket-slot {
  position: relative;

  display: inline-block;

  width: 13px;
  height: 18px;

  vertical-align: middle;
}

.terminal-falling-bracket {
  position: absolute;
  left: 1px;
  top: 0;

  color: #ff5555;

  font-size: 17px;
  font-weight: bold;
  line-height: 1;

  opacity: 0;

  transform:
    translateY(-260px)
    rotate(-45deg);

  animation:
    terminal-bracket-fall
    1.05s
    cubic-bezier(0.2, 0.82, 0.3, 1.25)
    6.9s
    forwards;
}


/* ============== BLINKING CURSOR ============== */

.terminal-cursor {
  display: inline-block;

  width: 8px;
  height: 15px;

  margin-left: 4px;

  background: #f8f8f2;

  vertical-align: -2px;

  animation:
    terminal-cursor-blink 0.75s steps(1, end) infinite;
}


/* ============== SKIP TEXT ============== */

.terminal-skip {
  margin: 0;
  padding: 7px 12px 9px;

  color: rgba(255, 255, 255, 0.4);
  background: #0b0d0c;

  border-top: 1px solid rgba(255, 255, 255, 0.06);

  font-family:
    ui-monospace,
    SFMono-Regular,
    Menlo,
    Monaco,
    Consolas,
    monospace;

  font-size: 9px;
  text-align: center;
}


/* ============== ANIMATIONS ============== */

@keyframes terminal-window-arrive {
  from {
    opacity: 0;

    transform:
      translateY(12px)
      scale(0.97);
  }

  to {
    opacity: 1;

    transform:
      translateY(0)
      scale(1);
  }
}


@keyframes terminal-line-appear {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}


@keyframes terminal-error-shake {
  0%,
  100% {
    transform: translateX(0);
  }

  25% {
    transform: translateX(-4px);
  }

  75% {
    transform: translateX(4px);
  }
}


@keyframes terminal-bracket-fall {
  0% {
    opacity: 0;

    transform:
      translateY(-260px)
      rotate(-45deg);
  }

  15% {
    opacity: 1;
  }

  70% {
    transform:
      translateY(4px)
      rotate(10deg);
  }

  82% {
    transform:
      translateY(-7px)
      rotate(-5deg);
  }

  91% {
    transform:
      translateY(2px)
      rotate(3deg);
  }

  100% {
    opacity: 1;

    transform:
      translateY(0)
      rotate(0deg);
  }
}


@keyframes terminal-cursor-blink {
  0%,
  48% {
    opacity: 1;
  }

  49%,
  100% {
    opacity: 0;
  }
}


/*
  Exit begins at 11.45 seconds and lasts 0.55 seconds.
  Total loader time: exactly 12 seconds.
*/

@keyframes mac-loader-exit {
  to {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
  }
}


/* ============== CLICK TO SKIP ============== */

.mac-loader.is-skipping {
  animation: none;

  opacity: 0;
  visibility: hidden;
  pointer-events: none;

  transition:
    opacity 0.35s ease,
    visibility 0.35s ease;
}


/* ============== MOBILE ============== */

@media (max-width: 560px) {
  .mac-loader {
    padding: 12px;
  }

  .terminal-screen {
    min-height: 405px;

    padding: 20px 17px 24px;

    font-size: 10px;
    line-height: 1.8;
  }

  .terminal-titlebar {
    grid-template-columns: 75px 1fr 75px;
  }

  .terminal-buttons {
    gap: 6px;
  }

  .terminal-buttons span {
    width: 10px;
    height: 10px;
  }
}


/* ============== REDUCED MOTION ============== */

@media (prefers-reduced-motion: reduce) {
  .mac-loader {
    animation-delay: 1.2s;
  }

  .mac-terminal,
  .terminal-line,
  .terminal-error,
  .terminal-falling-bracket {
    animation-duration: 0.01ms;
    animation-delay: 0s;
  }
}

/* ============== LIGHT SITE OVERLAY ============== */

.site-overlay {
  position: fixed;
  inset: 0;

  z-index: 9000;

  overflow: hidden;

  pointer-events: none;
}


/* individual pieces of debris */

.site-overlay span {
  position: absolute;
  left: var(--x);
  top: -30px;

  color: rgba(119, 183, 173, 0.25);

  font-family:
    ui-monospace,
    SFMono-Regular,
    Menlo,
    Monaco,
    monospace;

  font-size: var(--size);
  line-height: 1;

  text-shadow:
    1px 0 rgba(255, 255, 255, 0.7),
    -1px 0 rgba(255, 255, 255, 0.7),
    0 1px rgba(255, 255, 255, 0.7),
    0 -1px rgba(255, 255, 255, 0.7);

  opacity: 0;

  animation:
    overlay-symbol-fall
    var(--duration)
    linear
    var(--delay)
    infinite;
}


/* alternate the accent colors */

.site-overlay span:nth-child(3n + 1) {
  color: rgba(168, 77, 110, 0.2);
}

.site-overlay span:nth-child(3n + 2) {
  color: rgba(198, 3, 75, 0.13);
}


/* drifting fall */

@keyframes overlay-symbol-fall {
  0% {
    opacity: 0;

    transform:
      translate3d(0, -30px, 0)
      rotate(0deg);
  }

  10% {
    opacity: 0.75;
  }

  45% {
    transform:
      translate3d(18px, 52vh, 0)
      rotate(145deg);
  }

  85% {
    opacity: 0.55;
  }

  100% {
    opacity: 0;

    transform:
      translate3d(-15px, 108vh, 0)
      rotate(330deg);
  }
}


/* keep it extremely subtle on phones */

@media (max-width: 600px) {
  .site-overlay span {
    opacity: 0;
  }

  .site-overlay span:nth-child(even) {
    display: none;
  }
}


/* accessibility */

@media (prefers-reduced-motion: reduce) {
  .site-overlay {
    display: none;
  }
}

/* ============== PRETTY SCROLLBAR ============== */

/* Firefox */

html {
  scrollbar-width: thin;
  scrollbar-color: var(--head) rgba(219, 239, 236, 0.65);
}


/* Chrome, Safari, Edge */

::-webkit-scrollbar {
  width: 13px;
  height: 13px;
}

::-webkit-scrollbar-track {
  background:
    linear-gradient(
      to bottom,
      rgba(219, 239, 236, 0.82),
      rgba(255, 255, 255, 0.92),
      rgba(219, 239, 236, 0.82)
    );

  border-left: 1px solid rgba(119, 183, 173, 0.2);
}

::-webkit-scrollbar-thumb {
  min-height: 45px;

  background:
    linear-gradient(
      180deg,
      var(--head),
      var(--acctext),
      var(--link),
      var(--head)
    );

  background-size: 100% 300%;

  border: 3px solid transparent;
  border-radius: 999px;

  background-clip: padding-box;

  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.65);

  animation:
    scrollbar-gradient 6s linear infinite;
}

::-webkit-scrollbar-thumb:hover {
  background:
    linear-gradient(
      180deg,
      var(--link),
      var(--acctext),
      var(--head),
      var(--link)
    );

  background-size: 100% 300%;
  background-clip: padding-box;
}

::-webkit-scrollbar-corner {
  background: rgba(219, 239, 236, 0.82);
}


/* subtle moving color */

@keyframes scrollbar-gradient {
  from {
    background-position: center 0%;
  }

  to {
    background-position: center 300%;
  }
}


/* reduced motion */

@media (prefers-reduced-motion: reduce) {
  ::-webkit-scrollbar-thumb {
    animation: none;
  }
}
