:root {
  color-scheme: light;
  --primary: #8436c4;
  --white: #fff;
  --indigo: #4b0082;
  font-family: "Trebuchet MS", Trebuchet, Arial, sans-serif;
  font-weight: 700;
  color: var(--indigo);
  background: var(--white);
}

* { box-sizing: border-box; }

body {
  margin: 0;
  min-width: 240px;
  min-height: 100svh;
  display: grid;
  grid-template-rows: 1fr auto;
  place-items: center;
  gap: clamp(1.25rem, 4vh, 2rem);
  padding: clamp(1.25rem, 4vh, 3rem) 1.25rem 1rem;
  background:
    radial-gradient(ellipse at 50% 40%, #ffffffed 0%, #ffffffbd 26%, #ffffff00 72%),
    linear-gradient(90deg, #8436c49e 0%, #8436c429 30%, #8436c414 50%, #8436c429 70%, #8436c49e 100%);
  isolation: isolate;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    radial-gradient(ellipse at 2% 90%, #4b008235, transparent 50%),
    radial-gradient(ellipse at 98% 5%, #8436c44d, transparent 55%);
  animation: drift 14s ease-in-out infinite alternate;
}

.welcome {
  width: min(100%, 32rem);
  text-align: center;
  animation: arrive 700ms ease-out both;
}

.intro { margin-bottom: clamp(1.75rem, 4vh, 2.5rem); }

/* Frame the artwork inside the original banner's transparent margins.
   These percentages preserve the supplied image without editing it. */
.brand {
  position: relative;
  width: 100%;
  aspect-ratio: 1440 / 500;
  margin: 0 0 1.5rem;
  overflow: hidden;
}

.brand img {
  position: absolute;
  width: 177.7778%;
  max-width: none;
  height: auto;
  left: -39.4444%;
  top: -94%;
  filter: drop-shadow(0 3px 5px #4b008226) drop-shadow(0 -1px 1px #ffffffa6);
}

.greeting {
  margin: 0;
  font-size: clamp(1.15rem, 2.5vw, 1.4rem);
  line-height: 1.75;
}

.greeting span {
  color: #67447e;
  font-size: clamp(.9rem, 2.1vw, 1rem);
}

.links { display: grid; gap: .9rem; }

.link {
  position: relative;
  display: grid;
  grid-template-columns: 2.75rem 1fr 2.75rem;
  align-items: center;
  gap: .5rem;
  min-height: 5rem;
  padding: .6rem 1rem;
  overflow: hidden;
  border: 1px solid #ffffffed;
  border-radius: 999px;
  background: linear-gradient(120deg, #ffffffd9, #ffffff8c);
  box-shadow: 0 6px 24px #4b00820c, inset 0 1px 0 var(--white);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  color: var(--primary);
  font-size: 1.075rem;
  text-decoration: none;
  -webkit-tap-highlight-color: #8436c426;
  transition: transform 220ms ease, box-shadow 220ms ease, background 220ms ease, color 220ms ease;
}

.link::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(110deg, transparent 25%, #ffffffb3 50%, transparent 75%);
  transform: translateX(-125%);
  transition: transform 650ms ease;
}

.link-icon {
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background: #8436c40d;
}

.link-icon svg { width: 1.4rem; height: 1.4rem; }
.link-arrow { justify-self: center; width: 1.15rem; height: 1.15rem; }
.link > * { position: relative; }

.link-label { display: grid; gap: .2rem; min-width: 0; line-height: 1.35; }
.link-label small {
  color: #67447e;
  font-size: .75rem;
  overflow-wrap: anywhere;
}

.footer {
  color: var(--indigo);
  font-size: .75rem;
  line-height: 1.5;
  text-align: center;
  opacity: .8;
}

.footer p { margin: 0; }

@media (hover: hover) {
  .link:hover {
    color: var(--indigo);
    background: #fffffff0;
    box-shadow: 0 12px 30px #4b008218, inset 0 1px 0 var(--white);
    transform: translateY(-3px);
  }
  .link:hover::before { transform: translateX(125%); }
}

.link:focus-visible { outline: 3px solid var(--indigo); outline-offset: 5px; }
.link:active { transform: scale(.98); }

@keyframes arrive {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes drift {
  from { opacity: .45; }
  to { opacity: 1; }
}

@media (max-width: 360px) {
  body { padding-inline: 1rem; }
  .link { padding-inline: .75rem; grid-template-columns: 2.25rem 1fr 1.25rem; }
  .link-icon { width: 2.25rem; height: 2.25rem; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
