/* @import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400..900&family=Oswald:wght@200..700&family=Shadows+Into+Light+Two&family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap'); */

*, *::before, *::after {
  box-sizing: border-box;
}
/* 2. Remove default margin */
*:not(dialog) {
  margin: 0;
}
/* 3. Enable keyword animations */
@media (prefers-reduced-motion: no-preference) {
  html {
    interpolate-size: allow-keywords;
  }
}
body {
  /* 4. Add accessible line-height */
  line-height: 1.5;
  /* 5. Improve text rendering */
  -webkit-font-smoothing: antialiased;
}
/* 6. Improve media defaults */
img, picture, video, canvas, svg {
  display: block;
  max-width: 100%;
}
/* 7. Inherit fonts for form controls */
input, button, textarea, select {
  font: inherit;
}
/* 8. Avoid text overflows */
p, h1, h2, h3, h4, h5, h6 {
  overflow-wrap: break-word;
}
/* 9. Improve line wrapping */
p {
  text-wrap: pretty;
}
h1, h2, h3, h4, h5, h6 {
  text-wrap: balance;
}
/*
  10. Create a root stacking context
*/
#root, #__next {
  isolation: isolate;
}
body {
    background: #000;
    color: #0dac0d;
    font-family: 'Courier New', monospace;
    margin: 0;
    padding: 0;
    overflow: hidden;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    min-height: 100vh;
}


#matrix {
    position: fixed;
    inset: 0;
    z-index: -1;
    image-rendering: pixelated;
    image-rendering: crisp-edges;
}

/* Chat overlay */
#chat {
    position: fixed;
    bottom: 20px;
    left: 20px;
    right: 20px;
    background: rgba(0, 255, 0, 0.08);
    padding: 20px;
    border: 1px solid #00ff00;
    border-radius: 4px;
    backdrop-filter: blur(2px);
    z-index: 10;
}

#output {
    margin-bottom: 12px;
    white-space: pre-wrap;
    font-size: 13px;
    line-height: 1.4;
    min-height: 40px;
}

#input {
    width: calc(70% - 10px);
    background: transparent;
    border: 1px solid #00ff00;
    color: #00ff00;
    padding: 8px 12px;
    font-family: inherit;
    font-size: 1rem;
}

button {
    background: #007400;
    color: #ffffff;
    border: none;
    padding: 8px 14px;
    margin-left: 8px;
    cursor: pointer;
    font-family: inherit;
    font-weight: bold;
}

button:hover {
    background: #00cc00;
    border:1px solid #303030;
}

/* Rain Toggle Button – no blue ring, sleek neon */
.rain-toggle {
    position: fixed;
    bottom: 40px;
    right: 40px;
    z-index: 999;
    width: 64px;
    height: 64px;
    background: radial-gradient(circle at 30% 30%, rgba(0, 255, 0, 0.25), rgba(0, 255, 0, 0.08) 70%, transparent);
    border: 2px solid #00ff00;
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 0 16px #00ff00aa, inset 0 0 10px #00ff0033;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    outline: none !important;
    appearance: none;
    -webkit-tap-highlight-color: transparent;
}

.rain-toggle:focus,
.rain-toggle:focus-visible,
.rain-toggle:active {
    outline: none !important;
    box-shadow: 0 0 16px #020202aa, inset 0 0 10px #00ff0033 !important;
}


#toggle-icon {
    font-size: 2.2rem;
    color: #030303;
    transition: transform 0.2s ease;
}
#toggle-icon:hover {
    /* transform: scale(1.1); */
    text-shadow: 0 0 8px #000000;
    color:white;
}


/* Cyberpunk Modal */
.cyber-modal {
    border: none;
    background: transparent;
    padding: 0;
    max-width: 540px;
}

.cyber-modal::backdrop {
    background: rgba(0, 0, 0, 0.84);
    backdrop-filter: blur(5px);
}

.modal-inner {
    background: rgba(0, 8, 0, 0.92);
    border: 2px solid #00ff00;
    border-radius: 4px;
    padding: 2rem 2.4rem;
    color: #00ff00;
    box-shadow: 0 0 50px #00ff0044, inset 0 0 30px #00ff0022;
    position: relative;
}

.close-modal {
    position: absolute;
    padding:none;
    top: 14px;
    right: 18px;
    background: none;
    border: 1px solid whitesmoke;
    color: #ff1e00;
    font-size: 2.2rem;
    cursor: pointer;
    opacity: 0.75;
    transition:scale 0.2s ease, opacity 0.2s ease, background-color 0.2s ease, color 0.2s ease, border 0.2s ease, box-shadow 0.2s ease;
}

.close-modal:hover { 
    opacity: 1; 
    background-color: #166d04;
    color:whitesmoke;
    border:1px solid #ff9900;
    box-shadow: 0 0 12px #00ff88;
    scale: 1.2;
}
.modal-header {
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 4px;
    margin: 0 0 1.6rem;
    font-size: 1.7rem;
    text-shadow: 0 0 14px #d3b012;
}

.modal-message {
    background: #000;
    padding: 1.1rem;
    border: 1px dashed #00ff00;
    white-space: pre-wrap;
    font-size: 1.05rem;
    line-height: 1.45;
    max-height: 200px;
    overflow-y: auto;
}

.neon-button {
    display: block;
    margin: 2rem auto 0;
    padding: 0.9rem 2.4rem;
    background: transparent;
    border: 2px solid #00ff00;
    color: #058105;
    font-size: 1.15rem;
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 2px;
    box-shadow: 0 0 20px #0a860a;
    transition: all 0.3s;
}

.neon-button:hover {
    background: rgba(0, 255, 0, 0.14);
    box-shadow: 0 0 40px #00ff00cc;
}

/* Start of: Instructions Modal */ 

.instructions{
    display: none;
}
.instructions-active{
    display: block;
    position: fixed;
    inset: 0;
    z-index: 10000;
    background: rgba(0, 0, 0, 0.84);
    backdrop-filter: blur(5px);
}

.instructions-btn{
    border-radius: 50%;
    background-color: rgb(80, 80, 80);
    width: 100px;
    height: 100px;
    border-radius: 50%;
    text-align: center;

}
.instructions-modal .modal-content {
    background: rgba(0, 8, 0, 0.92);
    border: 2px solid #ffffff;
    border-radius: 4px;
    padding: 2rem 2.4rem;
    color: transparent;
    box-shadow: 0 0 50px #00ff0044, inset 0 0 30px #00ff0022;
    position: relative;
}

#eternity{
    position:relative;
    color: #f3f3f3;
    /* 
    background-color: #007400;
    border-radius: 50%;; 
    border: dashed 2px whitesmoke;
    text-shadow: 0 0 7px #fded09; 
    */
    font-size:2rem;
    vertical-align: text-bottom;
    top:5px;
}
.eternity-symbol {
    font-size: 1.4rem;
    color: #7700ff;
    /* text-shadow: 0 0 2px #eed601; */
}

/* Start of: Custom unordered and ordered list styles  */

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

ul li {
  padding-left: 1rem;
  text-indent: -0.7rem;
}
ul li::marker {
  content: "🗝️";
  font-size: 1.25em;
}

ol li::marker {
  content: counter(ol);
  color: #016b25;
  font-weight: bold;
}

/* 
ul li::before {
  content: "👉";
  content: "✨ "; 
}
li:nth-child(2)::before { content: "🔍"; }
li:nth-child(3)::before { content: "💬"; } 
*/


.no-bullets {
  list-style: none;
  padding-top: 33px;
}

/* End of: Custom unordered and ordered list styles  */

p, li, .instruction-text {
    color: #e0e0e0;
    font-size: 1.05rem;
    line-height: 1.45;
    margin-bottom: 1rem;
    text-align: center;
    font-family: "Oswald", sans-serif;
    font-optical-sizing: auto;
    font-weight: 300;
    font-style: normal;
}

h2 {
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 4px;
    margin-bottom: 1.6rem;
    font-size: 1.7rem;
    color: #d1d1d1;
    text-shadow: 0 0 14px #fccf05;
    font-family: "Orbitron", sans-serif;
    font-optical-sizing: auto;
    font-weight: 400;
    font-style: normal;
}

/* Start of: GUI Dat Controls */
/* 1. Change Blue Progress Bars to Matrix Green */

.dg .c .slider-fg {
    background: #039403 !important;
}

/* Change the blue left handle to Matrix Green */
.dg li.cr {
    border-left: 3px solid #00ff00 !important;
}

/* Optional: Keep it green even when hovering */
.dg li.cr:hover {
    cursor:pointer;
    border-left-color: #ff3c00 !important;
}

/* 2. Shrink Size/Speed Value Boxes (The numeric fields) */
.dg .c input[type=text] {
    width: 40px !important;
    height:18px !important;
    flex: 0 0 40px !important; /* Prevents it from bloating */
    background: #111 !important;
    color: #00ff00 !important;
    border: 1px solid #004e00 !important;
    /* margin-left: 5px !important; */
}

.dg .title {
  display: none !important;
}

.close-button, .close-bottom, .open-button {
    display: none !important;
}


/* 4. Match Text to Green */
.dg .property-name {
    color: #00ff00 !important;
}

.gui-controls {
    position: fixed;
    right: 2%;
    top:11%;
    
    z-index: 1500;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

#color_palette {
    color:white;
    font-size: 1.4em;
    transition: transform 0.2s ease;
    /* filter: grayscale(50%) invert(100%);
    -webkit-filter: grayscale(50%) invert(100%); */
}   

#color-palette-icon:hover {
    transform: scale(1.2);
    color:#007400;
    /* filter: brightness(100%) contrast(100%) hue-rotate(320deg) invert(50%);
    -webkit-filter: brightness(100%) contrast(100%) hue-rotate(320deg) invert(50%); */
}
.color-label {
    cursor: pointer;
    color: #fcfcfc;
    font-family: "Oswald", "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;
    font-size:x-large;
    font-weight: 400;

} 
input[type="color"] {
  cursor: pointer;
  width: 50px !important;
  height: 50px !important;
  border: 2px solid #ffffff !important;
  
  /* 
  box-shadow: 
    0 0 16px #00ff88 inset,
    0 0 24px #00ff88 !important;
  border-radius: 8px;  
  */

  padding: 2x !important;
  background: #ffffff !important;
  appearance: none;
}

/* Clean up browser default swatch wrapper (makes it fill perfectly) */
input[type="color"]::-webkit-color-swatch-wrapper {
  padding: 0;
}

input[type="color"]::-webkit-color-swatch {
  border: none;
  /* border-radius: 6px; */
}

/* Hover/active glow boost (makes it feel alive) */

input[type="color"]:hover,
input[type="color"]:focus {
  box-shadow: 
    0 0 24px #f8a201 inset,
    0 0 36px #ff6600 !important;
  transform: scale(1.3);
  transition: all 1.2s ease-in-out;
}
input[type="color"] {
  cursor: pointer;
  width: 50px !important;
  height: 50px !important;
} 
/* End of: GUI Dat Controls */

/* Start of: GSAP animations */

#emitter {
  z-index: 1000;
  position:absolute;
  bottom:12%;
  left:2%;
  border: dashed 2px whitesmoke;
  width: 200px;
  height: 200px;
  border-radius: 50%;
}
.dot {
  background-color: #4c9a0f;
  border-radius: 50%;
  position: absolute;
  text-align: center;
  z-index:5000;
  pointer-events:none;
  border:1px solid #e7e7e7;
}
  
 /* Ensure 'Open Controls' is visible when closed */
.dg.main {
    height: auto !important; /* Prevents container from collapsing to 0px */
}


/* End of: GSAP animations */

/* Start of: Matrix text */

.desert-of-the-real-container{
    text-align: center;
    position:absolute;
    bottom:-15%;
    left:50%;
    transform: translate(-50%,-50%);
}
.text {
  font-family: "Source Sans 3", sans-serif;
  font-optical-sizing: auto;
  font-weight: 300;
  font-style: normal;
  letter-spacing: 4px;
  box-sizing: border-box;
  padding: 10% 5% 5% 5%;
  width: 100%;
  height: 300px;
  color:whitesmoke;
  /*   word-break: break-all; */
  text-align: center;
  width: 90vw;
  max-width: 50ch;
}

/* .matrix-btn { */
#matrix-spoon{
    z-index: 3000;
    position:absolute;
    background-color:transparent;
    bottom:16.5%;
    right:1.4%;
    font-weight: 700;
    overflow: visible;
    border:none;
    cursor: pointer;
    color:white;
    /* transition:scale 0.2s ease, border 0.2s ease, box-shadow 0.2s ease; */
}
#matrix-spoon:hover {
    color:black;
}   


.border {
  outline: rgb(247, 247, 247) 2px dashed;
  outline-offset: 5px;
  border-radius: 2px;
}

/* Start of: 3JS Audio Player GUI  */
.audio-toggle, .audio-btn {
    transition: all 0.2s ease;
}

.audio-toggle:hover{
    background-color:goldenrod;
    color:black;
    border:1px solid black;
    transition: all 0.2s ease;
}
.audio-controls.audio-btn:hover{
    background-color:rgb(243, 239, 3);
    border:1px solid black;
    transition: all 0.2s ease;
}

#fa-music {
    font-size: 1.8rem;
    margin-left:-9px;
    color: #026e0b;
    text-shadow: 0 0 4px black;
    transition: transform 0.2s ease;
}
#fa-music:hover {
    transform: scale(1.2);
    text-shadow: 0 0 8px #00ff00, 0 0 16px #00ff00;
}

#cosmic-suite {
    position: absolute;
    bottom:22%;
    right:1.4%;
    z-index: 20000;
    width: 64px;
    height: 64px;
    background: radial-gradient(circle at 30% 30%, rgba(255, 255, 0, 0.25), rgba(255, 255, 0, 0.08) 70%, transparent);
    border: 2px solid #ffff00;
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 0 16px #ffff00aa, inset 0 0 10px #ffff0033;
    display: flex;
    align-items: center;
    justify-content: center;
}

#cosmic-suite:hover {
    transform: scale(1.1);
    box-shadow: 0 0 28px #ffff00cc, inset 0 0 16px #ffff0055;
}


/* End of: 3JS Audio Player GUI   */
/* Start of: Responsive Adjustments  */
@media (max-width: 300px) or (max-height: 300px) {
  .button-wrapper button {
    padding: 2px;
    border: none;
  }
}

/* Show & perfectly center on small devices (phones, tablets < 900px) */
@media only screen and (max-width: 899px) {
  .desert-of-the-real-container,
  #matrix-spoon {
    display:none;
  }
}

/* First: center on small-ish screens */
@media only screen and (max-width: 900px) {
  .desert-of-the-real-container,
  #matrix-spoon {
    position: fixed !important;  /* fixed instead of absolute for true full-screen center */
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1000;
    margin: 0;
    padding: 0;
  }
}


/* Optional: On larger screens (> 900px), make sure they are visible if you want them */
@media only screen and (min-width: 1100px) {
  .desert-of-the-real-container,
  #matrix-spoon {
    display: block !important;
    position: absolute; /* or static, depending on your layout */
  }
}
/* Small devices (portrait tablets and large phones, 600px and up) */
@media only screen and (min-width: 600px) {}

/* Medium devices (landscape tablets, 768px and up) */
@media only screen and (min-width: 768px) {}

/* Large devices (laptops/desktops, 992px and up) */
@media only screen and (min-width: 992px) {}

/* Extra large devices (large laptops and desktops, 1200px and up) */
@media only screen and (min-width: 1200px) {}