@font-face {
  font-family: 'Twemoji'; /* We are giving our font a name */
  src: url('fonts/TwitterColorEmoji-SVGinOT.ttf') format('woff2');
}

body {
    background-image: url('img/art/environment-a.png');
    background-repeat: repeat;
    background-size: cover;
    font-family: 'Twemoji', "Faustina", serif;
    font-weight: 200;
    font-style: normal;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
    overflow: hidden; 
    cursor: url('img/cursor2-white.png'), default;
}

/* Header offset used to push content below the fixed header
  Mobile needs more space (stacked logo + nav). Desktop can be tighter. */
:root { --header-offset: 170px; }
@media (max-width: 600px) { :root { --header-offset: 180px; } }
@media (min-width: 900px) { :root { --header-offset: 150px; } }

/* Allow scrolling and adjust layout for content pages */
body.page {
  height: auto;
  min-height: 100vh;
  overflow: auto;            /* Enable page scrolling */
  display: flex;
  flex-direction: column;  /* stack vertically */
  align-items: center;     /* center children horizontally */
  justify-content: flex-start; /* prevent vertical centering from base body */
  padding-top: var(--header-offset); /* push content below fixed header */
}


/* Main content area spacing below fixed header */
.content {
  width: 100%;
  max-width: 1000px;
  /* Top space now handled by body.page padding-top */
  margin: 0 auto 60px;
  padding: 0 16px;
}

.highlight {
  background: #ffffffe9;
  padding: .5em 1.3em;
  border-radius: .3em;
}

.heavy-font {
  font-weight: 900;
}

.blockquote-highlight {
  background: #ffffff7e;
  padding: .5em 1.3em;
  border-radius: .3em;
  font-weight: 400;
}

.about-block {
  /* was: position:absolute; top:25%; max-width:65%; */
  position: static;
  top: auto;
  max-width: 65%;
  /* Avoid doubling vertical space: body already has padding-top: var(--header-offset) */
  margin: 12px auto 48px; /* light top breathing room only */
  padding: 0 16px;
  font-family: "Cutive Mono", monospace;
  max-width: 65%;
}

.portal-link {
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}

  #portal-image {
    max-width: 80vw;   /* Responsive: never wider than 80% of viewport */
    max-height: 80vh;  /* Responsive: never taller than 80% of viewport */
    width: auto;
    height: auto;
    transition: all 0.8s ease-in-out;
    will-change: transform, filter;
  }
  
  #portal-image:hover {
    animation: none; /* Stop the wiggle animation on hover */
    transform: scale(1.2);
    filter: hue-rotate(180deg) contrast(1.2) saturate(2);
  }
  a, button {
    cursor: url('img/cursor2-click-white.png') 7 0, pointer;
  }
  p, h1, h2, li {
    cursor: url('img/cursor2-text-white.png') 0 16, text;
  }

  /* Ensure ALL anchor states & nested inline elements show click cursor */
  a, a:link, a:visited, a:hover, a:active {
    cursor: url('img/cursor2-click-white.png') 7 0, pointer;
  }

  /* Text entry fields (future forms) get text cursor */
  input[type="text"], input[type="email"], input[type="search"], input[type="password"], textarea {
    cursor: url('img/cursor2-text-white.png') 0 16, text;
  }

  /*
=================================
  Homepage Content Panel Styles
=================================
*/

.panel {
  position: relative;
  width: 80%;
  max-width: 90%;
  background-color: transparent; 
  border-radius: 10px;
  overflow: hidden; 
}

.panel-background {
  position: absolute;
  top: 0;
  left: 0;
  right: 0; /* Changed from width: 100% for better coverage */
  bottom: 0; /* Changed from height: 100% for better coverage */
  background-image: linear-gradient(rgba(204, 0, 255, 0.353), rgba(0, 191, 255, 0.26)),  url('img/art/skytexture2.png');
  background-size: fill; /* Changed from cover to fill for better fit */
  mix-blend-mode: lighten; /* Blend with the panel content */
  opacity: 1;
}

.panel-content {
  position: relative; /* This ensures it sits on top of the absolute background */
  padding: 25px;
  color: rgb(0, 0, 0); /* Set your desired text color */
}

/* Links page panel adjustments */
.links-panel {
  background-color: rgba(255,255,255,0.0);
  width: 84%; /* slightly wider */
  max-width: 760px; /* allow a bit more real estate before capping */
  margin: 0 auto;
  padding: 24px;
  border-radius: 12px;
  box-sizing: border-box;
}

/* Make panel nearly full width on narrow phones so long labels don't overflow */
@media (max-width: 520px) {
  .links-panel { width: 94%; max-width: none; }
}

/* Vertical link list */
.link-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
}

/* Link rows with icon + centered label + 3-dot menu */
.link-row {
  position: relative;
  display: grid;
  grid-template-columns: 64px 1fr 40px; /* icon | label | menu */
  align-items: center;
  column-gap: 12px;
  padding: 8px; /* inset so ring/shadow stay inside panel */
  border-radius: 12px;
  box-shadow: 0 6px 16px rgba(0,0,0,0.12);
  transition: transform .15s ease, box-shadow .2s ease;
  box-sizing: border-box;
  background: transparent; /* white lives on the inner link */
}

.link-row:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 22px rgba(0,0,0,0.18);
}

/* Inner clickable area */
.link-row .link-main {
  grid-column: 1 / 3; /* spans icon + label columns */
  display: grid;
  grid-template-columns: 64px 1fr; /* icon | label */
  align-items: center;
  column-gap: 12px;
  text-decoration: none;
  background: #fff;
  color: #1a1a1a;
  padding: 14px 22px;
  border-radius: 12px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}

.link-row .link-main i {
  font-size: 48px;
  justify-self: start;
  text-align: left;
}

.link-row .link-main span {
  font-family: "Cutive Mono", monospace;
  font-weight: 300;
  /* Fluid size: never smaller than 14px, normally scales with viewport, capped at 18px */
  font-size: clamp(14px, 2.9vw, 18px);
  line-height: 1.25;
  text-align: center; /* center label text */
  /* Allow natural wrapping at word boundaries, avoid ugly mid‑word splits */
  overflow-wrap: break-word; /* only if needed */
  word-break: normal;
  hyphens: auto;
}

/* Three-dot menu button */
.menu-btn {
  grid-column: 3;
  justify-self: end;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  border: 0;
  background: #fff;
  color: #222;
  display: grid;
  place-items: center;
  box-shadow: 0 1px 2px rgba(0,0,0,0.08);
  cursor: pointer;
}
.menu-btn:disabled { opacity: .5; cursor: default; }

/* Dropdown menu */
.menu-panel {
  position: absolute;
  right: 8px;
  top: calc(100% + 8px);
  min-width: 180px;
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 12px 30px rgba(0,0,0,0.18);
  padding: 8px;
  display: none;
  z-index: 20;
}
.link-row[data-open="true"] .menu-panel { display: block; }

.menu-item {
  display: block;
  width: 100%;
  text-align: left;
  padding: 10px 12px;
  border: 0;
  background: transparent;
  border-radius: 8px;
  color: #111;
  cursor: pointer;
  font: inherit;
  text-decoration: none;
}
.menu-item:hover { background: rgba(0,0,0,0.06); }

/* Disabled state: greyed, transparent, unclickable */
.link-row.disabled { opacity: 0.5; filter: grayscale(0.8); pointer-events: none; }
.link-row.disabled:hover { transform: none; box-shadow: 0 6px 16px rgba(0,0,0,0.12); }

.links-panel h1 {
  font-family: "Cutive Mono", monospace;
  font-weight: 900;
  font-size: 24px;
  text-align: center;
}

/* Mobile tighten-up */
@media (max-width: 480px) {
  /* Tighter grid and spacing so buttons don't feel cramped or misaligned */
  .link-row {
    grid-template-columns: 44px 1fr 34px;
    column-gap: 8px;
    padding: 6px;
  }
  .link-row .link-main {
    grid-template-columns: 44px 1fr;
    padding: 10px 12px;
  }
  .link-row .link-main i { font-size: 32px; }
  .link-row .link-main span {
  /* Mobile inherits fluid clamp above; tighten line-height slightly */
  line-height: 1.2;
  }
  .menu-btn { width: 32px; height: 32px; }

  /* Ensure the navbar pill stays perfectly centered on narrow viewports */
  #navbar-container { display: flex; justify-content: center; }
}


/* Brand-colored outer rounded rect using shadow spread */
.link-row.spotify { box-shadow: 0 0 0 4px #1DB954, 0 6px 16px rgba(0,0,0,0.12); }
.link-row.apple-music { box-shadow: 0 0 0 4px #FB5C74, 0 6px 16px rgba(0,0,0,0.12); }
.link-row.bandcamp { box-shadow: 0 0 0 4px #629aa9, 0 6px 16px rgba(0,0,0,0.12); }
.link-row.bluesky { box-shadow: 0 0 0 4px #0085FF, 0 6px 16px rgba(0,0,0,0.12); }
.link-row.instagram { box-shadow: 0 0 0 4px #DD2A7B, 0 6px 16px rgba(0,0,0,0.12); }
.link-row.youtube { box-shadow: 0 0 0 4px #FF0000, 0 6px 16px rgba(0,0,0,0.12); }

  /*
=================================
  404 Not Found Page Styles
=================================
*/

/* This container will be centered by the existing 'body' style */
.not-found-container {
  display: flex; /* Aligns the numbers in a row */
  align-items: center; /* Vertically centers the numbers */
}
  
/* Base style for each number image */
.number {
  width: 25vw;        /* Set width to 15% of the viewport width */
  max-width: 350px;   /* BUT, don't let them get bigger than 150px */
  min-width: 50px;    /* AND, don't let them get smaller than 50px */
  margin: 0 1vw;      /* Make the space between them responsive too! */
  
  /* Set the animation properties */
  animation-name: pop;
  animation-duration: 1.5s;
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
  animation-direction: alternate;

  /* Add a drop shadow to make it pop */
  filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.5));
}
  
/* The Keyframe Animation that creates the "pop" effect */
@keyframes pop {
  from {
    transform: scale(0.9);
    opacity: 0.8;
  }
  to {
    transform: scale(1.2);
    opacity: 1;
  }
}
  
/* Stagger the animation start time for each number */
.four-first { animation-delay: 0s; }
.zero { animation-delay: 0.5s; }
.four-second { animation-delay: 1.0s; }

  /*
=================================
  Corner GIF Styles
=================================
*/

/* Base style for all corner GIFs */
.corner-gif {
    /* This is the magic property! It pins the element to the viewport. */
    position: fixed;
  
    /* Set the size of your GIFs */
    width: 100px;
    height: auto;
  
    /* --- CHOOSE ONE Z-INDEX OPTION --- */
    /* Option A: Keep GIFs on top of all content */
    z-index: 100; 
  
    /* Option B: Place GIFs BEHIND other content like your panel. (Looks cool!) */
    /* z-index: -1; */
  }
  
  /* Position each corner specifically */
  .top-left {
    top: 10px;
    left: 10px;
  }
  
  .top-right {
    top: 10px;
    right: 10px;
  }
  
  .bottom-left {
    bottom: 10px;
    left: 10px;
  }
  
  .bottom-right {
    bottom: 10px;
    right: 10px;
  }

/*
=================================
  Navbar Styles (New Version)
=================================
*/

/* This is the new main container that stays at the top */
.site-header {
  position:fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1000;

  /* Use flexbox to stack and center the logo and nav bar */
  display: flex;
  flex-direction: column; /* This stacks items vertically */
  align-items: center;   /* This centers them horizontally */
  
  padding: 20px 0; /* Adds some space at the top and bottom */
}

/* Hide-on-scroll states */
.site-header.hide { transform: translateY(-130%); transition: transform 220ms ease; }
.site-header.show { transform: translateY(0); transition: transform 220ms ease; }

/* Style for the logo link */
.logo img {
  height: 60px; /* You can adjust your logo size here */
  width: auto;
  margin-bottom: 15px; /* Adds space between the logo and the nav bar below it */
  filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.5));
}

/* This is now JUST the bar with the links */
.navbar {
  /* It no longer needs to be position: fixed, its parent handles that */
  padding: 10px 30px;
  background-color: rgba(255, 255, 255, 0.7);
  border-radius: 15px; /* Rounded corners for the bar */
  display: inline-block; /* shrink to content so it can be centered */
}

/* The styles for the links themselves can stay the same */
.navbar ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: clamp(8px, 6vw, 30px); /* responsive spacing */
  justify-content: center; /* center the items within the pill */
}

/* Center the inline navbar inside its container */
#navbar-container {
  text-align: center;
}

.navbar a {
  color: #000000;
  text-decoration: none;
  font-size: clamp(14px, 4.4vw, 16px);
  font-weight: bold;
  transition: color 0.3s ease;
}

.navbar a:hover {
  color: #ff60ad;
}

/* Tighten navbar on phones */
@media (max-width: 520px) {
  .navbar { padding: 8px 18px; border-radius: 14px; }
  .navbar a { padding: 4px 2px; }
}

/* Ultra narrow: stack links */
@media (max-width: 360px) {
  .navbar ul { flex-direction:row; gap: 10px; }
  .navbar { padding: 12px 20px; }
  .navbar a { font-size: clamp(15px, 5.5vw, 18px); }
}

/* ================================
   Full-screen Modal Overlay
================================ */
body.modal-open {
  overflow: hidden;
}

.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 2000; /* Above header */
  padding: 24px;
}

.modal-overlay.open { display: flex; animation: fadeIn 150ms ease-out; }

@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

.modal {
  background: #fff;
  color: #222;
  width: 100%;
  max-width: 420px;
  border-radius: 16px;
  box-shadow: 0 10px 30px rgba(0,0,0,0.25);
  padding: 20px 16px 16px;
  position: relative;
}

.modal-close {
  position: absolute;
  top: 8px;
  right: 10px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: none;
  background: transparent;
  font-size: 22px;
  line-height: 32px;
  cursor: pointer;
}

.modal-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}

.modal-header i { font-size: 28px; }
.modal-header h2 { font-size: 20px; margin: 0; }

.modal-actions { display: grid; gap: 10px; }

.modal-actions .menu-item {
  display: block;
  text-align: center;
  padding: 12px 14px;
  border-radius: 10px;
  border: 1px solid rgba(0,0,0,0.08);
  background: #f8f8f8;
  color: inherit;
  text-decoration: none;
  cursor: pointer;
  box-sizing: border-box; /* ensure borders don't overflow container */
}

.modal-actions .menu-item:hover { background: #f0f0f0; }

@media (max-width: 480px) {
  .modal { max-width: 360px; }
}

/*
  Ensure custom click cursor on all interactive controls
*/
.menu-btn,
.menu-item,
.modal-actions .menu-item,
.modal-close {
  cursor: url('img/cursor2-click-white.png') 7 0, pointer;
}

::selection {
  background-color: #00ffb7; /* Sets the background color of the selection to red */
  color: #ff00d4; /* Sets the text color of the selection to white */
}