@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap');

:root {
  --neo-a: #00c6ff;
  --neo-b: #7b5cff;
  --neo-c: #ff4fd8;
  --neo-grad: linear-gradient(90deg, var(--neo-a), var(--neo-b) 60%, var(--neo-c));
}

/* Day: light page, neon chrome, stars. */
.header-text-primary {
  background: var(--neo-grad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}
.banner-panel {
  background: linear-gradient(135deg, rgba(0,198,255,.92), rgba(123,92,255,.92) 55%, rgba(255,79,216,.88)) !important;
  box-shadow: 0 0 40px rgba(123,92,255,.45);
}
.item-content { border-image: var(--neo-grad) 1; border-image-width: 4px 0 0 0; }
.subtitle, .add-favourite, .add-favourite i, a.clickable, .header a { color: var(--neo-b) !important; }
.header a.clickable, .btn-raised.default-button { border-color: var(--neo-b) !important; color: var(--neo-b) !important; }
.btn-raised.default-button:hover { background: var(--neo-grad) !important; color: #fff !important; -webkit-text-fill-color: #fff !important; }
.signup-button.action-button {
  background: var(--neo-grad) !important;
  border-color: transparent !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  box-shadow: 0 0 18px rgba(123,92,255,.5);
}
.footer, .site-footer-bar, .site-footer-bar a, .site-footer-bar span { color: var(--neo-a) !important; }
.site-footer-bar a:hover { color: var(--neo-c) !important; }

#bling-layer { position: fixed; inset: 0; pointer-events: none; z-index: 99999; overflow: hidden; }
.bstar {
  position: absolute;
  color: var(--neo-a);
  text-shadow: 0 0 6px #fff, 0 0 12px var(--neo-b), 0 0 20px var(--neo-c);
  animation: btw var(--d) ease-in-out infinite, bfl var(--f) linear infinite;
}
@keyframes btw { 0%, 100% { opacity: .2; transform: scale(.6) rotate(0); } 50% { opacity: 1; transform: scale(1.3) rotate(180deg); } }
@keyframes bfl { 0% { translate: 0 0; } 100% { translate: 0 -40px; } }
.btrail {
  position: fixed;
  pointer-events: none;
  z-index: 100000;
  color: var(--neo-c);
  text-shadow: 0 0 8px var(--neo-a);
  animation: bfade 1s forwards;
}
@keyframes bfade { to { opacity: 0; transform: translateY(30px) scale(.3) rotate(360deg); } }

/* Night: one dark code skin. Stars stay off. */
html.skin-night, html.skin-night body { background: #1e1e1e !important; color: #f5f5f5 !important; }
html.skin-night body * {
  font-family: 'JetBrains Mono', Consolas, monospace !important;
  background-color: transparent !important;
  border-color: #3c3c3c !important;
  color: #f5f5f5;
}
html.skin-night h1, html.skin-night h2, html.skin-night h3, html.skin-night h4 { color: var(--neo-a) !important; }
html.skin-night h1::before, html.skin-night h2::before, html.skin-night h3::before { content: '// '; color: var(--neo-b); }
html.skin-night a, html.skin-night .subtitle, html.skin-night .header a { color: var(--neo-a) !important; }
html.skin-night strong, html.skin-night b { color: var(--neo-c) !important; }
html.skin-night time, html.skin-night small, html.skin-night [class*=date] { color: #b9f3ff !important; }
html.skin-night img { filter: saturate(.9); border: 1px solid #3c3c3c; }
html.skin-night header, html.skin-night nav, html.skin-night .header,
html.skin-night footer, html.skin-night .footer { background: #16161c !important; }
html.skin-night .header * { letter-spacing: 0 !important; }
html.skin-night .header .navbar-nav { white-space: nowrap; }
html.skin-night .header .navbar-nav > li > a { padding-left: 10px !important; padding-right: 10px !important; }
html.skin-night .header-text-primary {
  background: var(--neo-grad) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  color: transparent !important;
  -webkit-text-fill-color: transparent !important;
}
html.skin-night .banner-panel {
  background: linear-gradient(135deg, rgba(0,198,255,.92), rgba(123,92,255,.92) 55%, rgba(255,79,216,.88)) !important;
  box-shadow: 0 0 40px rgba(123,92,255,.45);
}
html.skin-night .signup-button.action-button,
html.skin-night .btn-raised.default-button:hover {
  background: var(--neo-grad) !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}
html.skin-night .footer, html.skin-night .site-footer-bar,
html.skin-night .site-footer-bar a, html.skin-night .site-footer-bar span { color: var(--neo-a) !important; }
html.skin-night .site-footer-bar a:hover { color: var(--neo-c) !important; }
html.skin-night #bling-layer { display: none; }

#code-banner {
  display: none;
  background: #1e1e1e !important;
  border: 1px solid #3c3c3c;
  border-radius: 6px;
  margin: 16px auto;
  max-width: 900px;
  overflow: hidden;
}
html.skin-night #code-banner { display: block; }
#code-banner .bar { background: #2d2d2d !important; padding: 6px 12px; font-size: 12px; color: #969696; }
#code-banner .bar span { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 6px; }
#code-banner pre { margin: 0; padding: 14px 16px; font-size: 14px; line-height: 1.6; white-space: pre-wrap; color: #f5f5f5; }
#code-banner .k { color: var(--neo-a) !important; }
#code-banner .v { color: #d6c8ff !important; }
#code-banner .st { color: var(--neo-c) !important; }
#code-banner .c { color: var(--neo-b) !important; }
#code-banner .cur { display: inline-block; width: 8px; background: var(--neo-a) !important; animation: blk 1s steps(1) infinite; }
@keyframes blk { 50% { opacity: 0; } }

.love-pop {
  position: fixed;
  z-index: 100002;
  pointer-events: none;
  line-height: 1;
  animation: love-float 900ms ease-out forwards;
}
@keyframes love-float {
  0% { opacity: 1; transform: translate(-50%, -50%) scale(.5) rotate(0deg); }
  100% { opacity: 0; transform: translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(1.35) rotate(var(--rot)); }
}
@media (prefers-reduced-motion: reduce) {
  #bling-layer, .btrail { display: none; }
  .love-pop { animation: love-fade 400ms ease-out forwards; }
}
@keyframes love-fade { to { opacity: 0; } }

/* ===== Skin: FUTURE — append to bling-skin.css, enable with <html class="skin-future"> ===== */
html.skin-future body {
  background: #05060f;
  color: #dfe6ff;
}

/* Layer 1: animated aurora mesh */
html.skin-future body::before {
  content: "";
  position: fixed; inset: -20%;
  z-index: -2; pointer-events: none;
  background:
    radial-gradient(40% 35% at 20% 25%, rgba(0, 229, 255, .28), transparent 70%),
    radial-gradient(35% 30% at 80% 20%, rgba(155, 92, 255, .30), transparent 70%),
    radial-gradient(45% 40% at 60% 85%, rgba(255, 140, 50, .18), transparent 70%),
    #05060f;
  filter: blur(40px) saturate(140%);
  animation: fut-aurora 24s ease-in-out infinite alternate;
}

/* Layer 2: perspective neon grid floor + scanlines */
html.skin-future body::after {
  content: "";
  position: fixed; left: -50%; right: -50%; bottom: -10%; height: 60vh;
  z-index: -1; pointer-events: none;
  background:
    linear-gradient(rgba(0, 229, 255, .35) 1px, transparent 1px) 0 0 / 60px 60px,
    linear-gradient(90deg, rgba(0, 229, 255, .35) 1px, transparent 1px) 0 0 / 60px 60px;
  transform: perspective(500px) rotateX(62deg);
  transform-origin: bottom;
  -webkit-mask-image: linear-gradient(to top, #000 10%, transparent 85%);
          mask-image: linear-gradient(to top, #000 10%, transparent 85%);
  animation: fut-grid 6s linear infinite;
}

@keyframes fut-aurora {
  0%   { transform: translate3d(0, 0, 0) rotate(0deg) scale(1); }
  50%  { transform: translate3d(4%, -3%, 0) rotate(8deg) scale(1.08); }
  100% { transform: translate3d(-3%, 4%, 0) rotate(-6deg) scale(1.04); }
}
@keyframes fut-grid { to { background-position: 0 60px, 0 0; } }

/* Let the background show through the main wrappers */
html.skin-future #content,
html.skin-future .wrapper { background: transparent !important; }

/* Header: one seamless dark bar (inner boxes made transparent) */
html.skin-future .header {
  background: rgba(8, 10, 24, .6) !important;
  border-bottom: 1px solid rgba(0, 229, 255, .18);
}
html.skin-future .header *,
html.skin-future .header nav,
html.skin-future .header .navbar-collapse { background-color: transparent !important; }
html.skin-future .header .navbar-toggle .icon-bar { background-color: #cfe9ff !important; }

/* Logo: white JPG -> light-on-dark (invert, then screen-blend the black away).
   z-index:auto on the brand is required, otherwise the blend can't see the header. */
html.skin-future .header .navbar-brand { z-index: auto !important; }
html.skin-future .header .site-logo {
  max-width: 220px; height: auto;
  filter: invert(1) hue-rotate(180deg) brightness(1.15);
  mix-blend-mode: screen;
}

/* Menu + EN + Sign in on one flex row (Sign in was absolutely positioned over "About me") */
@media (min-width: 768px) {
  html.skin-future .header .navbar-collapse {
    display: flex !important; align-items: center; justify-content: flex-end; gap: 10px;
  }
  html.skin-future .header .navbar-collapse > * { float: none !important; margin: 0 !important; }
  html.skin-future .header .authentication { position: static !important; flex: none; }
  html.skin-future .header .navbar-nav { display: flex; align-items: center; gap: 2px; flex: none; flex-wrap: nowrap; }
}
html.skin-future .header .navbar-nav > li { padding: 0 !important; margin: 0 !important; width: auto !important; }
html.skin-future .header .navbar-nav > li > a {
  color: #cfe9ff !important; font-size: 13px !important; letter-spacing: .05em !important;
  padding: 8px 10px !important; white-space: nowrap; border-radius: 999px;
  border: 0 !important; outline: 0 !important; box-shadow: none !important;
  transition: color .2s, background .2s;
}
html.skin-future .header .navbar-nav > li > a:hover,
html.skin-future .header .navbar-nav > li.active > a {
  color: #fff !important;
  background: rgba(0, 229, 255, .1) !important;
  box-shadow: inset 0 0 0 1px rgba(0, 229, 255, .35), 0 0 18px rgba(0, 229, 255, .25) !important;
}
html.skin-future .header .authentication button {
  background: linear-gradient(90deg, #00e5ff, #9b5cff) !important;
  color: #05060f !important; border: 0 !important; border-radius: 999px;
  font-weight: 600; letter-spacing: .06em;
  box-shadow: 0 0 20px rgba(155, 92, 255, .45);
  /* base CSS forces line-height:35px + padding, which pushed the text down */
  display: inline-flex !important; align-items: center; justify-content: center;
  height: 36px !important; padding: 0 22px !important; line-height: 1 !important;
}

/* Headings get a subtle neon edge */
html.skin-future h1, html.skin-future h2, html.skin-future h3 {
  text-shadow: 0 0 18px rgba(0, 229, 255, .25);
}

/* Replace the cartoon stars with small glowing particles */
html.skin-future .bstar {
  color: transparent !important;
  font-size: 0 !important;
  width: 4px; height: 4px; border-radius: 50%;
  background: #9fefff;
  box-shadow: 0 0 8px 2px rgba(0, 229, 255, .8), 0 0 20px 4px rgba(155, 92, 255, .4);
}
html.skin-future .bstar:nth-child(3n) { background: #d6b8ff; box-shadow: 0 0 8px 2px rgba(155, 92, 255, .8); }
html.skin-future .btrail { opacity: .35; filter: hue-rotate(160deg) saturate(.6); }

@media (prefers-reduced-motion: reduce) {
  html.skin-future body::before, html.skin-future body::after { animation: none; }
}

/* The mesh sits behind the page, so the flat body fill must not cover it. */
html.skin-future body { background-color: transparent; }
