/* Guide for organizing:
  1. VARIABLES & ROOT (The Control Panel)
  2. BASE & GLOBAL (Body, Backgrounds, Global Resets)
  3. LAYOUT (Navbar, Containers, Sidebars)
  4. COMPONENTS (Windows, Projects, Buttons, Progress Bar)
  5. UTILITIES (Typography, Colors, Helper Classes)
  6. ANIMATIONS
*/

:root {
  --sections-maxwidth: 95vw;
  /* colors */
  --bg-color-primary: #1d1612;
  --bg-color-primary-transluscent: #1d1612d3;
  --dot-color: #ffa200;
  --theme-main-color: rgb(255, 117, 26);
  --theme-secondary-color: rgb(255, 183, 0);
  --theme-tertiary-color: rgb(31, 222, 228);   /* rgba(156, 254, 250, 0.70) */
  --theme-halo-color: rgb(255, 174, 11);
  --theme-glow-color: #ff8c00;

  /* accents */
  --text-glow-main: 
      0 0 5px var(--theme-main-color), 
      0 0 15px var(--theme-main-color);
  --text-glow-warm: 
      0 0 5px var(--theme-secondary-color), 
      0 0 15px var(--theme-secondary-color);
  --text-glow-cool: 
      0 0 5px var(--theme-tertiary-color), 
      0 0 15px var(--theme-tertiary-color);
  --text-glow-white:
      0 0 5px var(--text-color-primary),
      0 0 15px var(--text-color-primary);
  --text-glow-white-subdued:
      0 0 5px var(--text-color-primary);

  --border-glow-main: 
      0 0 10px 0 rgb(from var(--theme-main-color) r g b / 35%), 
      inset 0 0 10px 0 rgb(from var(--theme-main-color) r g b / 35%);
  --border-glow-warm: 
      0 0 10px 0 rgb(from var(--theme-glow-color) r g b / 20%), 
      inset 0 0 10px 0 rgb(from var(--theme-glow-color) r g b / 20%);
  --border-glow-cool: 
      0 0 10px 0 rgb(from var(--theme-tertiary-color) r g b / 25%), 
      inset 0 0 10px 0 rgb(from var(--theme-tertiary-color) r g b / 25%);
  
  --glow-filter-main: 
      drop-shadow(0 0 5px var(--theme-main-color)) 
      drop-shadow(0 0 10px var(--theme-main-color));
  --glow-filter-warm: 
      drop-shadow(0 0 5px var(--theme-glow-color)) 
      drop-shadow(0 0 10px var(--theme-glow-color));
  --glow-filter-cool: 
      drop-shadow(0 0 5px var(--theme-tertiary-color)) 
      drop-shadow(0 0 10px var(--theme-tertiary-color));

  --image-tint-color: rgba(126, 246, 246, 0.80); /* rgb(245, 155, 65) */
  --tinted-img-border: inset 0 0 0 1px var(--theme-tertiary-color); /* FAUX BORDER - inset shadow */
  --tinted-img-border-active: inset 0 0 0 1px var(--theme-secondary-color); /* FAUX BORDER - inset shadow */

  --tech-pill-bg: rgba(148, 84, 7, 0.50);

  --input-tint-color: rgb(39, 134, 147);
  --input-border-default: 1px solid rgb(from var(--theme-secondary-color) r g b / 25%);
  --input-border-filled: 1px solid rgb(from var(--theme-tertiary-color) r g b / 40%);

  --mybtn-border: .5px solid rgb(from var(--theme-main-color) r g b / 60%);
  
  /* window */
  --window-bg: rgba(120, 60, 15, 0.55); /* #2c2116 */
  --window-bg-alt: rgba(10, 40, 38, 0.65);
  --window-bg-active: rgba(120, 60, 15, 0.75);
  --window-bg-dark-active: rgba(27, 24, 22, 0.75);
  --window-inset-shadow: 
      inset 0 0 4px rgba(0, 0, 0, 0.1), 
      inset 0 0 12px rgba(0, 0, 0, 0.05);
  --window-shadow-default: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  --window-shadow-active: 0 20px 50px 10px rgba(13, 5, 0, 0.5);
  --window-border: 1px solid rgba(255, 174, 11, 0.15);
  --window-border-active: 1px solid rgba(255, 174, 11, 0.30);
  --element-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  
  /* blur effects */
  --main-container-color: rgba(0, 0, 0, 0.05); /* rgba(46, 18, 0, 0.05); */
  --main-container-blur: 4px;
  --nav-scrolled-color: rgba(19, 19, 19, 0.15);
  --nav-scrolled-blur: 10px;
  --frost-color: rgba(48, 39, 32, 0.15);  /* #rgba(90, 72, 58, 0.15) */
  --frost-blur: 7px;
  --dark-bg: rgba(19, 19, 19, 0.15); /* #rgba(14, 14, 14, 0.05) */
  --dark-blur: 10px;
  
  /* props */
  --progress-bar-height: 1.5px; 
  --border-color: #bdbdbd;
  --dashed-line: 1px dashed rgba(255, 117, 26, 0.25);
  --dashed-line-yellow: .5px dashed rgba(255, 174, 11, 0.25);
  --line-halo: 1px solid rgb(from var(--theme-halo-color) r g b / 15%);

  /* reg text */
  --subtext-font: "Bitcount Prop Single", "Montserrat", system-ui;
  --maintext-font: "Figtree", ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
  --text-color-primary : #eedcca;
  --text-color-secondary : #e1d3c4eb;
  --text-color-tertiary : #fff3;
}


html {
    scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }
}

body {
  position: relative;
  color: var(--text-color-primary);
  font-family: "Figtree", ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
  overflow-x: hidden;
  background-color: var(--bg-color-primary);
  min-height: 100svh;
}

body::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  
  background-image: radial-gradient(var(--dot-color) .65px, transparent 1px);
  background-size: 10px 10px;
  background-attachment: fixed;

  -webkit-mask-image: radial-gradient(
    circle 550px at var(--mouse-x, -1000px) var(--mouse-y, -1000px), 
    rgb(255, 255, 255) 25%,
    rgb(255, 255, 255, .85) 50%,
    rgb(255, 255, 255, .55) 75%,
    rgba(255, 255, 255, .35) 100%
  );
  mask-image: radial-gradient(
    circle 550px at var(--mouse-x, -1000px) var(--mouse-y, -1000px), 
    rgb(255, 255, 255) 25%,
    rgb(255, 255, 255, .85) 50%,
    rgb(255, 255, 255, .55) 75%,
    rgba(255, 255, 255, .35) 100%
  );

  will-change: transform; 
}

section {
  max-width: var(--sections-maxwidth)
}

@media (min-width: 992px) {
  :root {
    --sections-maxwidth: 80vw;
  }
}

@media (min-width: 1200px) {
  :root {
    --sections-maxwidth: 76vw;
  }
}

@media (min-width: 1400px) {
  :root {
    --sections-maxwidth: 1050px; 
  }
}

.container-blur-bg {
  background-color: var(--main-container-color);
  -webkit-backdrop-filter: blur(var(--main-container-blur));
  backdrop-filter: blur(var(--main-container-blur));
  opacity: 1;
}

.maincontainer_halo::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  border-right: var(--line-halo);
  border-left: var(--line-halo);
  filter: var(--glow-filter-warm);
  pointer-events: none;
}

.halo::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  border: var(--line-halo);
  filter: var(--glow-filter-warm);
  pointer-events: none;
}

/* distinct */
.navbar-container {
  position: fixed;
  top: calc(env(safe-area-inset-top) + 30px);
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: var(--sections-maxwidth);
  z-index: 1030;
}

#myNavbar {
  box-shadow: var(--element-shadow);
  background-color: var(--bg-color-primary-transluscent);
  backdrop-filter: blur(var(--nav-scrolled-blur));
  width: 100%;
  border-radius: 2rem;
  transition:
    background-color 0.3s ease-in-out,
    transform 0.7s ease-in-out;
}

#myNavbar.navbar-hidden {
  transform: translateY(-150%);
}

#myNavbar.navbar-scrolled {
  background-color: var(--nav-scrolled-color);
  backdrop-filter: blur(var(--nav-scrolled-blur));
  opacity: 1;
}

.navbar-toggler {
    border: none;
}

.navbar-toggler svg {
  stroke-width: 1.2;
}

#main-container {
  animation: slideUpFadeIn 0.7s ease-out forwards;
}

@keyframes slideUpFadeIn {
  from {
      opacity: 0;
      transform: translateY(-40px);
  }
  to {
      opacity: 1;
      transform: translateY(0px);
  }
}

section#intro {
  min-height: 45vh;
  padding-top: 80px;
  padding-left: 1.5rem; 
  padding-right: 1.5rem;
}

@media (min-width: 991px) {
  section#intro {
    min-height: 85vh;
    padding-left: 2rem;
    padding-right: 2rem;
  }
}

@media (max-width: 991px) {
  #intro {
    max-width: 750px;
  }
}

@media (min-width: 1200px) {
  section#intro {
    padding-left: 3rem;
    padding-right: 3rem;
  }
}

section#dash_form_solo {
  padding-top: 100px;
}

section {
  padding-top: 30px;
  padding-bottom: 30px;
}

section .sections-container {
  padding: 1.5rem;
  opacity: .55;
  border-radius: 1.5rem;
  border: 1px solid transparent;
  transition: opacity 0.5s ease;
}

@media (min-width: 992px) {
  section .sections-container  {
    padding: 3rem;
    opacity: 1;
    border-radius: 2rem;
  }

  section {
    padding-top: 75px;
    padding-bottom: 75px;
  }
}

section .sections-container.is-visible {
  opacity: 1;
}

#about .sections-container {
  min-height: 50vh;
}

#about .halo::after,
#contact .halo::after {
  opacity: 0;
  transition: opacity 0.5s ease;
}

#about .halo.is-visible::after,
#contact .halo.is-visible::after {
  opacity: 1; 
}

#projects .sections-container {
  padding: 0;
}

#project_list .sections-container {
  opacity: 1;
}

.window {
  border-radius: 1rem;
  border: var(--window-border);
  box-shadow: var(--window-shadow-default);
  opacity: 0.75;
  transition: 
      transform 0.5s ease, 
      opacity 0.5s ease,
      box-shadow 0.5s ease,
      border 0.5s ease;
}

.frosty-blur {
  background-color: var(--frost-color);
  -webkit-backdrop-filter: blur(var(--frost-blur));
  backdrop-filter: blur(var(--frost-blur));
  opacity: 1;
}

.dark-blur {
  background-color: var(--dark-bg);
  -webkit-backdrop-filter: blur(var(--dark-blur));
  backdrop-filter: blur(var(--dark-blur));
  opacity: 1;
}


.window:hover {
  opacity: 1;
  transform: translateY(-4px);
  /* box-shadow: 0 20px 50px 10px rgba(0, 0, 0, 0.5); */
  box-shadow: var(--window-shadow-active);
  border: var(--window-border-active);
}

.window-bg {
  box-shadow: var(--window-inset-shadow);
  border-radius: 0 0 1rem 1rem;
  inset: 0;
  transition: 
      background-color 0.5s ease,
      opacity 0.5s ease;
}

.window-bg:hover {
  filter: 
    drop-shadow(0 10px 8px rgba(0,0,0,.04))
    drop-shadow(0 4px 3px rgba(0,0,0,.1));
}

.window-bg-orange {
  background-color: var(--window-bg);
}

.window-bg-orange:hover {
  background-color: var(--window-bg-active);
}

.window-bg-dark {
  background-color: var(--dark-bg);
}

.window-bg-dark:hover {
  background-color: var(--window-bg-active);
}

.window-bg::before {
  border-radius: 1rem;
  pointer-events: none;
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 0.5px;
  background-color: var(--theme-glow-color);
  filter: var(--glow-filter-warm);
  opacity: .2;
  transition: opacity 0.5s ease;
}

.window-bg:hover::before {
  animation:
    flicker-in .3s ease-in forwards
}

.window p {
  margin-bottom: 0;
}

/* TECH LIST MARQUEE */

.tech-scroll-container {
    white-space: nowrap;
}

.tech-list {
    display: flex;
    gap: 1rem;
    transition: transform 4s ease-in-out; 
}

.tech-scroll-container.is-scrollable {
    cursor: e-resize; 
    justify-content: flex-start !important; 
}

.tech-scroll-container.is-scrollable:hover .tech-list {
    transform: translateX(var(--scroll-distance, 0px));
}


#about .sections-container:has(.p-regular-text:hover) .window,
#projects .project-showcase:has(.tinted-img:hover) .window {
  opacity: 1;
}
#projects .project-showcase:has(.tinted-img:hover) .window-bg,
#about .sections-container:has(.p-regular-text:hover) .window-bg {
  background-color: var(--window-bg);
}

/* #projects .project-showcase:has(.tinted-img:hover) .window-bg {
  background-color: var(--window-bg-dark-active);
} */

#projects strong,
#projects .window em {
  color: var(--theme-tertiary-color);
  text-shadow: var(--text-glow-cool);
}

/* =============================================================== */


.line-trigger .p-regular-text,
.line-trigger .text {
  opacity: .75;
  transition: opacity 0.3s ease;
  will-change: opacity;
}

.line-trigger:hover .p-regular-text,
.line-trigger:hover .text {
  opacity: 1;
}

@media (min-width: 768px) {
    .project-showcase {
        display: flex;
        align-items: center;
        width: 100%;
        max-width: 100%;
        overflow: visible;
    }

    .project-img-wrapper {
        flex: 0 0 55%; 
        max-width: 55%;
        z-index: 1;
    }

    .project-content-card {
        flex: 0 0 60%;
        max-width: 60%;
        margin-left: -15%; 
        z-index: 2;
        pointer-events: auto;
    }

    .project-showcase.inverted .project-content-card {
        margin-left: 0;
        margin-right: -15%;
    }
}

@media (max-width: 767px) {
    .project-showcase, 
    .project-showcase.inverted {
        display: flex;
        flex-direction: column !important;
        width: 100% !important; 
        height: auto !important; 
        margin-top: 2rem !important; 
        margin-bottom: 4rem !important;
        gap: 0 !important;
        transform: none !important;
    }

    .project-img-wrapper {
        order: 1 !important;
        flex: 0 0 auto !important; 
        width: 100% !important;
        max-width: 100% !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: hidden; 
    }

    .project-content-card {
        order: 2 !important;
        flex: 0 0 auto !important;
        width: 100% !important;
        max-width: 100% !important;
        margin: 0 !important;  
        margin-top: 1.5rem !important;        
        padding: 0 !important;
        transform: translate(0, 0) !important;
    }

    .project-showcase.inverted .project-content-card {
        margin-left: 0 !important;
        margin-right: 0 !important;
    }
    
    .project-content-card .d-flex.z-3 {
        justify-content: flex-start !important;
        padding-left: 0.5rem !important;
    }

    #more_projects {
      padding-right: 15px !important;
      padding-left: 15px !important;
    }
}

.tech-list {
  list-style-type: none;
}

#about .window-bg {
  padding-left: 20px;
  padding-right: 20px;
}

@media (max-width: 991px) {
  #about {
    max-width: 750px;
  }
}

@media (min-width: 992px) {
  #about .window {
    min-height: 580px;
  }

  #about .window .tech-list {
    gap: 3px 10px
  }

  #about .window .tech-list li {
    font-size: 0.95rem;
  }
}

#about .window .tech-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5px 15px
}

#about .window .tech-list li {
  font-size: 0.85rem;
  position: relative;
  padding-left: 1rem;
  margin-bottom: 0.5rem;
}

#about .window .tech-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.5rem; 
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background-color: var(--theme-tertiary-color);
  filter: var(--glow-filter-cool);
  border: 1px solid var(--theme-tertiary-color);
  opacity: 0.75;
}

#about .window .tinted-img {
  width: 250px;
  max-width: 100%;
}

#projects .tech-list {
  display: flex;
  gap: 0.5rem;
  padding: 0;
  margin: 0;  
}

#projects .tech-list li {
  cursor: default;
  background-color: var(--tech-pill-bg);
  backdrop-filter: blur(var(--frost-blur));
  -webkit-backdrop-filter: blur(var(--frost-blur));
  padding: 0.3rem 0.6rem;
  border-radius: 1rem;
  font-size: 0.9rem;
}

#projects .tech-list .ms-auto {
  background-color: transparent;
  border-radius: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

#projects .tech-list li:hover {
  cursor: pointer;
}

.footer-container {
  position: relative;
  z-index: 2;
}

/* =============================================================== */

.color-grade-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    pointer-events: none; 
    z-index: 9999;
    background-color: rgba(255, 140, 50, 0.25);
    mix-blend-mode: multiply;
}

.progress-container {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: var(--progress-bar-height);
  background-color: transparent;
  z-index: 1031;
}

.progress-bar {
  margin: 0;
  opacity: .5;
  height: 100%;
  width: 0;
  background-color: var(--theme-secondary-color);
  filter: var(--glow-filter-warm);
}

.progress-bar--complete {
  box-shadow: none;
  filter: 
    drop-shadow(0 0 10px var(--theme-glow-color)) 
    drop-shadow(0 0 10px var(--theme-glow-color));
}

.vertical-text-wrapper {
  padding: 10px;
  position: fixed;
  z-index: 50;
  background-color: transparent;
  writing-mode: vertical-lr;
  transform: rotate(180deg) translateX(0);
  transition:
    z-index 0s 0.7s,
    opacity 0.5s ease,
    transform 0.7s ease-in-out;
}

.vtext-hidden {
  z-index: -1;
  opacity: 0;
  transform: rotate(180deg) translateX(-100%);
}

.vertical-text {
  font-size: 18px;
  letter-spacing: 0.1em;
  white-space: nowrap;
  transition:
    backdrop-filter 0.5s ease,
    background-color 0.5s ease,
    filter 0.3s ease,
    font-weight 0.3s ease;
}

.vertical-text a {
  display: flex;
  text-decoration: none;
  color: var(--theme-main-color);
  text-shadow:
    0 0 5px var(--theme-main-color),
    0 0 15px var(--theme-main-color);
  transition:
    color 0.5s ease,
    text-shadow 0.5s ease,
    transform 0.3s ease;
}

.vertical-text-wrapper:hover .vertical-text {
  font-weight: 300;
  background-color: rgba(19, 19, 19, 0.15);
  -webkit-backdrop-filter: blur(5px);
  backdrop-filter: blur(5px);
  filter: drop-shadow(0 10px 8px rgba(0, 0, 0, .04))
          drop-shadow(0 4px 3px rgba(0, 0, 0, .1));
}

.vertical-text-wrapper:hover .vertical-text a {
  font-weight: 300;
  color: var(--theme-secondary-color);
  text-shadow:
      0 0 10px var(--theme-secondary-color),
      0 0 15px var(--theme-secondary-color);
  transform: translateY(3px);
}

.icon {
  width: 20px;
  height: 20px;
  stroke: currentColor;
  stroke-width: .5;
  stroke-linecap: round;
  stroke-linejoin: round;
  fill: none;
}

#socials-sidebar {
  box-shadow: var(--element-shadow);
  position: fixed;
  right: 40px;
  width: 40px;
  z-index: 50;
  opacity: 1;
  transition:
    z-index 0s 0.7s,
    opacity 0.7s ease,
    transform 0.7s ease-in-out;
}

#socials-sidebar.sbar-hidden {
  z-index: -1;
  opacity: 0;
  transform: translateX(-200%);
}

@media (max-width: 991px) {
    #vText {
        display: none !important;
    }

    #socials-sidebar {
        position: fixed;
        bottom: 0;
        top: auto !important;
        left: 0 !important;
        right: 0;
        width: 100%;
        height: auto;
        z-index: 100;
    }

    #socials-sidebar svg {
      stroke-width: 1;
    }

    #socials-sidebar .socials-list {
        -webkit-backdrop-filter: blur(var(--dark-blur));
        backdrop-filter: blur(var(--dark-blur));
        border-radius: 0rem;
        background-color: var(--bg-color-primary-transluscent) !important;
        display: flex;
        flex-direction: row;
        justify-content: space-evenly;
        align-items: center;
        margin: 0;
        padding: 15px 0;
        width: 100%;
    }

    #socials-sidebar.sbar-hidden {
        transform: translateY(100%); 
    }
}

.socials-container {
  list-style: none;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.socials-list {
  border-radius: 3rem;
  list-style: none;
  padding-left: .5rem;
  padding-right: .5rem;
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
  margin: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.5rem;
}

#socials-sidebar svg,
#intro svg,
#about svg {
  width: 2rem;
  height: 2rem;
}

#projects svg {
  width: 1.1rem;
  height: 1.1rem;
  stroke-width: 1;
}

/* Misc VFX */

.next-section-link svg {
  animation: bounce 1s infinite ease-in-out 1.5s;
}

@media (max-width: 991px) {
  #intro svg {
      width: 1.2rem;
      height: 1.2rem; 
  }
}

@keyframes bounce {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-8px);
  }
}

.nsl {
  opacity: 1;
  transition:
    opacity 0.5s ease,
    transform 0.7s ease-in-out;
}

.nsl.nsl-hidden {
  opacity: 0;
  visibility: hidden;
  transform: translateY(-20px);
}

h3.line-animated-heading {
    display: flex;
    align-items: center;
    gap: 1rem;
}

h3.line-animated-heading::after {
    content: '';
    display: block;
    height: 1px; 
    background-color: var(--theme-secondary-color);
    filter: var(--glow-filter-warm);
    opacity: 0.25;
    flex-grow: 1;
    
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.6s cubic-bezier(0.23, 1, 0.32, 1);
    will-change: transform;
}

.line-trigger:hover .line-animated-heading::after {
    transform: scaleX(1);
    will-change: transform;
}

.tinted-img {
  border-radius: .5rem;
  position: relative;
  display: block; 
  
  isolation: isolate; 
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;

  mask-image: radial-gradient(white, black);
  -webkit-mask-image: -webkit-radial-gradient(white, black);
  mask-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
  mask-composite: intersect;
  -webkit-mask-composite: source-over;
}

.tinted-img img {
  filter: grayscale(100%);
  border-radius: .5rem;
  box-shadow: var(--element-shadow);
  transform: scale(1.02) translateZ(0); 
  transform-origin: center;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  transition: filter 0.4s ease-in-out;
}

.tinted-img::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: var(--image-tint-color); 
  mix-blend-mode: multiply;
  z-index: 1; 
  clip-path: inset(0 0 0 0);
  transition: clip-path 0.4s ease-in-out, opacity 0.4s ease-in-out;
}

.tinted-img::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  z-index: 2;
  pointer-events: none;
  box-shadow: var(--tinted-img-border);
  filter: var(--glow-filter-cool); 
  opacity: 0.25;
  clip-path: inset(0 0 0 0);
  transition: clip-path 0.4s ease-in-out, opacity 0.4s ease-in-out;
}

.tinted-img:hover img {
  filter: grayscale(0%);
  transition: filter 0.4s ease-in-out 0.15s;
}

.tinted-img:hover::before,
.tinted-img:hover::after {
  clip-path: inset(0 0 100% 0);
  transition: clip-path 0.4s ease-in-out 0.15s, opacity 0.4s ease-in-out 0.15s;
}

.is-safari .tinted-img img {
  transition: filter 0.4s ease-in-out;
}

.is-safari .tinted-img::before,
.is-safari .tinted-img::after {
  clip-path: none; 
  transform: translate3d(0, 0, 0);
  transition: transform 0.4s ease-in-out, opacity 0.4s ease-in-out;
}

.is-safari .tinted-img:hover img {
  filter: grayscale(0%);
  transition: filter 0.4s ease-in-out 0.15s;
}

.is-safari .tinted-img:hover::before,
.is-safari .tinted-img:hover::after {
  transform: translate3d(0, -100%, 0);
  transition: transform 0.4s ease-in-out 0.15s, opacity 0.4s ease-in-out 0.15s;
}

@keyframes flicker-in {
  0% {
    opacity: 0.2;
  }
  10%, 40%, 70%, 90% {
    opacity: 0.8;
  }
  30%, 60%, 80% {
    opacity: 0.4;
  }
  100% {
    opacity: 1;
  }
}

@keyframes horizontal-thicken {
  from {
    height: 0.5px;
  }
  to {
    height: 1px;
  }
}

@keyframes vertical-thicken {
  from {
    width: .1rem;
  }
  to {
    width: .1rem;
  }
}

.p-regular-text {
  color: var(--text-color-secondary);
}

ol li::marker {
  font-family: "Bitcount Prop Single", system-ui;
  color: var(--theme-main-color);
  text-shadow:
      0 0 5px var(--theme-glow-color),
      0 0 15px var(--theme-glow-color);
}

.typing-text {
  font-family: "Bitcount Prop Single", system-ui;
  color: var(--theme-main-color);
  text-shadow:
    0 0 5px var(--theme-main-color),
    0 0 15px var(--theme-main-color);
  position: relative; 
  white-space: nowrap;
  transition: visibility 0.5 ease;
  will-change: visibility;
}

.typing-text::after {
  content: '';
  position: absolute;
  top: 0;
  right: -0.5rem;
  width: .2rem;
  height: 80%;
  background-color: var(--theme-secondary-color);
  box-shadow: 
    0 0 8px var(--theme-secondary-color),
    0 0 12px var(--theme-secondary-color);
  animation: blink .75s step-end infinite;
  transition: visibility 0.5 ease;
  will-change: opacity;
}

@keyframes blink {
    50% {
        background-color: transparent;
        box-shadow: none;
    }
}

.flash-container {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 9999;
  width: auto;
  min-width: 300px;
  text-align: center;
  backdrop-filter: blur(4px);
}

.alert {
  opacity: 0.75;
  box-shadow: var(--window-shadow-default);
  margin-bottom: 0;
}

#contact-form .form-label {
  font-weight: 100;
}

#contact-form .form-control::-webkit-contacts-auto-fill-button {
  background-color: #ffffff; 
}

#contact-form .form-control::-webkit-credentials-auto-fill-button {
  background-color: #ffffff;
}

#contact-form .form-control {
  font-family: var(--subtext-font);
  font-weight: 300;
  caret-color: var(--theme-secondary-color);
  text-shadow: var(--text-glow-white-subdued);
  background-color: var(--dark-bg);
  border: var(--input-border-default); 
  box-shadow: var(--border-glow-warm); 
  background-clip: padding-box;
  border-radius: .5rem;
  appearance: none;
  -webkit-appearance: none;
  /* color-scheme: dark; */
  will-change: box-shadow; 
  transition: 
    background-color 0.3s ease,
    border-color 0.3s ease,
    box-shadow 0.3s ease;
}

#contact-form .form-control:focus {
  outline: none !important; 
}

#contact-form .form-control:-webkit-autofill,
#contact-form .form-control:-webkit-autofill:hover, 
#contact-form .form-control:-webkit-autofill:focus, 
#contact-form .form-control:-webkit-autofill:active {
  transition: background-color 10000s ease-in-out 0s !important;
  -webkit-text-fill-color: var(--theme-main-color) !important;
  border: var(--input-border-filled) !important;
  box-shadow: var(--border-glow-cool) !important;
}

@keyframes flicker-input-light-in {
  0% {
    background-color: var(--dark-bg);
    border: var(--input-border-default);
    box-shadow: var(--border-glow-warm);
  }
  10%, 40%, 70%, 90% {
    background-color: color-mix(in srgb, var(--input-tint-color) 25%, transparent);
    border: var(--input-border-filled);
    box-shadow: var(--border-glow-cool);
  }
  30%, 60%, 80% {
    background-color: var(--dark-bg);
    border: var(--input-border-default);
    box-shadow: var(--border-glow-warm);
  }
  100% {
    background-color: color-mix(in srgb, var(--input-tint-color) 25%, transparent);
    border: var(--input-border-filled);
    box-shadow: var(--border-glow-cool);
  }
}

#contact-form .form-control:not(:placeholder-shown) {
  background-color: color-mix(in srgb, var(--input-tint-color) 25%, transparent);
  border: var(--input-border-filled);
  box-shadow: var(--border-glow-cool);
  animation: flicker-input-light-in 0.3s ease-out forwards; 
}

#contact-form textarea.form-control {
  resize: vertical; 
}

@keyframes blink-colon {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
}

.blink-colon {
  animation: blink-colon 1s step-end infinite; 
}

/* #contact-form .form-label {
  font-weight: 200;
  margin-bottom: 0.5rem;
} */

/* QUICK APPLY */

.bitcount {
  font-family: var(--subtext-font);
}

.googlesans {
  font-family: "Google Sans Code", monospace;
}

.inter {
  font-family: "Inter", sans-serif;
}

.mont {
  font-family: "Montserrat", sans-serif;
}

.fw100 {
  font-weight: 100;
}

.fw200 {
  font-weight: 200;
}

.fw300 {
  font-weight: 300;
}

.fw400 {
  font-weight: 400;
}

.fw500 {
  font-weight: 500;
}

.fw600 {
  font-weight: 600;
}

.opac-half {
  opacity: .5;
}

.opac75 {
  opacity: .75;
}

.text-color-main {
  color: var(--text-color-primary);
}

.text-color-secondary {
  color: var(--text-color-secondary);
}

.glow-white {
  text-shadow:
    0 0 5px var(--text-color-primary),
    0 0 15px var(--text-color-primary);
}

.txt-highlight-1 {
  color: var(--theme-main-color);
}

.txt-highlight-2 {
  color: var(--theme-secondary-color);
}

.link-filter-glow-main {
  font-family: "Bitcount Prop Single", system-ui;
  color: var(--theme-main-color);
  filter: var(--glow-filter-main);
  will-change: transform;
  transition: 
    color 0.3s ease,
    filter 0.3s ease,
    transform 0.3s ease;
}

a svg.link-filter-glow-main:hover,
a span.link-filter-glow-main:hover,
a.link-filter-glow-main:hover {
  color: var(--theme-secondary-color);
  filter: var(--glow-filter-warm);
  will-change: transform;
  transform: translateY(-2px);
}

svg.link-filter-glow-main:hover {
  stroke-width: 1;
}

.link-filter-glow-tertiary {
  color: var(--theme-tertiary-color);
  filter: var(--glow-filter-cool);
  will-change: transform;
  transition: 
    color 0.3s ease,
    filter 0.3s ease,
    transform 0.3s ease;
}

a svg.link-filter-glow-tertiary:hover,
a span.link-filter-glow-tertiary:hover,
a.link-filter-glow-tertiary:hover {
  color: var(--theme-secondary-color);
  filter: var(--glow-filter-warm);
  will-change: transform;
  transform: translateY(-2px);
}

.text-glow-main {
  font-family: "Bitcount Prop Single", system-ui;
  color: var(--theme-main-color);
  text-shadow: var(--text-glow-main);
}

.text-glow-tertiary {
  font-family: "Bitcount Prop Single", system-ui;
  color: var(--theme-tertiary-color);
  text-shadow: var(--text-glow-cool);
}

.faint-g {
  text-shadow:
    0 0 1px var(--text-color-primary),
    0 0 3px var(--text-color-primary);
}

.mybtn {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  text-decoration: none;
  font-size: 1rem;
  font-weight: 200;
}

.mybtn-no-border {
  background-color: transparent;
  border: none;
  color: var(--theme-tertiary-color);
  filter: var(--glow-filter-cool);
  will-change: transform;
  opacity: 1;
  transition: 
    color 0.3s ease,
    filter 0.3s ease,
    transform 0.3s ease;
}

.mybtn-no-border:hover {
  color: var(--theme-secondary-color);
  filter: var(--glow-filter-warm);
  transform: translateY(-2px);
}

.mybtn-big {
  font-family: var(--subtext-font);
  color: var(--theme-main-color);
  text-shadow: var(--text-glow-main);
  height: 2.5rem;
  padding-left: 1rem;
  padding-right: 1rem;
  background-color: transparent;
  /* color: rgb(from var(--theme-main-color) r g b / 100%); */
  border: var(--mybtn-border);
  border-radius: 2rem;
  box-shadow: var(--border-glow-main);
  will-change: background-color, border, filter;
  transition: 
    background-color .3s ease,
    border .3s ease,
    filter .3s ease;
}

.mybtn-big:hover{
  color: var(--bg-color-primary);
  background-color: var(--theme-secondary-color);
  border: 1px solid var(--theme-secondary-color);
  filter:
    drop-shadow(0 0 3px var(--theme-secondary-color))
    drop-shadow(0 0 8px var(--theme-secondary-color));
}


/* .mybtn:hover {
  color: var(--bg-color-primary);
  background: var(--theme-main-color);
  border: .2rem solid var(--theme-main-color);
  filter:
    drop-shadow(0 0 3px var(--theme-main-color))
    drop-shadow(0 0 8px var(--theme-main-color));
} */


.mybtn-sm {
  width: 3rem;
  height: 3rem;
  color: var(--text-color-primary);
  border: .2rem solid var(--theme-secondary-color);
  border-radius: 50%;
  filter: 
    drop-shadow(0 0 10px var(--theme-glow-color));
  transition: .5s;
}

.mybtn-sm-sp {
  width: 2rem;
  height: 2rem;
  color: var(--text-color-primary);
  background: var(--theme-main-color);
  border: .2rem solid var(--theme-main-color);
  border-radius: 50%;
  filter: 
    drop-shadow(0 0 10px var(--theme-main-color));
  transition: .5s;
}

.mybtn svg,
.mybtn-sm svg {
  width: 1rem;
  height: 1rem;
}