@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap');

:root {
  --bg: #0a0a0b;
  --surface: #0d0c0d;
  --text: #ece7e6;
  --accent: #c8202f;
  --a200: #ffdcde;
  --a300: #ffb3b8;
  --a400: #f4767f;
  --n100: #f6f4f3;
  --n300: #d0cbc9;
  --n500: #918a89;
  --n600: #746d6c;
  --n700: #585251;
  --line: rgba(236, 231, 230, .11);
  --head: "Inter", system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, monospace;
}

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  background: var(--bg);
  overflow-x: clip;
}

body {
  color: var(--text);
  font-family: var(--head);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}

img {
  display: block;
  max-width: 100%;
}

a {
  color: var(--a300);
  text-decoration: none;
}

a:hover {
  color: var(--a200);
}

::selection {
  background: rgba(200, 32, 47, .35);
}

:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}

@keyframes riseIn {
  from {
    opacity: 0;
    transform: translateY(26px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes breathe {

  0%,
  100% {
    transform: scale(1) rotate(0deg);
  }

  50% {
    transform: scale(1.045) rotate(2.2deg);
  }
}

@keyframes pulseDot {

  0%,
  100% {
    opacity: 1;
    transform: scale(1);
  }

  50% {
    opacity: .3;
    transform: scale(.75);
  }
}

@keyframes caret {

  0%,
  45% {
    opacity: 1;
  }

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

@keyframes loaderOut {
  to {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
  }
}

@keyframes loaderFill {
  from {
    width: 0%;
  }

  to {
    width: 100%;
  }
}

@keyframes loaderRose {
  0% {
    opacity: 0;
    transform: scale(.7) rotate(-22deg);
  }

  55% {
    opacity: 1;
    transform: scale(1.04) rotate(3deg);
  }

  100% {
    opacity: 1;
    transform: scale(1) rotate(0deg);
  }
}

@keyframes sweep {
  from {
    transform: translateX(-110%);
  }

  to {
    transform: translateX(210%);
  }
}

@keyframes drift {

  0%,
  100% {
    transform: translate(0, 0);
  }

  50% {
    transform: translate(-10px, 14px);
  }
}

@keyframes glowRing {

  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(200, 32, 47, .42);
  }

  50% {
    box-shadow: 0 0 0 7px rgba(200, 32, 47, 0);
  }
}

@keyframes shimmerText {
  0% {
    background-position: 180% 0;
  }

  100% {
    background-position: -80% 0;
  }
}

@keyframes wipeIn {
  from {
    clip-path: inset(0 100% 0 0);
  }

  to {
    clip-path: inset(0 0 0 0);
  }
}

@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: .001ms !important;
    animation-delay: 0ms !important;
  }
}

/* Loader */

#loading-screen {
  position: fixed;
  inset: 0;
  z-index: 60;
  background: #0a0a0b;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 26px;
  animation: loaderOut 700ms 1850ms cubic-bezier(.4, 0, 1, 1) forwards;
}

.loader-rose {
  width: 112px;
  height: 112px;
  mix-blend-mode: lighten;
  animation: loaderRose 1100ms cubic-bezier(.2, .7, .2, 1) both;
}

.loader-bar {
  position: relative;
  width: 148px;
  height: 1px;
  background: rgba(236, 231, 230, .14);
  overflow: hidden;
}

.loader-fill {
  height: 100%;
  background: linear-gradient(90deg, #9a1622, #c8202f 60%, #f4767f);
  animation: loaderFill 1800ms cubic-bezier(.4, 0, .2, 1) both;
}

.loader-name {
  margin: 0;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: #585251;
  animation: fadeIn 700ms 250ms both;
}

/* Layout */

main {
  position: relative;
  max-width: 600px;
  margin: 0 auto;
  padding: clamp(30px, 9vw, 64px) clamp(20px, 6vw, 40px) 0;
}

.bg-rose {
  position: absolute;
  pointer-events: none;
  z-index: 0;
}

.bg-rose-left {
  left: -24%;
  bottom: 6%;
  width: min(340px, 74vw);
  mix-blend-mode: lighten;
  opacity: .14;
  animation: drift 17s ease-in-out infinite;
  will-change: transform;
}

.bg-rose-hero {
  right: -30%;
  top: -6%;
  width: min(520px, 108vw);
  mix-blend-mode: lighten;
  opacity: .42;
  animation: breathe 11s ease-in-out infinite;
  will-change: transform;
}

section {
  position: relative;
  z-index: 1;
}

/* Hero */

.hero-eyebrow {
  margin: 0 0 18px;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--a400);
  animation: riseIn 700ms cubic-bezier(.2, .7, .2, 1) both;
}

.hero-title {
  margin: 0;
  font-weight: 500;
  font-size: clamp(44px, 13vw, 72px);
  line-height: .9;
  letter-spacing: -.045em;
  background: linear-gradient(100deg, #f6f4f3 0%, #f6f4f3 38%, #ffb3b8 50%, #f6f4f3 62%, #f6f4f3 100%);
  background-size: 250% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: riseIn 800ms 60ms cubic-bezier(.2, .7, .2, 1) both, shimmerText 6s 1.4s ease-in-out infinite;
}

.hero-divider {
  height: 1px;
  margin: clamp(22px, 6vw, 30px) 0 clamp(18px, 5vw, 24px);
  background: linear-gradient(90deg, var(--accent) 0, var(--accent) 76px, var(--line) 76px, var(--line) calc(100% - 48px), transparent 100%);
  animation: wipeIn 900ms 220ms cubic-bezier(.2, .7, .2, 1) both;
}

.hero-subtitle {
  margin: 0;
  font-size: 16px;
  line-height: 1.55;
  color: var(--n300);
  max-width: 40ch;
  text-wrap: pretty;
  animation: riseIn 800ms 160ms cubic-bezier(.2, .7, .2, 1) both;
}

.hero-status {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: clamp(24px, 6vw, 32px);
  animation: riseIn 800ms 240ms cubic-bezier(.2, .7, .2, 1) both;
}

.hero-avatar {
  width: 54px;
  height: 54px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid rgba(200, 32, 47, .5);
  flex: none;
  animation: glowRing 3.2s ease-out infinite;
}

.status-pill {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  border: 1px solid rgba(200, 32, 47, .45);
  border-radius: 999px;
  font-family: var(--mono);
  font-size: 11px;
  color: var(--a300);
}

.status-pill .dot {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--accent);
  animation: pulseDot 2.4s ease-in-out infinite;
}

/* Featured link */

.featured-wrap {
  margin-top: clamp(36px, 9vw, 56px);
  animation: riseIn 800ms 320ms cubic-bezier(.2, .7, .2, 1) both;
}

.featured-card {
  position: relative;
  display: block;
  overflow: hidden;
  padding: 22px 20px;
  border: 1px solid rgba(200, 32, 47, .55);
  border-radius: 8px;
  background: linear-gradient(150deg, #2a0a0e 0%, #140507 72%);
  color: var(--text);
  transition: border-color 220ms ease, transform 220ms cubic-bezier(.2, .7, .2, 1), box-shadow 260ms ease;
}

.featured-card:hover {
  border-color: #f4767f;
  transform: translateY(-2px);
  box-shadow: 0 12px 30px rgba(200, 32, 47, .18);
}

.featured-card:active {
  transform: translateY(0);
}

.featured-rose {
  position: absolute;
  right: -34px;
  bottom: -52px;
  width: 190px;
  mix-blend-mode: lighten;
  opacity: .5;
  pointer-events: none;
}

.featured-sweep {
  position: absolute;
  top: 0;
  left: 0;
  width: 38%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 220, 222, .07), transparent);
  animation: sweep 4.4s 1.2s ease-in-out infinite;
  pointer-events: none;
}

.featured-label {
  position: relative;
  margin: 0 0 10px;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--a300);
}

.featured-title {
  position: relative;
  margin: 0 0 8px;
  font-weight: 500;
  font-size: 26px;
  letter-spacing: -.03em;
  color: var(--n100);
}

.featured-desc {
  position: relative;
  margin: 0;
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--n300);
  max-width: 32ch;
}

.featured-cta {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 18px;
  font-family: var(--mono);
  font-size: 12px;
  color: var(--a200);
}

/* Links list */

.links-wrap {
  margin-top: clamp(30px, 8vw, 44px);
}

.section-label {
  margin: 0 0 16px;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--n600);
  animation: fadeIn 700ms 380ms both;
}

.links-list {
  display: grid;
  gap: 10px;
}

.link-row {
  display: flex;
  align-items: center;
  gap: 16px;
  min-height: 64px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  transition: border-color 200ms ease, background 200ms ease, transform 200ms cubic-bezier(.2, .7, .2, 1);
  animation: riseIn 700ms cubic-bezier(.2, .7, .2, 1) both;
}

.link-row:hover {
  border-color: rgba(200, 32, 47, .6);
  background: #120e0f;
  transform: translateX(4px);
}

.link-row:active {
  transform: translateX(1px);
}

.link-row .row-icon {
  font-size: 19px;
  color: var(--a400);
  width: 22px;
  text-align: center;
  flex: none;
}

.link-row .row-body {
  flex: 1;
  min-width: 0;
}

.link-row .row-title {
  display: block;
  font-size: 15.5px;
  font-weight: 500;
  color: var(--n100);
}

.link-row .row-sub {
  display: block;
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--n600);
}

.link-row .row-arrow {
  font-size: 12px;
  color: var(--n700);
  flex: none;
}

/* Focus tags */

.focus-wrap {
  margin-top: clamp(32px, 8vw, 48px);
  animation: fadeIn 800ms 720ms both;
}

.focus-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.focus-tag {
  display: inline-flex;
  align-items: center;
  padding: 5px 11px;
  border: 1px solid var(--accent);
  border-radius: 6px;
  font-size: 11.5px;
  letter-spacing: .02em;
  color: var(--a300);
  transition: background 200ms ease, color 200ms ease;
  animation: riseIn 600ms cubic-bezier(.2, .7, .2, 1) both;
}

.focus-tag:hover {
  background: rgba(200, 32, 47, .16);
  color: var(--a200);
}

/* Quote */

.quote-wrap {
  margin-top: clamp(34px, 9vw, 52px);
  overflow: hidden;
  padding: clamp(24px, 7vw, 32px) clamp(20px, 6vw, 28px);
  border: 1px solid var(--line);
  border-top: 1px solid rgba(200, 32, 47, .55);
  border-radius: 8px;
  background: linear-gradient(160deg, #131011 0%, #0c0b0c 70%);
  animation: riseIn 800ms 760ms cubic-bezier(.2, .7, .2, 1) both;
}

.quote-rose {
  position: absolute;
  right: -46px;
  top: -38px;
  width: 170px;
  mix-blend-mode: lighten;
  opacity: .34;
  pointer-events: none;
  animation: breathe 13s ease-in-out infinite;
}

.quote-mark {
  position: absolute;
  left: 14px;
  top: 2px;
  font-family: var(--head);
  font-size: 96px;
  line-height: 1;
  color: rgba(200, 32, 47, .16);
  pointer-events: none;
  user-select: none;
}

.quote-text {
  position: relative;
  margin: 0;
  font-size: clamp(17px, 4.6vw, 19px);
  line-height: 1.5;
  letter-spacing: -.01em;
  color: var(--n100);
  min-height: 3.4em;
  max-width: 34ch;
  text-wrap: pretty;
}

.quote-caret {
  display: inline-block;
  width: 2px;
  height: 1em;
  margin-left: 2px;
  vertical-align: -2px;
  background: var(--accent);
  animation: caret 1s steps(1) infinite;
}

.quote-foot {
  position: relative;
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 18px;
}

.quote-foot .line {
  width: 24px;
  height: 1px;
  background: var(--accent);
}

.quote-foot .label {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--n600);
}

/* Footer */

.page-footer {
  margin-top: clamp(44px, 11vw, 72px);
  padding: 24px 0 clamp(36px, 10vw, 56px);
  border-top: 1px solid var(--line);
  display: flex;
  align-items: center;
  gap: 12px;
  animation: fadeIn 800ms 820ms both;
}

.footer-rose {
  width: 30px;
  height: 30px;
  mix-blend-mode: lighten;
  flex: none;
  animation: breathe 9s ease-in-out infinite;
}

.footer-info {
  flex: 1;
  min-width: 0;
}

.footer-info .name {
  margin: 0;
  font-size: 13.5px;
  font-weight: 500;
  color: var(--text);
}

.footer-info .tag {
  margin: 2px 0 0;
  font-family: var(--mono);
  font-size: 11px;
  color: var(--n700);
}

.footer-link {
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--a300);
}
