:root { --gold: #e3a53d; --light: #ffe3a2; --black: #080603; }
* { box-sizing: border-box; }
html, body { width: 100%; height: 100%; }
body { margin: 0; overflow: hidden; background: var(--black); }

main { position: relative; isolation: isolate; width: 100%; height: 100%; min-height: 520px; overflow: hidden; }
.art {
  position: absolute; inset: 0; z-index: -3;
  background: url("assets/nekomio-hero-v2.png") center center / cover no-repeat;
  animation: art-in 2.2s cubic-bezier(.16,1,.3,1) both, breathe 18s 2.2s ease-in-out infinite alternate;
}
main::before {
  content: ""; position: absolute; inset: 0; z-index: -2;
  background:
    linear-gradient(90deg, rgba(6,4,2,.78) 0%, rgba(6,4,2,.23) 37%, transparent 62%),
    linear-gradient(0deg, rgba(6,4,2,.4), transparent 32%);
}
main::after {
  content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none;
  box-shadow: inset 0 0 140px 25px rgba(0,0,0,.6);
}
#ambient { position: absolute; inset: 0; z-index: 2; width: 100%; height: 100%; pointer-events: none; }
.grain {
  position: absolute; inset: 0; z-index: 5; pointer-events: none; opacity: .045;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.92' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.frame { position: absolute; inset: 22px; z-index: 4; pointer-events: none; }
.frame i { position: absolute; width: 42px; height: 42px; border: 0 solid var(--gold); opacity: .9; }
.frame i:nth-child(1) { top: 0; left: 0; border-top-width: 1px; border-left-width: 1px; }
.frame i:nth-child(2) { top: 0; right: 0; border-top-width: 1px; border-right-width: 1px; }
.frame i:nth-child(3) { bottom: 0; left: 0; border-bottom-width: 1px; border-left-width: 1px; }
.frame i:nth-child(4) { right: 0; bottom: 0; border-right-width: 1px; border-bottom-width: 1px; }

@keyframes art-in { from { opacity: 0; transform: scale(1.06); filter: blur(10px); } to { opacity: 1; transform: scale(1); filter: none; } }
@keyframes breathe { to { transform: scale(1.035); } }

@media (max-width: 760px) {
  .art { background-position: 67% center; }
  main::before { background: linear-gradient(0deg, rgba(6,4,2,.82) 0%, transparent 57%); }
  .frame { inset: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
