:root{
  --void:#05010f;
  --void-2:#0c0620;
  --void-3:#120a2e;
  --hollow-blue:#3b6cff;
  --hollow-red:#ff3b6c;
  --hollow-purple:#8b3bff;
  --six-eyes:#6ee7ff;
  --ink:#f4f0ff;
  --mute:#9a8fc2;
  --mute-dim:#5f5484;
  --display: "Big Shoulders Display", sans-serif;
  --body: "Inter", sans-serif;
  --jp: "Noto Serif JP", serif;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important;}
}

body{
  margin:0;
  background:var(--void);
  color:var(--ink);
  font-family:var(--body);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  position:relative;
}
body::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:2;
  pointer-events:none;
  opacity:0.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

a{color:inherit;}
h1,h2,h3{font-family:var(--display); font-weight:700; margin:0; letter-spacing:0.01em;}
p{margin:0 0 1.1em 0; color:var(--mute); max-width:62ch;}
p:last-child{margin-bottom:0;}

#void-canvas{
  position:fixed;
  inset:0;
  width:100%;
  height:100%;
  z-index:0;
  opacity:0.9;
}

main, header{position:relative; z-index:1;}

/* ---- topbar ---- */
.topbar{
  position:fixed;
  top:0; left:0; right:0;
  z-index:10;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:1.5rem clamp(1.5rem, 5vw, 4rem);
  background:linear-gradient(to bottom, rgba(5,1,15,0.85), transparent);
  backdrop-filter:blur(6px);
}
.topbar .mark{
  font-family:var(--jp);
  font-size:1.3rem;
  color:var(--six-eyes);
  border:1px solid rgba(110,231,255,0.35);
  width:2.3rem; height:2.3rem;
  display:flex; align-items:center; justify-content:center;
  border-radius:50%;
  flex-shrink:0;
}
.topbar nav{display:flex;}
.topbar nav a{
  font-size:0.88rem;
  color:var(--mute);
  text-decoration:none;
  margin-left:2.2rem;
  letter-spacing:0.01em;
  transition:color 0.2s ease;
  position:relative;
}
.topbar nav a::after{
  content:"";
  position:absolute;
  left:0; right:0; bottom:-0.35rem;
  height:1px;
  background:var(--six-eyes);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform 0.25s ease;
}
.topbar nav a:hover, .topbar nav a:focus-visible{color:var(--ink);}
.topbar nav a:hover::after, .topbar nav a:focus-visible::after{transform:scaleX(1);}

/* ---- hero ---- */
.hero{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:3rem;
  padding:7rem clamp(1.5rem, 8vw, 5rem) 2rem;
  max-width:1400px;
  margin:0 auto;
}
.hero-text{max-width:600px; flex:1 1 480px;}
.hero-visual{
  flex:0 1 440px;
  position:relative;
  display:flex;
  justify-content:center;
  align-items:center;
}
.emblem-svg{
  width:min(100%, 420px);
  height:auto;
  filter:drop-shadow(0 0 50px rgba(139,59,255,0.22));
}
.hero-portrait{
  position:absolute;
  inset:0;
  margin:auto;
  max-width:88%;
  max-height:120%;
  height:auto;
  object-fit:contain;
  object-position:center bottom;
  filter:drop-shadow(0 10px 40px rgba(139,59,255,0.35));
}
.hero-portrait.is-empty{display:none;}
.ring-a{animation:spin 40s linear infinite; transform-origin:240px 240px;}
.ring-b{animation:spin 55s linear infinite reverse; transform-origin:240px 240px;}
.ring-ticks{animation:spin 90s linear infinite; transform-origin:240px 240px;}

@media (max-width:900px){
  .hero{flex-direction:column-reverse; text-align:left; padding-top:7.5rem; gap:2.5rem;}
  .emblem-svg{width:min(72%, 300px);}
}
.hero-kicker{
  font-family:var(--jp);
  color:var(--six-eyes);
  font-size:0.95rem;
  margin-bottom:1.4rem;
}
.hero-title{
  font-size:clamp(4.5rem, 15vw, 10.5rem);
  line-height:0.86;
  letter-spacing:-0.01em;
  background:linear-gradient(100deg, var(--hollow-blue) 0%, var(--six-eyes) 18%, #ffffff 40%, var(--hollow-red) 62%, var(--hollow-purple) 100%);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  background-size:220% 100%;
  animation:sheen 9s ease-in-out infinite;
}
@keyframes sheen{
  0%,100%{background-position:0% 50%;}
  50%{background-position:100% 50%;}
}
.hero-sub{
  margin-top:2rem;
  font-size:1.05rem;
  max-width:46ch;
  color:var(--mute);
}
.hero-scroll{
  margin-top:3.5rem;
  display:flex;
  align-items:center;
  gap:0.7rem;
  font-size:0.85rem;
  color:var(--mute-dim);
  text-decoration:none;
}
.hero-scroll span{
  width:1px; height:2.2rem;
  background:linear-gradient(var(--six-eyes), transparent);
  animation:pulseline 2.4s ease-in-out infinite;
}
@keyframes pulseline{
  0%,100%{opacity:0.3;}
  50%{opacity:1;}
}

/* ---- bands (infinity / six eyes) ---- */
.band{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(2rem, 6vw, 6rem);
  align-items:center;
  max-width:1200px;
  margin:0 auto;
  padding:9rem clamp(1.5rem, 6vw, 4rem);
  border-top:1px solid rgba(154,143,194,0.12);
}
.band-right{direction:rtl;}
.band-right .band-text{direction:ltr;}
.band-right .band-visual{direction:ltr;}
.eyebrow{
  font-family:var(--jp);
  color:var(--six-eyes);
  font-size:0.9rem;
  margin-bottom:0.9rem;
}
.eyebrow.center{text-align:center;}
.band-text h2{font-size:clamp(2.2rem, 5vw, 3.2rem); margin-bottom:1.1rem;}
.band-visual{display:flex; justify-content:center;}

/* infinity ring */
.infinity-ring{
  position:relative;
  width:min(60vw, 320px);
  aspect-ratio:1/1;
}
.ring{
  position:absolute; inset:0;
  border-radius:50%;
  border:1px solid rgba(139,59,255,0.35);
}
.ring.r1{animation:spin 18s linear infinite;}
.ring.r2{inset:12%; border-color:rgba(59,108,255,0.4); animation:spin 24s linear infinite reverse;}
.ring.r3{inset:24%; border-color:rgba(255,59,108,0.35); animation:spin 14s linear infinite;}
@keyframes spin{ to{transform:rotate(360deg);} }
.ring-core{
  position:absolute; inset:40%;
  border-radius:50%;
  background:radial-gradient(circle, #fff 0%, var(--six-eyes) 35%, var(--hollow-purple) 75%, transparent 100%);
  filter:blur(2px);
  animation:corepulse 3.6s ease-in-out infinite;
}
@keyframes corepulse{
  0%,100%{transform:scale(0.9); opacity:0.85;}
  50%{transform:scale(1.08); opacity:1;}
}

/* eye */
.eye-frame{width:min(55vw, 260px);}
.eye-svg{width:100%; height:auto;}
.eye-outline{fill:none; stroke:var(--mute-dim); stroke-width:1;}
.eye-pupil{animation:blink 6s ease-in-out infinite;}
@keyframes blink{
  0%,92%,100%{transform:scaleY(1); transform-origin:100px 100px;}
  95%{transform:scaleY(0.08); transform-origin:100px 100px;}
}
.eye-rings circle{animation:spin 30s linear infinite;}
.eye-rings{transform-origin:100px 100px;}

/* ---- techniques ---- */
.techniques{
  padding:8rem clamp(1.5rem, 6vw, 4rem);
  max-width:1200px;
  margin:0 auto;
  border-top:1px solid rgba(154,143,194,0.12);
}
.techniques h2{font-size:clamp(2.2rem, 5vw, 3.2rem); margin-bottom:3.5rem;}
.center{text-align:center; margin-left:auto; margin-right:auto;}
.tech-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:1px;
  background:rgba(154,143,194,0.15);
  border:1px solid rgba(154,143,194,0.15);
}
.tech-card{
  background:var(--void);
  padding:2.8rem 2.2rem;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  transition:background 0.3s ease, transform 0.3s ease;
  position:relative;
}
.tech-portrait{
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
  object-position:top center;
  border-radius:2px;
  margin-bottom:1.8rem;
  border:1px solid rgba(154,143,194,0.2);
}
.tech-portrait.is-empty{display:none;}
.tech-card:hover{
  background:var(--void-2);
  transform:translateY(-3px);
}
.tech-card h3{
  font-family:var(--body);
  font-weight:600;
  font-size:1.02rem;
  margin-bottom:0.9rem;
  color:var(--ink);
  letter-spacing:0.01em;
}
.tech-card p{font-size:0.94rem; line-height:1.65;}
.tech-glyph{
  margin-bottom:1.6rem;
  position:relative;
  width:3.6rem;
  height:3.6rem;
}
.seal-icon{
  position:absolute;
  inset:-0.3rem;
  width:4.2rem;
  height:4.2rem;
  opacity:0.9;
}
.glyph-orb{
  position:absolute;
  top:0.6rem; left:0.6rem;
  display:block;
  width:2.4rem; height:2.4rem;
  border-radius:50%;
}
.glyph-orb.pull{
  background:radial-gradient(circle at 65% 35%, #fff, var(--hollow-blue) 45%, transparent 80%);
  animation:pull 2.4s ease-in-out infinite;
}
.glyph-orb.push{
  background:radial-gradient(circle at 35% 65%, #fff, var(--hollow-red) 45%, transparent 80%);
  animation:push 2.4s ease-in-out infinite;
}
.glyph-orb.fuse{
  background:radial-gradient(circle, #fff, var(--hollow-purple) 40%, var(--hollow-blue) 70%, var(--hollow-red) 100%);
  animation:corepulse 2.4s ease-in-out infinite;
}
@keyframes pull{ 0%,100%{transform:scale(1);} 50%{transform:scale(0.75);} }
@keyframes push{ 0%,100%{transform:scale(1);} 50%{transform:scale(1.3);} }

/* ---- domain expansion ---- */
.domain{
  position:relative;
  min-height:90vh;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  padding:6rem 2rem;
}
.void-frame{
  position:absolute; inset:0;
  background:radial-gradient(ellipse at center, var(--void-3) 0%, var(--void) 70%);
}
.void-glow{
  position:absolute;
  top:50%; left:50%;
  width:60vmin; height:60vmin;
  transform:translate(-50%,-50%);
  background:radial-gradient(circle, rgba(139,59,255,0.35) 0%, rgba(59,108,255,0.18) 40%, transparent 70%);
  animation:corepulse 5s ease-in-out infinite;
}
.void-stars{
  position:absolute; inset:0;
  background-image:radial-gradient(1px 1px at 20% 30%, #fff, transparent),
                    radial-gradient(1px 1px at 70% 60%, #fff, transparent),
                    radial-gradient(1px 1px at 40% 80%, #fff, transparent),
                    radial-gradient(1px 1px at 85% 20%, #fff, transparent),
                    radial-gradient(1px 1px at 55% 45%, #fff, transparent);
  opacity:0.5;
  animation:drift 12s linear infinite;
}
@keyframes drift{ from{background-position:0 0;} to{background-position:0 -200px;} }
.domain-copy{
  position:relative;
  z-index:1;
  max-width:640px;
  text-align:center;
}
.domain-copy h2{font-size:clamp(2.4rem, 6vw, 4rem); margin-bottom:1.3rem;}
.domain-copy p{margin-left:auto; margin-right:auto;}
.domain-note{color:var(--six-eyes); font-style:italic; margin-top:1.2rem;}

/* ---- footer ---- */
.site-footer{
  padding:3rem clamp(1.5rem, 6vw, 4rem) 4rem;
  text-align:center;
  border-top:1px solid rgba(154,143,194,0.15);
}
.site-footer p{max-width:none; font-size:0.85rem; color:var(--mute-dim);}
.footer-domain{color:var(--six-eyes);}
.footer-fine{font-size:0.75rem; margin-top:0.6rem;}

/* ---- responsive ---- */
@media (max-width:820px){
  .band, .band-right{grid-template-columns:1fr; direction:ltr;}
  .tech-grid{grid-template-columns:1fr;}
}

/* keyboard focus visibility */
a:focus-visible{outline:2px solid var(--six-eyes); outline-offset:3px;}
